创建一个standby database的全过程

创建一个standby database的全过程

作者:fals

实施环境:

OSwindows 2000 advanced server SP2

Oracle8.1.7.4

假定主库与备用库不在同一个主机上,目录结构相同,并且配置一个自管理备用库(managed standby database)

主库 备库

主机IP 192.168.1.20 192.168.1.30

主机名 PrimDB StbyDB

SID Orcl Orcl

数据库服务名 Orcl Orcl

创建一个主库的数据文件备份:

用冷备份方式,备份到e:sharedback

创建备用库的控制文件:

冷备份之后,打开主库

SQL> connect internal/oracle as sysdba;

SQL>startup pfile=d:oracleadminorclinit.ora;

SQL>alter database create standby controlfile as ‘e:sharedbackstby_ctl.ctl’;

复制文件

通过网络复制备份的数据文件和备用控制文件到备库主机

配置主库的tnsnames.ora文件

添加备库别名为stby1,即下面内容:

stby1=(description=

(address=

(protocol=tcp)

(port=1523)

(host=192.168.1.30))

(connect_data=

(SID=orcl)))

配置备用库的listener.ora文件

添加监听服务standby_listener,在相应的节里添加有关的内容。如果原文件内已有,则修改之。

standby_listener节:

(address_list=

(address=

(protocol=tcp)

(port=1523)

(host=192.168.1.30)

) )

SID_list_standby_listener节:

(sid_list=

(sid_desc=

(sid_name=orcl)

(oracle_home=d:oracleora81)

) )

这个文件中只能有这两节,不能有多个组,虽然可以定义监听的名字不同,但在启动监听服务的时候,都只启动一个监听服务。

重新启动备库监听服务,以使更改生效:

DOS>lsnrctl # 启动监听服务管理程序

LSNRCTL>status # 查看监听服务状态

LSNRCTL>stop # 停止监听服务

LSNRCTL>start # 启动监听服务

也可以在管理工具的服务管理里停止和启动服务。

配置主库的初始化参数文件init.ora

修改归档目的地。本地归档只归档到一个目录e:log。添加以下内容:

# 定义本地归档路径,强制归档,重试时间2

log_archive_dest_1 = “location=e:log mandatory reopen=2”

log_archive_dest_state_1 = enable

# 定义归档到备用库,强制归档,重试时间15秒。

# 如果定义为可选状态(optional),那么在归档失败后不会再次尝试归档的。定义

# madatory状态后,如果本次归档失败,则在归档下一个日志时会再次尝试

# 重传上一个未成功归档的日志。

log_archive_dest_2 = “service=stby1 mandatory reopen=15”

log_archive_dest_2 = enable

# 定义必须成功归档的日志数,只需要本地成功归档即可

log_archive_min_succeed_dest = 1

使主库修改后的参数生效。

以下操作是在未重启主库时使用。如果修改主库初始化参数文件后重新启动了主库,则可以不使用下列命令。下列命令只对当前实例有效。

SQL>alter system set log_archive_dest_1 = “location=e:log mandatory reopen=2”;

SQL>alter system set log_archive_dest_state_1 = enabl;

SQL>alter system set log_archive_dest_2 = “service=stby1 mandatory reopen=30”;

SQL>alter system set log_archive_dest_2 = enable;

SQL>alter system set log_archive_min_succeed_dest = 1;

配置备用库的初始化参数文件:

将主库的初始化参数文件复制到备库,删除原有的日志归档目录项,并添加以下内容:

log_archive_dest = e:log

log_archive_trace = 6 #定义日志跟踪层次

standby_archive_dest = e:log

# 更改控制文件名

control_files = (“d:oracleoradataorclstby_ctl.ctl”)

启动备用库

将从主库复制过来的数据文件、控制文件复制到相应的位置,然后在备库上操作(此时备库处于关闭状态)

SQL>connect internal/oracle as sysdba

SQL>startup nomount

SQL>alter database mount standby database

十一 手工恢复 

如果有日志序列的缺失,则先将主库的日志复制到备库日志目录,进行手工恢复

SQL>recover automatic standby database;

或者:

SQL>recover standby database until cancel;

查看日志序列是否有缺失的SQL语句:

SQL>SELECT high.thread#, "LowGap#", "HighGap#"

FROM

(

SELECT thread#, MIN(sequence#)-1 "HighGap#"

FROM

( SELECT a.thread#, a.sequence#

FROM

v$archived_log a,

( SELECT thread#, MAX(next_change#) gap1

FROM v$log_history

GROUP BY thread#

) b

WHERE a.thread# = b.thread#

AND a.next_change# > b.gap1

)

GROUP BY thread#

) high,

(

SELECT thread#, MIN(sequence#) "LowGap#"

FROM

( SELECT thread#, sequence#

FROM v$log_history, v$datafile

WHERE checkpoint_change# <= next_change#

AND checkpoint_change# >= first_change#

)

GROUP BY thread#

) low

WHERE low.thread# = high.thread# ;

如果备库有日志序列缺失,则同一个thread#LowGap# HighGap# 不等。如果没有日志序列缺失,那么选出空值或者是LowGap# HighGap# 相同。

十二 将备库置于自管理模式

SQL>recover managed standby database;

此时,SQLPLUS窗口停止响应,直到取消备库自管理模式。要取消备库的自管理模式的命令:

SQL>recover managed standby database cancel;

翻译摘抄自oracle 816随机文档,加上以自己的一些测试。

后面还有standby database的维护以及三个模式互相切换的内容,还没来得及整理出一个比较完整的文档出来,等啥时候抽点时间整出来再贴上来。

End

[@more@]

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

转载于:http://blog.itpub.net/257699/viewspace-814500/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值