Oracle-DataGuard

Oracle容灾物理DataGuard

工作前准备

数据库版本

windows环境,数据库版本与生产库保持一致

数据同步方式

物理DG

实例名

生产库dsemr,备库dsemrdg

一、oracle主服务器检查和操作

  1. 1检查主服务器是否开启归档日志

        打开dos窗口:

Administrator> sqlplus / as sysdba

SQL>archive log list

Database log mode Archive Mode

Automatic archival Enabled

Archive destination D:\app\Administrator\oradata\archlog

Oldest online log sequence 17238

Next log sequence to archive 17240

Current log sequence 17240

SQL> 

如此 Automatic archival 状态为 Enabled 即为已开启,否则需要建立相应目录,并重启数据库开启归档。

1.2开启oracle归档日志

    另外打开一个dos窗口,并建立归档日志文件夹    

Administrator>d:

Administrator>cd D:\app\Administrator\oradata\

Administrator>md archlog

Administrator>sqlplus / as sysdba

SQL>alter system set log_archive_dest_1='location= D:\app\Administrator\oradata\archlog';

SQL>shutdown immediate; #立即关闭  

SQL>startup mount; #加载控制文件,让实例和数据库相关联  

SQL>alter database archivelog; # 归档模式

SQL>alter database open; #根据控制文件找到并打开数据文件和日志文件,从而打开数据库

SQL> select status from v$instance; #查看数据库是否启动

SQL> alter database force logging;  #主库开启归档并改为强制日志模式

二、安装备库,添加监听、备库实例(dsemrdg)

三、主备库listener tnsnames中添加dsemrdsemrdg,并相互ping通

 3.1 备库添加静态监听,添加红色字体部分(根据本机配置修修改路径)

编辑D:\app\Administrator\product\12.1.0\dbhome_1\network\admin\listener.ora 

# listener.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora

# Generated by Oracle configuration tools..

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = CLRExtProc)

      (ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)

      (PROGRAM = extproc)

      (ENVS = "EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")

    )

    (SID_DESC =

      (GLOBAL_DBNAME = dsemrdg)

      (ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)

      (SID_NAME = dsemrdg)

    )

  )

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

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

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

    )

  )

ADR_BASE_LISTENER = D:\app\Administrator  # ADR_BASE_LISTENER 默认监听日志配置路径

DIAG_ADR_ENABLED_LISTENER=OFF 

     3.2 添加主库tns连接

        编辑:D:\app\Administrator\product\12.1.0\dbhome_1\network\admin\nsnames.ora

末行添加

dsemr =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dsemr)

    )

  )

     3.3 配置tnsname

编辑:D:\app\Administrator\product\12.1.0\dbhome_1\network\admin\nsnames.ora

末行添加

dsemrdg =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dsemrdg)

    )

  )

     3.4 主备库PING通测试

         1:主库ping备库

            打开dos窗口,并执行tnsping命令

Administrator>tnsping dsemrdg

Used parameter files:

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.7)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dsemrdg)))

OK (0 msec)

3.5 备库PING通测试

    1:备库ping主库

    打开dos窗口,并执行tnsping命令

Administrator>tnsping dsemr

Used parameter files:

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.109)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dsemr)))

OK (0 msec) 

主库rman备份与控制文件建立

4.1 rman备份主库

      另外打开一个dos窗口,并进入rman管理

Administrator>rman target /

run {

allocate channel c1 type disk maxpiecesize=20g;

allocate channel c2 type disk maxpiecesize=20g;

allocate channel c3 type disk maxpiecesize=20g;

allocate channel c4 type disk maxpiecesize=20g;

backup as compressed backupset database format 'E:\app\oracleadmin\oradata\rman\db_%d_%s_%p_%u_%T.dbf';

sql "alter system archive log current";

crosscheck backup;

delete noprompt obsolete;

delete noprompt expired backup;

backup as compressed backupset archivelog all format 'E:\app\oracleadmin\oradata\rman\arc_%d_%u_%T.arc' delete all input;

release channel c1;

release channel c2;

release channel c3;

release channel c4;

}

5.主库上为备库建立控制文件

SQL>alter database create standby controlfile as 'E:\app\oracleadmin\oradata\rman\STANDBY.CTL' reuse;

6.主库建立pfile

SQL>create pfile from spfile;

7.拷贝主库的参数文件

