Oracle Data Guard Linux 平台 Physical Standby 搭建实例(一)

2014-11-24 17:59:07 · 作者: · 浏览: 0

Data Guard 环境:


Primary数据库


IP地址:10.85.10.1


数据库SIDorcl


DB_UNIQUE_NAMEorcl_pd



Standby数据库:


IP地址:10.85.10.2


数据库SIDorcl


DB_UNIQUE_NAMEorcl_st





一. Primary 端的配置



1. 主库设置为force logging 模式


SQL> alter database force logging;



2. 主库设为归档模式


SQL> archive log list;


SQL> shutdown immediate


SQL> startup mount


SQL> alter database archivelog;


SQL> archive log list;



3. 添加redo log file


添加一个新的Standby Redologs组(注意组号不要与当前存在的Online Redologs组重复),并为该组指定一个成员:


SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/app/oracle/oradata/orcl/redo05.log') size 50M;


SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/app/oracle/oradata/orcl/redo06.log') size 50M;


SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/u01/app/oracle/oradata/orcl/redo07.log') size 50M;



4. 创建备库的密码文件和控制文件


SQL> alter database create standby controlfile as '/u01/control01.ctl';


-- 说明: 判断一个数据库是Primary还是Standby,就是通过控制文件来判断的。


[oracle@localhost dbs]$ orapwd file=/u01/app/oracle/product/10.2.0/db_1/dbs/orapworcl password=admin


如果已经存在,就不用创建了。 缺省情况下,win下口令文件的格式是pwdsid.oraunix下的格式是orapwSID(大小写敏感)



5. 修改初始化参数文件


SQL> create pfile='/u01/initorcl.ora' from spfile;



initorcl.ora 添加如下内容:


*.DB_UNIQUE_NAME='orcl_pd'


*.log_archive_dest_1='location=/u01/archive'


*.log_archive_dest_2='SERVICE=orcl_st'


*.LOG_ARCHIVE_DEST_STATE_1=ENABLE


*.LOG_ARCHIVE_DEST_STATE_2=ENABLE


*.standby_file_management='AUTO'


*.standby_archive_dest='/u01/archive'


*.FAL_SERVER='orcl_st'


*.FAL_CLIENT='orcl_pd'




如果主库和备库的数据文件位置不同,还需要加如下2个参数:


*.log_file_name_convert='/u02/oradata/orcl/','/u03/oradata/orcl/'


*.db_file_name_convert='/u02/oradata/orcl/','/u03/oradata/orcl/'




-- 注意:orcl_st,orcl_pd 是在tnsnames文件中配置的



'/u01/initorcl.ora' 这个pfile 启动数据库,并生成spfile


SQL> shutdown immediate


Database closed.


Database dismounted.


ORACLE instance shut down.


SQL> startup pfile='/u01/initorcl.ora';


ORACLE instance started.


Total System Global Area 167772160 bytes


Fixed Size 1218316 bytes


Variable Size 79694068 bytes


Database Buffers 83886080 bytes


Redo Buffers 2973696 bytes


Database mounted.


Database opened.


SQL> create spfile from pfile='/u01/initorcl.ora';


File created.



6. 修改listener.ora tnsnames.ora 文件



Listener.ora 文件:



SID_LIST_LISTENER =


(SID_LIST =


(SID_DESC =


(SID_NAME = PLSExtProc)


(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)


(PROGRAM = extproc)


)


(SID_DESC =


(GLOBAL_DBNAME = orcl)


(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)


(SID_NAME = orcl)


)


)



LISTENER =


(DESCRIPTION_LIST =


(DESCRIPTION =


(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))


(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))


)


)





注意:SID_LIST_LISTENER 配置的是静态注册,如果没有该参数,而且Data Guard 启动顺序又不正确,那么在主库可能会报 PING[ARC1]: Heartbeat failed to connect to standby 'orcl_st'. Error is 12514. 错误,导致归档无法完成。



Oracle Listener 动态注册 与 静态注册





Tnsnames.ora 文件


ORCL_ST =


(DESCRIPTION =


(ADDRESS_LIST =


(ADDRESS = (PROTOCOL = TCP)(HOST = 10.85.10.2)(PORT = 1521))


)


(CONNECT_DATA =


(SERVER = DEDICATED)