ITPub博客

首页 > 数据库 > Oracle > rman 建 Standby Database 笔记

rman 建 Standby Database 笔记

原创 Oracle 作者:wmlm 时间:2009-01-22 18:37:38 0 删除 编辑

此次测试仍然使用两台服务器不同的目录结构来做。

TRGT 10-10-10-72 orcl

STANDBY 10-10-10-73 standby1 需要先把原来手工创建的备库给删除掉

CATDB 10-10-10-72 millet

 

在millet库上添加rman用户,并在主库和备库上同时添加catdb服务名连接millet数据库,

$ rman target sys/oracle@orcl catalog rman/cat@catdb

并对72.orcl做一个备份,备份集也放在/ww/目录下

RMAN> run {

2> backup incremental

3> level=0

4> format '/ww/full_%d_%p_%t_%s'

5> tag '72orcl_full'

6> database plus archivelog;

7> }

[@more@]

目标库上的数据文件目录 /opt/oracle/oradata/orcl/

备库上的数据文件目录 /opt/oracle/oradata/standby1/

备库上control_files位置

/opt/oracle/oradata/standby1/control01.ctl,

/opt/oracle/oradata/standby1/control02.ctl,

/opt/oracle/oradata/standby1/control03.ctl

不能使用RMAN来完成的内容

1 设置主库的初始化参数

2 创建备库初始化参数,并修改个别参数

3 配置主备库通信的TNSNAMES

4 启动备库不加载控制文件

回忆原来的手工创建备库的过程

1 确认主库上的tnsnames,可以连通备库 名称standby1

备库也可以连通主库 名称 orcl

2 确认主库上的force logging 已启用YES;确认在归档模式下,确认归档启动

SQL> select force_logging from v$database;

3 确认主库上的数据文件(为COPY 数据文件准备)

select file#,name from v$database;

4 使用操作系统的CP复制数据文件到主库的一个临时目录;

5 从主库创建备库用的控制文件,必须在备份数据文件之后

SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS

2> '/opt/oracle/oradata/standby1.ctl';

6 从主库创建备库用的初始化参数文件

SQL> CREATE PFILE='/opt/oracle/oradata/initstandby1.ora' from spfile;

7 将4-5-6三步准备的文件复制到备库服务器上

8 设置备库上的参数文件,要修改的地方包括以下内容

db_name='orcl'

control_files='/opt/oracle/oradata/standby1/control01.ctl','/opt/oracle/oradata/st

andby1/control02.ctl','/opt/oracle/oradata/standby1/control03.ctl'

standby_archive_dest='/ww/arch1'

db_file_name_convert='/opt/oracle/oradata/orcl/','/opt/oracle/oradata/standby1/'

log_file_name_convert='/opt/oracle/oradata/orcl/','/opt/oracle/oradata/standby1/'

remote_archive_enable='true'

log_archive_dest_1='LOCATION=/ww/arch2'

standby_file_management='auto'

instance_name='standby1'

9 如果是WINDOWS环境,需要添加windows service

oradim -new -sid standby1 -startmode manual

10 在主库和备库修改listener.ora 添加SID list 静态注册

11 设置备库上的sqlnet.ora文件,启用断连接检测,添加

$ more $ORACLE_HOME/network/admin/sqlnet.ora

sqlnet.expire_time=2

12 创建服务名,在主库和备库上都要同样添加两个连接名 orcl standby1

13 在备库上创建SPFILE from pfile

14 启动备库到nomount,然后mount standby database

sql> startup nomount;

sql> alter database mount standby database;

15 在备库上初始化日志应用服务

sql> alter database recover managed standby database disconnect from session;

16 在主库启用归档到备库上(前提条件是在参数文件中设置了dest_2='service=...')

sql> alter system archive log current;

中间遇到不少问题,比如控制文件中的最大日志数、主机不能归档到备机上(服务不通)、备机上能收日志但不能APP,也是因为最大日志数的限定;具体参见《9iDG学习笔记.doc》

-----------------------------------------------------------------------------------------------------------------

这里使用RMAN,因此从创建控制文件开始

