【DG】搭建(一)

DG:

DGdataguard,也叫standby,是oracle提供的一种容灾解决方案,只有企业版可用,标准版是不能用的,DG最多可以有一个主节点,9个从节点。可分为逻辑和物理两类,这里注意区分一下,逻辑的是通过redo转换成SQL语句,然后再standby上执行该SQL语句实现的同步,物理standby是接受主节点的redo数据后,以介质恢复的方式进行同步,这是这两者的本质区别。

 

DG的三种模式:

最大保护:主节点事务提交前,redo写入在线日志,而且从节点也要写入到standby redolog中,并且保证在从库中至少一个节点可用,在主节点才提交事务,注意,最大保护模式,从节点故障,主库会被shutdown

 

最高性能:这种模式,主节点随时提交事务,事务提交时,redo至少写入一个从节点,但是写入不一定同步。

 

最高可用性:这种模式和最大保护有点类似,不同的是,从库故障,主库不会shutdown,而是转为最高性能模式,从库恢复后,转回最高可用性模式。

 

物理standby只能read only打开,此时只接受redo,不应用redo。应用redo,就不能打开。11G,可以以open read only模式打开,继续应用redo.所以大部分时间,物理standby都是在mount状态。

逻辑standby正常情况下就是read write模式,而且由于是应用sql语句实现同步,所以物理结构可以不一致。

 

硬件以及操作系统需求:

主库和从库运行的操作系统平台必须相同,版本可以有差异,数据库安装路径可以不同。主从服务器的配置差异最好不要太大,要不切换角色的时候,配置差的切换后,性能会有影响。

主库必须是归档模式,并且force logging模式,从库可以是非force logging。一个主节点,可以有逻辑从节点,可以有物理从节点,但是时区和时间设置必须一致,否则同步会出现问题。

 

RFSremote file server):运行在备库上的进程,用于在备库上进行主库的日志恢复。默认,这个进程用于接收从主库传送过来的归档日志。
当物理备库启用了 Redo Apply时,备库可以通过实时应用这个特性,直接使用这个进程从 standby redo log 中直接应用 redo 日志。

 

LNSnLGWR触发以后真正负责传输的进程,包括初始化网络I/O等一些列功能。

MRPmanaged recovery process,简单来说就是物理standby通过这个进程来实现数据的同步的,直接通过standby redo log或者是归档日志(取决于模式不同)来进行的一个数据恢复。

LSP:logical standby process:逻辑standby的方式,和上面的一样,只不过当中多了一步redo信息转换成sql语句再恢复。也可以从这里看出逻辑standby和物理standby的不同。

 

1、准备条件:

归档模式;

监听参数:local_listener 默认是1521

关闭闪回---->数据库的bug,备库不能开闪回

如果有外部表,外部表也要删除

2、主要修改参数文件---->增加dg属性参数

一般是在主库修改完,需要根据参数文件创建不存在的目录,验证;

开启force logging,增加standby logfile

再把参数文件和口令文件传输到备库,更改环境变量,再次修改备库的参数文件及根据参数文件创建不存在的目录,最后验证;

3、配置监听网络:

需要配置主库和备库的静态监听,并且能够互相访问

备库启到Nomount时,查看监听状态,会有blocked状态。

4、复制主库生成备库:

11g-->rman 执行duplicate复制命令就可以完成复制主库生成备库操作

10g-->冷备恢复、rman备份集恢复

 

实验之搭建DG如下:

1.   准备工作

 

Linux虚拟机:两台

主备

虚拟机名称

主机名

IP地址

db_name

db_unique_name

备注

主库

wxb

wang

192.168.10.2

ORA11GR2

ORA11GR2

 

备库

www

bing

192.168.10.3

ORA11GR2

OCMU

Oracle数据库只安装了软件

 

DB_NAME,DG所以节点中必须要一样,而DB_UNIQUE_NAME参数值则是区分每个节点实例的唯一标识!!

 

——查看是否开启闪回数据库功能,必须设为NO,如果开启,备库以后不能应用闪回数据库功能(大bug),默认是NO的状态。

SYS@ORA11GR2>select flashback_on from v$database;

 

FLASHBACK_ON

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

NO

 

——检查参数local_listener,其值为找1521的名为LISTENER的监听,如果端口号及监听名不是LISTENER,需要修改此参数,默认值为空;

