11g-rac 到单实例(ASM)DG搭建步骤

1.1主库允许强制记日志

ALTER DATABASE FORCE LOGGING;

1.2创建口令文件

如果没有存在的口令文件则创建一个。在 Data Guard 配置中的每个数据库必须使

用口令文件,并且对于SYS 用户的口令文件在每个系统上必须相同,以确保重做数据传输

成功(最好是将口令文件传输到备库,不能用alter sys 改口令

创建密码文件命令

orapwd file=<fname> entries=<users> force=<y/n> ignorecase=<y/n> nosysdba=<y/n>

1.3 Data Guard 用的归档日志来完成同步,主库必须是归档模式

主数据库配置RAC归档模式

alter system set log_archive_dest_1='location=/archivelog' scope=spfile sid='fund1';

alter system set log_archive_dest_1='location=/archivelog' scope=spfile sid='fund2';

关闭数据库

su - oracle -c "srvctl stop instance -d fund -i fund1"

su - oracle -c "srvctl stop instance -d fund -i fund2"

一个节点启动到MOUNT,执行alter database archivelog;

最后把数据库打开两个节点都OPEN.

1.4 配置主备库监听

1.4.1主库增加专门网络的LISTENER,使用ORACLE用户登入集群一节点

$ more listener.ora

# listener.ora Network Configuration File: /oracle/db/product/11.2/network/admin/listener.ora

# Generated by Oracle configuration tools.

LISTENER2 =

       (DESCRIPTION_LIST =

         (DESCRIPTION =

           (ADDRESS = (PROTOCOL = TCP)(HOST =102.200.xx.236 )(PORT = 1522))

         )

         (DESCRIPTION =

           (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

         )

       )

     

SID_LIST_LISTENER2 =

       (SID_LIST =

         (SID_DESC =

           (SID_NAME = PLSExtProc)

           (ORACLE_HOME = /oracle/db/product/11.2)

           (PROGRAM = extproc)

         )

        (SID_DESC =

          (GLOBAL_DBNAME = fund)

          (ORACLE_HOME = /oracle/db/product/11.2)

          (SID_NAME = fund1)

        )

       )

ADR_BASE_LISTENER2 = /oracle/db

1.4.2主库增加专门网络的LISTENER,使用ORACLE用户登入集群二节点

LISTENER2 =

       (DESCRIPTION_LIST =

         (DESCRIPTION =

           (ADDRESS = (PROTOCOL = TCP)(HOST =102.200.xx..237 )(PORT = 1522))

         )

         (DESCRIPTION =

           (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

         )

       )

     

SID_LIST_LISTENER2 =

       (SID_LIST =

         (SID_DESC =

           (SID_NAME = PLSExtProc)

           (ORACLE_HOME = /oracle/db/product/11.2)

           (PROGRAM = extproc)

         )

        (SID_DESC =

          (GLOBAL_DBNAME = fund)

          (ORACLE_HOME = /oracle/db/product/11.2)

          (SID_NAME = fund2)

        )

       )

ADR_BASE_LISTENER2 = /oracle/db

    1.4.3 主库增加连接备用库的tnsname,使用ORACLE用户登入一、二节点

备用数据库 DB_UNIQUE_NAME为fundsty,Oracle 网络服务名fundsty,

节点A和节点B的tnsnames.ora 文件是一致的。 修改成如下:

fundsty =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 102.200.xx..238)(PORT = 1522))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = fundsty)

      (INSTANCE_NAME = fundsty )

    )

  ) 

1.4.4 备库增加连接主库的tnsname和listener.ora文件

fund1 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 102.200.xx.236)(PORT = 1522))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = fund)

      (INSTANCE_NAME = fund1)

    )

  )

fund2 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 102.200.xx..237)(PORT = 1522))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = fund)

      (INSTANCE_NAME = fund2)

    )

  )  

 

1.4.5 备库监听器配置

