Data guard
感谢《Oracle11gR2下搭建DataGuard主备同步详解》与《手把手教你安装Data Guard 》 我是按照这两篇文章成功搭建的!
一、 基本信息
备库只安装软件
IP地址:192.168.10.101
主机名:rac1
oracle_sid:milan01
db_name:milan01
db_unique_name:zk
service_name:zk
global_name:zk
监听名,端口:listener,1521
IP地址:192.168.10.102
主机名:test.com
oracle_sid:milan01
db_name:milan01
db_unique_name:bk
service_name:bk
global_name: bk
监听名,端口:listener,1521
二、 配置host文件
192.168.10.101 ora1
192.168.10.102test.com
三、 主备都开启监听
四、 查看归档状态
SQL>archive log list
Database logmode Archive Mode
Automaticarchival Enabled
Archivedestination /u01/arch
Oldest onlinelog sequence 45
Next logsequence to archive 47
Current logsequence 47
主库执行 SQL>alter database force logging;
五、 传输密码文件到备库
六、 主备库监听及tns配置
1 主库监听配置
SID_LIST_LISTENER=
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = zk)
(ORACLE_HOME = /u01/app/oracle)
(SID_NAME = milan01)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =ora1)(PORT = 1521))
)
ADR_BASE_LISTENER = /u01/app
2 主库tns配置
ZK =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =ora1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = zk)
)
)
BK =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =test.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = bk)
)
)
3 备库监听及tns配置参考主库
七、 更改Pfile参数
*.db_file_name_convert='/u01/app/oradata/bk','/u01/app/oradata/zk'
*.DB_UNIQUE_NAME='zk'
*.fal_client='zk'
*.fal_server='bk'
*.log_archive_config='DG_CONFIG=(zk,bk)'
*.log_archive_dest_1='LOCATION=/u01/archLGWR VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=zk'
*.log_archive_dest_2='SERVICE=bkASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=bk'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_file_name_convert='/u01/app/oradata/bk','/u01/app/oradata/zk'
*.standby_file_management='AUTO'
保存后复制到备库,然后做相应更改
八、 备库创建pfile文件中没有的目录
在Oracle用户下创建mkdir -p /u01/app/oraclebackup/{controlfile,datafile}
创建一个存放rman所备份的数据库文件的目录,controlfile存放控制文件备份,datafile存放数据文件(表空间等等)
mkdir -p${ORACLE_BASE}/flash_recovery_area/BK /archivelog
创建实例存放归档日志的目录,同时也接收主库传递过来的归档日志
九、 主库配置
在Oracle用户下创建mkdir -p /u01/app/oraclebackup/{controlfile,datafile}
进入rman
RMAN>configure controlfile autobackup on;
RMAN>configure controlfile autobackup format for devicetype disk to '/0u1/app/oraclebackup/controlfile/%F'
RMAN>backup device type disk format'/u01/app/oraclebackup/datafile/%U' database plus archivelog;
在系统下scp/u01/app/oraclebackup/datafile/* test.com:/u01/app/oraclebackup/datafile/
scp/u01/app/oraclebackup/controlfile/* test.com:/u01/app/oraclebackup/controlfile/
十、 备库
exportORACLE_SID=milan01
sqlplus / assysdba
startup nomount
十一、 主库
exportORACLE_SID=milan01
rman target /
connectauxiliary sys/syspassword@BK
duplicatetarget database for standby;(如果报错可执行duplicate target database for standby nofilenamecheck;)
十二、 备库执行以下语句
SQL> alter database recover managedstandby database disconnect from session;
SQL>SELECTSEQUENCE#, REGISTRAR, FIRST_TIME, NEXT_TIME, APPLIED FROM V$ARCHIVED_LOG ORDERBY SEQUENCE#;
十三、 备库添加日志文件
SQL>ALTERDATABASE ADD STANDBY LOGFILE '/u01/app/oradata/bk/redo01_dg1.log' size 512M;
SQL>ALTER DATABASE ADDSTANDBY LOGFILE '/u01/app/oradata/bk/redo02_dg1.log' size 512M;
SQL>ALTERDATABASE ADD STANDBY LOGFILE '/u01/app/oradata/bk/redo02_dg1.log' size 512M;
十四、 主库添加日志文件
SQL>ALTERDATABASE ADD STANDBY LOGFILE '/u01/app/oradata/zk/redo01_dg1.log' size 512M;
SQL>ALTER DATABASE ADDSTANDBY LOGFILE '/u01/app/oradata/zk/redo02_dg1.log' size 512M;
SQL>ALTERDATABASE ADD STANDBY LOGFILE '/u01/app/oradata/zk/redo02_dg1.log' size 512M;
十五、 备库执行
SQL> alterdatabase recover managed standby database disconnect from session;
SQL> alterdatabase recover managed standby database cancel;
SQL> alterdatabase open read only;
十六、 在主库做测试,如果备库没有同步则执行
SQL>alterdatabase recover managed standby database using current logfile disconnect fromsession;
假如上一步主库在插入数据等对表中数据进行更改的操作中没有执行commit提交操作,则备库会查找不到同步数据