当前位置: 首页 > news >正文

Windows 11g在线库迁移及搭建双机

现有用户数据库运行在超融合单机系统情况下,前端时间由于异常重启导致数据库system01.dbf文件损坏,核心数据库业务无法运行,本次考虑在超融合环境下搭建双机,为现有的数据库提供冗余环境,由于现有的核心业务运行在数据库上,停机时间控制在30分钟内(数据量2T),否则影响到业务系统的正常运行。

方案步骤安排如下:

1、新建双机集群环境,包括数据库,测试双机环境的可用性和可靠性;

2、停用集群,卸载新集群数据库实例,新老数据库搭建oracle adg,同步老库数据到新库;

3、搭建双机集群;

4、确认割接时间点,主备库切换;

5、带入双机集群,切换生产ip地址,测试双机切换;

6、取消新库adg参数,割接完成;

7、检查新集群运行状态。

备注:前3步搭建过程不影响业务正常运行,从第4步开始需要沟通具体割接时间。

一、情况说明

1、操作系统windows 2019标准版(本次需要升级操作系统从win2012到win2019)

2、数据库版本:11.2.0.4 for windows

3、地址信息

(1)源库(主):192.168.10.100

(2)备库(集群):192.168.10.200、192.168.10.201(ha集群另外一台)

4、源库windows系统oracle数据磁盘分多个存储空间

C:120g D:1.3t E:2.5t F:2t

目标库:C:120g D:3T E:2T

二、主库文件配置

1、启用强制日志模式

SQL> select force_logging from v$database;

2、配置重做认证(将密码文件复制到备机)

3、配置主数据库接收重做数据

4、参数初始化

alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcldg)' sid='*' scope=both;

alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl' sid='*' scope=both;

alter system set LOG_ARCHIVE_DEST_2='SERVICE=orcldg ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg' sid='*' scope=both;

alter system set FAL_SERVER=orcldg sid='*' scope=both;

alter system set DB_FILE_NAME_CONVERT='d:\oradata\orcldg','d:\oradata\orcl' sid='*' scope=spfile;

alter system set LOG_FILE_NAME_CONVERT='d:\oradata\orcldg','d:\oradata\orcl' sid='*' scope=spfile;

alter system set STANDBY_FILE_MANAGEMENT=AUTO sid='*' scope=both;

5、配置tnsnames.ora文件

tnsnames.ora文件添加如下:

orcl =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.100)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

orcldg =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.200)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

备注:现有生产环境listener.ora不动,防止影响业务使用。

三、配置备库

1、备库安装数据库软件(过程略)

2、修改参数文件(从主库修改得来)

orcl.__db_cache_size=2063597568

orcl.__java_pool_size=16777216

orcl.__large_pool_size=33554432

orcl.__oracle_base='C:\app\Administrator'#ORACLE_BASE set from environment

orcl.__pga_aggregate_target=872415232

orcl.__sga_target=2583691264

orcl.__shared_io_pool_size=0

orcl.__shared_pool_size=436207616

orcl.__streams_pool_size=0

*.audit_file_dest='C:\app\Administrator\admin\orcl\adump'

*.audit_trail='db'

*.compatible='11.2.0.4.0'

*.control_files='D:\oradata\orcldg\control01.ctl','D:\oradata\orcldg\control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_file_name_convert='d:\oradata\orcl','d:\oradata\orcldg'

*.db_name='orcl'

*.db_unique_name='orcldg'

*.db_recovery_file_dest='E:\flash_recovery_area'

*.db_recovery_file_dest_size=43851448320

*.diagnostic_dest='C:\app\Administrator'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

*.fal_server='ORCL'

*.log_archive_config='DG_CONFIG=(orcl,orcldg)'

*.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcldg'

*.log_archive_dest_2='SERVICE=orcl ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'

*.log_archive_format='ARC%S_%R.%T'

*.log_file_name_convert='d:\oradata\orcl','d:\oradata\orcldg'

*.nls_language='SIMPLIFIED CHINESE'

*.nls_territory='CHINA'

*.open_cursors=300

*.pga_aggregate_target=858783744

*.processes=1500

*.remote_login_passwordfile='EXCLUSIVE'

*.sessions=1655

*.sga_target=2576351232

*.standby_file_management='AUTO'

*.undo_tablespace='UNDOTBS1'

3、创建备库实例

C:\Users\Administrator>oradim -new -sid orcl -startmode m

4、监听listener.ora、tnsnames.ora文件

