DG搭建

创建物理备库准备工作

1.1 修改RAC数据库为FORCE LOGGING

SQL> select force_logging from v$database;

 

FOR

---

NO

SQL>

 

 

SQL> ALTER DATABASE FORCE LOGGING;  //详细记录日志

 

Database altered.

 

SQL> select force_logging from v$database;

 

FORCE_LOG

---------

YES

 

1.2 查询online的redo log

:通常我们设置生产库的每个redo大小为512M~2048M之间,并且大于等于三组

 

SQL> set linesize 150;

set pagesize 50;

column MB format a5;

column STATUS format a12;

column MEMBER format a50;

select l.GROUP#,l.THREAD#,l.BYTES/1024/1024||'MB' MB,l.STATUS, lf.TYPE,lf.MEMBER from v$log l,v$logfile lf where l.GROUP#=lf.GROUP#;

 GROUP#    THREAD#  MB    STATUS  TYPE   MEMBER

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

 3     1       50MB  CURRENT ONLINE  /oradata/orcl/redo03.log

 2     1       50MB  INACTIVE ONLINE  /oradata/orcl/redo02.log

 1     1       50MB  INACTIVE ONLINE  /oradata/orcl/redo01.log

 

1.3 编辑hosts文件主机名解析配置

1.3.1 编辑主库的/etc/hosts文件

[root@db11g ~]# vim /etc/hosts

192.168.56.90 db11g

192.168.56.99 db10g

编辑备库主机db10g的/etc/hosts文件

[root@db10g ~]# vim /etc/hosts

192.168.56.90 db11g

192.168.56.99 db10g

1.4 设置备库主机监听

编辑listener.ora文件,编辑后,启动或重载监听,查看是否启动服务

$ vi $ORACLE_HOME/network/admin/listener.ora

添加并确认以下内容:

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.99)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

    )

  )

 

ADR_BASE_ORACLE = /u02/app/oracle

 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = orcldg)

      (ORACLE_HOME =/u02/app/oracle/product/10.2.0/db_1)

      (SID_NAME = orcldg)

    )

  )

启动监听

[oracle@db10g ~]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 11-MAR-2017 19:11:40

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Starting /u02/app/oracle/product/11.2.0/db_1/bin/tnslsnr: please wait...

TNSLSNR for IBM/AIX RISC System/6000: Version 11.2.0.4.0 - Production

System parameter file is /u02/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

Log messages written to /u02/app/oracle/product/11.2.0/db_1/network/log/listener.log

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.99)(PORT=1521)))

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.99)(PORT=1521)))

STATUS of the LISTENER

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

Alias                     LISTENER

Version                   TNSLSNR for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Production

Start Date                11-MAR-2017 19:11:40

Uptime                    0 days 0 hr. 0 min. 0 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      ON

Listener Parameter File   /u02/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

Listener Log File         /u02/app/oracle/product/11.2.0/db_1/network/log/listener.log

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.99)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Services Summary...

Service "orcldg" has 1 instance(s).

  Instance "orcldg", status UNKNOWN, has 1 handler(s) for this service...

The command completed successfull

1.5 编辑tnsnames.ora文件

1.5.1 主库tnsnames.ora文件编辑

[oracle@db11g dbs]$ 

vi $ORACLE_HOME/network/admin/tnsnames.ora

添加内容:

ORCL =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = db11g)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

orcldg=

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.99)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SID = ORCLDG)

    )

  )

1.5.2 备库主机dg10g编辑tnsnames.ora文件

[oracle@db10g dbs]$ 

vi $ORACLE_HOME/network/admin/tnsnames.ora

添加内容:

ORCL =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = db11g)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

orcldg=

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.99)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SID = ORCLDG)

    )

  )

验证tnsname配置

主库:[oracle@db11g dbs]$ tnsping orcldg

 

TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 20-MAR-2017 14:23:40

 

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

 

Used parameter files:

