Oracle数据库容灾解决方案:Oracle DataGuard部署实录

SQL> alter database force logging;
Database altered.

SQL> col force_logging for a15
SQL> select force_logging from v$database;
FORCE_LOGGING
---------------
YES

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     35
Next log sequence to archive   37
Current log sequence           37
SQL> alter system set db_unique_name='kingm' scope=spfile;
SQL> alter system set log_archive_config='dg_config=(kingm,kings)' scope=spfile;
SQL> alter system set log_archive_dest_1='location=db_recovery_file_dest valid_for=(all_logfiles,all_roles) db_unique_name=kingm' scope=spfile;
SQL> alter system set log_archive_dest_2='service=kings lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=kings' scope=spfile;
SQL> alter system set fal_server='kings' scope=spfile;
SQL> alter system set fal_client='kingm' scope=spfile;
SQL> alter system set standby_file_management='auto' scope=spfile;
SQL> alter system set log_archive_dest_state_2='defer' scope=spfile;
SQL> alter system set service_names=king,kingm scope=spfile;
[[email protected] ~]$ cd $ORACLE_HOME/dbs
[[email protected] dbs]$ sqlplus / as sysdba
SQL> create pfile from spfile;  
File created.

[[email protected] dbs]$ scp initking.ora 192.168.1.202:/u01/app/oracle/product/11.2.0/db_1/dbs
[[email protected] dbs]$ scp orapwking 192.168.1.202:/u01/app/oracle/product/11.2.0/db_1/dbs
[[email protected] ~]$ mkdir -p /u01/app/oracle/backup
[[email protected] ~]$ mkdir -p /u01/app/oracle/backup

[[email protected] ~]$ rman target /
RMAN> backup device type disk format '/u01/app/oracle/backup/%U' database plus archivelog;
RMAN> backup device type disk format '/u01/app/oracle/backup/%U' current controlfile for standby;

