设为首页 收藏本站
查看: 539|回复: 0

[经验分享] Oracle11g 搭建单实例DataGuard

[复制链接]

尚未签到

发表于 2015-12-19 15:17:48 | 显示全部楼层 |阅读模式
  
  环境:主备库都为单实例并且数据库SID相同
  OSred hat 6.5
  Oracle:11.2.0.4.3
  
  
主库操作
  
  
1. 开启归档模式
   
  创建归档目录
  [iyunv@enn ~]# mkdir -p /u01/archivelog
  [iyunv@enn ~]# chown -R oracle:oinstall/u01/archivelog
  [iyunv@enn ~]# chmod 777 /u01/archivelog
  
  数据库到mount状态开启归档模式
  [iyunv@enn ~]# su - oracle
  [oracle@enn ~]$ sqlplus / as sysdba
  SQL*Plus:>
  Copyright (c) 1982, 2013, Oracle.  All rights reserved.
  Connected to an>
  SQL> startup mount
  ORACLE instance started.
   
  Total System Global Area  835104768 bytes
  Fixed>
  Variable>
  Database Buffers    289406976 bytes
  Redo Buffers          2371584 bytes
  Database mounted.
  
  设置主库归档目录
  SQL>>
  
  开启归档模式
  SQL>>
  Database>
  
  查看归档设置
  SQL> archive log list;
  Database log mode        Archive Mode
  Automatic archival           Enabled
  Archive destination          /u01/archivelog
  Oldest online log sequence     2
  Next log sequence to archive   4
  Current log sequence         4
   
2. 启动force_logging模式
   
  查看是否force_logging模式
  SQL> select log_mode,force_logging fromv$database;
  LOG_MODE    FOR
  ------------ ---
  ARCHIVELOG  NO
  开启force_logging模式
  SQL>>
  Database>
   
3.创建备库日志文件路径
   
  查看数据库的日志组个数与大小,因为我们创建 standby 日志组的个数是原日志
  组个数+1 再与 thread 的积((2+1)*3)size 不能小于原日志文件的大小。
  SQL> select group#,thread#,bytes/1024/1024 M,STATUS from v$log;
     GROUP#    THREAD#         MSTATUS
  ---------- ---------- --------------------------
       1       1          50 CURRENT
       3       1          50 INACTIVE
       2       1          50 INACTIVE
   
  SQL> select member from v$logfile;
  MEMBER
  --------------------------------------------------------------------------------
  /u01/app/oracle/oradata/ENN/redo03.log
  /u01/app/oracle/oradata/ENN/redo02.log
  /u01/app/oracle/oradata/ENN/redo01.log
   
  创建备库日志组路径
SQL>alter database add standby logfile thread 1 group 4('/u01/app/oracle/oradata/ENN/redo04.log')>

Databasealtered.

SQL>alter database add standby logfile thread 1 group 5('/u01/app/oracle/oradata/ENN/redo05.log')>

Databasealtered.

SQL>alter database add standby logfile thread 1 group 6('/u01/app/oracle/oradata/ENN/redo06.log')>

Databasealtered.

SQL>alter database add standby logfile thread 1 group 7('/u01/app/oracle/oradata/ENN/redo07.log')>

Databasealtered.

   
  查看状态
 SQL> select group#,status,type,member fromv$logfile;

   GROUP# STATUS  TYPE   MEMBER

----------------- ------- ----------------------------------------

     3     ONLINE /u01/app/oracle/oradata/ENN/redo03.log

     2     ONLINE /u01/app/oracle/oradata/ENN/redo02.log

     1     ONLINE /u01/app/oracle/oradata/ENN/redo01.log

     4     STANDBY /u01/app/oracle/oradata/ENN/redo04.log

     5      STANDBY /u01/app/oracle/oradata/ENN/redo05.log

     6     STANDBY /u01/app/oracle/oradata/ENN/redo06.log

     7     STANDBY /u01/app/oracle/oradata/ENN/redo07.log

   
4.创建监听
   
  执行netca创建监听器
  [oracle@enn oracle]$ netca
  
  
  
  修改tnsname文件
  [oracle@enn oracle]$ cd$ORACLE_HOME/network/admin
  [oracle@enn admin]$ vim tnsname.ora
  ENN =
   (DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.80.15 )(PORT = 1521))
      )
     (CONNECT_DATA =
       (SERVICE_NAME = enn)
      )
    )
  ENN_DG =
   (DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.80.16)(PORT = 1521))
      )
     (CONNECT_DATA =
       (SERVICE_NAME = enn_dg)
      )
    )
   
  tnsname.ora复制到备库中
[oracle@ennadmin]$ scp tnsname.oraoracle@192.168.80.16:$ORACLE_HOME/network/admin/tnsname.ora