LISTENER2 =

       (DESCRIPTION_LIST =

         (DESCRIPTION =

           (ADDRESS = (PROTOCOL = TCP)(HOST =102.200.xx..238 )(PORT = 1522))

         )

         (DESCRIPTION =

           (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

         )

       )

     

SID_LIST_LISTENER2 =

       (SID_LIST =

         (SID_DESC =

           (SID_NAME = PLSExtProc)

           (ORACLE_HOME = /oracle/db/product/11.2)

           (PROGRAM = extproc)

         )

        (SID_DESC =

          (GLOBAL_DBNAME = fundsty)

          (ORACLE_HOME = /oracle/db/product/11.2)

          (SID_NAME = fundsty)

        )

       )

ADR_BASE_LISTENER2 = /oracle/db

全部配置完成后必须达到,主库两个节点可以以远程的方式访问备库.

备库可以远程的方式连接到主库的任意节点.

测试方法

sqlplus sys/<password>@tnsname as sysdba

1.5 修改主库参数文件

备份主数据库参数文件

create pfile='/rmanbak/fundpfile.ora'  from  spfile;

修改主库参数文件

alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(fund,fundsty)' sid='*';

ALTER SYSTEM SET log_archive_dest_2='SERVICE=fundsty ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=fundsty' SCOPE=BOTH SID='*';

alter system set FAL_SERVER=fundsty sid='*';

alter system set FAL_CLIENT=fund sid='*';

alter system set STANDBY_FILE_MANAGEMENT=AUTO  sid='*';

**************************************************************************************************************************

相关参数知识:

这里要注意的地方:

1.因为RAC 主库是用ASM 来存放的,所以这里设置的目录与ASM 目录是不一致的, 这种情况下,我们就需要在参数文件里用db_file_name_convert和 log_file_name_convert 参数来进行转换。

db_file_name_convert='+ASMVG1/ysgx/datafile','/ysgxdata','+ASMVG1/ysgx/tempfile','/ysgxdata'

log_file_name_convert='+ASMVG1/ysgx/onlinelog','/archivelog'

2.备库配置——当是备库角色时需要的参数

LOG_ARCHIVE_CONFIG 在这个参数上指定DG_CONFIG 属性,以在Data Guard 配置,中列出主和备数据库的DB_UNIQUE_NAME

3.STANDBY_FILE_MANAGEMENT=AUTO (主库建表空间时,自动在备库也创建相应的表空间)

4.FAL_SERVER 指定FAL 服务器(典型地这是运行在主角色的数据库)的Oracle 网络服务名。当fund数据库运行在备角色,它使用fund1,fund2 数据库作为FAL 服务器,如果fund 无法自动发送丢失的日志文件,可以从那里取得(请求)丢失的归档重做日志文件。

5.FAL_CLIENT 指定fund数据库的Oracle 网络服务名。FAL 服务器拷贝丢失的归档重做日志文件到备数据库。

6.

7.

**************************************************************************************************************************

1.6 把主库的参数文件传到备库修改

生成主库PFILE传到备库ORACLE_HOME/dbs下打开编辑把集群的参数删除.

create pfile='/rmanbak/fundstypfile.ora'  from  spfile;

scp fundstypfile.ora 102.200.128.238:/oracle/db/product/11.2/dbs

创建备库DUMP目录

mkdir -p /oracle/db/admin/fundsty/adump

修改好参数文件后生成SPFILE并且修改以下参数

*******************************************************************************************************************************

注意相关参数的修改:

undo_tablespace='UNDOTBS1' (取RAC数据库中的一个)

db_name='fund'   (同RAC主库)

DB_UNIQUE_NAME='fundsty'  (可设置,不用于RAC主库)

*******************************************************************************************************************************

alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(fund,fundsty)';

alter system set log_archive_dest_1='location=/archivelog';

alter system set FAL_SERVER='fund1','fund2';

alter system set STANDBY_FILE_MANAGEMENT=AUTO;

alter system set FAL_CLIENT=fundsty ;

1.7 把主库其中一个节点的密码文件传到备库

scp orapwfund1 102.200.128.238:/oracle/db/product/11.2/dbs

1.8 RMAN备份主数据库

主库执行备份并将backup 传到从库(放置在同一个/rmanbak目录下)

主库上运行

run {

allocate channel c1 device type disk ;  

allocate channel c2 device type disk ;

backup full database filesperset 5 format '/rmanbak/full_%U_%d_%T';

release channel c1;   

release channel c2;

}

run {

allocate channel c1 device type disk ;  

allocate channel c2 device type disk ;

sql 'alter system archive log current';

backup archivelog all filesperset 5 format '/rmanbak/arch_%U_%d_%T'delete input;

backup current controlfile for standby format '/rmanbak/controlfile_%u_%d_%T';

release channel c1;   

release channel c2;

}

1.9 RMAN恢复备数据库

将数据库备份文件从主库传到备用数据库/rmanbak目录

将备库启动到nomout状态

恢复控制文件:restore standby controlfile from '/rmanbak/controlfileXXX';

ALTER DATABASE MOUNT STANDBY DATABASE;

恢复数据库

  run

  {

   allocate channel c1 device type disk ;

   allocate channel c2 device type disk ;

   allocate channel c3 device type disk ;

   allocate channel c4 device type disk ;

   restore database;

   release channel c1;   

   release channel c2;  

   release channel c3;  

   release channel c4;

 }

recover database;

1.10备用库创建standby redo log file用于接收主库传过来的日志

alter database add standby logfile group 13 '+ASMVG1/fundsty/onlinelog/standbylog13.log' size 500m;

alter database add standby logfile group 14 '+ASMVG1/fundsty/onlinelog/standbylog14.log' size 500m;

alter database add standby logfile group 15 '+ASMVG1/fundsty/onlinelog/standbylog15.log' size 500m;

alter database add standby logfile group 16 '+ASMVG1/fundsty/onlinelog/standbylog16.log' size 500m;

alter database add standby logfile group 17 '+ASMVG1/fundsty/onlinelog/standbylog17.log' size 500m;

alter database add standby logfile group 18 '+ASMVG1/fundsty/onlinelog/standbylog18.log' size 500m;

alter database add standby logfile group 19 '+ASMVG1/fundsty/onlinelog/standbylog19.log' size 500m;

alter database add standby logfile group 20 '+ASMVG1/fundsty/onlinelog/standbylog20.log' size 500m;

alter database add standby logfile group 21 '+ASMVG1/fundsty/onlinelog/standbylog21.log' size 500m;

alter database add standby logfile group 22 '+ASMVG1/fundsty/onlinelog/standbylog22.log' size 500m;

alter database add standby logfile group 23 '+ASMVG1/fundsty/onlinelog/standbylog23.log' size 500m;

alter database add standby logfile group 24 '+ASMVG1/fundsty/onlinelog/standbylog24.log' size 500m;

alter database add standby logfile group 25 '+ASMVG1/fundsty/onlinelog/standbylog25.log' size 500m;

alter database add standby logfile group 26 '+ASMVG1/fundsty/onlinelog/standbylog26.log' size 500m;

提示:如果主库已经提前创建好了standby redo log file,备库会根据LOG_FILE_NAME_CONVERT参数转换后自动创建与之对应的standby redo log file日志组。因此此步骤可省略。

如有主库未创建standby redo logfile,则备库必须手工创建日志文件组

公式如下:

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

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

1.11 启动备数据库至RECOVER_MODE

alter database open;

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

执行命令后会报没有找到TEMP文件。

需要增加临时文件

alter tablespace FUND_TMP add tempfile '+asmvg1/fund/tempfile/fund_temp1' size 30g;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值