SYS@ORA11GR2>show parameter local_listener

 

NAME                                 TYPE       VALUE

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

local_listener                       string

SYS@ORA11GR2>

 

:如果主库有外部表,必须将外部表删除;

 

2.   主库数据库归档强制生成日志

[oracle@wang ~]$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.4.0 Production on Wed Oct 19 20:13:16 2016

 

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

 

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

——检查主库是否处于归档,必须设置为归档

SYS@ORA11GR2>archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     12

Next log sequence to archive   14

Current log sequence           14

——开启主库的force logging 模式:(默认是关闭的)

SYS@ORA11GR2>select force_logging from v$database;

 

FOR

---

NO

 

SYS@ORA11GR2>alter database force logging;

 

Database altered.

 

SYS@ORA11GR2>select force_logging from v$database;

 

FOR

---

YES

默认情况下数据库操作会记录redo log,但是在一些特定的情况下可以使用nologging来不生成redo信息

  (1)表的批量INSERT(通过/*+APPEND */提示使用“直接路径插入“。或采用SQL*Loader直接路径加载),表数据不生成redo,但是所有索引修改会生成redo(尽管表不生成日志,但这个表上的索引却会生成redo!)。

  (2)LOB操作(对大对象的更新不必生成日志)。

  (3)通过CREATE TABLE AS SELECT创建表

  (4)各种altere table操作,如movesplit

  (5)在一些表迁移和表空间迁移中,可以使用alter table a nologging;或者alter tablespace snk nologging;在操作完成后再修改回logging状态

 

3.   主库创建standby logfile

主库增加standby database 日志组此步操作是为主切备而进行的,且要求备库日志组要比主库日志多一组,并且大小要一样)

 

——先查看主库日志组数,及日志路径及日志组大小:

SYS@ORA11GR2>select group#,member from v$logfile order by 1;

 

    GROUP# MEMBER

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

         1 /u01/app/oracle/oradata/ORA11GR2/redo01.log

         2 /u01/app/oracle/oradata/ORA11GR2/redo02.log

         3 /u01/app/oracle/oradata/ORA11GR2/redo03.log

SYS@ORA11GR2>

SYS@ORA11GR2>select group#,bytes/1024/1024 m from v$log;

 

    GROUP#          M

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

         1         50

         2         50

         3         50

 

——在主库上建立standby redo 日志组:

SYS@ORA11GR2>alter database add standby logfile group 4('/u01/app/oracle/oradata/ORA11GR2/standbyredo04_a.log','/u01/app/oracle/oradata/ORA11GR2/standbyredo04_b.log') size 50m;

 

Database altered.

 

SYS@ORA11GR2>alter database add standby logfile group 5('/u01/app/oracle/oradata/ORA11GR2/standbyredo05_a.log','/u01/app/oracle/oradata/ORA11GR2/standbyredo05_b.log') size 50m;

 

Database altered.

 

SYS@ORA11GR2>alter database add standby logfile group 6('/u01/app/oracle/oradata/ORA11GR2/standbyredo06_a.log','/u01/app/oracle/oradata/ORA11GR2/standbyredo06_b.log') size 50m;

 

Database altered.

 

SYS@ORA11GR2>alter database add standby logfile group 7('/u01/app/oracle/oradata/ORA11GR2/standbyredo07_a.log','/u01/app/oracle/oradata/ORA11GR2/standbyredo07_b.log') size 50m;

 

Database altered.

 

——验证建立的日志组:

SYS@ORA11GR2>select group#,thread#,sequence#,bytes/1024/1024 m,status from v$standby_log;

 

    GROUP#    THREAD#  SEQUENCE#  M          STATUS

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

         4          0          0  50         UNASSIGNED

         5          0          0  50         UNASSIGNED

         6          0          0  50         UNASSIGNED

         7          0          0  50         UNASSIGNED

SYS@ORA11GR2>col type for a10

SYS@ORA11GR2>col MEMBER for a55

