Linux下搭建Oracle物理Data guard

 

一、引言

    近期利用手头的空余机器搭建了Oracle物理Data guard用于学习,现将过程与大家分享。

 

二、环境准备

u 硬件

    两台主机,当然如果只有一台主机也可以,就是在恢复数据库时需要路径转换,正好手头有两台闲置的主机,所以就省去了许多麻烦。

    另,实际环境中也应是不同的主机搭建Data guard环境,不然也就失去意义。

 

u 软件环境

    操作系统:Redhat4u8 x86_64

    数据库版本:Oracle10g(10.2.04) for linux64

 

u 数据库

主库(Primary

    安装数据库软件,并创建数据库,并使之运行在归档模式下。

备库(Standby

    仅安装数据库软件,配置并启动监听。

 

 

三、具体配置过程

1. 确认主库的归档模式,修改主库Force logging

   

SQL> archive log list

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /oracle/archive_logs/testdb

Oldest online log sequence     160

Next log sequence to archive   162

Current log sequence           162

 

SQL> alter database force logging;

 

 

2. 主库:使用RMAN全库备份

 


 

3. 主库创建备用controlfile

 


    将创建的controlfile复制到备用数据库。

 

4. 创建pfile,并修改其中备用数据库参数

   pfile中增加如下内容

 

*.standby_file_management=AUTO

*.fal_server='DBPRIMARY'

*.fal_client='DBSTANDBY'

*.db_unique_name='testdbstd'

    并将其复制到备用库的$ORACLE_HOME/dbs下。

   

 

5. 配置主库和备用库的tnsnames.ora,添加如下内容

 


 

6. 备用库,恢复数据库文件。

    备用库创建密码文件,注意这里的密码必须和主库一致。

    在备用库创建相应目录(如bdump等)。

    在备用库上使用pfile启动数据库到mount状态(注意步骤3创建的控制文件已经复制到备用数据库的相应文件夹下)

    将备份集复制到备用数据库的同样目录下,如果没有空间可以使用link解决。

   

    启动数据库

 

    恢复数据文件

   

 

 

 

7. 主库,修改归档参数

   

    注意testdbstd是备库的db_unique_name

8. 备库,应用日志

 


    注意:这里一定要更改service_names,否则主库将无法连接备库。

 

  观察日志

 

 

   日志正常传输、应用。

 

四、结语

    配置过程中遇到了一些问题,如修改备用库的db_unique_name后,监听程序中的Service 名变成和db_unique_name一样,导致主库通过tnsnames.ora的配置连接备用库时无法连接,解决的方法是修改备用库的service_names,使之和tnsnames.ora中的配置匹配(这里的情况就是使其等于db_name)。

    有一个验证方法,就是在修改完tnsnames.ora后,主、备库都用sqlplus互相连接一下,以确保正常连接。

    最后就是不要忘记将备用库的pfile换成spfile。(create spfile from pfile,and restart database)。