/u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora

 

 

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.99)(PORT = 1521))) (CONNECT_DATA = (SID = ORCLDG)))

OK (10 msec)

 

 

备库:[oracle@db10g ~]$ tnsping orcl

 

TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 28-MAR-2017 15:03:13

 

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 = db11g)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))

OK (20 msec)

1.6 主库初始化参数检查与设置

1.6.1 查看数据库DB_NAME

SQL> set linesize 150;

show parameters DB_NAME                         

 

NAME                                 TYPE        VALUE

db_name                              string      orcl

SQL> 

 

1.6.2 查看数据库DB_UNIQUE_NAME和归档模式

SQL> set linesize 150;

show parameters DB_UNIQUE_NAME

 

NAME                                 TYPE        VALUE

db_unique_name                       string      ORCL

SQL>

 

SQL> select DB_UNIQUE_NAME,NAME,LOG_MODE from v$database;

 

DB_UNIQUE_NAME                 NAME      LOG_MODE

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

ORCL                           ORCL      ARCHIVELOG

SQL>

 

1.6.3 查看LOG_ARCHIVE_CONFIG参数,并设置

查看归档设置

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival           Enabled

Archive destination           /home/oracle/backup/arch

Oldest online log sequence     16

Next log sequence to archive   18

Current log sequence           18

SQL> set linesize 150;

show parameters LOG_ARCHIVE_CONFIG

 

NAME                                 TYPE      VALUE

log_archive_config                   string

 

SQL> alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcldg)';

System altered.

 

SQL> set linesize 150;

show parameters LOG_ARCHIVE_CONFIG                              

 

NAME                TYPE        VALUE

log_archive_config  string      DG_CONFIG=(orcl,orcldg)

 

1.6.4 查看控制文件路径

SQL> set linesize 150;

show parameters CONTROL_FILES

NAME      TYPE     VALUE

control_files string    /oradata/orcl/control01.ctl,         /Oradata/orcl/control02.ctl

 

1.6.5 主库查看并设置归档参数

修改归档参数LOG_ARCHIVE_DEST_1和LOG_ARCHIVE_DEST_2:

SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/backup/arch(添加自己归档日志路径) VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl';

System altered.

 

SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=orcldg ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)   DB_UNIQUE_NAME=orcldg';

System altered.

查看当前归档参数:

SQL> set linesize 150;

show parameters LOG_ARCHIVE_DEST_1

NAME      TYPE         VALUE

log_archive_dest_1  string   LOCATION=/home/oracle/backup/a

           rch VALID_FOR=(ALL_LOGFILES,AL

            L_ROLES) DB_UNIQUE_NAME=orcl

log_archive_dest_10      string

log_archive_dest_11      string

log_archive_dest_12      string

log_archive_dest_13      string

log_archive_dest_14      string

log_archive_dest_15      string

log_archive_dest_16      string

log_archive_dest_17      string

 

NAME               TYPE  VALUE

log_archive_dest_18      string

log_archive_dest_19      string

SQL> show parameters LOG_ARCHIVE_DEST_2

 

 

NAME                   TYPE        VALUE

log_archive_dest_2     string      SERVICE=primary LGWR ASYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl

1.6.6确认LOG_ARCHIVE_DEST_STATE_1、LOG_ARCHIVE_DEST_STATE_2参数为" enable "

SQL> show parameters LOG_ARCHIVE_DEST_STATE

 

NAME                                 TYPE        VALUE

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

log_archive_dest_state_1             string      ENABLE

log_archive_dest_state_10            string      enable

log_archive_dest_state_2             string      DEFER

log_archive_dest_state_3             string      enable

log_archive_dest_state_4             string      enable

log_archive_dest_state_5             string      enable

log_archive_dest_state_6             string      enable

log_archive_dest_state_7             string      enable

log_archive_dest_state_8             string      enable

log_archive_dest_state_9             string      enable

SQL> 

 

归档路径启用方法:

SQL> alter system set log_archive_dest_state_2=ENABLE;

System altered.

SQL>

 

归档路径禁用方法:

SQL> alter system set log_archive_dest_state_2=defer;

System altered.

SQL>

1.6.6 确认REMOTE_LOGIN_PASSWORDFILE参数为"EXCLUSIVE"

SQL> show parameters REMOTE_LOGIN_PASSWORDFILE

 

NAME                                 TYPE                              VALUE

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

remote_login_passwordfile            string                            EXCLUSIVE

 

 

查看并设置LOG_ARCHIVE_MAX_PROCESSES参数

SQL> show parameters LOG_ARCHIVE_MAX_PROCESSES

 

NAME                                 TYPE        VALUE

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

log_archive_max_processes            integer     2

 

 

 

SQL> alter system set LOG_ARCHIVE_MAX_PROCESSES=5;

System altered.

 

 

SQL> show parameters LOG_ARCHIVE_MAX_PROCESSES

 

NAME                                 TYPE                             VALUE

log_archive_max_processes            integer                          5

 

 

1.6.7 设置switch over参数FAL_SERVERFAL_CLIENT

:主库的服务端是备库,客户端是主库;备库的服务端是主库,客户端是备库;不要混淆。

 

SQL> alter system set FAL_SERVER=orcldg;

System altered.

 

 

SQL> show parameters FAL_SERVER

 

NAME                                 TYPE        VALUE

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

fal_server                           string      ORCLDG

SQL>

 

 

SQL> alter system set FAL_CLIENT=orcl;

System altered.

 

 

SQL> show parameters FAL_CLIENT

 

NAME                                 TYPE        VALUE

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

fal_client                           string      ORCL

 

 

 

1.6.8 设置数据文件名、redo log文件名转换参数

SQL> alter system set DB_FILE_NAME_CONVERT='/oradata/orcl/','/oradata/orcldg' scope=spfile;

System altered.

 

 

SQL> alter system set LOG_FILE_NAME_CONVERT='/oradata/orcl/','/oradata/orcldg' scope=spfile;

System altered.

1.6.9 设置备用文件管理方式参数

SQL> show parameters STANDBY_FILE_MANAGEMENT

 

NAME                                 TYPE        VALUE

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

standby_file_management              string      AUTO

SQL>

 

 

SQL> alter system set STANDBY_FILE_MANAGEMENT=AUTO;

System altered.

 

SQL> show parameters STANDBY_FILE_MANAGEMENT

 

NAME                                 TYPE                              VALUE

-

standby_file_management              string                            AUTO

 

1.6.10 重启数据库,使修改的参数生效 (可忽略该步骤)

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

 

 

启动所有节点实例:

SQL> startup

 

ORACLE instance started.

Total System Global Area 5.3447E+10 bytes

Fixed Size                  2265864 bytes

Variable Size            1.3556E+10 bytes

Database Buffers         3.9863E+10 bytes

Redo Buffers               26480640 bytes

Database mounted.

Database opened.

1.7 全备份主库

run{

allocate channel c1 device type disk;

backup database format '/home/oracle/backup/full_%d_%T_%s_%p.bak';

sql 'alter system archive log current';

sql 'alter system archive log current';

sql 'alter system archive log current';

backup archivelog all format '/home/oracle/backup/arch_%d_%T_%s_%p.bak';

release channel c1;

}

1.8 备份当前控制文件为STANDBY模式

RMAN>  BACKUP CURRENT CONTROLFILE FOR STANDBY format '/home/oracle/backup/controlfile_%d_%T.bak';

1.9 传输RMAN备份到备库主机

在备库上创建一个接收目录

mkdir -p /home/oracle/backup

Scp * 192.168.56.99:/home/oracle/backup

 

1.10 传输密码文件到备库主机,并重命名

:搭建DG完成后,可能会出现主库无法连接到备库的情况,原因之一是口令文件存在问题;可以重新传输口令文件进行尝试,或者备库口令文件权限可以改为777。