listener.ora

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.200)(PORT = 1521))

)

)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = CLRExtProc)

(ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)

(PROGRAM = extproc)

(ENVS = "EXTPROC_DLLS=ONLY:C:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")

)

(SID_DESC =

(GLOBAL_DBNAME = orcl)

(SID_NAME = orcl)

)

)

ADR_BASE_LISTENER = C:\app\Administrator

tnsnames.ora

ORACLR_CONNECTION_DATA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

(CONNECT_DATA =

(SID = CLRExtProc)

(PRESENTATION = RO)

)

)

orcl =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.100)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

orcldg =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.200)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

4、密码文件(复制主库密码文件)

windows密码文件位置:%ORACLE_HOME%/database/

linux密码文件位置:$ORACLE_HOME/dbs/

5、创建参数文件并启动到mount状态

6、备份主库及备库控制文件到备库

(1)为备库创建控制文件standby.ctl

SQL> alter database create standby controlfile as 'd:\standby.ctl';

(2)备份现有主库

backup.bat

@echo off

set timestamp=%date:~0,4%%date:~5,2%%date:~8,2%

mkdir d:\backup\%timestamp%

rman target / nocatalog CMDFILE 'd:\scripts\full_backup.sql' log 'd:\scripts\log\rman_backup_%timestamp%.log' append

full_backup.sql

run{

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP ON;#

allocate channel ch00 device type disk;

allocate channel ch01 device type disk;

allocate channel ch02 device type disk;

allocate channel ch03 device type disk;

crosscheck backup;

crosscheck archivelog all;

delete noprompt expired archivelog all;

delete noprompt expired backup;

report obsolete;

delete noprompt obsolete;

backup as compressed backupset database format 'D:\backup\%T\full_%T_%u_%p.%d' tag='FULLDB-%T'

plus archivelog format 'D:\backup\%T\arch_%T_%u_%p.%d' delete all input;

sql 'alter system archive log current';

backup current controlfile format 'D:\backup\%T\control_%T_%u_%p.%d.bak';

backup spfile format 'D:\backup\%T\spfile_%T_%u_%p.%d.bak';

crosscheck backup;

crosscheck archivelog all;

delete noprompt expired archivelog all;

delete noprompt expired backup;

report obsolete;

delete noprompt obsolete;

release channel ch00;

release channel ch01;

release channel ch02;

release channel ch03;

}

(3)拷贝备库控制文件及备份文件到备库

7、恢复备库

(1)恢复控制文件

(2)恢复数据文件

RMAN> catalog start with 'E:\20260701\';

RMAN> restore database;

(3)备库应用日志同步

alter database recover managed standby database using current logfile disconnect from session; (同步主库日志)备库mount状态第一次同步主备数据;

alter database recover managed standby database cancel;(取消同步)

Alter database open;(启动备数据库到open read only模式)

alter database recover managed standby database using current logfile disconnect from session;(再次应用日志同步)

(4)检查主备数据状态

主库:SQL> select error,status from v$archive_dest where dest_id=2;

备注:主库日志传输到备库通道2有效;

备库:SQL> select process,sequence#,status from v$managed_standby;

备注:检查备库应用日志状态,显示应用日志正常。

(5)主库录入测试数据,检查备库情况

主库:

备库:

以上步骤不影响主库业务正常运行,接下来的步骤影响业务运行,需要申请停机时间。(30分钟)

四、主备切换

1、检查主库状态(原历史库)

备注:session active表示有终端还在连接主库,此时需要断开连接,到to standby状态才能切换。

2、检查备库状态

3、切换主库到备库(主库业务中断)

SQL> alter database commit to switchover to standby with session shutdown ;

4、备库切换到主库

SQL> alter database commit to switchover to primary;

新备库应用日志:

SQL> alter database recover managed standby database using current logfile disconnect;

5、检查新的主备状态

(1)主库录入数据,测试备库数据同步情况

主库:

备库:

五、带入双机集群

1、停用现有主库,手动脱盘d盘和E盘

2、通过集群软件带入双机

3、检查双机状态

4、检查双机tnsnames.ora和监听文件(确保客户端可以正常连接)

5、来回切换检查数据库是否正常

六、新双机集群搭建完成,去除adg参数

1、参数(停机删除)

修改后参数文件:

orcl.__db_cache_size=1493172224

orcl.__java_pool_size=16777216

orcl.__large_pool_size=603979776

orcl.__oracle_base='c:\app\Administrator'#ORACLE_BASE set from environment

orcl.__pga_aggregate_target=872415232