SYS@ORA11GR2>select group#,type,member from v$logfile order by 1;

 

    GROUP# TYPE       MEMBER

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

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

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

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

         4 STANDBY    /u01/app/oracle/oradata/ORA11GR2/standbyredo04_a.log

         4 STANDBY    /u01/app/oracle/oradata/ORA11GR2/standbyredo04_b.log

         5 STANDBY    /u01/app/oracle/oradata/ORA11GR2/standbyredo05_a.log

         5 STANDBY    /u01/app/oracle/oradata/ORA11GR2/standbyredo05_b.log

         6 STANDBY    /u01/app/oracle/oradata/ORA11GR2/standbyredo06_a.log

         6 STANDBY    /u01/app/oracle/oradata/ORA11GR2/standbyredo06_b.log

         7 STANDBY    /u01/app/oracle/oradata/ORA11GR2/standbyredo07_a.log

         7 STANDBY    /u01/app/oracle/oradata/ORA11GR2/standbyredo07_b.log

 

11 rows selected.

注:一定要确认备库日志组比主库日志组多一组:

 

4.    主库配置静态监听及作为客户端的tnsnames

——配置主库的静态监听:

[oracle@wang ~]$ cd /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/

[oracle@wang admin]$ ls

listener.ora  samples  shrept.lst  tnsnames.ora

[oracle@wang admin]$ vi listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

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

  )

 

sid_list_listener=

  (sid_list=

    (sid_desc=

      (global_dbname=ORA11GR2)

      (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)

      (sid_name=ORA11GR2))

   )

~

"listener.ora" 19L, 453C written

 

——配置好静态监听重启一下监听加载静态监听

[oracle@wang admin]$ lsnrctl stop

 

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 19-OCT-2016 20:38:22

 

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

 

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

The command completed successfully

[oracle@wang admin]$

[oracle@wang admin]$ lsnrctl start(此时静态已经起来了)

 

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 19-OCT-2016 20:38:35

 

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

 

Starting /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...

 

TNSLSNR for Linux: Version 11.2.0.4.0 - Production

System parameter file is /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Log messages written to /u01/app/oracle/diag/tnslsnr/wang/listener/alert/log.xml

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

 

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

STATUS of the LISTENER

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

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production

Start Date                19-OCT-2016 20:38:35

Uptime                    0 days 0 hr. 0 min. 0 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Listener Log File         /u01/app/oracle/diag/tnslsnr/wang/listener/alert/log.xml

Listening Endpoints Summary...

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

Services Summary...

Service "ORA11GR2" has 1 instance(s).

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

The command completed successfully

[oracle@wang admin]$

 

——动态监听注册慢一点(1分钟左右),也可以手动注册动态监听(alter system register;

再次查看监听状态:(动态监听也起来了)

[oracle@wang admin]$ lsnrctl status

 

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 19-OCT-2016 20:40:16

 

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

 

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

STATUS of the LISTENER

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

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production

Start Date                19-OCT-2016 20:38:35

Uptime                    0 days 0 hr. 1 min. 40 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Listener Log File         /u01/app/oracle/diag/tnslsnr/wang/listener/alert/log.xml

Listening Endpoints Summary...

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

Services Summary...

Service "ORA11GR2" has 2 instance(s).

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

  Instance "ORA11GR2", status READY, has 1 handler(s) for this service...

Service "ORA11GR2XDB" has 1 instance(s).

  Instance "ORA11GR2", status READY, has 1 handler(s) for this service...

The command completed successfully

[oracle@wang admin]$

 

——配置主库作为客户端对备库访问的连接字符串

[oracle@wang admin]$ vi tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

 

ORA11GR2 =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = ORA11GR2)

    )

  )

 

ocm=

   (description=

      (address=(protocol=tcp)(host=192.168.10.3)(port=1521))

     (connect_data=

       (server=dedicated)

       (service_name=OCMU)

      )

    )

~

~

"tnsnames.ora" 20L, 501C written            

[oracle@wang admin]$

[oracle@wang admin]$ tnsping ocm (测试一下是否畅通)

TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 19-OCT-2016 20:45:53

 

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

 

Used parameter files:

 

Used TNSNAMES adapter to resolve the alias

Attempting to contact (description= (address=(protocol=tcp)(host=192.168.10.3)(port=1521)) (connect_data= (server=dedicated) (service_name=OCMU)))

OK (0 msec)

[oracle@wang admin]$

 

5.    备库配置静态监听及作为客户端的tnsnames

——设置环境变量:

[oracle@bing ~]$ export ORACLE_SID=OCMU

[oracle@bing ~]$ echo $ORACLE_SID

