
测试环境:Windows Server 2003 Enterprise Edition SP2
数据库环境:Oracle 10.2
咱们继续上次的内容来学习一下,在备库里恢复数据库,并修改相关的初始化参数,实现主备库数据同步。
首先,我们需要将备份的文件(如是使用上篇文章结尾的语句做备份,是3个文件)+归档日志文件+密码文件+创建的4个重做日志文件一并拷贝至备库相应的文件夹里。
接着,就是利用Rman工具恢复数据库了,这里就不详细说明步骤了,有什么疑问,可以参考之前的文章《Rman备份与恢复(5)- 异机数据恢复实战》。请注意,在恢复控制文件时,请使用以下语句:
1RMAN>restore standby controlfile from "standby备份的控制文件路径";
另外,执行完recover database命令后,不可打开数据库,只能启动至mount状态下。
恢复完后,手动创建监听,配置服务命名等相关操作。
【以下内容是设置数据库归档模式的,如果主库设置之后做了Rman备份,并在备库里恢复的,请忽略。
设置DG库的归档模式及文件目录, 修改数据库由非归档模式为归档模式。
1SQL> startup nomount
2SQL> archive log list;
3SQL> select name,log_mode from v$database;
4SQL>select log_mode from v$database;
5SQL>shutdown immediate;
6SQL>startup mount;
7SQL>alter database archivelog;
注意查看初始化文件,确认以下三个参数是否存在。如果没有,使用以下语句修改。】
1SQL>alter system set log_archive_max_processes=5;
2SQL>alter system set log_archive_format='ARC%S_%R.%T' scope=spfile;
3SQL>alter system set log_archive_dest_1='location=e:\archive';
接下来,我们需要修改Spfile的几个初始化参数,执行以下语句:
1SQL>alter system set db_unique_name='orcldg' scope=spfile;
2SQL>alter system set fal_client='orcldg' scope=spfile;
3SQL>alter system set fal_server='orcl' scope=spfile;
4SQL>alter system set log_archive_config='dg_config=(orcldg,orcl)' scope=spfile;
5SQL>alter system set log_archive_dest_1='location=e:\archive\ valid_for=(all_logfiles,all_roles) db_unique_name=orcldg' scope=spfile;
6SQL>alter system set log_archive_dest_2='SERVICE=orcl lgwr sync valid_for=(online_logfile,primary_role) db_unique_name=orcl' scope=spfile;
修改完后,利用Spfile文件重建Pfile文件,执行以下语句:
1SQL>create pfile from spfile;
修改监听文件listener.ora文件内容为:
1SID_LIST_LISTENER =
2 (SID_LIST =
3 (SID_DESC =
4 (GLOBAL_DBNAME = orcldg)
5 (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
6 (SID_NAME = orcl)
7 )
8 )
9LISTENER =
10 (DESCRIPTION_LIST =
11 (DESCRIPTION =
12 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.32.88)(PORT = 1521))
13 )
14 )
重启监听,执行以下语句:
1C:\>lsnrctl stop
2C:\>lsnrctl start
利用 tnsping 测试 tnsnames 配置是否正确,执行以下语句:
1C:\>tnsping orcl
2C:\>tnsping orcldg
如果能PING通,则说明网络及相关的配置没有问题了。
启动物理备用数据库至mount状态
1SQL> alter database mount standby database;
启动Redo应用
1SQL> alter database recover managed standby database disconnect from session;
启动实时应用
1SQL> alter database recover managed standby database using current logfile disconnect from session;
如果报ORA-01153: an incompatible media recovery is active错误,请先关闭日志应用,再重新启用。
1SQL>alter database recover managed standby database cancel;
2SQL>alter database recover managed standby database disconnect from session;
最后,我们来检查一下主备库的同步情况:
主库
1SQL> show parameter instance_name;
2SQL> alter system switch logfile;
3SQL> select max(sequence#) from v$archived_log;
备库
1SQL> show parameter instance_name;
2SQL> select max(sequence#) from v$archived_log;
备库里查看已经应用的归档日志
1SQL>select sequence#,applied from v$archived_log;
稍等片刻之后,主备同步了。

好了,如果查询的结果相同,恭喜你,说明主备数据库已经同步了!你已经完成了99%的Oracle DG配置了!
下一篇,我们再一起来学习主备库如何切换及常见问题的讲解,敬请期待。。。。
【完毕】