oracle@192.168.80.16'spassword:

tnsname.ora                                                                                                               100%  361     0.4KB/s  00:00  

   
  注:可以使用图形配置tnsname
  [oracle@enn admin]$ netmgr
   
  附:如果备库tnsping不通, 关闭防火墙
  [oracle@enn_dg ~]$ tnsping enn
  TNS Ping Utility for Linux: Version 11.2.0.4.0- Production on 21-JUL-2014 09:26:09
  Copyright (c) 1997, 2013, Oracle.  All rights reserved.
  Used parameter files:
  Used TNSNAMES adapter to resolve the alias
  Attempting to contact (DESCRIPTION =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.80.15)(PORT =1521))) (CONNECT_DATA = (SERVICE_NAME = ENN)))
  TNS-12543: TNS:destination host unreachable
  [iyunv@enn ~]# chkconfig iptables off
  [iyunv@enn ~]# service iptables stop
   
5. 设置主库和备库归档路径
  
  
  设置主库归档路径
SQL>alter system set log_archive_dest='';

Systemaltered.

SQL>alter system set log_archive_dest_1='LOCATION=/u01/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=ENN';

Systemaltered.

  
  设置备库归档路径
SQL>alter system set log_archive_dest_2='SERVICE=enn_dg  asyncVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ENN';    

Systemaltered.

  
  配置归档最大进程数
SQL> showparameter log_archive_max

NAME                   TYPE VALUE

----------------------------------------------- ------------------------------

log_archive_max_processes     integer   4

SQL>alter system set log_archive_max_processes=30;

Systemaltered.

 

6.  配置参数文件
   
  生成参数文件
  SQL> create pfile='/u01/app/oracle/initENN.ora' from spfile;
  File created.
  
  修改参数文件
  [oracle@enn oracle]$ vim initENN.ora
  DB_UNIQUE_NAME=ENN
  #LOG_ARCHIVE_CONFIG='DG_CONFIG=(ENN,ENN_DG)'
  LOG_ARCHIVE_DEST_STATE_1=ENABLE
  LOG_ARCHIVE_DEST_STATE_2=ENABLE
  LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
  FAL_SERVER=ENN_DG
  FAL_CLIENT=ENN
  STANDBY_FILE_MANAGEMENT=AUTO
   
7. 配置密码文件
   
  备份standby库参数文件和密码文件
  [oracle@enn pfile]$ cd $ORACLE_HOME/dbs
  [oracle@enn dbs]$ cp orapwENN orapwENN.back
  [oracle@enn dbs]$ cp spfileENN.oraspfileENN.ora.bak
  
  将参数文件和密码文件传到备库
[oracle@ennoracle]$ scp initENN.ora oracle@192.168.80.16:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initENN.ora

[oracle@ennoracle]$ scp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwENN oracle@192.168.80.16:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwENN

   
备库操作
  
  
  关闭防火墙
  [iyunv@enn_dg ~]# chkconfig iptables off
  [iyunv@enn_dg ~]# service iptables stop
  
  图形方式创建监听器,同主库操作相同
  [oracle@enn ~]$ netca
  
  注:可以使用图形方式配置tnsname.ora
  [oracle@enn ~]$ netmgr
  
  启动备库到nomount
  SQL> startup nomount pfile='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initENN.ora';
   
Duplicate复制主库到备库
  
  
  rman连接主库和备库
  [oracle@enn ~]$ rman target sys/oracle@ENNauxiliary sys/oracle@ENN_DG
  Recovery Manager:>
  Copyright (c) 1982, 2011, Oracle and/or itsaffiliates.  All rights reserved.
  connected to target database: ENN(DBID=4141660501)
  connected to auxiliary database: ENN (notmounted)
  
  执行同步复制备库操作
  RMAN> duplicate target database for standbyfrom active database spfile set db_unique_name 'ENN';
  出现错误:
  sql statement:>
  RMAN-05538: WARNING:implicitly using DB_FILE_NAME_CONVERT
  RMAN-00571:===========================================================
  RMAN-00569: =============== ERROR MESSAGE STACKFOLLOWS ===============
  RMAN-00571:===========================================================
  RMAN-03002: failure of Duplicate Db command at07/21/2014 11:15:58
  RMAN-05501: aborting duplication of targetdatabase
  RMAN-05001: auxiliary file name /u01/app/oracle/oradata/ENN/users01.dbfconflicts with a file used by the target database
  RMAN-05001: auxiliary file name/u01/app/oracle/oradata/ENN/undotbs01.dbf conflicts with a file used by thetarget database
  RMAN-05001: auxiliary file name /u01/app/oracle/oradata/ENN/sysaux01.dbfconflicts with a file used by the target database
  RMAN-05001: auxiliary file name/u01/app/oracle/oradata/ENN/system01.dbf conflicts with a file used by thetarget database
   
