这里是采用了rman来复制standby数据库,发现rman的确非常方便。
1. 准备主库 db
创建密码文件
orapwd file=orapwdbs101 entries=4 password=pass
准备参数文件
创建tnsnames.ora
stdby和dbs101
启动archivelog
切换日志
alter system switch logfile;
强制database logging
alter database force logging;
select force_logging from v$database;
创建standby log
在最大的保护或者最大的可用模式下,standby log是必须的。LGWR ASYNC传输模式是推荐的。DATA
GUARD可以从standby log文件中恢复,而不是从归档日志文件。
2. 准备从库 db
在主库上:
rman target /
为standby库备份控制文件
backup current controlfile for standby format '/u02/backup/standbycontrol.ctl';
为standby库备份数据库
准备stadnby库准备init文件
拷贝standby的控制文件,数据库备份和init.ora到丛库。
scp /u02/backup/*.* 10.10.10.60:/u02/backup
在从库上:
创建密码文件
orapwd file=orapwstdby password=pass entries=4
创建相关的路径
bdump
udump
cdump
adump
arch
启动数据库到nomount状态:
创建spfile
在主库上:
用RMAN复制standby数据库
rman target / auxiliary sys@stdby
如果复制的数据库文件的目录和源数据库一致,需要加NOFILENAMECHECK选项。
duplicate target database for standby dorecover NOFILENAMECHECK;
查看主库的日志序列号,并切换主库日志。
select max(sequence#) from v$archived_log;
select name,open_mode,log_mode from v$database;
select recovery_mode from v$archive_dest_status;
select max(sequence#) from v$log_history;
在丛库:
准备接受主库的日志文件:
alter database recover managed standby database disconnect from session;
验证从库的日志序列号:
select max(sequence#) from v$archived_log;
1. 准备主库 db
创建密码文件
orapwd file=orapwdbs101 entries=4 password=pass
准备参数文件
点击(此处)折叠或打开
- DB_NAME=dbs101 #数据库名,主从数据库是用同一个数据库名
- REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
- DB_UNIQUE_NAME=dbs101 #每个数据库一个唯一的名字。
- LOG_ARCHIVE_CONFIG='DG_CONFIG=(dbs101,stdby)' #主从库唯一数据库名的映射
- CONTROL_FILES='/u02/oradata/dbs101/control1.ctl','/u02/oradata/dbs101/control2.ctl','/u02/oradata/dbs101/control3.ctl'
- LOG_ARCHIVE_DEST_1='LOCATION=/u02/oradata/dbs101/arch/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dbs101'
- LOG_ARCHIVE_DEST_2='SERVICE=stdby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stdby'
- #SERVICE:网络服务名,在tnsnames.ora中定义。
- LOG_ARCHIVE_DEST_STATE_1=ENABLE
- LOG_ARCHIVE_DEST_STATE_2=ENABLE
- LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
- LOG_ARCHIVE_MAX_PROCESSES=30
- DB_FILE_NAME_CONVERT=('/u02/oradata/dbs101/','/u02/oradata/dbs101/') #主从数据库之间的数据文件名的转换关系
- LOG_FILE_NAME_CONVERT=('/u02/oradata/dbs101/','/u02/oradata/dbs101/') #主从数据库之间的日志文件名的转换关系
- STANDBY_FILE_MANAGEMENT=AUTO #当增加或删除主库文件时,丛库也做相应的操作。
- FAL_SERVER=stdby #当数据库为从库时,主数据的网络服务名
- FAL_CLIENT=dbs101 #当数据库为从库时,从数据的网络服务名
创建tnsnames.ora
stdby和dbs101
启动archivelog
点击(此处)折叠或打开
- startup mount pfile=initdbs101.ora;
- alter database archivelog;
- alter database open;
切换日志
alter system switch logfile;
强制database logging
alter database force logging;
select force_logging from v$database;
创建standby log
在最大的保护或者最大的可用模式下,standby log是必须的。LGWR ASYNC传输模式是推荐的。DATA
GUARD可以从standby log文件中恢复,而不是从归档日志文件。
点击(此处)折叠或打开
- ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u02/oradata/dbs101/stadby_redo04.log') SIZE 50M;
- ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u02/oradata/dbs101/stadby_redo05.log') SIZE 50M;
- ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u02/oradata/dbs101/stadby_redo06.log') SIZE 50M;
- ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/u02/oradata/dbs101/stadby_redo07.log') SIZE 50M;
2. 准备从库 db
在主库上:
rman target /
为standby库备份控制文件
backup current controlfile for standby format '/u02/backup/standbycontrol.ctl';
为standby库备份数据库
点击(此处)折叠或打开
- run
- {
- allocate channel c2 device type disk format '/u02/backup/%u';
- backup database plus archivelog;
- }
准备stadnby库准备init文件
点击(此处)折叠或打开
- DB_NAME=stdby
- REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
- DB_UNIQUE_NAME=dbs101
- LOG_ARCHIVE_CONFIG='DG_CONFIG=(stdby,dbs101)'
- CONTROL_FILES='/u02/oradata/dbs101/control1.ctl','/u02/oradata/dbs101/control2.ctl','/u02/oradata/dbs101/control3.ctl'
- LOG_ARCHIVE_DEST_1='LOCATION=/u02/oradata/dbs101/arch/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dbstdby'
- LOG_ARCHIVE_DEST_2='SERVICE=dbs101 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dbs101'
- LOG_ARCHIVE_DEST_STATE_1=ENABLE
- LOG_ARCHIVE_DEST_STATE_2=ENABLE
- LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
- LOG_ARCHIVE_MAX_PROCESSES=30
- DB_FILE_NAME_CONVERT=('/u02/oradata/dbs101/','/u02/oradata/dbs101/')
- LOG_FILE_NAME_CONVERT=('/u02/oradata/dbs101/','/u02/oradata/dbs101/')
- STANDBY_FILE_MANAGEMENT=AUTO
- FAL_SERVER=dbs101
- FAL_CLIENT=stdby
拷贝standby的控制文件,数据库备份和init.ora到丛库。
scp /u02/backup/*.* 10.10.10.60:/u02/backup
在从库上:
创建密码文件
orapwd file=orapwstdby password=pass entries=4
创建相关的路径
bdump
udump
cdump
adump
arch
启动数据库到nomount状态:
点击(此处)折叠或打开
- SQL> startup nomount pfile='/u02/backup/initstdby.ora';
- ORACLE instance started.
- Total System Global Area 1224736768 bytes
- Fixed Size 2083560 bytes
- Variable Size 318768408 bytes
- Database Buffers 889192448 bytes
- Redo Buffers 14692352 bytes
创建spfile
点击(此处)折叠或打开
- SQL> create spfile from pfile='/u02/backup/initstdby.ora';
-
- File created.
-
- SQL> shutdown immediate
- ORA-01507: database not mounted
-
-
- ORACLE instance shut down.
-
- 以nomount状态启动:
- SQL> startup nomount
- ORACLE instance started.
-
- Total System Global Area 1224736768 bytes
- Fixed Size 2083560 bytes
- Variable Size 318768408 bytes
- Database Buffers 889192448 bytes
- Redo Buffers 14692352 bytes
在主库上:
用RMAN复制standby数据库
rman target / auxiliary sys@stdby
如果复制的数据库文件的目录和源数据库一致,需要加NOFILENAMECHECK选项。
duplicate target database for standby dorecover NOFILENAMECHECK;
查看主库的日志序列号,并切换主库日志。
select max(sequence#) from v$archived_log;
select name,open_mode,log_mode from v$database;
select recovery_mode from v$archive_dest_status;
select max(sequence#) from v$log_history;
在丛库:
准备接受主库的日志文件:
alter database recover managed standby database disconnect from session;
验证从库的日志序列号:
select max(sequence#) from v$archived_log;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25105315/viewspace-697224/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25105315/viewspace-697224/