OCMU

[oracle@bing ~]$ cd /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/

[oracle@bing admin]$ ls

listener.ora  samples  shrept.lst  tnsnames.ora

 

——设置备库的静态监听:

[oracle@bing admin]$ vi listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

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

    )

  )

 

ADR_BASE_LISTENER = /u01/app/oracle

 

sid_list_listener=

  (sid_list=

    (sid_desc=

      (global_dbname=OCMU)

      (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)

      (sid_name=OCMU))

   )

~

"listener.ora" 19L, 477C written            

[oracle@bing admin]$ lsnrctl stop(同理)

 

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 19-OCT-2016 20:51:11

 

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

 

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

The command completed successfully

[oracle@bing admin]$ lsnrctl start (同理,静态监听已经起来了,动态监听虽然也配了,但是实例还没有启动)

 

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 19-OCT-2016 20:51:21

 

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

Starting /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...

 

TNSLSNR for Linux: Version 11.2.0.4.0 - Production

System parameter file is /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Log messages written to /u01/app/oracle/diag/tnslsnr/bing/listener/alert/log.xml

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

 

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

STATUS of the LISTENER

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

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production

Start Date                19-OCT-2016 20:51:21

Uptime                    0 days 0 hr. 0 min. 0 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Listener Log File         /u01/app/oracle/diag/tnslsnr/bing/listener/alert/log.xml

Listening Endpoints Summary...

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

Services Summary...

Service "OCMU" has 1 instance(s).

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

The command completed successfully

[oracle@bing admin]$

 

——配置备库对于主库访问的tnsnames.ora,即连接字符串:

[oracle@bing admin]$ vi tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

 

12 =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = PROD)

    )

  )

 

ora=

   (description=

      (address=(protocol=tcp)(host=192.168.10.2)(port=1521))

     (connect_data=

       (server=dedicated)

       (service_name=ORA11GR2)

      )

    )

~

"tnsnames.ora" 20L, 505C written

[oracle@bing admin]$

[oracle@bing admin]$ tnsping ora(测试一下是否畅通)

 

TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 19-OCT-2016 20:58:01

 

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

 

Used parameter files:

 

 

Used TNSNAMES adapter to resolve the alias

Attempting to contact (description= (address=(protocol=tcp)(host=192.168.10.2)(port=1521)) (connect_data= (server=dedicated) (service_name=ORA11GR2)))

OK (10 msec)

[oracle@bing admin]$

 

6.   主库修改参数增加DG相关的属性参数:

6.1. 生成pfile

SYS@ORA11GR2>create pfile from spfile;

 

File created.

 

SYS@ORA11GR2>exit 

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

[oracle@wang ~]$

6.2. 修改参数

[oracle@wang ~]$ cd $ORACLE_HOME/dbs

[oracle@wang dbs]$ vi initORA11GR2.ora

ORA11GR2.__db_cache_size=373293056

ORA11GR2.__java_pool_size=4194304

ORA11GR2.__large_pool_size=8388608

ORA11GR2.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment

ORA11GR2.__pga_aggregate_target=289406976

ORA11GR2.__sga_target=545259520

ORA11GR2.__shared_io_pool_size=0

ORA11GR2.__shared_pool_size=146800640

ORA11GR2.__streams_pool_size=4194304

*.audit_file_dest='/u01/app/oracle/admin/ORA11GR2/adump'

*.audit_trail='db'

*.compatible='11.2.0.4.0'

*.control_files='/u01/app/oracle/oradata/ORA11GR2/control01.ctl','/u01/app/oracle/oradata/ORA11GR2/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='ORA11GR2'

 

LOG_ARCHIVE_CONFIG='DG_CONFIG=(ORA11GR2,OCMU)'

*.db_recovery_file_dest_size=3221225472

*.db_recovery_file_dest='/u01/app/FRA'

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

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

*.memory_target=833617920

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

 

DB_UNIQUE_NAME=ORA11GR2

LOG_ARCHIVE_CONFIG='DG_CONFIG=(ORA11GR2,OCMU)'

LOG_ARCHIVE_DEST_1=

 'LOCATION=/u01/arch1/ORA11GR2/

  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

  DB_UNIQUE_NAME=ORA11GR2'