orcl.__sga_target=2583691264

orcl.__shared_io_pool_size=0

orcl.__shared_pool_size=436207616

orcl.__streams_pool_size=0

*.audit_file_dest='C:\app\Administrator\admin\orcl\adump'

*.audit_trail='db'

*.compatible='11.2.0.4.0'

*.control_files='D:\ORADATA\ORCLDG\CONTROL01.CTL','D:\ORADATA\ORCLDG\CONTROL02.CTL'#Restore Controlfile

*.db_block_size=8192

*.db_domain=''

*.db_file_name_convert='d:\oradata\orcl','d:\oradata\orcldg'

*.db_name='orcl'

*.db_recovery_file_dest='E:\flash_recovery_area'

*.db_recovery_file_dest_size=43851448320

*.db_unique_name='orcldg'

*.diagnostic_dest='C:\app\Administrator'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

*.log_archive_format='ARC%S_%R.%T'

*.nls_language='SIMPLIFIED CHINESE'

*.nls_territory='CHINA'

*.open_cursors=300

*.pga_aggregate_target=858783744

*.processes=1500

*.remote_login_passwordfile='EXCLUSIVE'

*.sessions=1655

*.sga_target=2576351232

*.undo_tablespace='UNDOTBS1'

2、启动主库

备注:切换无日志告警,双机切换完成,adg切换到集群主库完成。

总结:实验中遇到有3个问题如下;

1、winows数据库安装软件完成后,手动创建实例,否则无法登录sqlplus / as sysdba;

2、备库密码文件名称问题导致主备应用日志无法同步,要求和实例名称相同即可;

3、adg同步库切换到单主库模式需要停机,对参数文件中有adg参数的一一删除,其他standbylog等信息可以不删,不影响业务使用。

2026-07-01

于合肥

http://www.jsqmd.com/news/1105755/

相关文章:

  • STM32寄存器开发练习(二):GPIO的工作模式
  • 基于BP神经网络的交通标志识别系统设计与实现
  • MH迈汇:从执行效率切入的标准评估
  • LLM上下文工程:从Prompt设计到记忆系统的架构演进
  • 基于STM32与Si4732的高性能数字收音机设计
  • paperxie 论文智能创作工具实测:按页面指引走,轻松搞定全类型学术文稿
  • PPP中 ERP 文件使用说明
  • AI 辅助:异步高并发调优:uvloop 不是最后一颗银弹
  • systemctl daemon-reload systemctl restart docker 解释并说明下这个命令
  • paperxie 论文智能写作全拆解|一步一步看懂学术创作完整操作逻辑
  • 谷歌起个大早赶个晚集:巨头病晚期还有救吗?
  • 2026全国网站建设公司排行榜:品牌官网与企业门户深度评测
  • 零基础企业线上运营落地,好客搜配套完整工具 + 落地指导服务体系
  • ISS 间歇更新稳定性证明 — 穷举收紧路径
  • RevokeMsgPatcher防撤回补丁原理与版本适配实战指南
  • STC3115+PIC24FJ64GB004电池监控系统设计与优化
  • 做云图存储用的
  • 计算机二级知识点总结(含资料)
  • 企业官网做 FAQPage 和 Article JSON-LD,字段应该怎么设计?
  • 基于TPAFE0808与PIC18F96J65的多通道高精度数据采集系统设计
  • 2026全国企业软件定制开发公司排行榜:ERP、CRM与业务系统怎么选
  • 基于MCP协议构建跨平台移动自动化测试框架:5分钟实现iOS与Android统一测试
  • 软件集成ROS2(支持离线示教机械臂)逻辑记录
  • YOLOv10模型改进-注意力机制-第33篇:YOLOv10改进策略【注意力机制】| EfficientAttention高效注意力
  • 2026上海APP开发公司实力榜:哪家好?深度评测与项目避坑
  • IDEA AI Assistant 真实性能压测报告:代码补全准确率92.7%、上下文理解延迟≤380ms,但93%开发者忽略了这3个关键配置
  • 化工易燃易爆区域普通测风设备有隐患?防爆风速风向仪防爆结构安全可靠
  • 如何3分钟掌握全网小说离线阅读:novel-downloader终极指南
  • 好吧,既然是概述,那么就先说点什么,光一个表格个人感觉表现力太有限了。如果对笔者的自报家门没啥兴趣的话,可以直接跳到下一节。
  • 3分钟将智能手机变成专业直播摄像头:DroidCam OBS插件全攻略