Oracle RAC引數設定優先順序別問題分析
通常oracle引數檔案優先順序別都比較清楚,spfilesid.ora>spfile.ora>initsid.ora>init.ora,
那麼引數設定的優先順序別又是怎麼樣的?
問題:
在rac環境下,修改引數,可以指定sid='*',也可以指定sid='sid',那麼在spfile引數檔案中,
對同一個引數,sid='*'和sid='sid'記錄不同的值,重啟例項後,哪個值會優先生效呢。
結論:
例如一套兩節點RAC,dbname為cjcdb,例項1和2分別是cjcdb1和cjcdb2,初始設定歸檔路徑如下:
SQL> alter system set log_archive_dest_1='location=+ARCH/arch1' sid='cjcdb1'; SQL> alter system set log_archive_dest_1='location=+ARCH/arch2' sid='cjcdb2';
後來由於某種原因,需要更改歸檔目錄,將例項1和例項2歸檔路徑都統一設定為+ARCH/arch目錄,
執行如下命令:
SQL> alter system set log_archive_dest_1='location=+ARCH/arch' sid='*';
此時記憶體和spfile引數檔案中的log_archive_dest_1引數都已經修改為+ARCH/arch,
當前歸檔目錄也變成了+ARCH/arch目錄,
此時引數檔案sfile中記錄log_archive_dest_1引數的值有三個,分別是:
SID NAME TYPE VALUE -------- ----------------------------- ----------- ---------------------------- * log_archive_dest_1 string location=+ARCH/arch cjcdb1 log_archive_dest_1 string location=+ARCH/arch1 cjcdb2 log_archive_dest_1 string location=+ARCH/arch2
那麼如果重啟例項後,log_archive_dest_1值會變回原+ARCH/arch1和+ARCH/arch2值。
即,重啟後sid='例項名'引數優先順序高於sid='*';
實驗過程如下:
一:配置資料庫歸檔路徑
[grid@vmrh74db02 ~]$ asmcmd ASMCMD> cd ARCH ASMCMD> mkdir arch1 ASMCMD> mkdir arch2 SQL> alter system set log_archive_dest_1='location=+ARCH/arch1' sid='cjcdb1'; SQL> alter system set log_archive_dest_1='location=+ARCH/arch2' sid='cjcdb2';
SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination +ARCH/arch1 Oldest online log sequence 533 Next log sequence to archive 534 Current log sequence 534
SQL> show parameter log_archive_dest_1 NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_1 string location=+ARCH/arch1
SQL> show spparameter log_archive_dest_1 SID NAME TYPE VALUE -------- ----------------------------- ----------- ---------------------------- cjcdb1 log_archive_dest_1 string location=+ARCH/arch1 cjcdb2 log_archive_dest_1 string location=+ARCH/arch2
二:修改歸檔路徑
SQL> alter system set log_archive_dest_1='location=+ARCH/arch' sid='*'; System altered.
三:檢視引數資訊
例項1和例項2當前歸檔路徑已經修改成+ARCH/arch。
SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination +ARCH/arch Oldest online log sequence 534 Next log sequence to archive 535 Current log sequence 535
SQL> show parameter log_archive_dest_1 NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_1 string location=+ARCH/arch
此時spfile存在三個值。
SQL> show spparameter log_archive_dest_1 SID NAME TYPE VALUE -------- ----------------------------- ----------- ---------------------------- * log_archive_dest_1 string location=+ARCH/arch cjcdb1 log_archive_dest_1 string location=+ARCH/arch1 cjcdb2 log_archive_dest_1 string location=+ARCH/arch2
四:重啟例項
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 3724607488 bytes Fixed Size 2258760 bytes Variable Size 1006635192 bytes Database Buffers 2701131776 bytes Redo Buffers 14581760 bytes Database mounted. Database opened.
五:檢視當前歸檔目錄
重啟例項後,歸檔路徑又變回原來的路徑,之前sid='*'級別的修改沒有生效。
SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination +ARCH/arch1 Oldest online log sequence 535 Next log sequence to archive 536 Current log sequence 536
SQL> show parameter log_archive_dest_1 NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_1 string location=+ARCH/arch1
SQL> show spparameter log_archive_dest_1 SID NAME TYPE VALUE -------- ----------------------------- ----------- ---------------------------- * log_archive_dest_1 string location=+ARCH/arch cjcdb1 log_archive_dest_1 string location=+ARCH/arch1 cjcdb2 log_archive_dest_1 string location=+ARCH/arch2
六:可能存在的問題
可以考慮如下場景,生產環境下一開始rac例項的歸檔目錄分別在各自伺服器本地檔案系統上,例如/arch1和/arch2。
後來出於某種原因,建立了單獨的歸檔ASM磁碟組,將歸檔目錄改到了ASM磁碟組下,
後來的某一天,又因為某種原因,重啟了資料庫例項,此時歸檔路徑又會被重置成原本地檔案系統目錄,
此時如果沒有注意到歸檔路徑發生了改變,可能會引發歸檔空間不足或資料庫掛起等情況。
七:解決方案
在RAC環境下修改引數時,例如log_archive_dest_1,需要檢視下當前spfile下此引數的值是否唯一,
如果不唯一,在修改時,需要將sid='*'和sid='sid'同時修改,例如:
檢視當前spfile記錄的log_archive_dest_1值:
SQL> show spparameter log_archive_dest_1 SID NAME TYPE VALUE -------- ----------------------------- ----------- ---------------------------- cjcdb1 log_archive_dest_1 string location=+ARCH/arch1 cjcdb2 log_archive_dest_1 string location=+ARCH/arch2
修改歸檔路徑到+ARCH/arch路徑下
alter system set log_archive_dest_1='location=+ARCH/arch' sid='*'; alter system set log_archive_dest_1='location=+ARCH/arch' sid='cjcdb1'; alter system set log_archive_dest_1='location=+ARCH/arch' sid='cjcdb2';
###chenjuchao 2021-02-06 16:50###
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2756542/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- NLS引數優先順序解析
- java setPriority()設定優先順序Java
- HttpClient和HttpGet 引數的優先順序HTTPclient
- win10怎麼設定優先順序 win10如何設定程式程式優先順序Win10
- 設定全域性死鎖優先順序
- linux中設定程式排程的優先順序別Linux
- js中同名變數或者引數的優先順序JS變數
- Oracle確定連線方式的優先順序Oracle
- 資料型別優先順序資料型別
- scala隱式轉換優先順序問題
- 關於CSS樣式的優先順序問題CSS
- win10如何設定優先程式_win10怎麼設定程式優先順序Win10
- CSS優先順序CSS
- ansible 變數優先順序示例變數
- Oracle RAC 環境 引數檔案的啟動順序Oracle
- Linux基礎命令---設定程式優先順序niceLinux
- linux/unix中設定執行緒優先順序Linux執行緒
- iOS Autolayout 修改約束優先順序崩潰問題iOS
- 函式宣告與變數宣告的提升機制優先順序問題函式變數
- Oracle歸檔引數設定問題Oracle
- Java優先順序佇列DelayedWorkQueue原理分析Java佇列
- 中斷優先順序
- java基礎:執行緒方法之設定優先順序Java執行緒
- python運算子及優先順序順序Python
- css樣式分類、定義、優先順序CSS
- oracle pfile spfile啟動順序 優先順序 spfilesid 〉 spfile 〉 initsidOracle
- Nginx配置指令location匹配符優先順序和安全問題Nginx
- 企業IT應用的優先順序甄別
- 同名函式的 帶 params 引數 與 不帶 params 引數的執行優先順序函式
- 使用360安全衛士設定軟體優先順序的方法
- Linux排程策略及執行緒優先順序設定Linux執行緒
- Android程式優先順序Android
- SQL 優先順序join>whereSQL
- java運算子優先順序Java
- nginx快取優先順序Nginx快取
- php運算子優先順序PHP
- css優先順序彙總CSS
- mysql 多個引數選項檔案my.cnf優先順序研究MySql