ITPub博客

首页 > 数据库 > Oracle > 利用rman duplicate 实施 Data guard

利用rman duplicate 实施 Data guard

原创 Oracle 作者:dbs101 时间:2011-06-06 17:11:21 0 删除 编辑
这里是采用了rman来复制standby数据库,发现rman的确非常方便。

1. 准备主库 db

创建密码文件
orapwd file=orapwdbs101 entries=4 password=pass

准备参数文件

点击(此处)折叠或打开

  1. DB_NAME=dbs101  #数据库名,主从数据库是用同一个数据库名
  2. REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
  3. DB_UNIQUE_NAME=dbs101   #每个数据库一个唯一的名字。
  4. LOG_ARCHIVE_CONFIG='DG_CONFIG=(dbs101,stdby)'   #主从库唯一数据库名的映射
  5. CONTROL_FILES='/u02/oradata/dbs101/control1.ctl','/u02/oradata/dbs101/control2.ctl','/u02/oradata/dbs101/control3.ctl'
  6. LOG_ARCHIVE_DEST_1='LOCATION=/u02/oradata/dbs101/arch/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dbs101'
  7. LOG_ARCHIVE_DEST_2='SERVICE=stdby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stdby'
  8.     #SERVICE:网络服务名,在tnsnames.ora中定义。
  9. LOG_ARCHIVE_DEST_STATE_1=ENABLE
  10. LOG_ARCHIVE_DEST_STATE_2=ENABLE
  11. LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
  12. LOG_ARCHIVE_MAX_PROCESSES=30
  13. DB_FILE_NAME_CONVERT=('/u02/oradata/dbs101/','/u02/oradata/dbs101/') #主从数据库之间的数据文件名的转换关系
  14. LOG_FILE_NAME_CONVERT=('/u02/oradata/dbs101/','/u02/oradata/dbs101/') #主从数据库之间的日志文件名的转换关系
  15. STANDBY_FILE_MANAGEMENT=AUTO  #当增加或删除主库文件时,丛库也做相应的操作。
  16. FAL_SERVER=stdby  #当数据库为从库时,主数据的网络服务名
  17. FAL_CLIENT=dbs101  #当数据库为从库时,从数据的网络服务名



创建tnsnames.ora
stdby和dbs101

启动archivelog

点击(此处)折叠或打开

  1. startup mount pfile=initdbs101.ora;
  2. alter database archivelog;
  3. 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文件中恢复,而不是从归档日志文件。

点击(此处)折叠或打开

  1. ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u02/oradata/dbs101/stadby_redo04.log') SIZE 50M;
  2. ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u02/oradata/dbs101/stadby_redo05.log') SIZE 50M;
  3. ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u02/oradata/dbs101/stadby_redo06.log') SIZE 50M;
  4. 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库备份数据库

点击(此处)折叠或打开

  1. run
  2. {
  3.  allocate channel c2 device type disk format '/u02/backup/%u';
  4.  backup database plus archivelog;
  5. }


准备stadnby库准备init文件

点击(此处)折叠或打开

  1. DB_NAME=stdby
  2. REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
  3. DB_UNIQUE_NAME=dbs101
  4. LOG_ARCHIVE_CONFIG='DG_CONFIG=(stdby,dbs101)'
  5. CONTROL_FILES='/u02/oradata/dbs101/control1.ctl','/u02/oradata/dbs101/control2.ctl','/u02/oradata/dbs101/control3.ctl'
  6. LOG_ARCHIVE_DEST_1='LOCATION=/u02/oradata/dbs101/arch/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dbstdby'
  7. LOG_ARCHIVE_DEST_2='SERVICE=dbs101 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dbs101'
  8. LOG_ARCHIVE_DEST_STATE_1=ENABLE
  9. LOG_ARCHIVE_DEST_STATE_2=ENABLE
  10. LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
  11. LOG_ARCHIVE_MAX_PROCESSES=30
  12. DB_FILE_NAME_CONVERT=('/u02/oradata/dbs101/','/u02/oradata/dbs101/')
  13. LOG_FILE_NAME_CONVERT=('/u02/oradata/dbs101/','/u02/oradata/dbs101/')
  14. STANDBY_FILE_MANAGEMENT=AUTO
  15. FAL_SERVER=dbs101
  16. 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状态:

点击(此处)折叠或打开

  1. SQL> startup nomount  pfile='/u02/backup/initstdby.ora';
  2. ORACLE instance started.
  3. Total System Global Area 1224736768 bytes
  4. Fixed Size                  2083560 bytes
  5. Variable Size             318768408 bytes
  6. Database Buffers          889192448 bytes
  7. Redo Buffers               14692352 bytes



创建spfile

点击(此处)折叠或打开

  1. SQL> create spfile from pfile='/u02/backup/initstdby.ora';

  2. File created.

  3. SQL> shutdown immediate
  4. ORA-01507: database not mounted


  5. ORACLE instance shut down.

  6. 以nomount状态启动:
  7. SQL> startup nomount
  8. ORACLE instance started.

  9. Total System Global Area 1224736768 bytes
  10. Fixed Size                  2083560 bytes
  11. Variable Size             318768408 bytes
  12. Database Buffers          889192448 bytes
  13. 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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-12-18

  • 博文量
    92
  • 访问量
    446606