SQL> select log_mode from v$database;
如果结果不是"ARCHIVELOG",执行以下命令:
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
SQL> select force_logging from v$database;
如果结果不是"YES",执行以下命令:
SQL> alter database force logging;SQL> select group#,thread#,bytes/1024/1024 from v$log;
根据得到的group数目和log大小,为Standby实例创建对应的logfile,默认情况下是三个Group,且每个大小为50M。
SQL> alter database add standby logfile ‘/home/oracle/app/oracle/oradata/sungoin/stby_redo01.log’ size 50m;
SQL> alter database add standby logfile ‘/home/oracle/app/oracle/oradata/sungoin/stby_redo02.log’ size 50m;
SQL> alter database add standby logfile ‘/home/oracle/app/oracle/oradata/sungoin/stby_redo03.log’ size 50m;
SQL> alter system set log_archive_config=’DG_CONFIG=(test,standby)’;
SQL> alter system set log_archive_dest_1=’LOCATION=/home/oracle/app/oracle/flash_recovery_area/test/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=test’;
SQL> alter system set log_archive_dest_2=’service=standby LGWR ASYNC NET_TIMEOUT=30
valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=standby’;
SQL> alter system set fal_server=test;
SQL> alter system set fal_client=standby;
SQL> alter system set standby_file_management=auto;
SQL> alter system set remote_login_passwordfile=exclusive;
在Primary服务器的监听器中静态注册test实例,添加下面行到文件 /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora中:
SID_LIST_LISTENER =)
在Primary服务器的TNS中注册test和standby,添加下面行到文件 /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora中:
)
在Oracle用户环境下执行下列命令:
$ mkdir -p /home/oracle/app/oracle/oradata/test/
$ mkdir -p /home/oracle/app/oracle/admin/test/adump
$ mkdir -p /home/oracle/app/oracle/admin/test/dpdump
$ mkdir -p /home/oracle/app/oracle/admin/test/pfile
$ mkdir -p /home/oracle/app/oracle/flash_recovery_area/test/archivelog/在Standby服务器的监听器中静态注册test实例,添加下面行到文件 /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora中:
SID_LIST_LISTENER =)
在Standby服务器的TNS中注册sungoin和standby,添加下面行到文件 /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora中:
)
DB_UNIQUE_NAME=standby
拷贝Primary服务上的密码文件到standby服务器上,命令如下:
scp [email protected]:/home/oracle/app/racle/product/11.2.0/dbhome_1/dbs/orapwtest /home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/$ sqlplus / as sysdba
SQL> startup nomount;创建脚本文件dupstby.cmd, 文件内容如下:
run {set log_archive_dest_2='service=test LGWR ASYNC NET_TIMEOUT=30
valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=test'
nofilenamecheck;
}
$ rman target /
RMAN> connect auxiliary sys/oracle@standby
RMAN> @dupstby.cmd$ sqlplus / as sysdba
SQL> alter database recover managed standby databaseusing current logfile disconnect from session;
SQL> exit;
验证配置是否正确有三种方法,一是检查两个数据库的状态,二是比对两个数据库的archive log的序列是否一样,三是在Primary数据库进行改动然后在Standby数据库上进行检验比对。
在两个数据库上分别执行下面命令:
SQL> select open_mode,switchover_status,database_role from v$database;
Primary服务器上应该得到结果:
OPEN_MODE SWITCHOVER_STATUS DATABASE_ROLE
-------------------- -------------------- ---------------
READ WRITE TO STANDBY PRIMARY
Standby服务器上应该得到结果:
OPEN_MODE SWITCHOVER_STATUS DATABASE_ROLE
-------------------- -------------------- ----------------
READ ONLY WITH APPLY NOT ALLOWED PHYSICAL STANDBY
在两个数据库上分别执行下列命令,比对两端的Current log sequence是否一样,正确情况下应该是一样的。
SQL> archive log list;
在Primary数据库上手动进行任何数据改动,然后在Standby上进行查询验证,确认在Primary上的改动已经更新到Standby上了,由于该方案采用异步传输方式,所以Primary上的改动会延误几秒钟才会传输到Standby上。
如果检查结果和上述不一样,可能是哪个步骤出了错误,检查Log查看详细情况。