在一个机器上建立standby database 的经历

原创 2004年07月23日 08:29:00

环境:
CPU:PII233
OS : RedHat Linux 6.22
ORACLE: Oracle8.1.6.0.0 for Linux

=============Primary database=====================
oracle主目录在 /home/oracle/OraHome1
sid = pdb
数据文件在 /u01/oradata/pdb
归档重做日志文件在/u01/oradata/arch

=============Standy database ====================
oracle主目录在 /home/oracle/OraHome1
sid = sdb
数据文件在 /u02/stdby
归档重做日志文件在/u02/arc_dest


建立步骤:
1. 建立dba组和oracle用户,并修改其.bash_profile

2. 以oracle用户身份安装 RH linux6.22 和 Oracle 8.1.6EE,SID为PDB;

3. 将所有primary DB中所有的datafile做一个备份,以便以后传输到standby database中:
SQL>conn / as sysdba
SQL>select name from v$datafile;(我的primary DB数据文件在 /u01/oradata/pdb目录中)
SQL>shutdown immediate
$cp /u01/oradata/pdb/*.dbf /u01bak/oradata/pdb/

4. 创建standby DB的控制文件
$SQLPLUS "/ AS SYSDBA"
SQL>startup
SQL>alter database create standby controlfile as '/u01bak/oradata/pdb/control01.ctl';

5. 建立standby DB用户-------standby,并修改其.bash_profile
(我总怕搞混淆了,所以从这开始我开启了两个终端,约定oracle登陆的终端为tty1,standby登陆的终端为tty2)

6. 在tty2,用root身份将/u01 、/u02 、/home/oracle设置为全部可读可写可执行的方式,并设定相应的属主
(我觉得干脆、彻底*^-^*,此方法仅供参考,尤其是在公司中的用途时还应考虑安全问题)
$chmod -R 777 /u01
$chmod -R 777 /u02
$chmod -R 777 /home/oracle
$chgrp -R dba /u01
$chgrp -R dba /u02
$chown -R oracle /u01
$chown -R standby /u02


7. 在tty2,将standby DB需要的control file 和 数据文件传送到预先设计好的目录
$cp /u01bak/oradata/pdb/control01.ctl /u02/stdby
$cp /u01bak/oradata/pdb/*.dbf /u02/stdby
以root执行:$chown -R standby /u02

8. 配置listener.ora
加入如下的standby DB监听器slistener:
SLISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = lunar)(PORT = 1512))------------区别于primary db的端口1521
)
)
)

SID_LIST_SLISTENER =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /home/oracle/OraHome1)
(SID_NAME = SDB)-------必须与参数文件中的INSTANCE_NAME一致
)
)

9. 配置tnsnames.ora
加入如下监听SDB:
SDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = lunar)(PORT = 1512))
)
(CONNECT_DATA =
(SID = sdb)-----------与slistener.ora中的SID_NAME一致,即必须与参数文件中的INSTANCE_NAME一致,主要是8i以前的版本用
(SERVER=DEDICATED)
(GLOBAL_NAME=sdb)------------与参数文件中的service_names一致,sid和global_name两者设置一个就可以了
)
)


10. 测试监听器
在tty1,让oracle测试默认的监听器(监听primary DB)的启动和状态
$lsnrctl
LSNRCTL>stop
LSNRCTL>start (或start listener)

在tty2,让standby测试standby DB的启动和状态
$lsnrctl
LSNRCTL>start slistener
***注意,修改了listener.ora后,要想让它生效需要重新启动监听,或者用reload命令


11. 在tty1,修改primary DB的参数文件
修改时注意这些就好了:
db_name = "pdb" ***************standby DB将与之的一致
instance_name = PDB ************listener.ora文件的listener监听器的SID_NAME将与之一致
service_names = pdb ************tnsnames.ora文件的pdb监听的GLOBAL_NAME将与之一致
control_files = ("/u01/oradata/pdb/control01.ctl", "/u01/oradata/pdb/control02.ctl", "/u01/oradata/pdb/control03.ctl")
log_archive_start = true
log_archive_dest_1 = "location=/u01/oradata/arch MANDATORY REOPEN=60" ********归档到本地的目的地
log_archive_dest_state_1 = ENABLE ******显示说明(确定)可以归档到这个路径
log_archive_dest_2 = "SERVICE=sdb OPTIONAL REOPEN=180" *********standby db 的service name
log_archive_dest_state_2 = ENABLE
log_archive_format = arch_%t_%s.arc
compatible = "8.0.5"***************standby DB将与之的一致

**注意log_archive_dest_n和location、SERVICE关键字一同使用




12. 在tty2,将primary DB的参数文件copy到/u02/stdby,并修改它
(可以自行设置copy到哪里,如果copy到$ORACLE_HOME/dbs中或在这个位置建立一个该文件的link,每次启动时就不用pfile参数)
$cp /home/oracle/OraHome1/admin/pdb/pfile/initPDB.ora /u02/stdby/initSDB.ora
修改时注意这些就好了:
db_name = "pdb"***************必须与primary DB一致
instance_name = SDB************listener.ora文件的slistener监听器的SID_NAME将与之一致
service_names = SDB************tnsnames.ora文件的sdb监听的GLOBAL_NAME将与之一致
control_files = ("/u02/stdby/control01.ctl")********注意修改standby DB的control file的位置
log_archive_start = true
log_archive_dest_1 = "LOCATION=/u02/arc_dest" ****************因为缺省时,standby db在LOG_ARCH_DEST_1 目录中查找归档重做日志,所以应该设置LOG_ARCH_DEST_1 与STANDBY_ARCH_DEST 的值相同。
standby_archive_dest = "/u02/arc_dest"**********来自primary db的archive log file将传送并写入到这个位置。
log_archive_dest_state_1 = ENABLE
log_archive_format = arch_%t_%s.arc
db_file_name_convert = ("/u01/oradata/pdb","/u02/stdby")*********将primary db 的datafile的位置重命名到standby db的datafile的位置,oracle document说如果这个不成功,应当手工重命名standby db 的datafile的文字,不过我没试过,呵呵
log_file_name_convert = ("/u01/oradata/pdb","/u02/stdby")*********将primary db 的redo log file的位置重命名到standby db的redo log file的位置,oracle document说如果这个不成功,应当手工重命名standby db 的redo log file的文字,不过我没试过,呵呵
lock_name_space = SDB ***指定DLM的名字空间(命名空间)为sdb。这是将standby db 和 primary db装载一个host上必须设置的
compatible = "8.0.5"***************必须与primary DB的一致


13. 在tty1,以 oracle 启动primary DB
$sqlplus "/ as sysdba"
SQL>startup

14. 准备启动standby db管理回复
(1). 在tty2,以standby 启动standby实例,但是不安装
$sqlplus "/ as sysdba"
SQL>startup nomount pfile=/u02/stdby/initSDB.ora
(如果在$ORACLE_HOME/dbs中已经建立了initSDB.ora的link,则只要startup nomount就好了)

(2). 安装但不打开备用数据库。
ALTER DATABASE MOUNT STANDBY DATABASE;

(3). 将primary db的archive log file复制到/u02/arc_dest
$cp /u01/oradata/arch/* /u02/arc_dest

(4). 使用AUTOMATIC选项回复数据库
SQL>RECOVER AUTOMATIC STANDBY DATABASE;
见到形如Specify log: {<RET>=suggested | filename | AUTO | CANCEL}的提示,只管会车就好了

(5). 进入managed recovery mode
SQL>recovery managed standby database;

注意:
可以使用recover managed standby database timeout 5 在随后的5分钟里等待primary db传送过来的archive log file;
发出这个命令后,可以转到tty1,做一次 alter system archive log current,然后看看改archive log file是否自动传送到了/u02/stdby/arc_dest中了:)
5分钟后,系统回到(4)的状态,这是可以尝试一下read open standby db。

15. read open standby db
SQL> ALTER DATABASE OPEN READ ONLY;
现在就可以做进一步更多的测试了,比如在primary db建个用户,建个表等等,然后把它给归档了,在standby db看看效果,呵呵


http://www.itpub.net/showthread.php?s=&threadid=27163&highlight=%2A%D4%DA%D2%BB%B8%F6%BB%FA%C6%F7%C9%CF%BD%A8%C1%A2%2A

 

oracle内部培训专题

  • 2008年08月30日 09:27
  • 86KB
  • 下载

重新创建standby controlfile

--重新创建standby controlfile ############################################################### 查看alert...
  • zhaojian1988
  • zhaojian1988
  • 2013-07-30 09:32:38
  • 1349

Alter database mount;和Alter database mount standby database;区别

MOUNT Clause Use the MOUNT clause to mount the database. Do not use this clause when the databa...
  • u011616400
  • u011616400
  • 2014-11-18 10:42:34
  • 1139

Data Guard技术文档

  • 2008年09月30日 13:32
  • 114KB
  • 下载

Oracle创建Physical Standby Database案例

Creating a Physical Standby Database This case is created, operated and followed the steps from orac...
  • waterxcfg304
  • waterxcfg304
  • 2014-06-30 13:32:55
  • 6621

关于recover managed standby database finish force

主库是rac,备库是单实例,根据o的官档上说到在failover切换时,会使用alter database recover managed standby database finish force;...
  • halou90
  • halou90
  • 2015-10-28 11:41:29
  • 1774

Oracle DG故障诊断一则:alter database recover to logical standby new_logical_dbname卡住

我们在基于物理standby的基础上搭建逻辑备库过程过程中,在执行:alter database recover to logical standby READDB;卡住不动,并且alert也没有报错...
  • linwaterbin
  • linwaterbin
  • 2014-04-21 21:35:40
  • 6430

创建standby controlfile的方法

10.2.0.5 on windows 2008 64 bit  在主库mount或open状态下 1 alter databas
  • loryliu
  • loryliu
  • 2014-06-02 09:53:52
  • 2108

How to create a logical standby database based on a physical standby database

// 以下是主库: 下列语句可以用来检查SQL应用能否唯一识别表列,并找出不被支持的表:查询哪个表不支持logical standby传输 SQL> select owner, table_name ...
  • waterxcfg304
  • waterxcfg304
  • 2014-07-02 11:13:08
  • 916

Oracle 11g 使用duplicate from active database 创建物理ADG

1、概述: 之前使用冷备的方式搭建了一个物理ADG环境,但是由于冷备需要停库。因此在一些大型库上使用这种技术就不怎么实用了,而使用duplicatefrom active database则必免了这...
  • fffygapl
  • fffygapl
  • 2013-02-22 16:09:57
  • 5437
收藏助手
不良信息举报
您举报文章:在一个机器上建立standby database 的经历
举报原因:
原因补充:

(最多只允许输入30个字)