cd /u01/app/oracle/product/11.2.0/db_1/dbs

 

scp orapworcl 192.168.56.99:/u02/app/oracle/product/11.2.0/db_1/dbs/orapworcldg

创建物理备库

2.1 编辑.profile文件设置ORACLE_SID环境变量

[oracle@db10g ~]$ vim .bash_profile 

PATH=$PATH:$HOME/bin

 

export PATH

ORACLE_BASE=/u02/app/oracle

ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

ORACLE_SID=orcldg

ORACLE_UNQNAME=orcldg

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH

export ORACLE_HOME ORACLE_BASE ORACLE_SID PATH

修改完成后一定要退出oracle用户,重新进来,使环境变量生效

2.2 从自动备份的控制文件和spfile参数文件的备份集中恢复spfile参数文件

进入DUMMY,恢复参数文件

RMAN> restore spfile to '/home/oracle/orcldg.ora' from '/home/oracle/backup/spfile_ORCL_20150512_8093_1.bak';

2.3 编辑备库pfile初始化参数文件

在SQL*PLUS中通过恢复的spfile参数文件创建pfile初始化参数文件

$ sqlplus / as sysdba

Shutdown immediate

SQL> create pfile='/home/oracle/init.ora' from spfile='/home/oracle/orcldg.ora';

File created.

编辑pfile初始化参数文件

$ vi /home/oracle/init.ora

修改后:

 

orcl.__sga_target=1056964608

orcl.__shared_io_pool_size=0

orcl.__shared_pool_size=285212672

orcl.__streams_pool_size=0

*.audit_file_dest='/u02/app/oracle/admin/orcldg/adump'

*.audit_sys_operations=FALSE

*.audit_trail='db'

*.compatible='11.2.0.4.0'

*.control_files='/oradata/orcldg/control01.ctl','/oradata/orcldg/control02.ctl'#Restore Controlfile

*.db_block_size=8192

*.db_domain=''

*.db_file_name_convert='/oradata/orcl/','/oradata/orcldg/'

*.db_name='orcl'

*.db_unique_name='orcldg'

*.diagnostic_dest='/u02/app/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

*.fal_client='ORCLDG'

*.fal_server='ORCL'

*.job_queue_processes=1000

*.log_archive_config='DG_CONFIG=(orcl,orcldg)'

*.log_archive_dest_1='LOCATION=/oradata/arch  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcldg'

*.log_archive_dest_2='SERVICE=orcl ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)   DB_UNIQUE_NAME=orcl'

*.log_archive_max_processes=5

*.log_file_name_convert='/oradata/orcl/','/oradata/orcldg/','/oradata/orcl/','/oradata/orcldg/srl/'(在备库上创建这个目录)

*.memory_target=1605369856

*.open_cursors=300

*.processes=1200

*.remote_login_passwordfile='EXCLUSIVE'

*.service_names=''

*.sessions=1325

*.standby_file_management='AUTO'

*.undo_tablespace='UNDOTBS1'

2.4 备库主机创建必需的目录

$ cd /u02/app/oracle/admin/orcl

$ ls

adump   cdump  

 

2.5 创建spfile动态初始化参数文件

$ sqlplus / as sysdba

 

 

SQL> create spfile from pfile='/home/oracle/init.ora';

 

File created.

2.6 启动数据库到nomount阶段

SQL> startup nomount

2.7 RMAN恢复创建备库

2.7.1 恢复控制文件

RMAN> RESTORE STANDBY CONTROLFILE from '/home/oracle/backup/controlfile_ORCL_20170312.bak';

2.7.2 mount数据库

RMAN> alter database mount;

 

database mounted

released channel: ORA_DISK_1

2.7.3 查看数据库表空间、数据文件、redo log文件

2.7.3.1 RMAN查看表空间、数据文件

RMAN> report schema;

 

