在一个机器上建立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

 

模拟物理standby产生gap

1.停掉备库dg2的网络 2.在主库进行切换日志的操作 SYS@dg1>select protection_mode,database_role,protection_level from v$d...
  • q947817003
  • q947817003
  • 2013年09月10日 15:03
  • 2055

RAC (双节点) + 单实例 DATAGUARD 安装遇到的问题处理

RAC (双节点) + 单实例 DATAGUARD 安装遇到的问题处理 PRIMARY:  RAC 双节点 ,存储:ASM STANDBY: 单实例          存储: ASM ...
  • miyatang
  • miyatang
  • 2013年10月22日 14:01
  • 5161

物理standby database的日常维护

1.停止Standby select process, status from v$managed_standby; --查看备库是否在应用日志进行恢复 alter database recover ...
  • yanfalee
  • yanfalee
  • 2016年03月21日 14:18
  • 245

配置data guard broker时遇到的几个问题

配置data guard broker时遇到的几个问题   环境: oracle 11203 on rhel6.3 primary: RAC standby: instance     ...
  • tanqingru
  • tanqingru
  • 2013年05月31日 17:16
  • 3467

Standby Redo Log 的设定原则、创建、删除、查看、归档位置

设定: 1.每个standby redo log file 至少要和primary database的redo log 一样大,为了方便管理,Oracle 建议主备库的redo log 设置成一样...
  • zhang123456456
  • zhang123456456
  • 2017年03月10日 23:20
  • 502

RMAN duplicate 方式 做个备库

采用RMAN duplicate 方式做备库 可以说是ORACLE 公司对 以前做DATA GUARD 方式的 用户友好性的提升.这样我们不用去 备份数据文件,然后网络传送, 再还原恢复操作了.这里就...
  • ZengMuAnSha
  • ZengMuAnSha
  • 2016年04月28日 17:46
  • 5568

Hadoop集群异常:两个NameNode全部为StandBy状态

之前的集群状态一直是很好用,可能中间忙于其他的事情,有些文件失效了吧,这次运行的时候,出现了问题,那就是两个NameNode全部是StandBy的状态,这种问题存在的原因大部分都是因为Zookeepe...
  • wangyang1354
  • wangyang1354
  • 2016年08月24日 19:56
  • 5530

App Standby 学习小结

standby 流程图: 在之前文档“doze模式介绍”的第10点中,我们知道使用adb命令强制使我们的应用进入standby模式,其实用app idle模式更为贴切。具体 命令如下: adbsh...
  • qiangzai110110
  • qiangzai110110
  • 2016年06月14日 14:06
  • 1092

【翻译自mos文章】Standby Redo Logs (SRL)的用途,益处与限制

【翻译自mos文章】Standby Redo Logs (SRL)的用途,益处与限制
  • msdnchina
  • msdnchina
  • 2016年02月07日 01:11
  • 1442

HDFS HA支持多Standby节点机制

前言 在现有的HDFS中,为了保证其高可用性,社区在早些年就已经完成HDFS的HA机制,也就是One Active,One Standby。在此种情况下,HDFS能够容忍其中一个节点出现失败的情...
  • Androidlushangderen
  • Androidlushangderen
  • 2016年09月22日 18:02
  • 1552
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在一个机器上建立standby database 的经历
举报原因:
原因补充:

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