主库信息:数据库:11.2.0.4 OS:rhel as6.4 64位 SID:primary db_name:primary db_unique_name:primary
备库信息:数据库:11.2.0.4 OS:rhel as6.4 64位 SID:standby db_name:primary db_unique_name:standby
1.主库准备:
1.1 Enable ForcedLogging
select FORCE_LOGGING from v$database;
alter database force logging;
1.2 Configure Redotransport Authentication
orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SIDpassword=redhat entries=10 force=yes
1.3 Configure thePrimary Database to Receive Redo data
ALTER DATABASE ADD STANDBY LOGFILE('/u01/app/oracle/oradata/primary/slog1.rdo') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE('/u01/app/oracle/oradata/primary/slog2.rdo') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE('/u01/app/oracle/oradata/primary/slog3.rdo') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE('/u01/app/oracle/oradata/primary/slog4.rdo') SIZE 50M;
select * from V$STANDBY_LOG
1.4 Set PrimaryDatabase Initialization Parameters
DB_NAME=primary
DB_UNIQUE_NAME=primary
LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'
LOG_ARCHIVE_DEST_1='LOCATION=/archivelog/primary/VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary'
LOG_ARCHIVE_DEST_2='SERVICE=standby ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
FAL_SERVER=standby
STANDBY_FILE_MANAGEMENT=AUTO
#DB_FILE_NAME_CONVERT='standby','primary' 因为主库和备库的目录结构一致所以不用此参数
#LOG_FILE_NAME_CONVERT='/arch1/standby','/arch1/primary' 因为主库和备库的目录结构一致所以不用此参数
1.5 Enable Archiving
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
1.6create listener and tnsnames file
[oracle@primary dbs]$cd /u01/oracle/product/11g/network/admin/
[oracle@primaryadmin]$ vi listener.ora
SID_LIST_LISTENER=
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = primary)
(ORACLE_HOME = /u01/oracle/product/11g)
(SID_NAME = primary)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =primary)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1521))
)
)
ADR_BASE_LISTENER =/u01/oracle
[oracle@primaryadmin]$ vitnsnames.ora
PRIMARY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.100.30)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = primary)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.100.20)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = standby)
)
)
2.备库准备
2.1 Create a Control File for the StandbyDatabase 在主库上操作为备库创建一个standbycontrolfile
startup mount;
alter database create standby controlfile as'/tmp/control01.ctl';
alter database open;
2.2Create aParameter File for the Standby Database在主库上操作为备库创建一个pfile;
createpfile='/tmp/initstandby.ora' from spfile;
然后修改pfile
DB_NAME=primary
DB_UNIQUE_NAME=standby
LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'
#DB_FILE_NAME_CONVERT='primary','standby'因为主库和备库的目录结构一致所以不用此参数
#LOG_FILE_NAME_CONVERT='/arch1/primary','/arch1/standby'因为主库和备库的目录结构一致所以不用此参数
LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
LOG_ARCHIVE_DEST_1='LOCATION=/archivelog/standby/VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby'
LOG_ARCHIVE_DEST_2='SERVICE=primary ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primary'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
STANDBY_FILE_MANAGEMENT=AUTO
FAL_SERVER=primary
2.3在备库上创建相应的目录并复制相应的文件到备库
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/admin/primary/adump
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/admin/primary/dpdump
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/admin/primary/pfile
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/oradata/primary
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/fast_recovery_area/primary
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/diag/rdbms/primary/primary
[oracle@primaryprimary]$ pwd
/u01/oracle/oradata/primary
[oracle@primary primary]$ scp *standby:/u01/oracle/oradata/primary/ 复制数据文件和日志文件
[oracle@primary tmp]$pwd
/tmp
[oracle@primary tmp]$ scp control01.ctlstandby:/u01/oracle/oradata/primary复制standby控制文件到备库
[oracle@primary tmp]$scp control01.ctl standby:/u01/oracle/fast_recovery_area/primary/control02.ctl
将修改后的参数文件也复制到备库的 $ORACLE_HOME/dbs目录下
[oracle@primary tmp]$scp initstandby.ora standby:/u01/oracle/product/11g/dbs/
2.4 create listener and tnsnames file备库上也需要创建监听文件和tns文件
[oracle@standby dbs]$ cd/u01/oracle/product/11g/network/admin/
[oracle@standby admin]$ vi listener.ora
SID_LIST_LISTENER=
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = standby)
(ORACLE_HOME = /u01/oracle/product/11g)
(SID_NAME = standby)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1521))
)
)
ADR_BASE_LISTENER =/u01/oracle
[oracle@primaryadmin]$ vitnsnames.ora
PRIMARY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.100.30)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = primary)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.100.20)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = standby)
)
)
2.5ConfigureRedo transport Authentication备库也需要创建密码文件密码和主库的密码一致
orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SIDpassword=redhat entries=10 force=yes
到此环境准备完毕