附:a、在异机克隆时,如果auxiliary DB使用了与target DB相同的磁盘配置,目录结构以及文件名时,必须指定NOFILENAMECHECKNOFILENAMECHECK可以阻止检查target DB的数据文件及联机日志文件是否处于正常使用的状态。而auxiliary DBtarget DB的磁盘配置,目录结构以及文件名任一不同时,应避免使用NOFILENAMECHECK
b、对于没有连接到target DBcatalog的情形,应使用BACKUP LOCATION''指定备份文件所在的位置。
  
继续执行duplicate(注:Duplicate时如果主库与备库文件目录结构与文件名都相同时需要使用nofilenamecheck参数)
  RMAN> duplicate target database for standbyfrom active database spfile set db_unique_name 'ENN'
  nofilenamecheck;
  出现问题:
  Starting Duplicate Db at 21-JUL-14
  RMAN-00571: ===========================================================
  RMAN-00569: =============== ERROR MESSAGE STACKFOLLOWS ===============
  RMAN-00571:===========================================================
  RMAN-03002: failure of Duplicate Db command at07/21/2014 11:35:59
  RMAN-05501: aborting duplication of targetdatabase
  RMAN-05537: DUPLICATE without TARGET connectionwhen auxiliary instance is started with spfile cannot use SPFILE clause
  MosL(备库必需用主库传过来的pfile启动到nomount状态,才能执行duplicate)
  CAUSE:
  A DUPLICATE was attempted when the auxiliary database was started with a serverparameter file and the SPFILE sub-clause was specified in Duplicate syntax.
  RMAN cannot restore the server parameter file if the auxiliary database isalready started with a server parameter file.
  SOLUTION:
  Start the auxiliary database with a client parameter file(pfile) or Do not specify SPFILE sub-clause andretry.
   
  启动备库到nomount是使用pfile
  SQL> startup nomountpfile='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initENN.ora';
  
  重新同步复制
  RMAN> duplicate target database for standbyfrom active database spfile set db_unique_name 'ENN' nofilenamecheck;
  
  报错但正常完成复制L
  ORACLE error from auxiliary database:ORA-19527: physical standby redo log must be renamed
  ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/ENN/redo01.log'
  RMAN-05535: WARNING: All redo log files werenot defined properly.
  ORACLE error from auxiliary database:ORA-19527: physical standby redo log must be renamed
  ORA-00312: online log 2 thread 1:'/u01/app/oracle/oradata/ENN/redo02.log'
  RMAN-05535: WARNING: All redo log files werenot defined properly.
  ORACLE error from auxiliary database:ORA-19527: physical standby redo log must be renamed
  ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/ENN/redo03.log'
  RMAN-05535: WARNING: All redo log files werenot defined properly.
  ORACLE error from auxiliary database:ORA-19527: physical standby redo log must be renamed
  ORA-00312: online log 4 thread 1: '/u01/app/oracle/oradata/ENN/redo04.log'
  RMAN-05535: WARNING: All redo log files werenot defined properly.
  ORACLE error from auxiliary database:ORA-19527: physical standby redo log must be renamed
  ORA-00312: online log 5 thread 1: '/u01/app/oracle/oradata/ENN/redo05.log'
  RMAN-05535: WARNING: All redo log files werenot defined properly.
  ORACLE error from auxiliary database:ORA-19527: physical standby redo log must be renamed
  ORA-00312: online log 6 thread 1: '/u01/app/oracle/oradata/ENN/redo06.log'
  RMAN-05535: WARNING: All redo log files werenot defined properly.
  ORACLE error from auxiliary database:ORA-19527: physical standby redo log must be renamed
  ORA-00312: online log 7 thread 1:'/u01/app/oracle/oradata/ENN/redo07.log'
  RMAN-05535: WARNING: All redo log files werenot defined properly.
  Finished Duplicate Db at 21-JUL-14
   
备库日志应用
  
  
1. 备库开启日志应用
   
  开启备库日志应用
  SQL>>
  Database>
   
