ORACLE DG 11G 搭建

1、连续三天搭建了三套DG 每天一套下面记录搭建过程

ORACLE 11g DG 搭建

前言

1、装DG 可以跨平台跨位数(32/64)但是不能跨版本

2、11G DG 可以已read only 状态打开分担备份,查询报表等业务。

3、11G DG 可以通过RMAN DUPLICATE 方式创建(本次采用的创建方式)

4、数据库的db_name必须相同,db_unique_name必须不同

5、监听必须是静态监听
6、主机/etc/hosts 需配置好如
192.168.88.22 dg2.localdomain dg2
192.168.88.21 dg1.localdomain dg1

规划

主机名称

DG1

DG2

操作系统

Redhat 5

Redhat 5

ORACLE 数据版本

11G R2

11G R2

数据文件位置

/u01/oradata/dg1

/u01/oradata/dg2

实例名称

dg1(db_unique_name)

dg2(db_unique_name)

Tnsnames名称

DG1DG2TNSNAME里面内容一摸一样即可)

DG2,DG1(TNSNAME里面内容一摸一样即可)

搭建方式

RMAN DUPLICATE

实施过程

前提:主库已经创建好(现有业务系统)

一、主库:

1、  修改监听为静态注册如下(修改完后需要重新启动)

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.200)(PORT = 1521))--IP
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = dg1)----你的实例名
     (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)---你的ORACLE_HOME
      (SID_NAME = dg1)----实例名
    )
  )

2、  修改tnsnames.ora

 

DG1 =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dg1)

    )

  )

DG2 =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dg2)

    )

  )

3、  确认主库为归档模式(不是需自行修改参考)

SQL> archive log list;

Database log mode         Archive Mode

Automatic archival          Enabled

Archive destination         /data/arch

Oldest online log sequence     87

Next log sequence to archive   89

Current log sequence               89

http://www.blogjava.net/freeman1984/archive/2011/05/17/350375.html参考修改方式

4、  将主库设置为force logging

Sql>alter database force logging;

5、  添加standby redo log

alter database add standby logfile group 4 '/u01/oradata/dg1/standby_redo04.log' size 50M;

alter database add standby logfile group 5 '/u01/oradata/dg1/standby_redo05.log' size 50M;

alter database add standby logfile group 6 '/u01/oradata/dg1/standby_redo06.log' size 50M;

alter database add standby logfile group 7 '/u01/oradata/dg1/standby_redo07.log' size 50M;

路径自行修改为自己的存放路径

6、  设置DB 参数为生成备库的pfile 做准备

alter system set db_unique_name='dg1' scope=spfile;  --

alter system set log_archive_config='DG_CONFIG=(DG1,DG2)';  ----对应TNS里面的

alter system set log_archive_dest_1='LOCATION=/data/arch valid_for=(all_logfiles,all_roles) db_unique_name=dg1' scope=spfile; ---/data/arch 主库的归档路径一设置

alter system set log_archive_dest_2='SERVICE=dg2 lgwr async valid_for=(online_logfile,primary_role) db_unique_name=dg2'; --主库的归档路径通向主机二

alter system set fal_client='dg1';  --客户端

alter system set fal_server='dg2';  --服务端 备库是调换过来的

alter system set standby_file_management=auto;   

alter system set db_name=dg  scope=spfile     ; --设置db_name 主库和备库必须相同,这里修改完主库后等会创建的pfile 里面会体现出来 在备库参数的时候就不需要修改这个参数了· 主库修改完毕

7、重启数据库

sql>Shutdown immediate

sql>startup

8、创建备库所使用的参数文件

sql>create pfile=’/u01/init.ora’ 将这个文件拷贝到备库

以上操作都是主库操作!

二、备库

前提:备库已经安装好数据库软件(安装好软件,监听配置了,没有创建实例)

1、修改监听为静态注册(修改完后需要重新启动)(参数配置和主库差不多)

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.200)(PORT = 1521))--IP
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = dg2)----你的实例名
     (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)---你的ORACLE_HOME
      (SID_NAME = dg2)----实例名
    )
  )

2、修改tnsnames.ora

 

DG1 =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dg1)

    )

  )

DG2 =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dg2)

    )

  )

使用TNSPING 看是否配置成功

tnsping DG1
tnsping DG2

5、修改pfile参数(以下为修改完的完整的)

*.audit_file_dest='/u01/admin/dg2/adump'----(警告日志目录)备库上需要创建相应目录

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='/u01/oradata/dg2/control01.ctl','/u01/flash_recovery_area/dg2/control02.ctl'---(备库的控制文件存放位置)备库上需要相应创建目录

*.db_block_size=8192

*.db_domain=''

*.db_name='dg'----不用修改主库和备库需相同

*.db_recovery_file_dest='/u01/flash_recovery_area'--备库的恢复目录

*.db_recovery_file_dest_size=3565158400

*.db_unique_name='dg2'----备库唯一标识

*.diagnostic_dest='/u01'

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

*.fal_client='dg2'客户端

*.fal_server='dg1'服务端 对主库是反过来的

*.log_archive_config='DG_CONFIG=(DG1,DG2)'

*.log_archive_dest_1='LOCATION=/data/arch valid_for=(all_logfiles,all_roles) db_unique_name=dg2'----备库的归档路径一

*.log_archive_dest_2='SERVICE=dg1 lgwr async valid_for=(online_logfile,primary_role) db_unique_name=dg1'----备库的归档路径二指向主库

*.log_archive_dest_state_1='ENABLE'

*.log_archive_dest_state_2='ENABLE'