using target database control file instead of recovery catalog

RMAN-06139: WARNING: control file is not current for REPORT SCHEMA

Report of database schema for database with db_unique_name ORCLDG

 

List of Permanent Datafiles

===========================

File Size(MB) Tablespace           RB segs Datafile Name

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

1    760      SYSTEM               ***     /oradata/orcldg/system01.dbf

2    720      SYSAUX               ***     /oradata/orcldg/sysaux01.dbf

3    295      UNDOTBS1             ***     /oradata/orcldg/undotbs01.dbf

4    16       USERS                ***     /oradata/orcldg/users01.dbf

 

List of Temporary Files

=======================

File Size(MB) Tablespace           Maxsize(MB) Tempfile Name

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

1    20       TEMP                 32767       /oradata/orcldg/temp01.dbf

2.7.3.2 SQL*PLUS中查询永久表空间,数据文件

$ sqlplus / as sysdba

SQL> set linesize 150; 

set pagesize 200;

column TBS_NAME format a20;

column DBF_NAME format a60;

select tbs.NAME TBS_NAME,dbf.NAME DBF_NAME from v$tablespace tbs,v$datafile dbf where tbs.TS#=dbf.TS#;

TBS_NAME      DBF_NAME

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

SYSTEM      /oradata/orcldg/system01.dbf

SYSAUX      /oradata/orcldg/sysaux01.dbf

UNDOTBS1      /oradata/orcldg/undotbs01.dbf

USERS      /oradata/orcldg/users01.dbf

2.7.3.3 SQL*PLUS中查询临时表空间,数据文件

SQL> set linesize 150; 

column TBS_NAME format a20;

column DBF_NAME format a60;

select tbs.NAME TBS_NAME,dbf.NAME DBF_NAME from v$tablespace tbs,v$tempfile dbf where tbs.TS#=dbf.TS#;

TBS_NAME      DBF_NAME

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

TEMP      /oradata/orcldg/temp01.dbf

2.7.3.4 SQL*PLUS中查询redo log 文件

SQL> set linesize 150;

set pagesize 50;

column TYPE format a8;

column MEMBER format a60;

select lf.GROUP#,l.THREAD#,lf.TYPE,l.BYTES/1024/1024 MB,lf.MEMBER from v$logfile lf,v$log l where lf.GROUP#=l.GROUP#;

GROUP#    THREAD# TYPE        MB MEMBER

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

 3     1 ONLINE   ########## /oradata/orcldg/redo03.log

 2     1 ONLINE   ########## /oradata/orcldg/redo02.log

 1     1 ONLINE   ########## /oradata/orcldg/redo01.log

2.7.3.5 创建数据文件,redo log存放的目录

$ pwd   

/oradata/standby

 

$ mkdir datafile onlinelog tempfile

 

$ ls

control    datafile   onlinelog  tempfile

$

 

 

 

2.7.4 RMAN重载数据库

:重载数据库前,先同步元数据,使控制文件元数据和实际存在数据同步。

 

RMAN> crosscheck backup;

RMAN> crosscheck archivelog all;

RMAN> delete expired backup;

RMAN> delete expired archivelog all;

RMAN> catalog start with '/home/oracle/backup';

:接下来的步骤为重载数据库,重载数据库前一定要检查好控制文件中记录的数据库物理结构,保证在备库的实际位置与控制文件记录位置一致。

RMAN>restore database

2.7.5 列出备份的所有归档日志

记录所有线程最后一个归档日志信息

RMAN> list backup of archivelog all;

2.7.6 恢复数据库 

以每个线程最后一个归档日志Next SCN最大的值为恢复结束点恢复:

RMAN> recover database until scn 5614038512;

 

2.8 主备库添加sdandby redo log

2.8.1 SQL*PLUS中为备库添加sdandby redo log

 

