ITPub博客

首页 > 数据库 > Oracle > 给Oracle数据库搭建备库(DG)

给Oracle数据库搭建备库(DG)

原创 Oracle 作者:shuangseqiu1 时间:2017-07-04 20:01:58 0 删除 编辑

前提:某个节点的两个实例已经运行一段时间,需要对这两个实例搭建备库(版本是 Oracle Linux Server release 6.5)
1,yum源:wget http://yum.oracle.com/public-yum-ol6.repo
2,在备库,运行预安装配置
yum -y install oracle-rdbms-server-11gR2-preinstall
3,创建和两个实例的$ORACLE_HOME相同的目录,赋权限
4,格式化磁盘以及分区,
挂载磁盘到数据目录下(最好和主节点的目录是一样的)
修改/etc/fstab文件,开机自动mount磁盘
5,把主库的$ORACLE_HOME目录通过scp拷贝到备库
6,克隆安装数据库
/home/oracle/app/product/11.2.0.3/db_1/perl/bin/perl clone.pl  ORACLE_BASE=/data/prod/app ORACLE_HOME=/data/prod/app/product/11.2.0.3/db_1 Inventory_location=/data/prod/oraInventory OSDBA_GROUP=dba -defaultHomeName
在root用户下,运行上面的脚本
注意:有可能报下面的错误

##需要先清除老的
su - oracle
cd $ORACLE_HOME/oui/bin
./runInstaller -detachHome ORACLE_HOME="/data/whyhddev/app/product/11.2.0/db_1"
7,修改备库的监听和tnsname.ora,主库添加备库的tns,最后用tnsping测试
8,主库修改参数
SQL> show parameter log_archive_config;
SQL> alter system set log_archive_config = 'DG_CONFIG=(miscpri01,misc,miscadgjq,miscpri,miscadg,miscadg01,miscadg02,miscadg03,miscadg65,miscadg102)' scope = both
SQL> alter system set log_archive_dest_3 = 'SERVICE=miscadg102 LGWR ASYNC VALID_FOR=(all_LOGFILES,all_roles) DB_UNIQUE_NAME=miscadg102' scope = both;
SQL> alter system set log_archive_dest_state_3 = enable scope = both;
SQL> alter system set fal_server=misc,miscadgjq,miscpri,miscadg,miscadg01,miscadg02,miscadg03,miscadg65,miscadg102 scope=both;
9,rman主库参数文件在备库修改
$ rman target / nocatalog
备份参数文件:BACKUP spfile format '/backup/spfile_%U';
Scp参数文件到备库
10,备库修改参数文件
在RMAN控制台中启动数据库到nomount阶段:
$ rman target / nocatalog
Recovery Manager: Release 10.2.0.4.0 - Production on Tue May 12 09:13:39 2015
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
connected to target database (not started)
RMAN> startup mount;
-----------
RMAN-03002: failure of startup command at 05/12/2015 09:13:48
ORA-00205: error in identifying control file, check alert log for more info
RMAN> exit
Recovery Manager complete.
注意:这个地方不出来这个可能是因为没有存放数据文件的目录
$ rman target / nocatalog
恢复spfile参数文件:
RMAN> restore spfile to '/home/oracle/yhdc.ora' from '/home/oracle/backup/spfile_20170612_8093_1.bak';
在SQL*PLUS中通过恢复的spfile参数文件创建pfile初始化参数文件
$ sqlplus / as sysdba
SQL> create pfile='/home/oracle/init.ora' from spfile='/home/oracle/yhdc.ora';

关闭数据库实例
SQL> shutdown immediate

编辑pfile初始化参数文件
$ vi /home/oracle/init.ora

根据参数文件,创建一些没有的目录

创建spfile动态初始化参数
SQL> create spfile from pfile='/home/oracle/init.ora';

启动数据库到mount状态
SQL> startup nomount
11,恢复数据
dcwhtest_pri和dcwhtest_dg分别是是主库和备库的tnsnames的名字,
rman target sys/oracle@dcwhtest_pri auxiliary sys/oracle@dcwhtest_dg


RMAN的target是备库执行adg
duplicate target database for standby from active database nofilenamecheck;




12,恢复完后,数据库已经打开(如果没有打开需要恢复,先开启到mount,然后开启日志应用进程,然后恢复,最后open)
SQL> select open_mode,name from v$database;
OPEN_MODE            NAME
-------------------- ---------
READ ONLY WITH APPLY TESTDB2
开启日志应用进程:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

切redo
alter  system archive log current;
查看是否主从日志应用的一样
select sequence#,applied from v$archived_log; 

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

下一篇: mysql数据库迁移
请登录后发表评论 登录
全部评论

注册时间:2017-03-24

  • 博文量
    31
  • 访问量
    55026