閱讀41 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.x.x)(PORT = 1521))
    )
    (CONNECT_DATA =
      (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
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';
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';
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=
'''' scope=spfile";
   sql clone "alter system set  db_file_name_convert =
''C:\app\Administrator\oradata\orcl\'', ''+DATA'' comment=
'''' scope=spfile";
   sql clone "alter system set  LOG_FILE_NAME_CONVERT =
''C:\app\Administrator\oradata\orcl\'', ''+DATA'' comment=
'''' scope=spfile";
   sql clone "alter system set  db_recovery_file_dest =
''+FLASH'' comment=
'''' scope=spfile";
   sql clone "alter system set  DB_RECOVERY_FILE_DEST_SIZE =
1G comment=
'''' scope=spfile";
   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: 警告: 並非所有重做日誌文件均已正確定義。
來自輔助數據庫的 ORACLE 錯誤: ORA-01511: 重命名日誌/數據文件時出錯
ORA-01516: 不存在的日誌文件, 數據文件或臨時文件 "C:\APP\ADMINISTRATOR\ORADATA\OR
CL\REDO02.LOG"
RMAN-05535: 警告: 並非所有重做日誌文件均已正確定義。
來自輔助數據庫的 ORACLE 錯誤: ORA-01511: 重命名日誌/數據文件時出錯
ORA-01516: 不存在的日誌文件, 數據文件或臨時文件 "C:\APP\ADMINISTRATOR\ORADATA\OR
CL\REDO03.LOG"
RMAN-05535: 警告: 並非所有重做日誌文件均已正確定義。
完成 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;

最後更新:2017-10-30 13:03:24

  上一篇:go  Spring MVC的配置
  下一篇:go  集團編碼規約P3C項目Ali-IDE規約插件開源心得