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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java setPriority()設定優先順序Java
- win10怎麼設定優先順序 win10如何設定程式程式優先順序Win10
- linux中設定程式排程的優先順序別Linux
- Oracle RAC 環境 引數檔案的啟動順序Oracle
- Linux基礎命令---設定程式優先順序niceLinux
- ansible 變數優先順序示例變數
- win10如何設定優先程式_win10怎麼設定程式優先順序Win10
- CSS優先順序CSS
- iOS Autolayout 修改約束優先順序崩潰問題iOS
- 函式宣告與變數宣告的提升機制優先順序問題函式變數
- python運算子及優先順序順序Python
- 設計中的優先順序(下)
- 設計中的優先順序(上)
- Java優先順序佇列DelayedWorkQueue原理分析Java佇列
- 中斷優先順序
- Yacc使用優先順序
- Android程式優先順序Android
- 如何確定DevOps變更的優先順序?dev
- ORACLE中sql語句----運算子的優先順序OracleSQL
- Python例項屬性的優先順序分析Python
- SpringBoot配置檔案優先順序載入順序Spring Boot
- SQL 優先順序join>whereSQL
- java運算子優先順序Java
- 運算子的優先順序
- win10系統如何設定工作管理員程式優先順序Win10
- spring不同配置方式的區別與優先順序Spring
- 快應用tabs和video元件滑動事件優先順序問題IDE元件事件
- 埃航和737MAX墜毀:軟體優先順序問題
- 如何確定六西格瑪專案改善課題的優先順序?
- 程式初始(二)——程式優先順序,環境變數變數
- C++運算子優先順序C++
- Yarn任務優先順序配置Yarn
- 封裝優先順序佇列封裝佇列
- [譯]HTTP/2的優先順序HTTP
- css 選擇器優先順序CSS
- Mysql關於my.cnf引數檔案的讀取順序及各項配置的覆蓋優先順序MySql
- Oracle 19C RAC open_links_per_instance引數問題Oracle
- C++ 運算子優先順序表C++