LOG_ARCHIVE_DEST_2=

 'SERVICE=ocm ASYNC

  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

  DB_UNIQUE_NAME=OCMU'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

LOG_ARCHIVE_MAX_PROCESSES=30

 

FAL_SERVER=OCMU

DB_FILE_NAME_CONVERT='OCMU','ORA11GR2'

LOG_FILE_NAME_CONVERT=

 '/u01/app/oracle/oradata/OCMU/','/u01/app/oracle/oradata/ORA11GR2/' 

STANDBY_FILE_MANAGEMENT=AUTO

~

~

"initORA11GR2.ora" 47L, 1565C written

[oracle@wang dbs]$

 

——根据上述参数文件创建没有的目录:

[oracle@wang dbs]$ mkdir -p /u01/arch1/ORA11GR2/

[oracle@wang dbs]$

6.3. 验证修改过的pfile,通过pfile重新生成spfile并启动数据库

[oracle@wang admin]$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.4.0 Production on Wed Oct 19 21:31:10 2016

 

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

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SYS@ORA11GR2>shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SYS@ORA11GR2>create spfile from pfile;

 

File created.

 

SYS@ORA11GR2>startup

ORACLE instance started.

 

Total System Global Area  830930944 bytes

Fixed Size                  2257800 bytes

Variable Size             503319672 bytes

Database Buffers          322961408 bytes

Redo Buffers                2392064 bytes

Database mounted.

Database opened.

SYS@ORA11GR2>show parameter spfile;

 

NAME                                 TYPE        VALUE

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

spfile                               string      /u01/app/oracle/product/11.2.0

                                             /dbhome_1/dbs/spfileORA11GR2.ora

        

7.    拷贝相关文件至备库(即参数文件、密码文件)

[oracle@wang dbs]$ pwd

/u01/app/oracle/product/11.2.0/dbhome_1/dbs

[oracle@wang dbs]$ ls

hc_ORA11GR2.dat  initORA11GR2.ora  orapwORA11GR2

init.ora         lkORA11GR2        spfileORA11GR2.ora

[oracle@wang dbs]$ scp initORA11GR2.ora 192.168.10.3:$ORACLE_HOME/dbs/initOCMU.ora

The authenticity of host '192.168.10.3 (192.168.10.3)' can't be established.

RSA key fingerprint is 46:2d:74:b7:54:f9:5f:4b:13:7d:e0:0f:5a:a4:92:2f.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.10.3' (RSA) to the list of known hosts.

oracle@192.168.10.3's password:

initORA11GR2.ora             100% 1762     1.7KB/s   00:00   

[oracle@wang dbs]$

[oracle@wang dbs]$ scp orapwORA11GR2 192.168.10.3:$ORACLE_HOME/dbs/orapwOCMU

oracle@192.168.10.3's password:

orapwORA11GR2                100% 1536     1.5KB/s   00:00   

[oracle@wang dbs]$

 

——到备库去验证:

[oracle@bing admin]$ cd $ORACLE_HOME/dbs/

[oracle@bing dbs]$ ls orapwOCMU initOCMU.ora

initOCMU.ora  orapwOCMU

 

8.   备库参数修改增加DG相关的属性参数

8.1. 修改备库pfile

[oracle@bing dbs]$ vi initOCMU.ora

OCMU.__db_cache_size=373293056

OCMU.__java_pool_size=4194304

OCMU.__large_pool_size=8388608

OCMU.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment

OCMU.__pga_aggregate_target=289406976

OCMU.__sga_target=545259520

OCMU.__shared_io_pool_size=0

OCMU.__shared_pool_size=146800640

OCMU.__streams_pool_size=4194304

*.audit_file_dest='/u01/app/oracle/admin/OCMU/adump'

*.audit_trail='db'

*.compatible='11.2.0.4.0'

*.control_files='/u01/app/oracle/oradata/OCMU/control01.ctl','/u01/app/oracle/oradata/OCMU/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='ORA11GR2'

*.db_recovery_file_dest_size=3221225472

*.db_recovery_file_dest='/u01/app/FRA'

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

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

*.memory_target=833617920

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

 

DB_UNIQUE_NAME=OCMU

LOG_ARCHIVE_CONFIG='DG_CONFIG=(OCMU,ORA11GR2)'

