主库rac 开启归档模式,设置归档路径,格式(归档一定要放在共享磁盘中)注意:rac 归档目录设置一定要放在共享存储中详细设置参考我的经验:oracle rac 归档开启我的归档目录:+DATADG/arch
编辑主库各个节点tnsnames.ora文件两个节点的 tnsnames.ora:TEST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = scanip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test) ) )test_rac1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.122)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test) (INSTANCE_NAME = test1) ) )test_rac2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.123)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test) (INSTANCE_NAME = test2) ) )standby_db = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.126)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test_standby) ) )# Net_service test is for aplication befor switchover
rman备份主库,创建pfile文件和控制文件1:节点1上备份全库[oracle@node1 backup]$ rman target /RMAN> run{2> allocate channel c1 type disk;3> allocate channel c2 type disk;4> backup database format '/zxx_software/oracle/backup/full_%d_%T_%s_%p';5> }2:节点1全备完之后执行节点1:SQL> alter system archive log current;节点2:SQL> alter system archive log current;3:节点1 备份归档RMAN> run{2> backup archivelog all format '/zxx_software/oracle/backup/arch_%d_%T_%s_%p' delete input;3> }4:创建pfile文件SQL> create pfile='/zxx_software/oracle/backup/test_back.pfile' from spfile;5:创建控制文件SQL> alter database create standby controlfile as '/zxx_software/oracle/backup/test_back.ctl';6:创建测试表SQL> create user zxx identified by zxx;SQL> grant connect ,dba to zxx;SQL> create table test1 (a int ,b varchar2(20));SQL> insert into test1 values(1,'aaaa');SQL> commit;
scp备份集、pfile文件、控制文件、密码文件到备库主机[oracle@node1 backup]$ pwd/zxx_software/oracle/backup[oracle@node1 backup]$ lltotal 366288-rw-r-----. 1 oracle asmadmin 43429888 Nov 3 05:38 arch_TEST_20141103_5_1-rw-r-----. 1 oracle asmadmin 210378752 Nov 3 05:30 full_TEST_20141103_1_1-rw-r-----. 1 oracle asmadmin 83722240 Nov 3 05:29 full_TEST_20141103_2_1-rw-r-----. 1 oracle asmadmin 18546688 Nov 3 05:30 full_TEST_20141103_3_1-rw-r-----. 1 oracle asmadmin 98304 Nov 3 05:30 full_TEST_20141103_4_1-rw-r-----. 1 oracle asmadmin 18497536 Nov 3 06:13 test_back.ctl-rw-r--r--. 1 oracle asmadmin 1279 Nov 3 06:12 test_back.pfile[oracle@node1 backup]$ scp * 192.168.56.126:/zxx_software/oracle/backup/The authenticity of host '192.168.56.126 (192.168.56.126)' can't be established.RSA key fingerprint is c3:4b:2c:9a:55:d7:16:b6:cf:4e:5f:66:a1:49:72:23.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '192.168.56.126' (RSA) to the list of known hosts.oracle@192.168.56.126's password:arch_TEST_20141103_5_1 100% 41MB 13.8MB/s 00:03 full_TEST_20141103_1_1 100% 201MB 14.3MB/s 00:14 full_TEST_20141103_2_1 100% 80MB 13.3MB/s 00:06 full_TEST_20141103_3_1 100% 18MB 17.7MB/s 00:01 full_TEST_20141103_4_1 100% 96KB 96.0KB/s 00:00 test_back.ctl 100% 18MB 17.6MB/s 00:01 test_back.pfile 100% 1279 1.3KB/s 00:00
备库主机还原,恢复到mount状态,并开启归档抓取进程(备库端)1:安装rac相同版本oracle 11g 软件,不要dbca建库如何安装Oracle 11g(11.2.0.4) 软件,参考我的经验:oracle 11g(11.2.0.4) install on rhel 62:编辑oracle 用户环境export ORACLE_SID=test_standbyexport ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1export PATH=$ORACLE_HOME/bin:$PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib source /home/oracle/.bash_profile3:创建dump目录export ORACLE_SID=test_standbymkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adumpmkdir -p $ORACLE_BASE/admin/$ORACLE_SID/dpdump mkdir -p $ORACLE_BASE/admin/$ORACLE_SID hdump mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/pfile mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/scripts注意:Oracle 11g alert日志数据库会自动创建,默认路径:$ORACLE_BASE/diag/rdbms/中4:创建归档目录和数据库存放目录创建数据库库存放目录[oracle@oracle11g app]$ mkdir -p /u01/app/oradata/test/data 创建数据库归档目录[oracle@oracle11g app]$ mkdir -p /u01/app/oradata/test/arch 5:复制文件(密码、参数、控制 文件)复制密码文件[oracle@oracle11g backup]$ cp orapwtest_standby1 /u01/app/oracle/product/11.2.0/db_1/dbs/orapwtest复制参数文件[oracle@oracle11g backup]$ cp test_back.pfile /u01/app/oracle/product/11.2.0/db_1/dbs/inittest_standby.ora复制控制文件[oracle@oracle11g backup]$ cp test_back.ctl /u01/app/oradata/test/data/control01.dbf6:编辑pfile参数文件(inittest.ora)[oracle@oracle11g dbs]$ cat inittest.oratest_standby.__db_cache_size=230686720test_standby.__java_pool_size=4194304test_standby.__large_pool_size=4194304test_standby.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environmenttest_standby.__pga_aggregate_target=318767104test_standby.__sga_target=469762048test_standby.__shared_io_pool_size=0test_standby.__shared_pool_size=222298112test_standby.__streams_pool_size=0*.audit_file_dest='/u01/app/oracle/admin/test_standby/adump'*.audit_trail='db'*.cluster_database=false*.compatible='11.2.0.4.0'*.control_files='/u01/app/oradata/test/data/control01.dbf'*.db_block_size=8192*.db_create_file_dest='/u01/app/oradata/test/data/'*.db_domain=''*.db_file_name_convert='+DATADG/test/datafile/','+DATADG/test/tempfile/','/u01/app/oradata/test/data/','/u01/app/oradata/test/data/'*.db_name='test'*.db_unique_name='test_standby'*.fal_server='test_rac1','test_rac2'*.log_archive_config='DG_CONFIG=(test_standby,test)'*.log_archive_dest_1='LOCATION=/u01/app/oradata/test/arch/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=test_standby'*.log_archive_dest_2='SERVICE=test_rac1 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=test'*.log_archive_dest_state_1='ENABLE'*.log_archive_dest_state_2='ENABLE'*.log_archive_format='test_%t_%s_%r.log'*.log_archive_start=TRUE*.log_file_name_convert='+DATADG/test/onlinelog/','/u01/app/oradata/test/data/TEST_STANDBY/onlinelog/'*.memory_target=786432000*.open_cursors=300*.processes=150*.remote_login_passwordfile='exclusive'*.service_names='test_standby'*.standby_file_management='AUTO'*.thread=1*.undo_tablespace='UNDOTBS1'7:启动数据库到mount状态[oracle@oracle11g dbs]$ sqlplus / as sysdbaSQL> startup mount pfile=/u01/app/oracle/product/11.2.0/db_1/dbs/inittest_standby.ora如果遇到以下错误:ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance参考我的经验:Oracle 故障:[4]ORA-32004: obsolete ... 8:rman还原数据文件告诉控制文件备份数据文件位置RMAN> catalog backuppiece '/zxx_software/oracle/backup/full_TEST_20141103_1_1';RMAN> catalog backuppiece '/zxx_software/oracle/backup/full_TEST_20141103_2_1';RMAN> catalog backuppiece '/zxx_software/oracle/backup/full_TEST_20141103_3_1';RMAN> catalog backuppiece '/zxx_software/oracle/backup/full_TEST_20141103_4_1'; RMAN> restore database;如果报错,请参考我的经验:rac data guard rman restore database 报错9:rman恢复数据库告诉控制文件备份归档文件位置RMAN> catalog backuppiece '/zxx_software/oracle/backup/arch_TEST_20141103_5_1';恢复 数据文件到备份最新处RMAN> recover database; 10:netca创建监听并创建tnsnames.ora文件[oracle@oracle11g admin]$ vi listener.ora[oracle@oracle11g admin]$ cat listener.oraLISTENER = (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST= 192.168.56.126)(PORT=1521)) ) SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (GLOBAL_DBNAME=test) (SID_NAME=test) (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1) ) )如果担心自己创建的listener.ora格式不对,可以netca创建监听[oracle@oracle11g admin]$ cat tnsnames.oraTEST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.126)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test_standby) ) )test_rac1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.122)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test) (INSTANCE_NAME = test1) ) )test_rac2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.123)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test) (INSTANCE_NAME = test2) ) )standby_db = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.126)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test_standby) ) )# Net_service test is for aplication alter switchover11:开启归档抓取进程SQL> alter database recover managed standby database disconnect from session;
验证datagard是否配置成功 1:创建数据库文件验证节点1:SQL> create tablespace zxx datafile '+DATADG/test/datafile/zxx1.dbf' size 10m;SQL> alter system archive log current;备库端:SQL> select name from v$datafile; 2:查看备库alert 日志验证备库端:[oracle@oracle11g trace]$ pwd 11g alert日志所在目录/u01/app/oracle/diag/rdbms/test/test/trace[oracle@oracle11g trace]$ cat alert_test.logMedia Recovery Log /u01/app/oradata/test/arch/test_2_18_861680022.logMedia Recovery Log /u01/app/oradata/test/arch/test_1_32_861680022.logSuccessfully added datafile 6 to media recoveryDatafile #6: '/u01/app/oradata/test/data/TEST/datafile/o1_mf_zxx_b5hs1tfb_.dbf'Media Recovery Waiting for thread 1 sequence 33 (in transit)rac端:节点1:SQL> archive log list;Database log mode Archive ModeAutomatic archival EnabledArchive destination +DATADG/archOldest online log sequence 32Next log sequence to archive 33Current log sequence 33