创建适当数量的Standby Redo Log组数

  公式如下:

  如果主库是单实例数据库:Standby Redo Log组数=主库redo日志组总数+1

  如果主库是RAC数据库:Standby Redo Log组数=(所有节点中redo日志组数最大值 + 1) * RAC节点数

 

  从上面日志组查询结果可见,此主数据库是两节点的RAC数据库,每个节点包含四组日志。因此Standby Redo Log组数=(4+1)*2=10。

  需要创建四组Standby Redo Log日志。

 

确认数据库参数MAXLOGFILES和MAXLOGMEMBERS不会限制Standby Redo Log创建
  MAXLOGFILES和MAXLOGMEMBERS这两参数是在使用“CREATE DATABASE”语句创建数据库时做的限制,用于限制数据库日志文件的最大数量和日志组中成员的最大数量。
  如果在创建数据库时没有注意这个问题会导致Standby Redo Log无法创建的问题,解决方法只能是重新创建主库或者重新创建主库的控制文件。所以,一定要做好前期的规划。

 

备库:

alter database add standby logfile thread 1 group 21 '/oradata/orcldg/srl/srl21' size 50m;

alter database add standby logfile thread 1 group 22 '/oradata/orcldg/srl/srl22' size 50m;

alter database add standby logfile thread 1 group 23 '/oradata/orcldg/srl/srl23' size 50m;

alter database add standby logfile thread 1 group 24 '/oradata/orcldg/srl/srl24' size 50m;

2.8.2 备库确认添加的sdandby redo log

SQL> set linesize 150;

set pagesize 50;

column MB format a5;

column STATUS format a12;

column MEMBER format a50;

select sl.GROUP#,sl.THREAD#,sl.BYTES/1024/1024||'MB' MB,sl.STATUS, lf.TYPE,lf.MEMBER from v$standby_log sl,v$logfile lf where sl.GROUP#=lf.GROUP#;

GROUP#    THREAD# MB    STATUS  TYPE   MEMBER

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

21     1 50MB  ACTIVE      STANDBY  /oradata/orcldg/srl/srl21

22     1 50MB  UNASSIGNED  STANDBY  /oradata/orcldg/srl/srl22

23     1 50MB  UNASSIGNED  STANDBY  /oradata/orcldg/srl/srl23

24     1 50MB  UNASSIGNED  STANDBY  /oradata/orcldg/srl/srl24

2.8.3 主库添加standby redo log

alter database add standby logfile thread 1 group 21 '/oradata/orcl/sr121' size 50m;

alter database add standby logfile thread 1 group 22 '/oradata/orcl/sr122' size 50m;

alter database add standby logfile thread 1 group 23 '/oradata/orcl/sr123' size 50m;

alter database add standby logfile thread 1 group 24 '/oradata/orcl/sr124' size 50m;

2.8.4 主库确认添加的standby redo log 

SQL> set linesize 150;

set pagesize 50;

column MB format a5;

column STATUS format a12;

column MEMBER format a50;

select sl.GROUP#,sl.THREAD#,sl.BYTES/1024/1024||'MB' MB,sl.STATUS, lf.TYPE,lf.MEMBER from v$standby_log sl,v$logfile lf where sl.GROUP#=lf.GROUP#;

 

    GROUP#    THREAD# MB    STATUS  TYPE  MEMBER

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

21     1 50MB  UNASSIGNED  STANDBY /oradata/orcl/srl21

22     1 50MB  UNASSIGNED  STANDBY /oradata/orcl/sr122

23     1 50MB  UNASSIGNED  STANDBY /oradata/orcl/sr123

24     1 50MB  UNASSIGNED  STANDBY /oradata/orcl/sr124

2.9 物理备库启用恢复管理

打开数据库

SQL> alter database open;

Database altered.

 

:如果提示需要介质恢复,说明数据文件恢复不一致,可再次备份主库归档日志到备库继续进行恢复,同样需要指定SCN号进行恢复。

 

查询备库状态

SQL> set linesize 150;