LOG_ARCHIVE_DEST_1=

 'LOCATION=/u01/arch1/OCMU/

  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

  DB_UNIQUE_NAME=OCMU'

LOG_ARCHIVE_DEST_2=

 'SERVICE=ora ASYNC

  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

  DB_UNIQUE_NAME=ORA11GR2'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

LOG_ARCHIVE_MAX_PROCESSES=30

 

FAL_SERVER=ORA11GR2

DB_FILE_NAME_CONVERT='ORA11GR2','OCMU'

LOG_FILE_NAME_CONVERT=

 '/u01/app/oracle/oradata/ORA11GR2/','/u01/app/oracle/oradata/OCMU/'

STANDBY_FILE_MANAGEMENT=AUTO

[oracle@bing dbs]$

 

——根据上述参数文件创建不存在的目录:

[oracle@bing dbs]$ mkdir -p /u01/app/oracle/admin/OCMU/adump

[oracle@bing dbs]$ mkdir -p /u01/app/oracle/oradata/OCMU/

[oracle@bing dbs]$ mkdir -p /u01/app/FRA

[oracle@bing dbs]$ mkdir -p /u01/arch1/OCMU/

8.2. 验证,备库通过pfile生成spfile并启动数据库至nomount

[oracle@bing dbs]$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.4.0 Production on Wed Oct 19 21:51:37 2016

 

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

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL> create spfile from pfile;

 

File created.

SQL> startup nomount;

ORACLE instance started.

 

Total System Global Area  830930944 bytes

Fixed Size                  2257800 bytes

Variable Size             536874104 bytes

Database Buffers          289406976 bytes

Redo Buffers                2392064 bytes

SQL> show parameter spfile;

 

NAME                                 TYPE        VALUE

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

spfile                               string      /u01/app/oracle/product/11.2.0

                                               /dbhome_1/dbs/spfileOCMU.ora

 

——此时查验备库监听状态,动态监听为block状态:

(因为确实库没有开,监听是由实例告诉其数据库的状况)

[oracle@bing admin]$ lsnrctl status

 

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 19-OCT-2016 21:54:06

 

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

 

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

STATUS of the LISTENER

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

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production

Start Date                19-OCT-2016 20:55:57

Uptime                    0 days 0 hr. 58 min. 8 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Listener Log File         /u01/app/oracle/diag/tnslsnr/bing/listener/alert/log.xml

Listening Endpoints Summary...

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

Services Summary...

Service "OCMU" has 2 instance(s).

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

  Instance "OCMU", status BLOCKED, has 1 handler(s) for this service...

The command completed successfully

 

9.   使用RMAN auxiliary恢复数据库(在主库上操作)

主库为open状态,备库为nomount

监听为启动状态

[oracle@wang dbs]$ rman target / auxiliary sys/oracle@ocm

 

Recovery Manager: Release 11.2.0.4.0 - Production on Thu Oct 20 22:17:26 2016

 

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

 

connected to target database: ORA11GR2 (DBID=237843809)

connected to auxiliary database: ORA11GR2 (not mounted)

 

RMAN>

 

RMAN> duplicate target database for standby from active database;

 

Starting Duplicate Db at 20-OCT-16

using target database control file instead of recovery catalog

allocated channel: ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: SID=20 device type=DISK

 

contents of Memory Script:

{

   backup as copy reuse

   targetfile  '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwORA11GR2' auxiliary format

 '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwOCMU'   ;

}

executing Memory Script

 

Starting backup at 20-OCT-16

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=83 device type=DISK

Finished backup at 20-OCT-16

 

contents of Memory Script:

{

   backup as copy current controlfile for standby auxiliary format  '/u01/app/oracle/oradata/OCMU/control01.ctl';

   restore clone controlfile to  '/u01/app/oracle/oradata/OCMU/control02.ctl' from

 '/u01/app/oracle/oradata/OCMU/control01.ctl';

}

executing Memory Script

 

Starting backup at 20-OCT-16

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile copy

copying standby control file

output file name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_ORA11GR2.f tag=TAG20161020T221739 RECID=2 STAMP=925769860

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01

Finished backup at 20-OCT-16

 

Starting restore at 20-OCT-16

using channel ORA_AUX_DISK_1

 

channel ORA_AUX_DISK_1: copied control file copy

Finished restore at 20-OCT-16

 

contents of Memory Script:

