DATAGUARD的搭建

ORACLE Data Guard 理论知识

请查看此blog :http://blog.csdn.net/haibusuanyun/article/details/11519241

Oracle Data Guard搭建步骤

1、主库设置归档模式

2、主库设置Force Logging模式

3、备库创建相应的dump文件夹

4、配置辅助实例参数文件

5、生成辅助实例密码文件

6、配置辅助实例监听

7、实施数据库克隆(辅助实例启动到nomount状态后)

8、启动日志传送

9、应用redo日志操作。

创建数据验证环境

primary>conn lottu/li0924
Connected.
primary>create table tbl_lottu(id number,name varchar2(10));
Table created.
primary>insert into tbl_lottu select level,'lottu'||level from dual connect by level <= 10;
10 rows created.
primary>commit;
Commit complete.

1、主库设置归档模式

SQL> set sqlprompt "primary>"
primary>archive log list;
Database log mode           Archive Mode
Automatic archival           Enabled
Archive destination           /home/oracle/oradata/arch
Oldest online log sequence     73
Next log sequence to archive   75
Current log sequence           75

2、主库设置Force Logging模式

primary>select force_logging from v$database;
FORCE_LOG
---------
NO
primary>alter database force logging;
Database altered.

3、备库创建相应的dump文件夹

主库查询sql;看下是否需要补漏目录

elect name, value
  from v$parameter
 where name in ('audit_file_dest',
                'background_dump_dest',
                'control_files',
                'core_dump_dest',
                'user_dump_dest',
                'db_recovery_file_dest'
               )
 ORDER BY name ASC;

备库用oracle用户执行创建目录

mkdir -p /u01/app/admin/ora234/adump
mkdir -p /u01/app/diag/rdbms/ora234/ora234/trace
mkdir -p /u01/app/oradata/ora234
mkdir -p /u01/app/flash_recovery_area
mkdir -p /u01/app/diag/rdbms/ora234/ora234/cdump
mkdir -p /home/oracle/oradata/arch
mkdir -p /home/oracle/oradata/ora234

4、配置辅助实例参数文件

4.1主库通过spfile生成pfile文件;

primary>create pfile from spfile;

4.2修改参数文件。

#主库添加部分

*.DB_UNIQUE_NAME=db_primary
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(db_primary,db_standby)'
*.LOG_ARCHIVE_DEST_2='SERVICE=tns_standby ARCH VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=db_standby'
*.LOG_ARCHIVE_DEST_STATE_2=DEFER
*.FAL_SERVER=tns_standby
*.FAL_CLIENT=tns_primary
*.STANDBY_FILE_MANAGEMENT=AUTO

#备库添加部分

*.DB_UNIQUE_NAME=db_standby
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(db_primary,db_standby)'
*.LOG_ARCHIVE_DEST_2='SERVICE=tns_primary ARCH VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=db_primary'

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.FAL_SERVER=tns_primary
*.FAL_CLIENT=tns_standby
*.STANDBY_FILE_MANAGEMENT=AUTO

4.3主备库以新建的参数文件启动

#主库

primary>shutdown immediate;
primary>create spfile from pfile;
primary>startup

#备库

standby>startup nomount

5、生成辅助实例密码文件

方法1: 直接从Primary数据库复制密钥文件过来

方法2: orapwd生成

若忘记密码;采用第二种方法生成

orapwd file='$ORACLE_HOME/dbs/oraora234.ora' password=oracle

6、配置辅助实例监听

6.1配置监听文件listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ********)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
   
   (SID_DESC = 
     (GLOBAL_DBNAME = db_primary)   #/(GLOBAL_DBNAME = db_standby)
     (SID_NAME = ora234)
     (ORACLE_HOME =/u01/app/oracle)
   )

  )

ADR_BASE_LISTENER = /u01/app

6.2配置文件tnsnames.ora

tns_primary =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ********)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = db_primary)
    )
  )

tns_standby =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ********)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = db_standby)
    )
  )

6.3 若开启了防火墙;须先打开1521数据库端口

-A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT

6.4 验证是否配置成功

[oracle@localhost admin]$ tnsping tns_standby

TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 15-FEB-2017 10:47:01

Copyright (c) 1997, 2011, Oracle.  All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ********)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = db_standby)))
OK (10 msec)
[oracle@localhost admin]$ tnsping tns_primary

TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 15-FEB-2017 10:47:10

Copyright (c) 1997, 2011, Oracle.  All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ********)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = db_primary)))
OK (0 msec)

7、实施数据库克隆(辅助实例启动到nomount状态后)

rman target sys/Oracle123__@tns_primary auxiliary sys/Oracle123__@tns_standby

DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;

操作日志如下:

[oracle@oracle234 ~]$ rman target sys/Oracle123__@tns_primary auxiliary sys/Oracle123__@tns_standby

Recovery Manager: Release 11.2.0.3.0 - Production on Wed Feb 15 12:37:32 2017

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORA234 (DBID=2038937181)
connected to auxiliary database: ORA234 (not mounted)

RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;

Starting Duplicate Db at 15-FEB-17
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=254 device type=DISK
……

contents of Memory Script:
{
   set until scn  960540;
   recover
   standby
   clone database
    delete archivelog
   ;
}
executing Memory Script

executing command: SET until clause

Starting recover at 15-FEB-17
using channel ORA_AUX_DISK_1

starting media recovery

archived log for thread 1 with sequence 76 is already on disk as file /home/oracle/oradata/arch/1_76_935749853.dbf
archived log file name=/home/oracle/oradata/arch/1_76_935749853.dbf thread=1 sequence=76
media recovery complete, elapsed time: 00:00:00
Finished recover at 15-FEB-17
Finished Duplicate Db at 15-FEB-17

8、启动日志传送

Primary> alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE;
System altered.

9、应用/关闭redo日志操作。验证是否数据/日志同步

primary>conn lottu/li0924
Connected.
primary>create table t as select level id from dual connect by level < 10;
Table created.
primary>alter system switch logfile;
alter system switch logfile
*
ERROR at line 1:
ORA-01031: insufficient privileges
primary>alter system switch logfile;
System altered.

备库验证

standby> alter database recover managed standby database disconnect from session;
Database altered.
standby> alter database recover managed standby database cancel;
Database altered.
standby> select count(1) from lottu.t;
  COUNT(1)
----------
     9
原文地址:https://www.cnblogs.com/lottu/p/7054731.html