7.1 拷贝主库的参数文件initdsemr.ora、口令文件PWDdsamr.ora、rman备份、standby控制文件standby.ctl,到备库的对应位置,拷贝到windows下oracle的D:\app\Administrator\product\11.2.0\dbhome_1\database

7.2 备库操作拷贝文件,改名

参数文件 : D:\app\Administrator\product\12.1.0\dbhome_1\database\initdsemr.ora 改为initdsemrdg.ora

口令文件 : D:\app\Administrator\product\12.1.0\dbhome_1\database\PWDdsemr.ora 改为 PWDdsemrdg.ora

8.在备库文本参数文件修改或添加以下内容:

//*.control_files='/oradata/test/control01.ctl' ##此文件既是上面步骤拷贝的standby控制文件standby.ctl

orcl.__db_cache_size=3372220416

orcl.__java_pool_size=33554432

orcl.__large_pool_size=50331648

orcl.__oracle_base='D:\app\Administrator' #ORACLE_BASE set from environment

orcl.__pga_aggregate_target=1056964608

orcl.__sga_target=4194304000

orcl.__shared_io_pool_size=0

orcl.__shared_pool_size=704643072

orcl.__streams_pool_size=0

*.audit_file_dest='D:\app\Administrator\admin\dsemrdg\adump'

*.audit_trail='NONE'

*.compatible='12.1.0.0.0'

*.control_files='D:\app\Administrator\oradata\dsemrdg\control01.ctl' #,' D:\app\Administrator\fast_recovery_area\dsemrdg\control02.ctl'#

*.db_block_size=8192

*.db_domain=''

*.db_name='dsemr'

#*.db_recovery_file_dest='D:\app\Administrator\fast_recovery_area'

#*.db_recovery_file_dest_size=4385144832

*.diagnostic_dest='D:\app\Administrator'

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

*.log_archive_dest_1='location=D:\app\Administrator\oradata\archlog\'

*.open_cursors=300

*.pga_aggregate_target=1048576000

*.processes=1000

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_max_size=4194304000

*.sga_target=4194304000

*.undo_tablespace='UNDOTBS1'

db_unique_name=dsemrdg

log_archive_config='dg_config=(dsemr,dsemrdg)'

log_archive_dest_1='location=D:\app\Administrator\oradata\archlog\valid_for=(ALL_LOGFILES,all_roles) db_unique_name=dsemrdg'

log_archive_dest_2='service=dsemr lgwr sync valid_for=(online_logfiles,primary_role) db_unique_name=dsemr'

log_archive_max_processes=6

fal_server=dsemr

fal_client=dsemrdg

standby_file_management=auto

保存退出

9.在服务中停止windwos下oracleserviceorcldg服务

拷贝D:\app\Administrator\oradata\rman\standby.ctl 到 D:\app\Administrator\oradata\dsemrdg\下 ,改名并覆盖control01.ctl;

修改D:\app\Administrator\product\12.1.0\dbhome_1\database\SPFILEORCLDG.ORA 为.bak文件停用原来配置。

修改好后,重启windwos下oracleserviceorcldg服务

10.将数据库启动到mount状态:

SQL>shutdown immediate;

SQL>startup mount pfile='D:\app\Administrator\product\12.1.0\dbhome_1\database\INITdsemrdg.ORA';

11.备库建立spfile

SQL> create spfile from pfile=' D:\app\Administrator\product\12.1.0\dbhome_1\database\INITdsemrdg.ORA';

12.rman恢复(备库)

另开一个dos窗口进入sqlplus 生成rman恢复脚本

Administrator>sqlplus / as sysdba

SQL>set head off

SQL>set lines 100

SQL>set pages 500

SQL>col name for a60

SQL>set feedback off

SQL>select 'set newname for datafile '||file#||' to '||''''||name||''''||';' from v$datafile;

SQL>select 'set newname for tempfile '||file#||' to '||''''||name||''''||';' from v$tempfile;

执行结果拷贝到文档编辑rman恢复命令,注意路径修改dsemr需要修改成备库的dsemrdg

set newname for datafile 1 to 'D:\APP\ADMINISTRATOR\ORADATA\DSEMR\SYSTEM01.DBF';

set newname for datafile 2 to 'D:\APP\ADMINISTRATOR\PRODUCT\12.1.0\DBHOME_1\DATABASE\TS_DS_EMR';

set newname for datafile 3 to 'D:\APP\ADMINISTRATOR\ORADATA\DSEMR\SYSAUX01.DBF';