{

   sql clone 'alter database mount standby database';

}

executing Memory Script

 

sql statement: alter database mount standby database

 

contents of Memory Script:

{

   set newname for tempfile  1 to

 "/u01/app/oracle/oradata/OCMU/temp01.dbf";

   switch clone tempfile all;

   set newname for datafile  1 to

 "/u01/app/oracle/oradata/OCMU/system01.dbf";

   set newname for datafile  2 to

 "/u01/app/oracle/oradata/OCMU/sysaux01.dbf";

   set newname for datafile  3 to

 "/u01/app/oracle/oradata/OCMU/undotbs01.dbf";

   set newname for datafile  4 to

 "/u01/app/oracle/oradata/OCMU/users01.dbf";

   set newname for datafile  5 to

 "/u01/app/oracle/oradata/OCMU/example01.dbf";

   backup as copy reuse

   datafile  1 auxiliary format

 "/u01/app/oracle/oradata/OCMU/system01.dbf"   datafile

 2 auxiliary format

 "/u01/app/oracle/oradata/OCMU/sysaux01.dbf"   datafile

 3 auxiliary format

 "/u01/app/oracle/oradata/OCMU/undotbs01.dbf"   datafile

 4 auxiliary format

 "/u01/app/oracle/oradata/OCMU/users01.dbf"   datafile

 5 auxiliary format

 "/u01/app/oracle/oradata/OCMU/example01.dbf"   ;

   sql 'alter system archive log current';

}

executing Memory Script

 

executing command: SET NEWNAME

 

renamed tempfile 1 to /u01/app/oracle/oradata/OCMU/temp01.dbf in control file

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

Starting backup at 20-OCT-16

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile copy

input datafile file number=00001 name=/u01/app/oracle/oradata/ORA11GR2/system01.dbf

output file name=/u01/app/oracle/oradata/OCMU/system01.dbf tag=TAG20161020T221747

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15

channel ORA_DISK_1: starting datafile copy

input datafile file number=00002 name=/u01/app/oracle/oradata/ORA11GR2/sysaux01.dbf

output file name=/u01/app/oracle/oradata/OCMU/sysaux01.dbf tag=TAG20161020T221747

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15

channel ORA_DISK_1: starting datafile copy

input datafile file number=00005 name=/u01/app/oracle/oradata/ORA11GR2/example01.dbf

output file name=/u01/app/oracle/oradata/OCMU/example01.dbf tag=TAG20161020T221747

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07

channel ORA_DISK_1: starting datafile copy

input datafile file number=00003 name=/u01/app/oracle/oradata/ORA11GR2/undotbs01.dbf

output file name=/u01/app/oracle/oradata/OCMU/undotbs01.dbf tag=TAG20161020T221747

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03

channel ORA_DISK_1: starting datafile copy

input datafile file number=00004 name=/u01/app/oracle/oradata/ORA11GR2/users01.dbf

output file name=/u01/app/oracle/oradata/OCMU/users01.dbf tag=TAG20161020T221747

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01

Finished backup at 20-OCT-16

 

sql statement: alter system archive log current

 

contents of Memory Script:

{

   switch clone datafile all;

}

executing Memory Script

 

datafile 1 switched to datafile copy

input datafile copy RECID=2 STAMP=925769910 file name=/u01/app/oracle/oradata/OCMU/system01.dbf

datafile 2 switched to datafile copy

input datafile copy RECID=3 STAMP=925769910 file name=/u01/app/oracle/oradata/OCMU/sysaux01.dbf

datafile 3 switched to datafile copy

input datafile copy RECID=4 STAMP=925769910 file name=/u01/app/oracle/oradata/OCMU/undotbs01.dbf

datafile 4 switched to datafile copy

input datafile copy RECID=5 STAMP=925769910 file name=/u01/app/oracle/oradata/OCMU/users01.dbf

datafile 5 switched to datafile copy

input datafile copy RECID=6 STAMP=925769910 file name=/u01/app/oracle/oradata/OCMU/example01.dbf

Finished Duplicate Db at 20-OCT-16

 

成功,此步骤完成,标志DG搭建完成,剩下的就是备库应用日志,和主库保持一致了!!!!

 

10.         备库同步数据

