天天看點

Dataguard for windows to linux(雲上)異構加阿裡雲容災配置

windows和linux平台可以實作跨平台的異構Dataguard,配置方法和同平台沒有太大差別,注意目錄的格式。

1、環境準備

1.1 主庫開啟歸檔

-----開啟歸檔

alter system set LOG_ARCHIVE_DEST_1='LOCATION=/archivelog' scope=both;

shutdown immediate

start mount

alter database archivelog;

1.2 配置監聽

--備庫監聽

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

     (GLOBAL_DBNAME = orcl)

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

     (SID_NAME = orcl_dr1)

    )

   )

主備庫tns

ORCL_DR=

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.x.x)(PORT = 1521))

    (CONNECT_DATA =

      (SERVICE_NAME = orcl_dr)

  )

ORCL =

      (SERVICE_NAME = orcl)

1.3 密碼檔案

orapwd file=$ORACLE_HOME/dbs/orapworcl_dr1 password=oracle

2、Dupalicate 方式配置Dataguard

rman target sys/oracle@orcl auxiliary sys/oracle@orcl_dr

set newname for datafile 1 to '+DATA/orcl_dr/system01.dbf';

set newname for datafile 2 to '+DATA/orcl_dr/sysaux01.dbf';

set newname for datafile 3 to '+DATA/orcl_dr/undotbs01.dbf';

set newname for datafile 4 to '+DATA/orcl_dr/users01.dbf';

set newname for datafile 5 to '+FLASH/orcl_dr/testtbs01.dbf';

run{

set newname for tempfile 1 to '+DATA/orcl_dr/temp01.dbf';

DUPLICATE TARGET DATABASE

FOR STANDBY

FROM ACTIVE DATABASE

nofilenamecheck

dorecover

SPFILE

SET DB_UNIQUE_NAME="orcl_dr"

SET AUDIT_FILE_DEST="/u01/app/oracle/admin/orcl_dr/adump"

SET DIAGNOSTIC_DEST="/u01/app/oracle"

set log_archive_config='dg_config=(orcl,orcl_dr)'

set log_archive_dest_1='location=+FLASH '

SET LOG_ARCHIVE_DEST_2="service=orcl LGWR SYNC REGISTER VALID_FOR=(online_logfile,primary_role) "

SET FAL_SERVER="orcl"

SET FAL_CLIENT="orcl_dr"

SET CONTROL_FILES='+DATA/orcl_dr/control01.ctl','+DATA/orcl_dr/control02.ctl'

SET DB_FILE_NAME_CONVERT='C:\app\Administrator\oradata\orcl\','+DATA'

SET LOG_FILE_NAME_CONVERT='C:\app\Administrator\oradata\orcl\','+DATA'

SET DB_RECOVERY_FILE_DEST='+FLASH'

SET DB_RECOVERY_FILE_DEST_SIZE='1G';

}

部分輸出:duplicate會輸出它執行的指令和結果

----------

''orcl_dr'' comment=

'''' scope=spfile";

   sql clone "alter system set  CONTROL_FILES =

''+DATA/orcl_dr/control01.ctl'', ''+DATA/orcl_dr/control02.ctl'' comment=

   sql clone "alter system set  db_file_name_convert =

''C:\app\Administrator\oradata\orcl\'', ''+DATA'' comment=

   sql clone "alter system set  LOG_FILE_NAME_CONVERT =

   sql clone "alter system set  db_recovery_file_dest =

''+FLASH'' comment=

   sql clone "alter system set  DB_RECOVERY_FILE_DEST_SIZE =

1G comment=

   shutdown clone immediate;

   startup clone nomount;

正在執行記憶體腳本

sql 語句: alter system set  db_unique_name =  ''orcl_dr'' comment= '''' scope=sp

file

sql 語句: alter system set  AUDIT_FILE_DEST =  ''/u01/app/oracle/admin/orcl_dr/a

dump'' comment= '''' scope=spfile

…………

歸檔日志檔案名=+FLASH/orcl_dr/archivelog/2017_01_19/thread_1_seq_38.261.93369654

9 線程=1 序列=38

媒體恢複完成, 用時: 00:00:05

完成 recover 于 19-1月 -17

來自輔助資料庫的 ORACLE 錯誤: ORA-01511: 重命名日志/資料檔案時出錯

ORA-01516: 不存在的日志檔案, 資料檔案或臨時檔案 "C:\APP\ADMINISTRATOR\ORADATA\OR

CL\REDO01.LOG"

RMAN-05535: 警告: 并非所有重做日志檔案均已正确定義。

CL\REDO02.LOG"

CL\REDO03.LOG"

完成 Duplicate Db 于 19-1月 -17

複制過程中,可以通過sql指令檢視通道進度

--rman進度查詢

select sid,context,sofar,totalwork,round(sofar/totalwork*100,2) from v$session_longops where opname like 'RMAN%' and opname not like '%aggregate%' and totalwork<>0 and round(sofar/totalwork*100,2)<>100;

--複制過程中,主庫做了添加資料檔案的操作,以及複制暫停,隻需要把腳本重新跑一下,根據複制的記錄會重用已複制的資料檔案

總結一下duplicate的過程:

1)連接配接目标庫(主庫)、輔助資料庫(需要dbname即可)

2)進行參數配置

3)執行個體重新開機到mount

4)備份傳輸控制檔案

5)複制資料檔案:資料檔案和臨時資料檔案分腳本進行

6)完成copy,編制檔案目錄

7)設定scn号,使用歸檔進行恢複

8)完成配置

3、主庫參數配置

主庫

alter system set standby_file_management=AUTO scope=both;

alter system set fal_server=orcl scope=both;

alter system set fal_client=orcl_dr scope=both;

alter system set LOG_ARCHIVE_DEST_2='SERVICE=orcl_dr LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) NET_TIMEOUT=60 DB_UNIQUE_NAME=orcl_dr' scope=both;

alter system set log_archive_config='dg_config=(orcl,orcl_dr)' scope=both;

4、開啟實時同步

--啟用歸檔2

alter system set log_archive_dest_state_2='DEFER' scope=both  sid='*';

alter system set log_archive_dest_state_2='ENABLE' scope=both  sid='*';

alter database recover managed standby database disconnect from session;

--開啟實時同步

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE using current logfile disconnect from session;

取消同步

alter database recover managed standby database cancel;

上一篇: Catch That Cow
下一篇: Lost Cow