ORACLE RAC資料庫配置Dataguard環境(3)
三、角色切換
將一套單例項資料庫轉換成RAC,最快捷的方式是什麼,假設條件允許,我覺著首選就應當是Dataguard的switchover,如果一切順利,甚至只需要短短几分鐘就能夠完成轉換的操作。由於環境所限,這裡我們來實際演示一個案例,將一套RAC資料庫切換為單例項,嘻嘻,僅做示例,這個會了,那單例項轉換RAC也沒啥問題的!
進行切換前要對當前環境進行檢查,一個是要確保切換的正確執行,再一個也要確保切換後資料庫的Dataguard配置不會被破壞。有朋友可能會問,當前Dataguard跑的好好的,難道切換下角色就有可能導致Dataguard不正常嗎?
老實講這太可能了,就像談戀愛的倆人關係再好,要是有其中一人搬了家,新地址卻沒讓另一半知道,那這兩人的關係肯定就斷了,起碼是要中斷一段時間(細心品味的話,這段描述也說明,即使準備不好導致Dataguard出現了一些問題也表怕,還是會有補救措施的,比如,趕緊找找相熟的打聽打聽新地址)。因此無論做什麼樣的切換,最起碼也要保證雙方還能互動吧,這裡我們要做的檢查,也正是確保不論角色怎麼換,兩方的緊(親)密聯絡不會被中斷。
角色切換後,原Primary變成了Standby,而原Standby變成了新的Primary(假設該Dataguard配置為一主一備的前提下),因此這裡首先檢查兩端log_archive_dest_n引數的設定,首先來看Primary資料庫:
SQL> set sqlprompt "JSSDB> "
JSSDB> show parameter log_archive_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string
log_archive_dest_1 string location=/data/oradata/jssdbn1
/archivelog
log_archive_dest_10 string
log_archive_dest_2 string service=jssstd lgwr async vali
d_for=(online_logfiles,primary
_role) db_unique_name=jssstd
log_archive_dest_3 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
log_archive_dest_7 string
log_archive_dest_8 string
log_archive_dest_9 string
log_archive_dest_state_1 string enable
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
JSSDB> show parameter fal;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_client string
fal_server string
JSSDB> show parameter file_name_convert;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
log_file_name_convert string
JSSDB> show parameter standby_file_management;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string MANUAL再來看看Standby:
SQL> set sqlprompt "JSSSTD> "
JSSSTD> show parameter log_archive_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string
log_archive_dest_1 string location=/data1/jssstd/arclog
valid_for=(all_logfiles,all_ro
les) db_unique_name=jssstd
log_archive_dest_10 string
log_archive_dest_2 string
log_archive_dest_3 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
log_archive_dest_7 string
log_archive_dest_8 string
log_archive_dest_9 string
log_archive_dest_state_1 string enable
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
JSSSTD> show parameter fal
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_client string JSSSTD
fal_server string jssdbn1, jssdbn2
JSSSTD> show parameter file_name_convert
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string +ASMDISK1/jssdb/datafile, /dat
a1/jssstd, +ASMDISK1/jssdb/tem
pfile, /data1/jssstd
log_file_name_convert string +ASMDISK1/jssdb/onlinelog, /da
ta1/jssstd
JSSSTD> show parameter standby_file_management
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string AUTO其實根本不用看,肯定不合格,因為前面就沒配過,從上述返回資訊可以看出,Standby沒有任何向Primary傳送歸檔的設定,Primary端也沒有fal相關的設定,像*_file_name_convert這類引數也未設定,另外standby redo等也不用看了,前面也根本未建立(不過對於測試環境,這個問題倒也不影響),接下來就是要改這些初始化引數,操作如下:
JSSDB> alter system set fal_server=jssstd;
System altered.
JSSDB> alter system set fal_client=jssdb;
System altered.
JSSDB> alter system set db_file_name_convert=¨/data1/jssstd¨,¨+ASMDISK1/jssdb¨ scope=spfile;
System altered.
JSSDB> alter system set log_file_name_convert=¨/data1/jssstd¨,¨+ASMDISK1/jssdb¨ scope=spfile;
System altered.
JSSSTD> alter system set log_archive_dest_2=¨service=jssdb lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=jssdb¨;
System altered.引數修改完畢,接下來開始進行角色轉換。就本例而言,需要先到Primary端關閉其它例項僅保留一臺例項,然後執行下列語句:
JSSDB> alter database commit to switchover to physical standby with session shutdown;
Database altered.with session shutdown 子句專門用來處理,執行轉換操作時仍有使用者在連線的情況,如果附加了該子句,Primary資料庫執行switchover,就會自動斷開仍在連線該例項的無關會話。
重啟原Primary,重啟過後原Primary就是在以Standby身份執行了:
JSSDB> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
JSSDB> startup mount
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 2083368 bytes
Variable Size 176162264 bytes
Database Buffers 100663296 bytes
Redo Buffers 6303744 bytes
Database mounted.
JSSDB> select DATABASE_ROLE,open_mode from v$database;
DATABASE_ROLE OPEN_MODE
---------------- ----------
PHYSICAL STANDBY MOUNTED轉到原Standby端操作:
JSSSTD> alter database commit to switchover to primary;
Database altered.注意,此時Standby要確保已啟動REDO應用,否則轉換時有可能失敗。
重新啟動原Standby:
JSSSTD> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
JSSSTD> startup
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 2083368 bytes
Variable Size 88081880 bytes
Database Buffers 188743680 bytes
Redo Buffers 6303744 bytes
Database mounted.
Database opened.
JSSSTD> select DATABASE_ROLE,open_mode from v$database;
DATABASE_ROLE OPEN_MODE
---------------- ----------
PRIMARY READ WRITE新的Primary誕生了,切換下日誌,看看Standby端的接收是否正常:
JSSSTD> select thread#,max(sequence#) from v$archived_log group by thread#;
THREAD# MAX(SEQUENCE#)
---------- --------------
1 311
2 144
JSSSTD> alter system switch logfile;
System altered.
JSSSTD> select thread#,max(sequence#) from v$archived_log group by thread#;
THREAD# MAX(SEQUENCE#)
---------- --------------
1 312
2 144由於新的Primary只有一個例項,因此其實我們只需要關注thread#1生成的日誌即可,轉到新的Standby看看:
JSSDB> select thread#,max(sequence#) from v$archived_log group by thread#;
THREAD# MAX(SEQUENCE#)
---------- --------------
1 312
2 144成功接收,角色轉換基本成功鳥!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-662027/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE RAC資料庫配置Dataguard環境(2)Oracle資料庫
- ORACLE RAC資料庫配置Dataguard環境(1)Oracle資料庫
- Oracle10g RAC環境下 DataGuard備庫搭建例項-3-eygleOracle
- RAC+Dataguard環境中JDBC Failover配置JDBCAI
- Oracle10g RAC環境下DataGuard備庫搭建例項Oracle
- Oracle10g RAC環境下DataGuard備庫搭建例項-eygleOracle
- RAC環境下dataguard的搭建
- 從單例項資料庫轉換到RAC環境——RAC的建立和配置單例資料庫
- Oracle10g RAC環境下 DataGuard備庫搭建例項-2-eygleOracle
- Oracle10g RAC環境下 DataGuard備庫搭建例項-1-eygleOracle
- RAC環境利用備份恢復RAC資料庫(五)資料庫
- RAC環境利用備份恢復RAC資料庫(四)資料庫
- RAC環境利用備份恢復RAC資料庫(三)資料庫
- RAC環境利用備份恢復RAC資料庫(二)資料庫
- RAC環境利用備份恢復RAC資料庫(一)資料庫
- Docker環境Oracle資料庫搭建DockerOracle資料庫
- 搭建rac+DataGuard的測試環境
- Oracle10g RAC環境下 DataGuard備庫搭建例項-4-自己補Oracle
- rman 可否克隆rac資料庫到另外一個rac環境的資料庫中?資料庫
- rac環境下standby資料庫的實現資料庫
- 【RAC】rac環境下的資料庫備份與還原資料庫
- RAC和Dataguard環境下主備庫切換演練模板
- Linux環境配置DBD::Oracle,幫助Perl連線Oracle資料庫LinuxOracle資料庫
- 成功恢復無備份RAC環境資料庫資料庫
- RAC環境只啟動單例項資料庫單例資料庫
- RAC環境的STANDBY資料庫備份報錯資料庫
- RAC環境中的資料庫部署技術——RAC部署和效能資料庫
- ORACLE資料庫dataguard配置,rman移機,dx鎖處Oracle資料庫
- 配置 Oracle 10g RAC primary + RAC physical standby dataguardOracle 10g
- ORACLE資料庫Dataguard dg brokerOracle資料庫
- oracle rac + dataguardOracle
- python環境連結Oracle資料庫PythonOracle資料庫
- oracle rac 環境檢測Oracle
- RAC環境下單例項啟動Oracle資料庫重建控制檔案案例單例Oracle資料庫
- 【Dataguard】Oracle多租戶環境對Dataguard的影響Oracle
- ORACLE DATAGUARD 資料庫---建立物理備用資料庫Oracle資料庫
- Oracle資料庫 檔案系統與裸裝置之間的轉換(RAC環境)Oracle資料庫
- ORACLE RAC 環境下修改IPOracle