确认主库上的初始化参数

*.db_name='orcl'

*.instance_name='orcl'

*.log_archive_dest_1='LOCATION=/ww/arch'

*.log_archive_dest_2='service=standby1'

确认备库上的初始化参数文件

*.db_name='orcl'

*.instance_name='standby1'

*.db_file_name_convert='/opt/oracle/oradata/orcl/','/opt/oracle/oradata/standby1/'

*.log_file_name_convert='/opt/oracle/oradata/orcl/','/opt/oracle/oradata/standby1/'

*.remote_archive_enable='true'

*.log_archive_dest_1='LOCATION=/ww/arch2'

*.standby_archive_dest='/ww/arch1'

*.standby_file_management='auto'

*.star_transformation_enabled='FALSE'

0 删除原有的数据文件和控制文件

1 使用rman备份主库的控制文件给备库用(有三种备份方法)

方法1 backup

backup current controlfile for standby;

sql 'alter system archive log current'; # so backup is consistent and recoverable

backup archivelog all not backed up 1 times;

或者

backup database

include current controlfile for standby

plus archivelog;

如果不带plus archivelog,那么备份完后要做一个当前日志的归档

sql 'alter system archive log current';

此处忘记做导致duplicate 时出现 RMAN-05507 错误

方法2 copy

copy current controlfile for standby to '/tmp/sby_control01.ctl';

方法3 将已备份的控制文件catalog ,如:

sql> alter database create standby controlfile as '/tmp/sby_control01.ctl';

% rman target sys/oracle@trgt catalog rman/cat@catdb

catalog controlfilecopy '/tmp/sby_control01.ctl';

这里我使用第三种方法,过程如下:

$ sqlplus system/oracle@orcl

alter database create standby controlfile as '/ww/standby1.ctl'

$ rman target sys/oracle@orcl catalog rman/cat@catdb

catalog controlfilecopy '/ww/standby1.ctl' ;

2 对备库上的控制文件做一个镜像

RMAN> copy controlfilecopy '/ww/standby1.ctl' to '/ww/standby2.ctl';

3 使用RMAN时,重命名数据文件

因为数据文件结构相同,所以使用了初始化参数DB_FILE_NAME_CONVERT ,不需要显式地进行重命名。

因为主库上的数据文件与备库上的数据文件名称相同,所以在duplicate时,要加上NOFILENAMECHECK option

附db_file_name_convert参数的使用说明

DB_FILE_NAME_CONVERT = ('oldstring1', 'newstring1', 'oldstring2', 'newstring2', ...)
For example, 
DB_FILE_NAME_CONVERT = ('/dbs/t1/', '/dbs/t1/s_', '/dbs/t2/', '/dbs/t2/s_')

4 使用RMAN时,重命名在线日志文件

此处也使用LOG_FILE_NAME_CONVERT 参数

5 使用rman进行数据文件的复制,备库的创建(两种方式 带恢复和不带恢复)

5.1start the standby instance

SQL> conn sys/change_on_install@standby1 as sysdba

Connected to an idle instance.

SQL> startup nomount

检查主库与CATDB,是否启动,没有启动,启之

在主机和备机都要能连通standby1服务

/ww/standby2.ctl 文件要FTP到73库上

使用 rman 登录备库

% rman TARGET / AUXILIARY SYS/sys_pwd@sbdb1

rman target sys/oracle@orcl auxiliary sys/change_on_install@standby1

run {

duplicate target database for standby

nofilenamecheck

dorecover;

}

遭遇RMAN-05507 错误

原因是备份控制文件后没有归档当前日志

解决方法,去TRGT 库archive log current;

然后成功。

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

主库上切日志,到备库上检查结果

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Database altered.

SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG

2 ORDER BY SEQUENCE#;

SEQUENCE# APP

---------- ---

39 YES

40 YES

41 YES

OK 一切顺利!

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/271063/viewspace-1016395/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: aix5l oracle9206
请登录后发表评论 登录
全部评论

注册时间:2008-04-08

  • 博文量
    398
  • 访问量
    3716812