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

    技术2022-05-11  33

    环境: CPU:PII233 OS : RedHat Linux 6.22 ORACLE: Oracle8.1.6.0.0 for Linux =============Primary database===================== oracle主目录在 /home/oracle/OraHome1sid = pdb 数据文件在 /u01/oradata/pdb归档重做日志文件在/u01/oradata/arch =============Standy database ====================oracle主目录在 /home/oracle/OraHome1sid = sdb 数据文件在 /u02/stdby归档重做日志文件在/u02/arc_dest建立步骤:1. 建立dba组和oracle用户,并修改其.bash_profile2. 以oracle用户身份安装 RH linux6.22 和 Oracle 8.1.6EE,SID为PDB;3. 将所有primary DB中所有的datafile做一个备份,以便以后传输到standby database中:SQL>conn / as sysdbaSQL>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 /u027. 在tty2,将standby DB需要的control file 和 数据文件传送到预先设计好的目录$cp /u01bak/oradata/pdb/control01.ctl /u02/stdby $cp /u01bak/oradata/pdb/*.dbf /u02/stdby 以root执行:$chown -R standby /u028. 配置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)的启动和状态$lsnrctlLSNRCTL>stopLSNRCTL>start (或start listener)在tty2,让standby测试standby DB的启动和状态$lsnrctlLSNRCTL>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 = truelog_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 namelog_archive_dest_state_2 = ENABLElog_archive_format = arch_%t_%s.arccompatible = "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 = truelog_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.arcdb_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>startup14. 准备启动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 modeSQL>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 dbSQL> ALTER DATABASE OPEN READ ONLY; 现在就可以做进一步更多的测试了,比如在primary db建个用户,建个表等等,然后把它给归档了,在standby db看看效果,呵呵

    http://www.itpub.net/showthread.php?s=&threadid=27163&highlight=*

    转载请注明原文地址: https://ibbs.8miu.com/read-350474.html

    最新回复(0)