2. 验证备库日志应用
   
  验证备库接收日志是否应用
  SQL> select SEQUENCE#,FIRST_TIME,NEXT_TIME,APPLIED from v$archived_log order by 1;
   SEQUENCE#FIRST_TIME        NEXT_TIME     APPLIED
  ---------- -------------------------------------- ---------
       8 2014-07-21 10:02:18 2014-07-21 11:51:35 YES
       9 2014-07-21 11:51:35 2014-07-21 11:52:21 YES
  
  主库切换日志
  SQL>>
  System>
  SQL> /
  System>
  SQL> /
  System>
  
  备库查看日志
  select SEQUENCE#,FIRST_TIME,NEXT_TIME ,APPLIEDfrom v$archived_log order by 1;
  SEQUENCE# FIRST_TIME         NEXT_TIME    APPLIED
  ---------- -------------------------------------- ---------
       8 2014-07-21 10:02:18 2014-07-21 11:51:35 YES
       9 2014-07-21 11:51:35 2014-07-21 11:52:21 YES
      10 2014-07-21 11:52:21 2014-07-21 12:23:06 YES
      11 2014-07-21 12:23:06 2014-07-21 12:23:23 YES
      12 2014-07-21 12:23:23 2014-07-21 12:23:27 YES
   
  备库数据库开启read only
  SQL>>
  alter database open read only
  *
  ERROR at line 1:
  ORA-10456: cannot open standby database; mediarecovery session may be in
  Progress
  
  关闭备库管理
  SQL>>
  Database>
  
  主库切换日志
  SQL>>
  System>
  SQL> /
  System>
  
  备库已接收但未应用
  SQL> select SEQUENCE#,FIRST_TIME,NEXT_TIME,APPLIED from v$archived_log order by 1;
   SEQUENCE# FIRST_TIME        NEXT_TIME    APPLIED
  ---------- ------------------- ----------------------------
       8 2014-07-21 10:02:18 2014-07-21 11:51:35 YES
       9 2014-07-21 11:51:35 2014-07-21 11:52:21 YES
      102014-07-21 11:52:21 2014-07-21 12:23:06 YES
      112014-07-21 12:23:06 2014-07-21 12:23:23 YES
      122014-07-21 12:23:23 2014-07-21 12:23:27 YES
      13 2014-07-21 12:23:27 2014-07-2112:42:17 NO
      14 2014-07-21 12:42:17 2014-07-2112:42:19 NO
  
  备库openread only模式
  SQL>>
  Database>
  
  备库开启日志应用
  SQL>>
  Database>
  
  备库已经应用主库日志
  SQL> select SEQUENCE#,FIRST_TIME,NEXT_TIME,APPLIED from v$archived_log order by 1;
  
   SEQUENCE# FIRST_TIME        NEXT_TIME    APPLIED
  ---------- -------------------------------------- ---------
       8 2014-07-21 10:02:18 2014-07-21 11:51:35 YES
       9 2014-07-21 11:51:35 2014-07-21 11:52:21 YES
      102014-07-21 11:52:21 2014-07-21 12:23:06 YES
      112014-07-21 12:23:06 2014-07-21 12:23:23 YES
      122014-07-21 12:23:23 2014-07-21 12:23:27 YES
      132014-07-21 12:23:27 2014-07-21 12:42:17 YES
      142014-07-21 12:42:17 2014-07-21 12:42:19 YES
   
3. 验证数据库操作
   
  在主库创建用户
  SQL> create user test>
  User created.
  
  在备库查看
  SQL> select username from dba_users whereusername='TEST';
  USERNAME
  ------------------------------
  TEST
   
主备库切换操作验证
  
  
1. 主库执行切换
   
  主库执行切换命令
  SQL>>
  Database>
  
  重启主库角色变为备库
  SQL> startup mount;
  ORACLE instance started.
  Total System Global Area  835104768 bytes
  Fixed>
  Variable>
  Database Buffers    150994944 bytes
  Redo Buffers          2371584 bytes
  Database mounted.
  SQL> select database_role from v$database;
  DATABASE_ROLE
  ----------------
  PHYSICAL STANDBY
   
2. 备库切换成主库
   
  查看备库状态
  SQL> select database_role from v$database;
  DATABASE_ROLE
  ----------------
  PHYSICAL STANDBY
  SQL> select open_mode from v$database;
  OPEN_MODE
  --------------------
  READ ONLY WITH APPLY
  
  将备库切换成主库
  SQL>>
  Database>
  
  查看备库角色
  SQL> select database_role from v$database;
  DATABASE_ROLE
  ----------------
  PRIMARY
  
  查看备库状态
  
  SQL> select open_mode from v$database;
  OPEN_MODE
  --------------------
  MOUNTED
  
  Open备库(注:现在已经是主库)
  SQL>>
  Database>
   
  将原主库切换成备库
  SQL>>
  Database>
  SQL>>
  Database>
  
  
  ------------end--------------
  
  DBA_建瑾
  2014.8.5
  
  
  
  
  
  
  
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-153400-1-1.html 上篇帖子: Oracle ORA 下篇帖子: 最新最全播布客小布老师Oracle DBA视频教程打包下载 25套合集
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表