*.log_archive_format='%t_%s_%r.dbf'

*.log_file_name_convert='/u01/oradata/dg1','/u01/oradata/dg2'----数据文件存放位置不同需做转换这里是redo log 不是archive log

*.db_file_name_convert='/u01/oradata/dg1','/u01/oradata/dg2'----主机存放数据文件的位置和备库的不同做转换

*.open_cursors=300

*.pga_aggregate_target=310378496

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=931135488

*.standby_file_management='AUTO'

*.undo_tablespace='UNDOTBS1'

6、创建口令文件

orapwd file='/u01/oracle/dbs/orapwdg2’ password=oracle 需要和主库的sys密码相同

7. 使用修改好的pfile启动到nomount状态

Sqlplus / as sysdba

Sql>create spfile from pfile=’/u01/initdg2.ora’;

Sql>startup nomount

备库修改完毕!

三:RMAN DUPLICATE 复制库

在主库:

1、进入rman

$ rman target sys/oracle@DG1 auxiliary sys/oracle@DG2

恢复管理器: Release 11.2.0.3.0 - Production on 星期日 8月 4 00:53:40 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
已连接到目标数据库: ORCL (DBID=1350215700)
已连接到辅助数据库: ORCL (nomount)

2、开始复制库:
RMAN> duplicate target database for standby nofilenamecheck from active database;
等待完成

Rman>exit;

3. 查看备库状态
说明:duplicate数据库之后,备库只是处于mount状态,查看备库状态。
[oracle@slave orcl]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.3.0 Production on 星期日 8月 4 01:09:07 2013
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
SQL> conn / as sysdba;
已连接。

# 查看备库状态
SQL>  select open_mode,database_role,db_unique_name from v$database;
OPEN_MODE          DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
MOUNTED            PHYSICAL STANDBY DG
 
4. 将备库置与应用日志模式状态
SQL> alter database recover managed standby database using current logfile disconnect from session;  
Database altered.  
SQL> select open_mode,database_role,db_unique_name from v$database;
OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
MOUNTED              PHYSICAL STANDBY DG
 
5. 验证物理备库日志应用
1)主库上操作
SQL> conn / as sysdba;

Sql>create tablespace hzwsjdata01  datafile ‘/u01/oradata/dg1/test.dbf’ size100M;
SQL> create user hzwsj  identified by hzwsj  default tablespace hzwsjdata01;
用户已创建。
SQL> grant resource,connect to hzwsj  ;
授权成功。
SQL> conn hzwsj/ hzwsj
已连接。
SQL> create table test ( id number);
SQL> insert into test values ( 0 );
SQL> commit;

2)备库上验证
sqlplus hzwsj/hzwsj

Sql>select * from test;

四、备注:

select open_mode,database_role,db_unique_name from v$database;

alter database recover managed standby database using current logfile disconnect from session; 

select sequence#,first_time,next_time,applied from v$archived_log order by sequence#;
以下为参考资料
说明: IN-MEMORY是11G的新特性。
 
五、将备库置于Active DataGuard模式,体验实时查询

在Oracle 11g之前,物理备库(physical Standby)在应用redo的时候,数据库需要处于mount状态。从11g开始,应用redo的时
候,物理备库可以处于read-only模式,这就称为Active Data Guard 。通过Active Data Guard,可以在物理备库进行查询或者
导出数据,从而减少对主库的访问和压力。

1. 备库上操作
1) 查看备库当前状态 mount
SQL> select open_mode,database_role,db_unique_name from v$database;
OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
MOUNTED              PHYSICAL STANDBY DG

2) 取消备库的自动恢复

SQL> alter database recover managed standby database cancel;
数据库已更改。

3) OPEN备库为只读模式(Dataguard只能启动到readonly模式)

SQL> alter database open;
数据库已更改。

SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ ONLY

4)打开实时应用状态模式

SQL> alter database recover managed standby database using current logfile disconnect;
数据库已更改。

SQL> select open_mode,database_role,db_unique_name from v$database;
OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
READ ONLY WITH APPLY PHYSICAL STANDBY DG
 
2. 主库上操作执行DDL,DML操作
# su - oracle
$ sqlplus /nolog
SQL> conn / as sysdba;
SQL> create tablespace abc datafile '/u01/app/oracle/oradata/orcl/abc.dbf' size 10m autoextend on next 10m;
表空间已创建。
SQL> conn abc/abc
已连接。
SQL> insert into abc values (1 , 'bbb');
已创建 1 行。
SQL> commit;
提交完成。
SQL>

3. 备库上查看
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
USERS
TEMP
ABC
已选择6行。

SQL> conn abc/abc;
已连接。
SQL> select * from abc;
        ID NAME
---------- ----------
        0 aaa
        1 bbb

主备的修改很快在备库上应用。

五 维护:

Oracle 11G DataGuard重启详细过程

 场景,重启数据库,不重启linux系统,所以不用考虑监听程序,

 1 数据库关闭

 1.1 关闭主库

 SHUTDOWN IMMEDIATE;

 1.2 关闭备库

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

SHUTDOWN IMMEDIATE;

2  数据库启动,

 开启的时候先开备库启动备库监听,再开主库

 2.1 启动备库

 #STARTUP MOUNT;

 # ALTER DATABASE OPEN;

 # 这里不用设置归档,归档设置一次是永久生效的,直接startup启动就行

2.2 启动主库

 STARTUP ;

 SQL> STARTUP ;

2.3 启动备库应用

alter database recover managed standby database using current logfile disconnect;


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

转载于:http://blog.itpub.net/26764973/viewspace-1472490/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值