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
- [20190507]sga_target=0注意修改_kghdsidx_count設定.txt
- statistics_level與SGA_TARGET衝突
- oracle10g審計(轉)Oracle
- about oracle10g rac(轉)Oracle
- ORACLE10G升級11GOracle
- oracle10g RMAN增量備份策略Oracle
- Oracle10g刪除資料檔案Oracle
- Oracle10g SQL tune adviser簡單介紹OracleSQL
- oracle10g DataGuard的日誌傳輸方式Oracle
- Oracle10g釋放flash_recovery_area(轉)Oracle
- [20190104]sga_target 的設定和ORA-04031錯誤.txt
- Oracle10g等待事件型別wait_class說明Oracle事件型別AI
- Oracle10g的回收站(recyclebin)和自由空間管理Oracle
- 【RAC】Oracle10g rac新增刪除節點命令參考Oracle
- ORA-00843,ORA-00849 When Trying To Change SGA_TARGET With MEMORY_MAX_TARGET=0
- Oracle10g/11g動態、靜態關閉DRM特性方法Oracle
- vmware + 裸裝置 + crs + oracle10g RAC搭建步驟(二):安裝linuxOracleLinux
- 19c ADG環境中主庫PDB調整SGA_TARGET自動同步到備庫
- [待整理]oracle10g刪除(釋放)資料檔案/表空間流程Oracle
- oracle10g expdp資料泵的bug,按schema匯出,匯入impdp時無jobOracle
- 修改已經有的網站怎麼修改修改已經有的網站怎麼修改網站
- APP攻防--安卓逆向&資料修改&邏輯修改&檢視修改APP安卓
- linux 修改hosts檔案以及修改hostnameLinux
- laravel 修改器 手動修改->getRawOriginal()Laravel
- Mybatis修改MyBatis
- Android系統修改之Notification佈局修改Android
- 公司網站修改_單位網站修改網站
- powershell無法修改字符集,非修改登錄檔修改powershell的方法
- 網站模板修改?網站模板咋樣修改?網站
- 公司網站修改?網站主頁修改方案模板?網站
- 如何修改Dedecms網站,Dedecms網站修改指南網站
- 文件修改宣告
- SSH修改埠
- git清空修改Git
- pip源修改
- ubuntu 修改源Ubuntu
- indexedDB 修改索引Index索引
- Ubuntu修改hostsUbuntu