[[email protected] ~]$ scp /u01/app/oracle/backup/*  192.168.1.202:/u01/app/oracle/backup
[[email protected] ~]$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
KINGS =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.202)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = king)
    )
  )
KINGM =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.201)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = king)
    )
  )
[[email protected] ~]$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = king)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = king)
    )
  )
LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = king02)(PORT = 1521))
  )
ADR_BASE_LISTENER = /u01/app/oracle

[[email protected] ~]$ lsnrctl start
[[email protected] ~]$ lsnrctl status
[[email protected] ~]$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
KINGS =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.202)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = king)
    )
  )
KINGM =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.201)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = king)
    )
  )
[[email protected] ~]$ tnsping kings
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.202)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = 
king)))
OK (40 msec)

[[email protected] ~]$ tnsping kingm
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.201)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = 
king)))
OK (30 msec)
[[email protected] ~]$ cd $ORACLE_HOME/dbs
[[email protected] dbs]$ vi initking.ora
*.audit_file_dest='/u01/app/oracle/admin/king/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/king/control01.ctl','/u01/app/oracle/fast_recovery_area/king/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='king'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=107374182400
*.db_unique_name='kings'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=kingXDB)'
*.fal_client='kings'
*.fal_server='kingm'
*.log_archive_config='dg_config=(kingm,kings)'
*.log_archive_dest_1='location=db_recovery_file_dest valid_for=(all_logfiles,all_roles) db_unique_name=kings'
*.log_archive_dest_2='service=kings lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=kingm'
*.memory_max_target=1073741824
*.memory_target=1073741824
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.service_names='KING','KINGS'
*.standby_file_management='auto'
*.undo_tablespace='UNDOTBS1'

[[email protected] dbs]$ sqlplus / as sysdba
SQL> create spfile from pfile;

File created.
[[email protected] ~]$ mkdir -p /u01/app/oracle/admin/king/adump
[[email protected] ~]$ mkdir -p /u01/app/oracle/admin/king/dpdump
[[email protected] ~]$ mkdir -p /u01/app/oracle/admin/king/pfile
[[email protected] ~]$ mkdir -p /u01/app/oracle/oradata/king
[[email protected] ~]$ mkdir -p /u01/app/oracle/fast_recovery_area/king
[[email protected] ~]$ sqlplus / as sysdba
SQL> startup nomount;
ORACLE instance started.

Total System Global Area 1068937216 bytes
Fixed Size                  2260088 bytes
Variable Size             432014216 bytes
Database Buffers          629145600 bytes
Redo Buffers                5517312 bytes
[[email protected] ~]$ rman target sys/[email protected] auxiliary sys/[email protected] nocatalog
Recovery Manager: Release 11.2.0.4.0 - Production on Sat Mar 31 14:25:26 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
connected to target database: KING (DBID=1072562510)
using target database control file instead of recovery catalog
connected to auxiliary database: KING (not mounted)

RMAN> duplicate target database for standby dorecover nofilenamecheck;
[[email protected] ~]$ sqlplus / as sysdba
SQL> alter database add standby logfile '/u01/app/oracle/oradata/king/standby01.log' size 50m;
SQL> alter database add standby logfile '/u01/app/oracle/oradata/king/standby02.log' size 50m;
SQL> alter database add standby logfile '/u01/app/oracle/oradata/king/standby03.log' size 50m;
SQL> alter database add standby logfile '/u01/app/oracle/oradata/king/standby04.log' size 50m;

SQL> alter database recover managed standby database disconnect from session using current logfile;
[[email protected] ~]$ sqlplus / as sysdba
SQL> alter system set log_archive_dest_state_2=enable scope=both;
SQL> alter system switch logfile;
[[email protected] ~]$ sqlplus / as sysdba
SQL> alter database recover managed standby database cancel;
SQL> alter database open;
SQL> alter database recover managed standby database disconnect from session using current logfile;
[[email protected] ~]$ sqlplus / as sysdba
SQL> set line 200
SQL> col DATABASE_MODE for a30
SQL> col PROTECTION_MODE for a30
SQL> col RECOVERY_MODE for a30
SQL> select DEST_ID , DATABASE_MODE , RECOVERY_MODE , PROTECTION_MODE from v$archive_dest_status where DEST_ID=2;
   DEST_ID DATABASE_MODE                  RECOVERY_MODE                  PROTECTION_MODE
---------- ------------------------------ ------------------------------ ------------------------------
         2 OPEN_READ-ONLY                 MANAGED REAL TIME APPLY        MAXIMUM PERFORMANCE
         
SQL> col DEST_NAME for a20
SQL> col DESTINATION for a30
SQL> col ERROR for a50 
SQL> select DEST_ID,DEST_NAME,STATUS, DESTINATION, ERROR from V$ARCHIVE_DEST where DEST_ID<=2;
   DEST_ID DEST_NAME            STATUS                      DESTINATION                    ERROR
---------- -------------------- --------------------------- ------------------------------ --------------------------------------------------
         1 LOG_ARCHIVE_DEST_1   VALID                       db_recovery_file_dest
         2 LOG_ARCHIVE_DEST_2   VALID                       kings

SQL> col TYPE for a20
SQL> select DEST_NAME,DESTINATION,STATUS,TYPE,ARCHIVED_SEQ#,APPLIED_SEQ# from v$archive_dest_status where DEST_ID<=2; 

DEST_NAME            DESTINATION                    STATUS                      TYPE                 ARCHIVED_SEQ# APPLIED_SEQ#
-------------------- ------------------------------ --------------------------- -------------------- ------------- ------------
LOG_ARCHIVE_DEST_1   db_recovery_file_dest          VALID                       LOCAL                           50            0
LOG_ARCHIVE_DEST_2   kings                          VALID                       PHYSICAL                        50           49

SQL> select THREAD# , SEQUENCE# , STATUS from v$log;

   THREAD#  SEQUENCE# STATUS
---------- ---------- ------------------------------------------------
         1         49 INACTIVE
         1         50 INACTIVE
         1         51 CURRENT
[[email protected] ~]$ sqlplus / as sysdba
SQL> set line 200
col ARCHIVED for a10
SQL> select THREAD# , SEQUENCE# , ARCHIVED , STATUS from v$standby_log;
   THREAD#  SEQUENCE# ARCHIVED   STATUS
---------- ---------- ---------- ------------------------------
         1         51 YES        ACTIVE
         1          0 NO         UNASSIGNED
         0          0 YES        UNASSIGNED
         0          0 YES        UNASSIGNED
         
SQL> select PROCESS , STATUS , THREAD# , SEQUENCE# , BLOCK# , BLOCKS  from v$managed_standby where process != 'ARCH';
PROCESS                     STATUS                                  THREAD#  SEQUENCE#     BLOCK#     BLOCKS
--------------------------- ------------------------------------ ---------- ---------- ---------- ----------
RFS                         IDLE                                          0          0          0          0
RFS                         IDLE                                          0          0          0          0
RFS                         IDLE                                          1         51       4381          1
MRP0                        APPLYING_LOG                                  1         51       4381     102400

原文地址:http://blog.51cto.com/13598811/2093451

时间: 2024-11-05 22:39:07

Oracle数据库容灾解决方案:Oracle DataGuard部署实录的相关文章

三分钟读懂Oracle数据库容灾架之DataGuard

Oracle数据库目前依然处于商用数据库的霸主地位. 运行在Oracle数据库上的核心业务及核心数据的安全性尤为重要. 目前市场上针对Oracle数据库常见的容灾产品大致可以分为两大类. Oracle 公司自己的容灾产品 非Oracle公司的容灾产品 Oracle公司目前的容灾产品有我们常见的DataGuard和属于中间件部门的Oracle GoldenGate(以下简称OGG)产品.非Oracle公司的有DSG迪思杰 及DDS九桥,这两种产品和OGG在实现原理上大致相同. Oracle Gol

常见数据库容灾技术的直观比较

当前是信息社会,数据库的重要性不言而喻.本文从普通用户而不是厂家(不谈RPO.RTO.MDT.MTBF.MTTR等等专业术语)角度出发来审视和比较各种数据库容灾技术,希望能帮助广大用户在选购方案时少被忽悠.少走弯路.避免不必要的经济损失和系统事故. 对于广大用户来说,最关心的是下列两点:A. 是否具有两份逻辑一致的数据:如果某容灾方案具有两份'逻辑一致'的数据,那在故障发生时,用户数据就是安全的,系统的可用性也有保障的.具有两份'逻辑一致'的数据,这是一个合格容灾方案必须具备的.请注意,这里谈的

数据容灾在数据库容灾领域中的比重及其意义

数据容灾只是确保数据安全的一个方案,当这个方案无法保障数据安全时,需要专业的数据恢复工具对其原有数据或者备份数据进行数据恢复.无论采用哪种容灾方案,数据备份还是最基础的,没有备份的数据,任何容灾都没有现实意义.但光有备份是不够的,容灾也必不可少.容灾对于IT而言,就是提供一个防止各种灾难的计算机信息系统.     数据容灾根据不同时机需求可以有不同的等级.中小企业通常只需采用本地容灾即可.所谓本地容灾就是在企业网络本地所进行的容灾措施,其中包括在本地备份.存储.保管备份媒体.在一些大众型企业,所

Oracle 11.2.0.4.0 dataguard部署和日常维护(2)

1. primary库设置dataguard相关参数 1.1. 强制primay库在任何状态下必须记录日志 SYS@userdata>select FORCE_LOGGING from v$database; FORCE_LOG --------- NO SYS@userdata>alter database force logging; Database altered. SYS@userdata>select FORCE_LOGGING from v$database; FORCE_

oracle数据泵之解决方案(用户)导入导出。

看到网上有这样的介绍而且很多,但觉得都是大神才能一下子看的懂.自己总结下菜鸟能看懂的. 1.导出. 首先第一步: 操作系统-开始-运行输入"cmd"进入dos界面输入"sqlplus/nolog"按回车:连接数据库,输入:conn sys/密码@对象数据库 as sysdba(注意sys用户一定要用sysdba角色登录哦system/密码@对象数据库) 回车 :接着,创建DIRECTORY create directory aa as 'D:\oracle\aa';

Oracle 11.2.0.4.0 Dataguard部署和日常维护(6)-Active dataguard

1. 检查主备库的状态 on primary column DATABASE_ROLE format a20 column OPEN_MODE format a15 column PROTECTION_MODE format a20 column SWITCHOVER_STATUS format a20 select DATABASE_ROLE,OPEN_MODE,PROTECTION_MODE,SWITCHOVER_STATUS from v$database; DATABASE_ROLE O

Oracle 11.2.0.4.0 Dataguard部署和日常维护(6)-Dataguard Snapshot

1. 检查当前主备库同步状态 on primary select ads.dest_id,max(sequence#) "Current Sequence", max(log_sequence) "Last Archived" from v$archived_log al, v$archive_dest ad, v$archive_dest_status ads where ad.dest_id=al.dest_id and al.dest_id=ads.dest_

Oracle 11.2.0.4.0 Dataguard部署和日常维护(5)-Datauard 主备切换和故障转移篇

1. dataguard主备切换 1.1. 查看当前主备库是否具备切换条件 on slave select sequence#,first_time,next_time,archived,applied from v$archived_log where SEQUENCE#=(select max(SEQUENCE#) from v$archived_log); SEQUENCE# FIRST_TIME NEXT_TIME ARCHIVED APPLIED ---------- --------

Oracle 11.2.0.4.0 Dataguard部署和日常维护(7) - Dataguard Flashback

1. 检查主备库同步状态 2. 开启备库的闪回功能和闪回目录 3. 取消备库的恢复进程 4. 创建备库的还原点 5. 在主库归档日志 6. 确认备库已经归档了最新的日志 7. 延迟指向将被激活的备的日志归档目的地 8. 激活备库 9. 向备库写入测试数据 10. 将备库闪回至还原点 11. 重新启用到备库的日志归档目的地 12. 测试数据同步是否正常