DataGuard环境:
操作系统:4.7
Primary数据库:
IP地址:10.85.10.1。
数据库SID:orcl
DB_UNIQUE_NAME:orcl_pd
Standby数据库:
IP地址:10.85.10.2
数据库SID:orcl。
DB_UNIQUE_NAME:orcl_st
一.Primary端的配置
1.主库设置为forcelogging模式
SQL>alterdatabaseforcelogging;
2.主库设为归档模式
SQL>archiveloglist;
SQL>shutdownimmediate
SQL>startupmount
SQL>alterdatabasearchivelog;
SQL>archiveloglist;
3.添加redologfile
添加一个新的StandbyRedologs组(注意组号不要与当前存在的OnlineRedologs组重复),并为该组指定一个成员:
SQL>ALTERDATABASEADDSTANDBYLOGFILEGROUP4('/u01/app/oracle/oradata/orcl/redo04.log')size50M;
SQL>ALTERDATABASEADDSTANDBYLOGFILEGROUP5('/u01/app/oracle/oradata/orcl/redo05.log')size50M;
SQL>ALTERDATABASEADDSTANDBYLOGFILEGROUP6('/u01/app/oracle/oradata/orcl/redo06.log')size50M;
SQL>ALTERDATABASEADDSTANDBYLOGFILEGROUP7('/u01/app/oracle/oradata/orcl/redo07.log')size50M;
4.创建备库的密码文件和控制文件
SQL>alterdatabasecreatestandbycontrolfileas'/u01/control01.ctl';
--说明:判断一个数据库是Primary还是Standby,就是通过控制文件来判断的。
[oracle@localhostdbs]$orapwdfile=/u01/app/oracle/product/10.2.0/db_1/dbs/orapworclpassword=admin
如果已经存在,就不用创建了。缺省情况下,win下口令文件的格式是pwdsid.ora,unix下的格式是orapwSID(大小写敏感)
5.修改初始化参数文件
SQL>createpfile='/u01/initorcl.ora'fromspfile;
在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>shutdownimmediate
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SQL>startuppfile='/u01/initorcl.ora';
ORACLEinstancestarted.
TotalSystemGlobalArea167772160bytes
FixedSize1218316bytes
VariableSize79694068bytes
DatabaseBuffers83886080bytes
RedoBuffers2973696bytes
Databasemounted.
Databaseopened.
SQL>createspfilefrompfile='/u01/initorcl.ora';
Filecreated.
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配置的是静态注册,如果没有该参数,而且DataGuard启动顺序又不正确,那么在主库可能会报PING[ARC1]:Heartbeatfailedtoconnecttostandby'orcl_st'.Erroris12514.错误,导致归档无法完成。
OracleListener动态注册与静态注册
Tnsnames.ora文件
ORCL_ST=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.85.10.2)(PORT=1521))
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=orcl)
)
)
ORCL_PD=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.85.10.1)(PORT=1521))
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=orcl)
)
)
come from: