本篇內容主要講解“怎么搭建dataguard”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么搭建dataguard”吧!
此方案適合于生產運營中的數據庫,DB 服務器停機時間非??量?,或無法停機維護的情況下,如支付,電商等業務,可通過該方案在線部署Dataguard,對客戶系統無任何影響。
一、基礎信息
操作系統:windows2008
數據庫:11.2.0.3
配置信息:
| 說明 | 主機名 | IP地址 | db_name | sid | DB_UNIQUE_NAME | Service_name |
|---|---|---|---|---|---|---|
| 主庫 | dg1 | 192.168.16.14 | orcl | orcl | orcl | orcl |
| 備庫 | dg2 | 192.168.16.15 | orcl | orcl | orclbak | orclbak |
二、準備工作
按照要求創建相應的主數據庫和備用數據庫,并刪除備用數據庫的數據文件、控制文件,兩個數據庫的所有路徑需要一致;
三、搭建數據庫
主庫的操作:
1.確認主庫參數
SQL> select name,open_mode,database_role,log_mode,force_logging from v$database; NAME OPEN_MODE DATABASE_ROLE LOG_MODE FOR --------- -------------------- ---------------- ------------ --- ORCL READ WRITE PRIMARY ARCHIVELOG YES SQL> show parameter name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_file_name_convert string db_name string orcl db_unique_name string orcl global_names boolean FALSE instance_name string orcl lock_name_space string log_file_name_convert string processor_group_name string service_names string orcl
2.設置數據庫的歸檔模式
SQL> archive log list; 數據庫日志模式 存檔模式 自動存檔 啟用 存檔終點 E:\u01\fast_recovery_area\orcl 最早的聯機日志序列 833 下一個存檔日志序列 835 當前日志序列 835
歸檔模式的設置:
1、shutdown abort; 2、alter database mount; 3、alter database archive log; 4、alter database open; 3.開啟force logging SQL> alter database force logging; SQL> select name,DB_UNIQUE_NAME,database_role,log_mode,force_logging from v$database; NAME DB_UNIQUE_NAME DATABASE_ROLE LOG_MODE FOR--------- ------------------------------ ---------------- ------------ --- ORCL orcl PRIMARY ARCHIVELOG YES
4.主庫配置監聽
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = E:\u01\product\11.2.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:E:\u01\product\11.2.0\dbhome_1\bin\oraclr11.dll") ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = WIN-QS00S09CJ12)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) ADR_BASE_LISTENER = E:\u01
5.配置主庫的TNSNAMES.ORA并和密碼文件一起傳到備庫
# tnsnames.ora Network Configuration File: E:\u01\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora# Generated by Oracle configuration tools.ORCL= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SID = ORCL) (UR=A) ) ) ORCLBAK = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.14.15)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orclbak) (UR=A) --這里記得加這個,否無法連接nomount狀態下備庫 ) )
傳輸監聽文件到備庫:
6.修改主庫pfile參數
--前提是采用spfile啟動,并且業務不能停,可用下列命令動態設置:
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orclbak)' ALTER SYSTEM SET LOG_ARCHIVE_DEST_1= 'LOCATION=E:\u01\fast_recovery_area\orcl VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl' ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=orclbak LGWR ASYNC affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclbak' ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1='ENABLE'; ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2='DEFER'; --這里先設置關閉 ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='AUTO'; ALTER SYSTEM SET FAL_SERVER=orclbak; ALTER SYSTEM SET FAL_CLIENT=orcl; 下面是可選,如果路相同,忽略下面操作: ALTER SYSTEM SET DB_FILE_NAME_CONVERT='E:\u01\oradata\orcl','E:\u01\oradata\orcl' scope=spfile; ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='E:\u01\oradata\orcl','E:\u01\oradata\orcl' scope=spfile;
7.全備主庫,并傳輸備份集到備庫的相同位置
run
{
allocate channel c0 device type disk;
allocate channel c1 device type disk;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'e:\orabak\rman/%F';
backup database format 'e:\orabak\ora11g_full_db_%d_%T_%u.bak';
BACKUP ARCHIVELOG ALL FORMAT 'e:\orabak\ora11g_arc_%s_%p_%t.bak';
}8.修改備庫參數并將備庫啟動至nomount狀態(參考主庫進行,主要是service_name要反過來)
DB_UNIQUE_NAME=orclbak LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orclbak)' LOG_ARCHIVE_DEST_1= 'LOCATION=E:\u01\fast_recovery_area\orcl VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orclbak' LOG_ARCHIVE_DEST_2= 'SERVICE=orcl LGWR ASYNC affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl' LOG_ARCHIVE_DEST_STATE_1=ENABLE LOG_ARCHIVE_DEST_STATE_2=ENABLE LOG_ARCHIVE_FORMAT=%t_%s_%r.arc FAL_SERVER=orcl FAL_CLIENT=orclbak STANDBY_FILE_MANAGEMENT=AUTO
9.啟動備庫監聽
# listener.ora Network Configuration File: E:\u01\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 = E:\u01\product\11.2.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:E:\u01\product\11.2.0\dbhome_1\bin\oraclr11.dll") ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = WIN-4GH7UKQEEOC)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = E:\u01\product\11.2.0\dbhome_1) (SID_NAME = orcl) ) ) ADR_BASE_LISTENER = E:\u01
10.進行備庫的恢復
C:\Users\Administrator>rman target / 恢復管理器: Release 11.2.0.3.0 - Production on 星期五 2月 26 17:35:52 2016Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. 已連接到目標數據庫: ORCL (DBID=1389423916) RMAN> connect auxiliary sys/*******@orclbak 已連接到輔助數據庫: ORCL (未裝載)
開始復制數據庫:
RMAN> duplicate target database for standby nofilenamecheck;
啟動 Duplicate Db 于 26-2月 -16
使用目標數據庫控制文件替代恢復目錄
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: SID=2091 設備類型=DISK
內存腳本的內容:
{
restore clone standby controlfile;
}
正在執行內存腳本
啟動 restore 于 26-2月 -16
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在開始還原數據文件備份集
通道 ORA_AUX_DISK_1: 正在還原控制文件
通道 ORA_AUX_DISK_1: 正在讀取備份片段 D:\ORABAK\C-1389423916-20160226-00
通道 ORA_AUX_DISK_1: 段句柄 = D:\ORABAK\C-1389423916-20160226-00 標記 = TAG20160226T140701
通道 ORA_AUX_DISK_1: 已還原備份片段 1
通道 ORA_AUX_DISK_1: 還原完成, 用時: 00:00:04
輸出文件名=E:\U01\ORADATA\ORCL\CONTROL01.CTL
完成 restore 于 26-2月 -16
內存腳本的內容:
{
sql clone 'alter database mount standby database';
}
正在執行內存腳本
sql 語句: alter database mount standby database
內存腳本的內容:
{
set newname for tempfile 1 to
"E:\U01\ORADATA\ORCL\TEMP01.DBF";
switch clone tempfile all;
set newname for datafile 1 to
"E:\U01\ORADATA\ORCL\SYSTEM01.DBF";
set newname for datafile 2 to
"E:\U01\ORADATA\ORCL\SYSAUX01.DBF";
set newname for datafile 3 to
"E:\U01\ORADATA\ORCL\UNDOTBS01.DBF";
set newname for datafile 4 to
"E:\U01\ORADATA\ORCL\USERS01.DBF";
set newname for datafile 5 to
"E:\U01\ORADATA\ORCL\GIS01.DBF";
set newname for datafile 6 to
"E:\U01\ORADATA\ORCL\GIS02.DBF";
set newname for datafile 7 to
"E:\U01\ORADATA\ORCL\GIS03.DBF";
set newname for datafile 8 to
"E:\U01\ORADATA\ORCL\GIS04.DBF";
set newname for datafile 9 to
"E:\U01\ORADATA\ORCL\GIS05.DBF";
set newname for datafile 10 to
"E:\U01\ORADATA\ORCL\GIS06.DBF";
set newname for datafile 11 to
"E:\U01\ORADATA\ORCL\GIS07.DBF";
set newname for datafile 12 to
"E:\U01\ORADATA\ORCL\GIS08.DBF";
set newname for datafile 13 to
"E:\U01\ORADATA\ORCL\GIS09.DBF";
set newname for datafile 14 to
"E:\U01\ORADATA\ORCL\GIS10.DBF";
restore
clone database
;
}
正在執行內存腳本
正在執行命令: SET NEWNAME
臨時文件 1 在控制文件中已重命名為 E:\U01\ORADATA\ORCL\TEMP01.DBF
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
啟動 restore 于 26-2月 -16
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在開始還原數據文件備份集
通道 ORA_AUX_DISK_1: 正在指定從備份集還原的數據文件
通道 ORA_AUX_DISK_1: 將數據文件 00001 還原到 E:\U01\ORADATA\ORCL\SYSTEM01.DBF
通道 ORA_AUX_DISK_1: 將數據文件 00002 還原到 E:\U01\ORADATA\ORCL\SYSAUX01.DBF
通道 ORA_AUX_DISK_1: 將數據文件 00006 還原到 E:\U01\ORADATA\ORCL\GIS02.DBF
通道 ORA_AUX_DISK_1: 將數據文件 00008 還原到 E:\U01\ORADATA\ORCL\GIS04.DBF
通道 ORA_AUX_DISK_1: 將數據文件 00010 還原到 E:\U01\ORADATA\ORCL\GIS06.DBF
通道 ORA_AUX_DISK_1: 將數據文件 00012 還原到 E:\U01\ORADATA\ORCL\GIS08.DBF
通道 ORA_AUX_DISK_1: 將數據文件 00014 還原到 E:\U01\ORADATA\ORCL\GIS10.DBF
通道 ORA_AUX_DISK_1: 正在讀取備份片段 D:\ORABAK\ORCL_FULL_DB_ORCL_20160226_39QUSTI8.BAK
通道 ORA_AUX_DISK_1: 段句柄 = D:\ORABAK\ORCL_FULL_DB_ORCL_20160226_39QUSTI8.BAK 標記 = TAG20160226T105816
通道 ORA_AUX_DISK_1: 已還原備份片段 1
通道 ORA_AUX_DISK_1: 還原完成, 用時: 02:08:38
通道 ORA_AUX_DISK_1: 正在開始還原數據文件備份集
通道 ORA_AUX_DISK_1: 正在指定從備份集還原的數據文件
通道 ORA_AUX_DISK_1: 將數據文件 00003 還原到 E:\U01\ORADATA\ORCL\UNDOTBS01.DBF
通道 ORA_AUX_DISK_1: 將數據文件 00004 還原到 E:\U01\ORADATA\ORCL\USERS01.DBF
通道 ORA_AUX_DISK_1: 將數據文件 00005 還原到 E:\U01\ORADATA\ORCL\GIS01.DBF
通道 ORA_AUX_DISK_1: 將數據文件 00007 還原到 E:\U01\ORADATA\ORCL\GIS03.DBF
通道 ORA_AUX_DISK_1: 將數據文件 00009 還原到 E:\U01\ORADATA\ORCL\GIS05.DBF
通道 ORA_AUX_DISK_1: 將數據文件 00011 還原到 E:\U01\ORADATA\ORCL\GIS07.DBF
通道 ORA_AUX_DISK_1: 將數據文件 00013 還原到 E:\U01\ORADATA\ORCL\GIS09.DBF
通道 ORA_AUX_DISK_1: 正在讀取備份片段 D:\ORABAK\ORCL_FULL_DB_ORCL_20160226_38QUSTI8.BAK
通道 ORA_AUX_DISK_1: 段句柄 = D:\ORABAK\ORCL_FULL_DB_ORCL_20160226_38QUSTI8.BAK 標記 = TAG20160226T105816
通道 ORA_AUX_DISK_1: 已還原備份片段 1
通道 ORA_AUX_DISK_1: 還原完成, 用時: 02:36:38
完成 restore 于 26-2月 -16
內存腳本的內容:
{
switch clone datafile all;
}
正在執行內存腳本
數據文件 1 已轉換成數據文件副本
輸入數據文件副本 RECID=2 STAMP=904861333 文件名=E:\U01\ORADATA\ORCL\SYSTEM01.DBF
數據文件 2 已轉換成數據文件副本
輸入數據文件副本 RECID=3 STAMP=904861334 文件名=E:\U01\ORADATA\ORCL\SYSAUX01.DBF
數據文件 3 已轉換成數據文件副本
輸入數據文件副本 RECID=4 STAMP=904861334 文件名=E:\U01\ORADATA\ORCL\UNDOTBS01.DBF
數據文件 4 已轉換成數據文件副本
輸入數據文件副本 RECID=5 STAMP=904861334 文件名=E:\U01\ORADATA\ORCL\USERS01.DBF
數據文件 5 已轉換成數據文件副本
輸入數據文件副本 RECID=6 STAMP=904861334 文件名=E:\U01\ORADATA\ORCL\GIS01.DBF
數據文件 6 已轉換成數據文件副本
輸入數據文件副本 RECID=7 STAMP=904861334 文件名=E:\U01\ORADATA\ORCL\GIS02.DBF
數據文件 7 已轉換成數據文件副本
輸入數據文件副本 RECID=8 STAMP=904861334 文件名=E:\U01\ORADATA\ORCL\GIS03.DBF
數據文件 8 已轉換成數據文件副本
輸入數據文件副本 RECID=9 STAMP=904861334 文件名=E:\U01\ORADATA\ORCL\GIS04.DBF
數據文件 9 已轉換成數據文件副本
輸入數據文件副本 RECID=10 STAMP=904861335 文件名=E:\U01\ORADATA\ORCL\GIS05.DBF
數據文件 10 已轉換成數據文件副本
輸入數據文件副本 RECID=11 STAMP=904861335 文件名=E:\U01\ORADATA\ORCL\GIS06.DBF
數據文件 11 已轉換成數據文件副本
輸入數據文件副本 RECID=12 STAMP=904861335 文件名=E:\U01\ORADATA\ORCL\GIS07.DBF
數據文件 12 已轉換成數據文件副本
輸入數據文件副本 RECID=13 STAMP=904861335 文件名=E:\U01\ORADATA\ORCL\GIS08.DBF
數據文件 13 已轉換成數據文件副本
輸入數據文件副本 RECID=14 STAMP=904861335 文件名=E:\U01\ORADATA\ORCL\GIS09.DBF
數據文件 14 已轉換成數據文件副本
輸入數據文件副本 RECID=15 STAMP=904861335 文件名=E:\U01\ORADATA\ORCL\GIS10.DBF
完成 Duplicate Db 于 26-2月 -1612.將主庫的LOG_ARCHIVE_DEST_STATE_2設置為ENABLE
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2='ENABLE';
13.添加standby redo log --如本身主庫已建立standby redo log,此步驟可省去
SQL> select member from v$logfile;
#主庫增加 STANDBY LOGFILE
ALTER DATABASE ADD STANDBY LOGFILE group 4('E:\u01\oradata\standby_log\slog1.rdo') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE group 5('E:\u01\oradata\standby_log\slog2.rdo') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE group 6('E:\u01\oradata\standby_log\slog3.rdo') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE group 7('E:\u01\oradata\standby_log\slog4.rdo') SIZE 200M;#備庫增加STANDBY LOGFILE
SQL> select member from v$logfile;
ALTER DATABASE ADD STANDBY LOGFILE group 4('E:\u01\oradata\standby_log\slog1.rdo') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE group 5('E:\u01\oradata\standby_log\slog2.rdo') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE group 6('E:\u01\oradata\standby_log\slog3.rdo') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE group 7('E:\u01\oradata\standby_log\slog4.rdo') SIZE 200M;14.最后在備庫開啟active dataguard
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; SQL> ALTER DATABASE OPEN; SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
到此,相信大家對“怎么搭建dataguard”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。