Oracle 11g DataGuard Physical Standby 測試環境搭建 For windows
參考了官方文件和網上資料,自己也做了一下在windows平臺上關於Oracle 11g的測試環境搭建,把其中的過程和碰見問題後怎麼解決的記錄下來跟大家分享。
測試環境:
作業系統平臺:Windows7 旗艦版64位
Oracle版本:11.2.0.1.0 32bit (32位版本裝在64位平臺日誌檔案會出現很多O/S-Error的錯誤)
機器:Primary(sid:orcldb)、Standby(sid:orcldb)
DataGuard型別:Physical STANDBY
一、搭建步驟:
1,安裝資料庫軟體
2,主庫primary配置
3,備庫standby配置
4,測試DG
5,測試Active DataGuard
6,測試switchover
1.1 安裝資料庫軟體
使用安裝包就行了,安裝完資料庫軟體以後,使用dbca建立主庫Primary。此處略。
1.2 主庫primary配置
配置監聽和tnsnames,使用netca新建listener並編輯listener.ora和tnsnames.ora,檔案路徑Oracle_home\NETWORK\ADMIN。
listener.ora
# listener.ora Network Configuration File: e:\app\admin\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:\app\admin\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:e:\app\admin\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = orcldb)
(ORACLE_HOME = e:\app\admin\product\11.2.0\dbhome_1)
(SID_NAME = orcldb)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.110)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
配置完後在dos下重啟監聽:
lsnrctl stop
lsnrctl start
listener.ora配置完成。
tnsnames.ora
用Net manager新增主庫和備庫的tns。然後主庫備庫互相tnsping測試是否相同:
PRIMARY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcldb)
)
)
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.110)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcldb)
)
)
ADR_BASE_LISTENER = E:\app\admin
tnsping primary
tnsping standbytnsnames配置完成。
設定主庫歸檔模式,檢視是否為歸檔:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination E:\app\admin\oradata\archive
Oldest online log sequence 73
Next log sequence to archive 75
Current log sequence 75
如果為Disabled,執行:
SQL> alter database archivelog;
檢視並設定設定強制歸檔:
SQL> alter database force logging;
SQL> select force_logging from v$database;
FORCE_LOGGING
-------------
YES
主庫歸檔配置完成。
新增主庫standby聯機日誌,Oracle建議比線上日誌多一組,這裡我只添加了3組:
SQL>alter database add standby logfile group 4'E:\app\admin\oradata\ORCL\ONLINELOG\redo04.log' size 50m;
SQL>alter database add standby logfile group 5'E:\app\admin\oradata\ORCL\ONLINELOG\redo05.log' size 50m;
SQL>alter database add standby logfile group 6'E:\app\admin\oradata\ORCL\ONLINELOG\redo06.log' size 50m;編輯主庫引數檔案:
建立主庫pfile
SQL> create pfile='e:\primary.ora' from spfile;
File created.
開啟primary.ora新增以下引數:
*.db_name='orcl'
*.log_archive_format='ARC_%T%S%r.ARC'
*.DB_UNIQUE_NAME='primary'
*.log_archive_config='DG_CONFIG=(primary,standby)'
*.log_archive_dest_1='location=E:\app\admin\oradata\archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary'
*.log_archive_dest_2='SERVICE=standby ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.FAL_SERVER='standby'
*.FAL_CLIENT='primary'
*.STANDBY_FILE_MANAGEMENT=AUTO
注意這裡log_archive_dest_2.後service是為OracleNet的tnsnames。
注:其中可能需要修改控制檔案的數量等,在配置的時候我新增了2組控制檔案,但是在引數檔案忘記修改控制檔案路徑了,啟動的時候oracle會報錯,如果要修改控制檔案的話記得把引數檔案的路徑也一併修改了。
儲存退出。
Oracle官網關於引數的解釋:
DB_NAME
On a primary database, specify the name used when the database was created. On a physical standby database, use theDB_NAME
of the primary database.
DB_UNIQUE_NAME
Specify a unique name for each database. This name stays with the database and does not change, even if the primary and standby databases reverse roles.
LOG_ARCHIVE_CONFIG
The DG_CONFIG
attribute of this parameter must be explicitly set on each database in a Data Guard configuration to enable full Data Guard functionality. SetDG_CONFIG
to a text
string that contains the DB_UNIQUE_NAME
of each database in the configuration, with each name in this list separated by a comma.
CONTROL_FILES
Specify the path name for the control files on the primary database.Example 3-1
shows how to do this for two control files. It is recommended that a second copy of the control file is available so an instance can be easily restarted after copying the good control file to the location of the bad control file.
LOG_ARCHIVE_DEST_n
Specify where the redo data is to be archived on the primary and standby systems. InExample
3-1:
-
LOG_ARCHIVE_DEST_1
archives redo data generated by the primary database from the local online redo log files to the local archived redo log files in /arch1/chicago/. -
LOG_ARCHIVE_DEST_2
is valid only for the primary role. This destination transmits redo data to the remote physical standby destinationboston
.
Note: If a fast recovery area was configured (with theDB_RECOVERY_FILE_DEST
initialization parameter) and you have not explicitly configured a local archiving destination with theLOCATION
attribute, Data
Guard automatically uses the LOG_ARCHIVE_DEST_1
initialization parameter (if it has not already been set) as the default destination for local archiving. Also, seeChapter
15 for complete LOG_ARCHIVE_DEST_
n
information.
LOG_ARCHIVE_DEST_STATE_n
Specify ENABLE
to allow redo transport services to transmit redo data to the specified destination.
REMOTE_LOGIN_PASSWORDFILE
This parameter must be set toEXCLUSIVE
orSHARED
if a remote login password file is used to authenticate administrative users or redo transport sessions.
LOG_ARCHIVE_FORMAT
Specify the format for the archived redo log files using a thread (%t), sequence number (%s), and resetlogs ID (%r).
FAL_SERVER
Specify the Oracle Net service name of the FAL server (typically this is the database running in the primary role). When the Chicago database is running in the standby role, it uses the Boston database
as the FAL server from which to fetch (request) missing archived redo log files if Boston is unable to automatically send the missing log files.
DB_FILE_NAME_CONVERT
Specify the path name and filename location of the standby database datafiles followed by the primary location. This parameter converts the path names of the primary database datafiles to the standby
datafile path names. If the standby database is on the same system as the primary database or if the directory structure where the datafiles are located on the standby site is different from the primary site, then this parameter is required. Note that this
parameter is used only to convert path names for physical standby databases. Multiple pairs of paths may be specified by this parameter.
LOG_FILE_NAME_CONVERT
Specify the location of the standby database online redo log files followed by the primary location. This parameter converts the path names of the primary database log files to the path names on the standby
database. If the standby database is on the same system as the primary database or if the directory structure where the log files are located on the standby system is different from the primary system, then this parameter is required. Multiple pairs of paths
may be specified by this parameter.
STANDBY_FILE_MANAGEMENT
Set to AUTO
so when datafiles are added to or dropped from the primary database, corresponding changes are made automatically to the standby database.
使用新編輯的primary.ora啟動資料庫
SQL> shutdown immediate;
SQL> startup pfile='e:\primary.ora' mount;
SQL> create spfile from pfile=‘e:\primary.ora'; -- 寫入spfile
再關閉重啟例項,重建多一次pfile
SQL> create pfile='e:\std.ora' from spfile;
修改std.ora
*.db_name='orcl'
*.log_archive_format='ARC_%T%S%r.ARC'
*.DB_UNIQUE_NAME='standby'
*.log_archive_config='DG_CONFIG=(primary,standby)'
*.log_archive_dest_1='location=E:\app\admin\oradata\archiveVALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby'
*.log_archive_dest_2='SERVICE=primary ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primary'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.FAL_SERVER='primary'
*.FAL_CLIENT=standby''
*.STANDBY_FILE_MANAGEMENT=AUTO
注意這裡log_archive_dest_2.後service是為OracleNet的tnsnames。
儲存退出。
建立standby controlfile
SQL> alter database create standby controlfile as 'e:\std.ctl';
改名並複製3份,control01.ctl control02.ctl control03.ctl
啟動主資料庫
SQL> alter database open;
1.3,備庫standby配置
準備主庫的standby控制檔案、std.ora引數檔案、密碼檔案(ORACLE_HOME\database\PWDsid.ora)複製到備庫,所有資料檔案、聯機日誌檔案複製到備庫(需關閉主庫例項後手工複製,如不停機需要用rman進行備庫恢復),保證主庫備庫的目錄結構一致。
Rman恢復參考:
主庫備份:
rman target /
RMAN> backup full format 'E:/FULL_%d_%T_%s.bak' database include current controlfile for standby;
RMAN> sql 'alter system archive log current';
RMAN> Backup ArchiveLog all format='E:/arch_%d_%T_%s.bak';
恢復:把備份檔案拷貝到備庫E盤
$rman target sys/[email protected] auxiliary /
RMAN> duplicate target database for standby dorecover nofilenamecheck;
注:之後再測試環境主庫執行open resetlogs後重建DG用了RMAN恢復備庫的方法,很效率,推薦使用!rman恢復就重建完畢了,可以測試。
配置listener和tnsnames,和主庫一致就可以了。
DOS下備庫例項建立:
oradim.exe -new -sid orcldb -startmode m
注意:檢視系統Oracle服務的listener和例項服務是否為自動啟動,本人疏忽了這2個地方每次在重啟都會出現一些莫名其妙的問題查了半天原來是自己沒設定好。
使用std.ora啟動備庫
SQL> startup pfile='e:\std.ora' nomount;
SQL> create spfile from pfile='e:\std.ora';
SQL> shutdown immediate;
SQL> startup nomount;
SQL> alter database mount standby database;
檢視日誌路徑:
SQL> select * from v$log;
設定應用歸檔
SQL> alter database recover managed standby database disconnect from session;
取消應用歸檔
SQL> alter database recover managed standby database cancel;
備庫配置完成。
1.4 測試DG
DG 測試環境搭建完成,測試是否正常:
在主庫檢視是否有錯誤,有錯誤可能是引數檔案沒有配置正確,我之前試過一次是備庫引數檔案沒有修改好(主要是一些TNS的問題):
SQL> SELECT STATUS,DESTINATION, ERROR FROM V$ARCHIVE_DEST;
在主庫切換日誌,檢視備庫歸檔路徑是否有最新的歸檔日誌傳送過來。
SQL> Alter system switch logfile;
主庫備庫是否一致:
SQL> select max(sequence#) from v$log_history;
MAX(SEQUENCE#)
--------------
58
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
58
檢視日誌傳輸情況:
SQL> SELECT PROCESS,CLIENT_PROCESS,SEQUENCE#, STATUS FROM V$MANAGED_STANDBY;
檢視歸檔應用情況:
SEQUENCE# APPLIED
---------- ---------
56 YES
57 YES
57 YES
58 YES
監控程序歸檔應用情況:
SQL> SELECT APPLIED_SCN,LATEST_SCN FROM V$LOGSTDBY_PROGRESS;
PROCESS CLIENT_PROCESS SEQUENCE# STATUS
--------- -------------- ---------- ------------
ARCH ARCH 77 CLOSING
ARCH ARCH 78 CLOSING
ARCH ARCH 0 CONNECTED
ARCH ARCH 0 CONNECTED
RFS N/A 0 IDLE
RFS UNKNOWN 0 IDLE
MRP0 N/A 79 WAIT_FOR_LOG
RFS UNKNOWN 0 IDLE
DG測試成功。
1.5,測試Active DataGuard(11g新功能,能開啟DB進行實時查詢)
備庫執行,取消應用歸檔
SQL>alter database recover managed standby database cancel;
開啟資料庫Read only模式(Oracle會檢測到備庫為物理standby,會啟動備庫ReadOnly模式)
SQL>alter database open;
修改備庫模式為收到日誌後完成恢復
SQL>alter database recover managed standby database using current logfile disconnect;
檢視資料庫開啟狀態
SQL>select open_mode from v$database;
OPEN_MODE--------------------
READ ONLY WITH APPLY
測試實時查詢時在主庫執行建立Tablespace和資料檔案,然後再建立表和表資料等,提交完了之後再備庫查詢是否能實施查詢到,如果可以就成功了。在執行的時候可以檢視主庫的alert.log檔案,在備庫也查詢此檔案可以看出變化。
測試執行DML語句後在備庫實時查詢,這裡我測試的情況不是實時查詢的,一定要主庫切換日誌備庫應用歸檔之後才能查詢到,如果遇到這個問題解決了的話留言分享一下(問題解決了,是我在配置引數檔案的時候沒有新增standby_file_management的auto值,導致執行建立表空間和資料檔案同步到備庫時出錯具體可以看http://blog.csdn.net/seulk_q/article/details/42092357)。
在主庫驗證歸檔目錄是否有效:
SQL> SELECT STATUS,DESTINATION, ERRORFROM V$ARCHIVE_DEST;
ACTIVE DATAGUARD測試成功。
DG搭建常用命令:
select max(sequence#) from v$log_history;
select max(sequence#) from v$archived_log;
SELECT STATUS,DESTINATION,ERROR FROM V$ARCHIVE_DEST;
alterdatabase recover managed standby database using current logfile disconnect;
alterdatabase recover managed standby database cancel;
SELECT PROCESS,CLIENT_PROCESS,SEQUENCE#, STATUS FROM V$MANAGED_STANDBY;
SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG;
SELECT APPLIED_SCN,LATEST_SCN FROM V$LOGSTDBY_PROGRESS;
alter system switch logfile;
6,測試switchover和failover
switchover
主庫上檢視角色切換是否能夠滿足
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO STANDBY
注意:備庫在主庫做切換之前SWITCHOVER_STATUS表現為not_allowed
主庫執行物理備庫切換
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICALSTANDBY WITH SESSION SHUTDOWN;
SQL> SHUTDOWN ABORT;
SQL> STARTUP MOUNT;
檢視原主庫狀態
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; SWITCHOVER_STATUS
-----------------
TO PRIMARY
取消備庫應用歸檔
SQL> alter database recover managedstandby database cancel;
Database altered.
SQL> SELECT SWITCHOVER_STATUS FROMV$DATABASE;
SWITCHOVER_STATUS
--------------------
SWITCHOVER PENDING
SQL> ALTER DATABASE COMMIT TO SWITCHOVERTO PRIMARY WITH SESSION SHUTDOWN;
ALTER DATABASE COMMIT TO SWITCHOVER TOPRIMARY WITH SESSION SHUTDOWN
*
ERROR at line 1:
ORA-16139: 需要介質恢復
SQL> alter database recover managedstandby database disconnect from session;
SQL> alter database recover managedstandby database cancel;SQL> SELECT SWITCHOVER_STATUS FROMV$DATABASE;
SWITCHOVER_STATUS
--------------------
TO PRIMARY
SQL> ALTER DATABASE COMMIT TO SWITCHOVERTO PRIMARY WITH SESSION SHUTDOWN;
Database altered.
SQL> alter database open;
Database altered.
SQL> SELECT SWITCHOVER_STATUS FROMV$DATABASE;
SWITCHOVER_STATUS
--------------------
TO STANDBY
主庫備庫切換成功。小結:雖然在官方文件上步驟上說明上都寫得很清楚,但是具體為什麼要這樣做還是值得去考究的,比如說standby聯機日誌為什麼要比聯機日誌多一組等,還是要通過不斷學習和做實驗來增加經驗才是可行的辦法。
相關推薦
Oracle 11g DataGuard Physical Standby 測試環境搭建 For windows
參考了官方文件和網上資料,自己也做了一下在windows平臺上關於Oracle 11g的測試環境搭建,把其中的過程和碰見問題後怎麼解決的記錄下來跟大家分享。 測試環境: 作業系統平臺:Windows7 旗艦版64位 Oracle版本:11.2.0.1.0 32bit (32
Appium Android測試環境搭建 for Mac
detail 資源 and 搭建 car log nbsp www 查找 Appium Android測試環境搭建 涉及的資源,工具都很多 ,從網上各種資料查找,整合一下資源,針對小白級別。 1、Appium安裝: 轉載自:http://www.cnblogs.com/os
Laravel-Homestead 開發環境搭建 for Windows
1.百度網盤下載安裝 Git(2.16.1.4) ,Vagrant(2.2.20),Virtual Box(5.2.20) ,迅雷下載Homestead 虛擬機器盒子(lc-homestead-6.1.1-2018090400.zip). 2.解壓下載的虛擬機器盒子到任意一個目錄,我放在了
Jmeter+Ant+Jenkins介面自動化測試框架搭建for Windows
前言 軟體開發的V模型大家都不陌生,其中測試階段分為單元測試→功能測試→系統測試→驗收測試。其中單元測試一般由開發同學們自己完成,大部分測試具體實施(這裡不包括用例設計)是從單體功能測試開始著手的。 如果測試一個功能,發現主流程無法走下去,也就是介面不通,這時再打回去開發手裡繼續改,改
openstack controller ha測試環境搭建記錄(十四)——配置cinder(存儲節點)
nbsp 設置 ntp reason script snap rate 文件 esc 先簡述cinder存儲節點的配置: 1、IP地址是10.0.0.41; 2、主機名被設置為block1; 3、所有節點的hosts文件已添加相應條目; 4、已經配置了ntp時間同
openstack controller ha測試環境搭建記錄(十一)——配置neutron(網絡節點)
efault delete none _for set ext ranges tar edr 在網絡節點配置內核參數:vi /etc/sysctl.confnet.ipv4.ip_forward=1net.ipv4.conf.all.rp_filter=0net.ipv4.
【Android進階】Junit單元測試環境搭建以及簡單有用
rar theme 選擇 http 技術分享 才幹 ack package family 單元測試的目的 首先。Junit單元測試要實現的功能,就是用來測試寫好的方法是否可以正確的運行,一般多用於對業務方法的測試。 單元測試的環境配置 1.在Andro
Monkey測試環境搭建
luna too 如果 ftw sdk ati version java環境 shell命令 一、JAVA環境的搭建 1.安裝jdk-7u60-windows-x64(JAVA1.7.0,也可安裝最新版的JAVA1.8.0),默認安裝路徑C盤; 2.JAVA環境變量的搭
python+selenium 自動化測試環境搭建
python selenium 自動化測試 軟件測試selenium 是一個web的自動化測試工具,不少學習功能自動化的同學開始首選selenium ,相因為它相比QTP有諸多有點:* 免費,也不用再為破解QTP而大傷腦筋* 小巧,對於不同的語言它只是一個包而已,而QTP需要下載安裝1個多G 的程序。*
【轉1】Appium 1.6.3 在Xcode 8, iOS 10.2(模擬器)測試環境搭建 經驗總結
div tar post bug span trace 版本 test 4.0 Appium 1.6.3 在Xcode 8, iOS 10.2(模擬器)測試環境搭建 經驗總結 關於 Appium 1.6.3 在Xcode 8, 10.2 的iOS模擬器上的問
【轉2】Appium 1.6.3 在Xcode 8 (真機)測試環境搭建 經驗總結
原因 ftl 關於 經驗 結束 views 報錯 catch live Appium 1.6.3 在Xcode 8 (真機)測試環境搭建經驗總結 關於 Appium 1.6.3 在Xcode 8, 1真機上環境搭建問題更多,寫此文章,供大家參考,讓大家少走彎路。
REDIS-sentinel測試環境搭建(MAC)
usr lov rbo 當我 mas 恢復 環境 log dmi 最近在搭建Redis-Sentinel測試時,將遇到的問題在這標註下. 部署: 三個Sentinel實例,端口為:36379,36380,36381,將Sentinel配置文件放在同一目錄下.結果運行Sent
後臺測試環境搭建
測試環境 mysql用戶 maxperm tom chmod mysqld sta apache net 最近公司要上新項目,所以要太機器做測試,領導要求把所有服務搭建到同一臺服務器上。 開發需求:1.java 1.7.0_45 路徑:/usr/java/jdk1.0.0_
測試用例設計和測試環境搭建
返回 保存 srs spa 文件中 開發 需求規格說明書 溝通 方式 等價類 定義:1.等價:如果多個輸入在程序中處理方式相同,則認為這些輸入時等價的,測是一個即可。 2。輸入:分為兩類,有效輸入(可以保存)、無效輸入(不可保存) 3結合:有效等價類、無效等價類
oracle 11g dataguard之dgmgrl
dgmgrl snapshot環境概述:搭好Dataguard,搭建參考:http://blog.51cto.com/snowhill/1923591源:db_name:db rac備:db_name:sbdb1 單機 1 啟用dgmgrl相關參數: dg_broker_startdg_broker_con
手機自動化測試環境搭建(eclipse+python+uiautomator)
list fig finish java環境 pda 所有 開發 界面 自己 最近在公司做了一個階段的手機APP自動化測試,是在已有的環境基礎上進行腳本開發,所有對基礎的環境搭建不是很清楚,後來自己閑來無事就在家裏搭建了一下下,接下來和大家分享一下搭建過程。 一:搭建手機A
Oracle 11g Dataguard 暫停物理備庫的日誌傳輸
oracleOracle 11g Dataguard 暫停物理備庫的日誌傳輸分類: Oracle2017-07-18 10:03:17這兩天生產端的日誌產生過多導致災備端的歸檔日誌目錄滿的現象,在清除災備端的日誌後發現log_archive_dest_2處於error狀態,需要將其enable。在實際生產系統
Web自動化測試環境搭建1(基於firefox火狐瀏覽器)
ktr gecko 激情 後臺 自動更新 fire 這一 把手 HA 自動化測試是時代趨勢,因此很多測試人員開始研究自動化測試,web自動化測試化測試並不難,但是很多人都是被擋在了環境搭建這一步,後面學習激情全無,這裏,韜哥手把手教大家搭建火狐瀏覽器下的自動化測試環境(
Appium+python移動端自動化測試-環境搭建(一)
過程 .com oid pytho 安裝環境 測試 ID alt ppi 搭建所在系統環境:Windows7版本64位系統 一、環境準備 jdk8.0.151 android-sdk_r20.3.4-windows python3.5 appium1.4.16
https,https的本地測試環境搭建,asp.net結合https的代碼實現,http網站轉換成https網站之後遇到的問題
基本 解密 req with 網址 orm forms 訪問 art 一:什麽是https SSL(Security Socket Layer)全稱是加密套接字協議層,它位於HTTP協議層和TCP協議層之間,用於建立用戶與服務器之間的加密通信,確保所傳遞信息的安全性