column DBNAME format a6;

column DBUNAME format a10;

column cftype format a8; 

column OPEN_MODE format a20;

column DATABASE_ROLE format a18;

select name dbname,db_unique_name dbuname,controlfile_type cftype,database_role,open_mode from v$database;

 

 

DBNAME DBUNAME    CFTYPE   DATABASE_ROLE      OPEN_MODE

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

ORCL   ORCLDG     STANDBY  PHYSICAL STANDBY   READ ONLY

SQL>

 

 

:从该步骤起,需要根据不同的数据库版本进行不同的操作,11g数据库可做成ADG模式,即数据库以read_only状态打开并实时应用日志;

10g数据库为了不影响主库性能,只能做成归档模式,即数据库启动到mount状态并应用归档日志,主库归档日志可设置为20min切换一次,不要低于20分钟,否则会影响主库性能。

 

10g归档模式

开启日志应用进程:

SQL> startup mount force;

 

ORACLE instance started.

Total System Global Area 2.6223E+10 bytes

Fixed Size                  2131528 bytes

Variable Size            2684357048 bytes

Database Buffers         2.3522E+10 bytes

Redo Buffers               14643200 bytes

Database mounted.

 

SQL>  ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

 

Database altered.

SQL> 

 

#############################################################################################

 

11g ADG模式

SQL> startup force;

 

ORACLE instance started.

Total System Global Area 2.6223E+10 bytes

Fixed Size                  2131528 bytes

Variable Size            2684357048 bytes

Database Buffers         2.3522E+10 bytes

Redo Buffers               14643200 bytes

Database mounted

Database opened.

 

开启日志应用进程:

SQL>  ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

 

Database altered.

SQL> 

 

#############################################################################################

 

 

备库查询:

SQL> SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID=1;    

 

RECOVERY_MODE

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

MANAGED REAL TIME APPLYs

 

2.10 物理备库后续工作

2.10.1 修改备库文件管理参数为自动

:备库修改参数standby_file_management为AUTO后,将无法更改备库的任何数据文件属性,若需更改,需切换为manual。

 

SQL> alter system set standby_file_management=AUTO;

 

System altered.

2.10.2 查看备库是否生成redo log

$ ls -l /oradata/orcldg/

2.10.3 查看备库状态

SQL> set linesize 150;

column DBNAME format a6;

column DBUNAME format a10;

column cftype format a8; 

column OPEN_MODE format a20;

column DATABASE_ROLE format a18;

select name dbname,db_unique_name dbuname,controlfile_type cftype,open_mode,database_role from v$database;

 

DBNAME DBUNAME    CFTYPE   OPEN_MODE            DATABASE_ROLE

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

ORCL   ORCLDG     STANDBY  MOUNTED              PHYSICAL STANDBY

SQL>

2.10.4 查询备库恢复管理进程情况

SQL> SELECT PROCESS, STATUS FROM V$MANAGED_STANDBY;

 

PROCESS   STATUS

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

ARCH      CONNECTED

ARCH      CONNECTED

ARCH      CONNECTED

ARCH      CONNECTED

ARCH      CONNECTED

MRP0      WAIT_FOR_LOG

6 rows selected.

SQL>

 

 

2.10.5 备库查询重做数据传输和应用滞后

SQL> set linesize 150;

set pagesize 20;

column name format a13;

column value format a20;

column unit format a30;

column TIME_COMPUTED format a30;

select name,value,unit,time_computed from v$dataguard_stats where name in ('transport lag','apply lag');

 

NAME       VALUE    UNIT    TIME_COMPUTED

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

transport lag +00 00:00:00    day(2) to second(0) interval   03/28/2017 16:12:09

apply lag    +00 00:00:00    day(2) to second(0) interval   03/28/2017 16:12:09

发布了4 篇原创文章 · 获赞 0 · 访问量 9

猜你喜欢

转载自blog.csdn.net/wysdhr/article/details/104927362