程序笔记   发布时间:2022-07-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用Oracle Dataguard实现从单机到RAC转换大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
使用Oracle Dataguard实现从单机到RAC转换
 

分类: Oracle

2016-05-21 15:55:47

 
                             使用Oracle Dataguard实现从单机到RAC转换       由于原有单实例服务器不能满足需求,需要把数据库从把单机实例迁移到RAC上.迁移的方式有很多种,但是主要可以分为逻辑迁移和物理迁移.    逻辑迁移使用的技术有expdp,goldengate,dblink等.物理方式主要的技术有transport tablespace,rconfig方式转换,Dataguard(DG)等.从数据可靠性和停机时间来虑,使用DG转换的方式最为合适.   环境:Oracle 12.1.0.2,单实例IP 192.168.56.5,RAC1节点的VIP 192.168.56.71,RAC2节点的VIP 192.168.56.72.在RAC两个节点上安装好GI和OracLE RDBMS软件(此处省略过程了). 在RAC1节点上,编辑一个文本文件,用来启动一个单实例.参数主要分为两个部分,一是所有节点上需要相同的参数,二是每个实例对应特殊的参数. 在GI的diskgroup中,确保相对应的目录提前建好,比如+DG_DATA/rac/CONTROLFILE.[Oracle@rac1]$ vi /home/Oracle/tmp.ora*.db_name=c12*.db_unique_name=c12stby*.control_files='+DG_DATA/rac/CONTROLFILE/control01.ctl','+DG_DATA/rac/CONTROLFILE/control02.ctl'*.compatible=12.1.0.2.0*.memory_target=1G*.cluster_database=true*.enable_pluggable_database=true*.db_file_name_convert='/u01/app/Oracle/oradata/c12','+DG_DATA'*.log_file_name_convert='/u01/app/Oracle/oradata/c12','+DG_DATA'*.db_create_file_dest='+DG_DATA'*.db_create_online_log_dest_1='+DG_DATA'*.log_archive_dest_1='LOCATIOn=/u01/app/Oracle/arch valid_for=(all_logfiles,all_roles) db_unique_name=c12stby'rac1.instance_name=rac1rac2.instance_name=rac2rac1.instance_number=1rac2.instance_number=2rac1.undo_tablespace='UNDOTBS1'rac2.undo_tablespace='UNDOTBS2'rac1.thread=1rac2.thread=2rac1.local_listener='(address=(protocol=TCp)(HOST=192.168.56.71)(PORT=1521))'rac1.remote_listener='(address=(protocol=TCp)(HOST=192.168.56.73)(PORT=1521))'rac2.local_listener='(address=(protocol=TCp)(HOST=192.168.56.72)(PORT=1521))'rac2.remote_listener='(address=(protocol=TCp)(HOST=192.168.56.73)(PORT=1521))'在单实例和RAC的两个节点,增加TNS条目c12 =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCp)(HOST = 192.168.56.5)(PORT = 1521))    )    (CONNECT_DATA =      (SID = c12)      (SERVER = DEDicATED)    )  )12cstby =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCp)(HOST = 192.168.56.71)(PORT = 1521))    )    (CONNECT_DATA =      (service_name = c12)      (SERVER = DEDicATED)    )  )listener需要静态注册相关实例,在RAC1节点上的GI拥有者$OracLE_HOME/network/admin中的listener.ora中增加如下内容(非RDBMS拥有者),单实例中也需要静态注册,然后listner reload生效,这个过程不会对现有的连接产生影响.SID_LIST_LISTENER =    (SID_DESC =      (GLOBAL_@R_616_5130@ c12)      (OracLE_HOME = /u01/app/Oracle/12.1.0.2/db_1)      (SID_NAME = rac1)    )从单机上复制密码文件到RAC上的两个节点上[Oracle@localhost dbs]$ scp orapwc12 192.168.56.61:/u01/app/Oracle/12.1.0.2/db_1/dbs/orapwrac1Oracle@192.168.56.61's password: orapwc12                                                                                                                                                                 100% 7680     7.5KB/s   00:00    [Oracle@localhost dbs]$ scp orapwc12 192.168.56.62:/u01/app/Oracle/12.1.0.2/db_1/dbs/orapwrac2Oracle@192.168.56.62's password: orapwc12   在RAC1节点上使用RAMN 执行如下脚本[Oracle@rac1]$OracLE_HOME/RMAN target sys/sys123@c12 auxiliary sys/sys123@c12stdbyrun{allocate chAnnel c1 type disk;allocate chAnnel c2 type disk;allocate auxiliary chAnnel c3 device type disk;allocate auxiliary chAnnel c4 device type disk;duplicate target database for standby from active databasespfileparameter_value_convert 'c12','c12stby'set log_archive_max_processes='5'set standby_file_management='AUTO'set db_unique_name='c12stby'set db_file_name_convert='/u01/app/Oracle/oradata/c12','+DG_DATA'set log_file_name_convert='/u01/app/Oracle/oradata/c12','+DG_DATA'set db_create_file_dest='+DG_DATA'set db_create_online_log_dest_1='+DG_DATA'set db_recovery_file_dest='+DG_DATA'set audit_file_dest='/u01/app/Oracle/audit'set control_files='+DG_DATA/rac/CONTROLFILE/control01.ctl','+DG_DATA/rac/CONTROLFILE/control02.ctl'set fal_client='c12stby'set fal_server='c12'set log_archive_config='dg_config=(c12,c12stby)'nofilenamecheck;sql chAnnel c2 "alter system set log_archive_config=''dg_config=(c12,c12stby)''";sql chAnnel c2 "alter system set log_archive_dest_2=''service=c12stby valid_for=(online_logfiles,priMary_rolE) db_unique_name=c12stby''";sql chAnnel c2 "alter system set standby_file_management=AUTO";release chAnnel c1;release chAnnel c2;release chAnnel c3;release chAnnel c4;}脚本执行完成后,在RAC1节点上新建密码文件,并保存到diskgroup中.SQL> create spfile='+DG_DATA/spfilec12.ora' from pfile='/home/Oracle/tmp.ora';File created.在RAC1节点上增加实例和数据库资源.[Oracle@rac1 ~]$ srvctl add database -db c12 -Oraclehome /u01/app/Oracle/12.1.0.2/db_1[Oracle@rac1 ~]$ srvctl add instance -db c12 -instance rac1 -node rac1[Oracle@rac1 ~]$ srvctl add instance -db c12 -instance rac2 -node raC2[Oracle@rac1 ~]$ srvctl modify database -db c12 -spfile +DG_DATA/spfilec12.ora -startoption mount[Oracle@rac1 ~]$ srvctl config database -db c12Database unique name: c12Database name: Oracle home: /u01/app/Oracle/12.1.0.2/db_1Oracle user: OracleSpfile: +DG_DATA/spfilec12.ora...............................[Oracle@rac1 ~]$ srvctl status database -db c12Instance rac1 is running on node rac1Instance rac2 is running on node rac2在RAC1节点上增加standby logfile groupalter database add standby logfile thread 1 group 9 '+DG_DATA' size 100m;alter database add standby logfile thread 2 group 10 '+DG_DATA' size 100m;alter database add standby logfile thread 2 group 11 '+DG_DATA' size 100m;alter database add standby logfile thread 2 group 12 '+DG_DATA' size 100m;alter database add standby logfile thread 2 group 13 '+DG_DATA' size 100m;alter database add standby logfile thread 2 group 14 '+DG_DATA' size 100m;alter database add standby logfile thread 1 group 15 '+DG_DATA' size 100m;alter database add standby logfile thread 1 group 16 '+DG_DATA' size 100m;alter database add standby logfile thread 1 group 17 '+DG_DATA' size 100m;alter database add standby logfile thread 1 group 18 '+DG_DATA' size 100m;停止单实例上的应用程序,开始切换SQL> alter database commit to switchover to physical standby with session shutdown;Database altered.在RAC1节点上转为主库SQL>  alter database commit to switchover to priMary with session shutdown;Database altered.SQL> alter database open;Database altered.SQL> SELEct THREAD#,status froR_930_11845@ v$thread;   THREAD# STATUS---------- ------1 OPEN2 CLOSEDthread 2现在还是closed状态,需要在RAC2节点上再次打开数据库SQL> alter database open;Database altered.两个thread都是处于打开状态SQL> SELEct THREAD#,status froR_930_11845@ v$thread;   THREAD# STATUS---------- ------1 OPEN2 OPEN在RAC2节点上打开数据库时,在alert.log中,我们可以看到实例会自动创建相关的undo tablespace表空间,而不需要手动再去创建undo表空间了.create smaLLFILE UNDO TABLESPACE UNDOTBS2 DATAFILE SIZE 225443840 AUTOEXTEND ON NEXT 5242880 MAXSIZE 34359721984 ONLINEPluggable Database PDB$SEED Dictionary check completeDatabase Characterset for PDB$SEED is AL32UTF8Completed: create smaLLFILE UNDO TABLESPACE UNDOTBS2 DATAFILE SIZE 225443840 AUTOEXTEND ON NEXT 5242880 MAXSIZE 34359721984 ONLINEDue to limited space in shared pool (need 6094848 bytes, have 3981120 bytes), limiTing resource Manager entities from 2048 to 32修改数据库启动方式为open[Oracle@rac1 ~]$ srvctl modify database -db c12 -startoption open从单实例到RAC的转换到此基本完成了.

大佬总结

以上是大佬教程为你收集整理的使用Oracle Dataguard实现从单机到RAC转换全部内容,希望文章能够帮你解决使用Oracle Dataguard实现从单机到RAC转换所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。