set newname for datafile 5 to 'D:\APP\ADMINISTRATOR\ORADATA\DSEMR\UNDOTBS01.DBF';

set newname for datafile 6 to 'D:\APP\ADMINISTRATOR\ORADATA\DSEMR\USERS01.DBF';

set newname for tempfile 1 to 'D:\APP\ADMINISTRATOR\ORADATA\DSEMR\TEMP01.DBF';

将上面的输出路径复制到下面 ,并修改D:\APP\ADMINISTRATOR\ORADATA\DSEMR\为D:\APP\ADMINISTRATOR\ORADATA\DSEMRDG\:

另外打开一个dos窗口,并进入rman

Administrator>rman target /

RMAN>list backup summary;    #查看一下需要恢复的文件加载次数,如果没有执行下面命令,如果有,直接开始恢复。

RMAN> catalog start with 'd:\app\Administrator\oradata\rman';

run {

allocate channel c1 type disk maxpiecesize=20g;

allocate channel c2 type disk maxpiecesize=20g;

allocate channel c3 type disk maxpiecesize=20g;

allocate channel c4 type disk maxpiecesize=20g;

set newname for datafile 1 to 'D:\APP\ADMINISTRATOR\ORADATA\DSEMRDG\DATAFILE\SYSTEM01.DBF';

set newname for datafile 2 to 'D:\APP\ADMINISTRATOR\PRODUCT\12.1.0\DBHOME_1\DATABASE\TS_DS_EMR';

set newname for datafile 3 to 'D:\APP\ADMINISTRATOR\ORADATA\DSEMRDG\DATAFILE\SYSAUX01.DBF';

set newname for datafile 5 to 'D:\APP\ADMINISTRATOR\ORADATA\DSEMRDG\DATAFILE\UNDOTBS01.DBF';

set newname for datafile 6 to 'D:\APP\ADMINISTRATOR\ORADATA\DSEMRDG\DATAFILE\USERS01.DBF';

set newname for tempfile 1 to 'D:\APP\ADMINISTRATOR\ORADATA\DSEMRDG\DATAFILE\TEMP01.DBF';

restore database;

switch datafile all;

recover database;

release channel c1;

release channel c2;

release channel c3;

release channel c4;

}

13. 修改主库参数,此项目在主库上执行。

alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(dsemr,dsemrdg)';

alter system set LOG_ARCHIVE_DEST_1='LOCATION=D:\APP\ADMINISTRATOR\ORADATA\archlog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dsemr';

alter system set LOG_ARCHIVE_DEST_2='SERVICE=dsemrdg LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dsemrdg';

alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE;

alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE;

alter system set FAL_SERVER=dsemrdg;

alter system set FAL_CLIENT=dsemr;

alter system set standby_file_management=auto;

create pfile from spfile;

14.备库添加redo文件

查看主库D:\APP\ADMINISTRATOR\ORADATA\dsemr\redo*.log文件大小,并修改size 50m reuse大小。

SQL>alter database add standby logfile 'D:\app\Administrator\oradata\dsemrdg\std_redo01.log' size 50m reuse;

SQL>alter database add standby logfile 'D:\app\Administrator\oradata\dsemrdg\std_redo02.log' size 50m reuse;

SQL>alter database add standby logfile 'D:\app\Administrator\oradata\dsemrdg\std_redo03.log' size 50m reuse;

SQL>alter database add standby logfile 'D:\app\Administrator\oradata\dsemrdg\std_redo04.log' size 50m reuse;

15. 查看主备库归档是否异常

SQL>col dest_name for a30

SQL>col error for a20

SQL>select dest_name,status,error,target,process from v$archive_dest where rownum<6;

16. 备库open

SQL> alter database open;         

执行归档恢复。

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

使用当前日志文件从会话断开连接更改数据库恢复托管备用数据库;

Database altered.

# 备库重启后,执行上面命令同步恢复数据

17. 主备执行此命令,查看是否一致

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

 SEQUENCE# APPLIED

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

        16 YES

        17 YES

        18 YES

18.使用工具打开主备库,检查一下数据是否同步成功,没有问题则退出所有dos窗口,完成此次dg搭建。

19.查看没有被dg还原的归档日志

select l."RECID",l."NAME",l."ARCHIVED",l."APPLIED",l."NEXT_TIME",l."COMPLETION_TIME"  
from v$archived_log l where applied='NO'  Order By Sequence#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值