Oracle10g修改SGA_TARGET
下面我們看一下如何修改sga_target初始化引數的大小。
1.測試環境
我們在Oracle10g中進行測試,作業系統是Windows Server 2008 R2 Standard。
點選(此處)摺疊或開啟
-
SQL>
-
SQL> select * from v$version;
-
-
BANNER
-
----------------------------------------------------------------
-
-
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
-
PL/SQL Release 10.2.0.4.0 - Production
-
CORE 10.2.0.4.0 Production
-
TNS for 64-bit Windows: Version 10.2.0.4.0 - Production
- NLSRTL Version 10.2.0.4.0 - Production
2.官方文件定義
接下來,我們看一下和ASMM相關的兩個初始化引數在官方文件中的說明。
SGA_MAX_SIZE
屬性 |
描述 |
引數型別 |
Big integer |
語法 |
SGA_MAX_SIZE = integer [K | M | G] |
預設值 |
資料庫啟動時SGA的初始化大小,取決於SGA中不同池的大小,例如緩衝區,共享池,大池,等等。 |
是否可修改 |
否 |
取值範圍 |
0~視作業系統而定 |
SGA_MAX_SIZE指定了例項生命週期內SGA的最大值。
在64位平臺或者非32位Windows平臺,當MEMORY_TARGET或MEMORY_MAX_TARGET被設定時,SGA_MAX_SIZE會被設定為二者的較大值。這樣將會預留更多的地址空間用於擴大SGA。
SGA_TARGET
屬性 |
描述 |
引數型別 |
Big integer |
語法 |
SGA_TARGET = integer [K | M | G] |
預設值 |
0(SGA自動調整功能在DEFERRED模式調整請求下被禁用,但是在IMMEDIATE模式調整請求下是允許的) |
是否可修改 |
ALTER SYSTEM |
取值範圍 |
64M~視作業系統而定 |
是否基本引數 |
是 |
SGA_TARGET制定了SGA各個元件的總大小。如果SGA_TARGET被指定,那麼下面所列出的記憶體池大小將被自動分配:
l Buffer cache (DB_CACHE_SIZE)
l Shared pool (SHARED_POOL_SIZE)
l Large pool (LARGE_POOL_SIZE)
l Java pool (JAVA_POOL_SIZE)
l Streams pool (STREAMS_POOL_SIZE)
如果上述自動調整的記憶體池被設定為非零值,那麼這些值將被自動共享記憶體管理系統(ASMM, Automatic Shared Memory Management)視為最小值。如果一個應用元件正常執行要求一個最小數值的記憶體,那麼你就需要設定最小值。
下述記憶體池需要手工設定大小,不受自動共享記憶體管理系統(ASMM, Automatic Shared Memory Management)的影響:
l Log buffer
l Other buffer caches, such as KEEP, RECYCLE, and other block sizes
l Fixed SGA and other internal allocations
當自動共享記憶體管理系統在計算自動調整記憶體池的具體大小時,會將上述記憶體池記憶體從總的可用SGA_TARGET中扣除。
在“預設值”欄位中,IMMEDIATE模式自動調整要求是必要的,這樣可以避免ORA-04031錯誤。DEFERRED和IMMEDIATE模式的具體值,可以透過V$MEMORY_RESIZE_OPS檢視的OPER_MODE列來檢視。
3.檢視相關初始化引數值
我們透過show parameter來檢視初始化引數值,相關的引數包括sga_max_size、sga_target、pga_aggregate_target等。
點選(此處)摺疊或開啟
4.修改sga_target
我們透過alter system語句來修改sga_target,需要注意的是,sga_target是個動態引數,而sga_max_size是個靜態引數。
這樣一來,當修改值<=sga_max_size時,我們可以直接修改sga_target值;但是,當修改值>sga_max_size時,我們必須首先修改sga_max_size引數值,重啟資料庫使靜態引數生效後再去修改sga_target值,否則,資料庫會報錯。
注意:
修改sga_target值時,不能將引數值設定過小,否則會報錯ORA-00827。
4.1修改值<=SGA_MAX_SIZE
首先,嘗試將sga_target引數值修改為800M,修改成功;
然後,嘗試將sga_target引數值修改為500M,資料庫報錯ORA-00827,提示“無法將 sga_target 壓縮到指定值”;
點選(此處)摺疊或開啟
-
SQL>
-
SQL> alter system set sga_target=800M;
-
-
系統已更改。
-
-
SQL>
-
SQL> alter system set sga_target=500M;
-
alter system set sga_target=500M
-
*
-
第 1 行出現錯誤:
-
ORA-02097: 無法修改引數, 因為指定的值無效
-
ORA-00827: 無法將 sga_target 壓縮到指定值
-
-
-
SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> show parameter sga
-
-
NAME TYPE VALUE
-
------------------------------------ ----------- ------------------------------
-
-
lock_sga boolean FALSE
-
pre_page_sga boolean FALSE
-
sga_max_size big integer 1232M
-
sga_target big integer 800M
- SQL>
4.2修改值>SGA_MAX_SIZE
首先,嘗試將sga_target引數值修改為2G,資料庫報錯ORA-00823,提示“指定的 sga_target 的值大於 sga_max_size”;
點選(此處)摺疊或開啟
-
SQL>
-
SQL> alter system set sga_target=2G;
-
alter system set sga_target=2G
-
*
-
第 1 行出現錯誤:
-
ORA-02097: 無法修改引數, 因為指定的值無效
-
ORA-00823: 指定的 sga_target 的值大於 sga_max_size
-
-
- SQL>
從官方文件對兩個初始化引數的解釋得知,sga_target的最大值是sga_max_size。
因此,我們需要首先修改sga_max_size的值,由於sga_max_size是靜態引數,因此需要重啟資料庫,待靜態引數修改生效後,這時才能將ga_target設定為目標值。
點選(此處)摺疊或開啟
-
SQL>
-
SQL> alter system set sga_max_size=2G scope=spfile;
-
-
系統已更改。
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> shu immediate
-
資料庫已經關閉。
-
已經解除安裝資料庫。
-
ORACLE 例程已經關閉。
-
SQL>
-
SQL>
-
SQL> startup
-
ORA-28547: 連線伺服器失敗, 可能是 Oracle Net 管理錯誤
-
SQL>
-
SQL> conn /@hoegh as sysdba
-
ERROR:
-
ORA-01041: 內部錯誤, hostdef 副檔名不存在
-
-
-
SQL> conn sys/oracle@hoegh as sysdba
-
ERROR:
-
ORA-28547: 連線伺服器失敗, 可能是 Oracle Net 管理錯誤
-
-
- SQL>
點選(此處)摺疊或開啟
-
SQL> conn /@hoegh as sysdba
-
已連線。
-
SQL>
-
SQL>
-
SQL> show parameter sga
-
-
NAME TYPE VALUE
-
------------------------------------ ----------- ------------------------------
-
-
lock_sga boolean FALSE
-
pre_page_sga boolean FALSE
-
sga_max_size big integer 2G
-
sga_target big integer 800M
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> alter system set sga_target=2G;
-
-
系統已更改。
-
-
SQL>
-
SQL>
-
SQL> show parameter sga
-
-
NAME TYPE VALUE
-
------------------------------------ ----------- ------------------------------
-
-
lock_sga boolean FALSE
-
pre_page_sga boolean FALSE
-
sga_max_size big integer 2G
-
sga_target big integer 2G
- SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30162081/viewspace-1744573/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle Rac 修改SGA_TARGET值無變化Oracle
- 修改sga_target引起的ora-27100 bug嗎
- oracle10g 修改 sga pgaOracle
- ORACLE10g修改RAC VIPOracle
- SGA_TARGET Advice
- [20190507]sga_target=0注意修改_kghdsidx_count設定.txt
- sga_target大小調整
- The SGA_TARGET Initialization Parameter (74)
- 常見問題--oracle10g修改表結構Oracle
- oracle 重設定sga_targetOracle
- Dynamic Modification of SGA_TARGET (103)
- sga_target與sga_max_size
- SGA_MAX_SIZE與SGA_TARGET
- sga_target與max_sga_size
- 改sga_target的注意事項
- statistics_level與SGA_TARGET衝突
- 【轉】SGA_MAX_SIZE與SGA_TARGET
- windows 7上修改oracle10g的環境變數nls_langWindowsOracle變數
- 10g中的sga_target引數
- 在oracle執行時修改主機名相關影響__solaris oracle10gOracle
- memory_target、sga_target、pga_target的設定
- oracle10g在修改完audit_trail為extended資料庫啟動不了,如何處理OracleAI資料庫
- 轉:關於SGA_MAX_SIZE與SGA_TARGET的詳解
- 修改Oracle10g、11g系統自動統計Job的執行時間屬性Oracle
- oracle10g recyclebinOracle
- oracle10g SGAOracle
- oracle10g PGAOracle
- Oracle10g心得Oracle
- Mutexes in Oracle10gMutexOracle
- 關於memory_max_target,memory_target,sga_max_size,sga_target
- memory_max_target,memory_target,pga_aggregate_target,sga_target
- ORA-00824:cannot set sga_target due to existing internal setting --SOLUTION
- oracle 10g中的SGA_MAX_SIZE與SGA_TARGET引數Oracle 10g
- Oracle10g審計Oracle
- about oracle10g racOracle
- Oracle10G 的gOracle
- 搭建 Oracle10g DataGuardOracle
- oracle10g之AUMOracle