——检查备库状态:(由nomount自动转到mount

SQL> select status from v$instance;

 

STATUS

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

MOUNTED

 

SQL> alter database open;

 

Database altered.

 

——查看备库状态:

SQL> select name,open_mode,protection_mode,database_role,switchover_status from v$database;

 

NAME      OPEN_MODE            PROTECTION_MODE      DATABASE_ROLE    SWITCHOVER_STATUS

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

ORA11GR2  READ ONLY            MAXIMUM PERFORMANCE  PHYSICAL STANDBY   NOT ALLOWED

 

SQL> select sequence#,applied from v$archived_log;

 

 SEQUENCE# APPLIED

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

        18 NO

        19 NO  (备库未应用日志)

 

——应用日志:

SQL> recover managed standby database using current logfile disconnect from session;

Media recovery complete.

SQL>

SQL> set lines 100

SQL> select name,open_mode,protection_mode,database_role,switchover_status from v$database;

 

NAME      OPEN_MODE            PROTECTION_MODE      DATABASE_ROLE    SWITCHOVER_STATUS

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

ORA11GR2  READ ONLY WITH APPLY MAXIMUM PERFORMANCE  PHYSICAL STANDBY NOT ALLOWED

 

SQL> select sequence#,applied from v$archived_log;

 

 SEQUENCE# APPLIED

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

        18 YES

        19 IN-MEMORY

 

SQL> recover managed standby database cancel;(结束应用日志)

Media recovery complete.

SQL> select name,open_mode,protection_mode,database_role,switchover_status from v$database;

NAME      OPEN_MODE            PROTECTION_MODE      DATABASE_ROLE    SWITCHOVER_STATUS

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

ORA11GR2  READ ONLY            MAXIMUM PERFORMANCE  PHYSICAL STANDBY NOT ALLOWED

 

SQL> select sequence#,applied from v$archived_log;

 

 SEQUENCE# APPLIED

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

        18 YES

        19 YES

 

——查看主库状态:

SYS@ORA11GR2>select name,open_mode,protection_mode,database_role,switchover_status from v$database;

 

NAME      OPEN_MODE            PROTECTION_MODE      DATABASE_ROLE    SWITCHOVER_STATUS

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

ORA11GR2  READ WRITE           MAXIMUM PERFORMANCE  PRIMARY          SESSIONS ACTIVE

 

SYS@ORA11GR2>select max(sequence#) from v$archived_log;

 

MAX(SEQUENCE#)

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

            19

SYS@ORA11GR2>alter system switch logfile;切换日志,则归档日志)

 

System altered.

 

SYS@ORA11GR2>select max(sequence#) from v$archived_log;

 

MAX(SEQUENCE#)

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

            20

 

——主库有新的归档产生,查看备库日志:

SQL> select sequence#,applied from v$archived_log;

新传输过来的20号日志还没有应用)

 SEQUENCE# APPLIED

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

        18 YES

        19 YES

        20 NO

 

——应用日志:

SQL> recover managed standby database using current logfile disconnect from session;

Media recovery complete.

 

——再次查看状态:

SQL> select name,open_mode,protection_mode,database_role,switchover_status from v$database;

 

NAME      OPEN_MODE            PROTECTION_MODE      DATABASE_ROLE    SWITCHOVER_STATUS

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

ORA11GR2  READ ONLY WITH APPLY MAXIMUM PERFORMANCE  PHYSICAL STANDBY NOT ALLOWED

 

SQL> select sequence#,applied from v$archived_log;

 

 SEQUENCE# APPLIED

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

        18 YES

        19 YES

        20 IN-MEMORY(正在应用)

 

——结束应用日志:

SQL> recover managed standby database cancel;

Media recovery complete.

SQL>

SQL> select name,open_mode,protection_mode,database_role,switchover_status from v$database;

 

NAME      OPEN_MODE            PROTECTION_MODE      DATABASE_ROLE    SWITCHOVER_STATUS

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

ORA11GR2  READ ONLY            MAXIMUM PERFORMANCE  PHYSICAL STANDBY NOT ALLOWED

 

SQL>  select sequence#,applied from v$archived_log;

 

 SEQUENCE# APPLIED

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

        18 YES

        19 YES

        20 YES  (日志应用结束)
主备一致!!!!!!!!!!!!!!

 

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

转载于:http://blog.itpub.net/31397003/viewspace-2126909/

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值