【Shared Server Mode】測試調整shared_servers引數對資料庫的影響
關於Shared Server模式的配置方法請參見文章《【Shared Server Mode】“專有伺服器模式”調整為“共享伺服器模式”》(http://space.itpub.net/519536/viewspace-609990)。
shared_servers引數是個可以動態調整的引數,我們觀察一下這個引數調整對系統後臺Shared Server程式啟動的影響以及對資料庫的影響。
1.調整shared_servers引數之前後臺Shared Server程式啟動情況
sys@secdb> show parameter shared_servers
NAME TYPE VALUE
---------------------------------------- -------------------- -----------
max_shared_servers integer
shared_servers integer 0
secdb@secdb1 /home/oracle$ ps -ef | grep ora_s0 | grep -v grep
此處沒有任何返回內容,表明伺服器上沒有啟動任何Shared Server程式
2.在資料庫中調整shared_servers引數調整為10
sys@secdb> alter system set shared_servers=10;
System altered.
sys@secdb> show parameter shared_servers
NAME TYPE VALUE
---------------------------------------- -------------------- -----------
max_shared_servers integer
shared_servers integer 10
3.調整shared_servers引數之後後臺Shared Server程式啟動情況
secdb@secdb1 /home/oracle$ ps -ef | grep ora_s0 | grep -v grep
oracle 1596 1 0 13:41 ? 00:00:00 ora_s000_secdb
oracle 1598 1 0 13:41 ? 00:00:00 ora_s001_secdb
oracle 1600 1 0 13:41 ? 00:00:00 ora_s002_secdb
oracle 1602 1 0 13:41 ? 00:00:00 ora_s003_secdb
oracle 1604 1 0 13:41 ? 00:00:00 ora_s004_secdb
oracle 1606 1 0 13:41 ? 00:00:00 ora_s005_secdb
oracle 1608 1 0 13:41 ? 00:00:00 ora_s006_secdb
oracle 1610 1 0 13:41 ? 00:00:00 ora_s007_secdb
oracle 1613 1 0 13:41 ? 00:00:00 ora_s008_secdb
oracle 1615 1 0 13:41 ? 00:00:00 ora_s009_secdb
可見,此時後臺程式隨即啟動了10個後臺Shared Server程式。
4.再次將shared_servers引數調整為0,觀察後臺Shared Server程式是否會自動關閉
sys@secdb> alter system set shared_servers=0;
System altered.
調整引數過程中可以使用如下指令碼監控後臺Shared Server程式啟動情況
$ while :; do ps -ef | grep ora_s0 | grep -v grep; sleep 1; done
觀察大約結果16秒左右的時間,後臺Shared Server程式同時退出,不再有輸出資訊。
5.試問,這個引數可以無限的調大麼
答案當然是否定的!這裡與資料庫最大可以啟動的最大程式數相關,也就是與資料庫processes引數的大小相關。資料庫的總啟動程式數不能超過processes引數值。
測試如下。
1)嘗試將shared_servers調整為200
SQL> alter system set shared_servers=200;
System altered.
2)當系統後臺Shared Server程式陸續啟動到ora_s099_secdb時,alert警告日誌中記錄瞭如下錯誤
Sun May 22 17:59:11 2011
Process S174 died, see its trace file
failed to start shared server, er=0
3)重啟資料庫時的報錯資訊
sys@secdb> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@secdb> startup;
ORA-24324: service handle not initialized
ORA-24323: value not allowed
ORA-00020: maximum number of processes (%s) exceeded
4)此時alert警告日誌內容
Sun May 22 18:05:42 2011
Process S185 died, see its trace file
failed to start shared server, er=0
這裡提示的內容是當Oracle嘗試啟動第185個Shared Server程式時出現了錯誤。
5)此時檢視一下伺服器後臺程式的總數
secdb@secdb1 /home/oracle$ ps -ef | grep ora_ | grep -v secgc | grep -v grep | wc -l
198
此時與secdb例項有關的資料庫後臺程式已經啟動了198個。
導致此故障的原因浮出水面:此時資料庫例項中processes引數設定的值是200,當Shared Server程式過大導致總程式數超過了這個限制,最終導致了這個故障的發生。
6.故障處理方法
故障處理策略:透過調整pfile間接調整spfile的方法調整錯誤設定的shared_servers引數內容。
1)此時嘗試immediate方式停止資料庫是無法完成的
secdb@secdb1 /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 22 18:22:06 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected.
NotConnected@> shutdown immediate;
ORA-24324: service handle not initialized
ORA-24323: value not allowed
ORA-00020: maximum number of processes (%s) exceeded
2)只能透過abort方式強制終止資料庫例項
secdb@secdb1 /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 22 18:25:55 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected.
NotConnected@> shutdown abort;
ORACLE instance shut down.
3)連線到資料庫生成pfile
secdb@secdb1 /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 22 18:32:02 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
sys@secdb> create pfile from spfile;
File created.
4)調整pfile中錯誤設定的引數
secdb@secdb1 /home/oracle$ vi $ORACLE_HOME/dbs/initsecdb.ora
……省略其他內容……
*.processes=200
……省略其他內容……
*.shared_servers=200
……省略其他內容……
將上面的shared_servers引數調整為“0”
5)生成spfile並啟動資料庫
secdb@secdb1 /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 22 18:38:19 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
NotConnected@> create spfile from pfile;
File created.
NotConnected@> startup;
ORACLE instance started.
Total System Global Area 314572800 bytes
Fixed Size 1219184 bytes
Variable Size 104859024 bytes
Database Buffers 205520896 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
故障處理完畢。
7.小結
本文給出了測試調整shared_servers引數對資料庫的影響,重點給出了由於shared_servers引數設定過大導致資料庫無法啟動的故障。對資料庫的管理和維護是一個系統工程,需要DBA全面衡量和探究後給出最佳化策略。
Good luck.
secooler
11.05.22
-- The End --
shared_servers引數是個可以動態調整的引數,我們觀察一下這個引數調整對系統後臺Shared Server程式啟動的影響以及對資料庫的影響。
1.調整shared_servers引數之前後臺Shared Server程式啟動情況
sys@secdb> show parameter shared_servers
NAME TYPE VALUE
---------------------------------------- -------------------- -----------
max_shared_servers integer
shared_servers integer 0
secdb@secdb1 /home/oracle$ ps -ef | grep ora_s0 | grep -v grep
此處沒有任何返回內容,表明伺服器上沒有啟動任何Shared Server程式
2.在資料庫中調整shared_servers引數調整為10
sys@secdb> alter system set shared_servers=10;
System altered.
sys@secdb> show parameter shared_servers
NAME TYPE VALUE
---------------------------------------- -------------------- -----------
max_shared_servers integer
shared_servers integer 10
3.調整shared_servers引數之後後臺Shared Server程式啟動情況
secdb@secdb1 /home/oracle$ ps -ef | grep ora_s0 | grep -v grep
oracle 1596 1 0 13:41 ? 00:00:00 ora_s000_secdb
oracle 1598 1 0 13:41 ? 00:00:00 ora_s001_secdb
oracle 1600 1 0 13:41 ? 00:00:00 ora_s002_secdb
oracle 1602 1 0 13:41 ? 00:00:00 ora_s003_secdb
oracle 1604 1 0 13:41 ? 00:00:00 ora_s004_secdb
oracle 1606 1 0 13:41 ? 00:00:00 ora_s005_secdb
oracle 1608 1 0 13:41 ? 00:00:00 ora_s006_secdb
oracle 1610 1 0 13:41 ? 00:00:00 ora_s007_secdb
oracle 1613 1 0 13:41 ? 00:00:00 ora_s008_secdb
oracle 1615 1 0 13:41 ? 00:00:00 ora_s009_secdb
可見,此時後臺程式隨即啟動了10個後臺Shared Server程式。
4.再次將shared_servers引數調整為0,觀察後臺Shared Server程式是否會自動關閉
sys@secdb> alter system set shared_servers=0;
System altered.
調整引數過程中可以使用如下指令碼監控後臺Shared Server程式啟動情況
$ while :; do ps -ef | grep ora_s0 | grep -v grep; sleep 1; done
觀察大約結果16秒左右的時間,後臺Shared Server程式同時退出,不再有輸出資訊。
5.試問,這個引數可以無限的調大麼
答案當然是否定的!這裡與資料庫最大可以啟動的最大程式數相關,也就是與資料庫processes引數的大小相關。資料庫的總啟動程式數不能超過processes引數值。
測試如下。
1)嘗試將shared_servers調整為200
SQL> alter system set shared_servers=200;
System altered.
2)當系統後臺Shared Server程式陸續啟動到ora_s099_secdb時,alert警告日誌中記錄瞭如下錯誤
Sun May 22 17:59:11 2011
Process S174 died, see its trace file
failed to start shared server, er=0
3)重啟資料庫時的報錯資訊
sys@secdb> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@secdb> startup;
ORA-24324: service handle not initialized
ORA-24323: value not allowed
ORA-00020: maximum number of processes (%s) exceeded
4)此時alert警告日誌內容
Sun May 22 18:05:42 2011
Process S185 died, see its trace file
failed to start shared server, er=0
這裡提示的內容是當Oracle嘗試啟動第185個Shared Server程式時出現了錯誤。
5)此時檢視一下伺服器後臺程式的總數
secdb@secdb1 /home/oracle$ ps -ef | grep ora_ | grep -v secgc | grep -v grep | wc -l
198
此時與secdb例項有關的資料庫後臺程式已經啟動了198個。
導致此故障的原因浮出水面:此時資料庫例項中processes引數設定的值是200,當Shared Server程式過大導致總程式數超過了這個限制,最終導致了這個故障的發生。
6.故障處理方法
故障處理策略:透過調整pfile間接調整spfile的方法調整錯誤設定的shared_servers引數內容。
1)此時嘗試immediate方式停止資料庫是無法完成的
secdb@secdb1 /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 22 18:22:06 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected.
NotConnected@> shutdown immediate;
ORA-24324: service handle not initialized
ORA-24323: value not allowed
ORA-00020: maximum number of processes (%s) exceeded
2)只能透過abort方式強制終止資料庫例項
secdb@secdb1 /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 22 18:25:55 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected.
NotConnected@> shutdown abort;
ORACLE instance shut down.
3)連線到資料庫生成pfile
secdb@secdb1 /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 22 18:32:02 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
sys@secdb> create pfile from spfile;
File created.
4)調整pfile中錯誤設定的引數
secdb@secdb1 /home/oracle$ vi $ORACLE_HOME/dbs/initsecdb.ora
……省略其他內容……
*.processes=200
……省略其他內容……
*.shared_servers=200
……省略其他內容……
將上面的shared_servers引數調整為“0”
5)生成spfile並啟動資料庫
secdb@secdb1 /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 22 18:38:19 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
NotConnected@> create spfile from pfile;
File created.
NotConnected@> startup;
ORACLE instance started.
Total System Global Area 314572800 bytes
Fixed Size 1219184 bytes
Variable Size 104859024 bytes
Database Buffers 205520896 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
故障處理完畢。
7.小結
本文給出了測試調整shared_servers引數對資料庫的影響,重點給出了由於shared_servers引數設定過大導致資料庫無法啟動的故障。對資料庫的管理和維護是一個系統工程,需要DBA全面衡量和探究後給出最佳化策略。
Good luck.
secooler
11.05.22
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-696081/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JVM 引數調整對 sortx 的影響JVM
- 調整資料庫引數資料庫
- Oracle 資料庫引數調整Oracle資料庫
- 達夢資料庫引數調整方法資料庫
- Oracle exp中compress引數的影響測試Oracle
- 執行緒數目對資料庫的影響執行緒資料庫
- 資料庫安裝初始化引數調整資料庫
- 解決latch free問題的資料庫引數調整資料庫
- 關於修改資料庫引數的測試資料庫
- 影響資料庫效能與穩定性的幾個重要引數資料庫
- Oracle 11g 測試停庫對job的影響Oracle
- 【Shared Server Mode】“專有伺服器模式”調整為“共享伺服器模式”Server伺服器模式
- 時區調整對job的執行時間的影響
- 磁碟排序對Oracle資料庫效能的影響排序Oracle資料庫
- 資料庫調優和資料遷移是如何影響資料庫的RY資料庫
- 調節Oracle資料緩衝區引數,緩衝整個資料庫(轉)Oracle資料庫
- MySQL引數調整MySql
- 磁碟排序對Oracle資料庫效能的影響PT排序Oracle資料庫
- 容器化對資料庫的效能有影響嗎?資料庫
- 變更OS時間對資料庫的影響資料庫
- stopkey對索引掃描的影響測試TopK索引
- 人工智慧對軟體測試的影響人工智慧
- PostgreSQL技術大講堂 - 第32講:資料庫引數調整SQL資料庫
- 資料庫從9升級到10,考慮部分引數調整資料庫
- Wenet分散式訓練對學習率調整的影響分散式
- table_open_cache引數對mysql效能的影響MySql
- ASP中函式呼叫對引數的影響 (轉)函式
- 物料主資料中日期對MRP影響測試
- 測試SQLPLUS的ARRAYSIZE對效能的影響SQL
- 如果想聯機線上備份,開啟trackmod 引數,對資料庫有沒有其他影響?資料庫
- 聊聊虛擬化和容器對資料庫的影響資料庫
- 修改系統時間對oracle資料庫的影響Oracle資料庫
- mysql的DDL操作對業務產生影響測試MySql
- 谷歌也要調整隱私政策,或對數字廣告行業產生重大影響谷歌行業
- AIX fsfastpath 引數調整AIAST
- oracle資料庫的效能調整Oracle資料庫
- MySQL:簡單記錄character_set_server影響引數MySqlServer
- Kafka之acks引數對訊息持久化的影響Kafka持久化