ORA-00382與DB_nK_CACHE_SIZE引數設定
這裡給出引數的官方文件說明以及具體的操作過程,僅供參考。
官方文件說明DB_nK_CACHE_SIZE
屬性 |
描述 |
引數型別 |
整型數 |
語法 |
DB_[2 | 4 | 8 | 16 | 32]K_CACHE_SIZE = integer [K | M | G] |
預設值 |
0 (預設情況下,不設定非標準塊大小快取) |
修改 |
ALTER SYSTEM |
取值範圍 |
最小值: 0 (如果值大於0,會自動修改為記憶體顆粒大小*處理器個數,或者4MB*CPU個數,取二者較大值) 最大值: 取決於作業系統 |
基本引數 |
否 |
DB_nK_CACHE_SIZE (其中 n = 2, 4, 8, 16, 32) 指定了nK快取區的大小。你可以設定除DB_BLOCK_SIZE之外的其他數值。例如,如果DB_BLOCK_SIZE為4096,那麼你設定DB_4K_CACHE_SIZE就是非法的(因為4K的快取區大小已經被DB_CACHE_SIZE引數設定過了)。
如果資料庫中存在nK塊大小的線上表空間,那麼不能設定該引數為0。
作業系統會限制特定的塊大小。例如,如果作業系統最大塊尺寸小於32KB,那麼你不能設定DB_32K_CACHE_SIZE引數。同樣,如果最小塊尺寸大於2KB,那麼你也不能設定DB_2K_CACHE_SIZE引數。
操作環境
我在Oracle10g+Windows Server 2008 Standard R2環境下進行以下操作。
點選(此處)摺疊或開啟
-
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
-
- SQL>
檢視DB_BLOCK_SIZE
點選(此處)摺疊或開啟
-
SQL>
-
SQL> show parameter db_block_size
-
-
NAME TYPE VALUE
-
------------------------------------ ----------- ------------------------------
-
db_block_size integer 8192
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> alter system set db_8k_cache_size=200M;
-
alter system set db_8k_cache_size=200M
-
*
-
第 1 行出現錯誤:
-
ORA-32017: 更新 SPFILE 時失敗
-
ORA-00380: 無法指定 db_8k_cache_size, 因為 8K 是標準塊大小
-
-
- SQL>
檢視所有與cache size相關的引數
根據官方文件的說明,預設情況下DB_nK_CACHE_SIZE引數的值都是0,我們可以檢視一下所有與cache size相關的引數。
點選(此處)摺疊或開啟
-
SQL> show parameter cache_size
-
-
NAME TYPE VALUE
-
------------------------------------ ----------- ------------------------
-
db_16k_cache_size big integer 0
-
db_2k_cache_size big integer 0
-
db_32k_cache_size big integer 0
-
db_4k_cache_size big integer 0
-
db_8k_cache_size big integer 0
-
db_cache_size big integer 0
-
db_keep_cache_size big integer 0
-
db_recycle_cache_size big integer 0
- SQL>
設定DB_32K_CACHE_SIZE報錯
我嘗試把DB_32K_CACHE_SIZE引數修改為200M,遭遇報錯。
點選(此處)摺疊或開啟
-
SQL> alter system set db_32k_cache_size=200M;
-
alter system set db_32k_cache_size=200M
-
*
-
第 1 行出現錯誤:
-
ORA-32017: 更新 SPFILE 時失敗
- ORA-00382: 32768 不是有效的塊大小, 有效範圍為 [..]
設定DB_16K_CACHE_SIZE
那麼,接下來我們嘗試設定DB_16K_CACHE_SIZE引數。
點選(此處)摺疊或開啟
-
SQL>
-
SQL> alter system set db_16k_cache_size=200M;
-
-
系統已更改。
-
-
SQL> show parameter db_16k
-
-
NAME TYPE VALUE
-
------------------------------------ ----------- -----------------------
-
db_16k_cache_size big integer 208M
- SQL>
原來,SGA中的各個元件分配都是以granule作為一個單位來分配的,而並不是一次分配1M或1K這樣的單位。granule大小是以SGA大小由系統設定的,當SGA小於1G時,granule大小為4M,當SGA大於1G的時候granule大小為16M。接下來,我們檢視一下sga以及granule大小。
點選(此處)摺疊或開啟
-
SQL> show sga
-
-
Total System Global Area 1258291200 bytes
-
Fixed Size 2163712 bytes
-
Variable Size 360446976 bytes
-
Database Buffers 889192448 bytes
-
Redo Buffers 6488064 bytes
-
SQL>
-
SQL> select component,granule_size from v$sga_dynamic_components;
-
-
COMPONENT GRANULE_SIZE
-
---------------------------------------------------------------- ------------
-
shared pool 16777216
-
large pool 16777216
-
java pool 16777216
-
streams pool 16777216
-
DEFAULT buffer cache 16777216
-
KEEP buffer cache 16777216
-
RECYCLE buffer cache 16777216
-
DEFAULT 2K buffer cache 16777216
-
DEFAULT 4K buffer cache 16777216
-
DEFAULT 8K buffer cache 16777216
-
DEFAULT 16K buffer cache 16777216
-
DEFAULT 32K buffer cache 16777216
-
ASM Buffer Cache 16777216
-
-
已選擇13行。
-
- SQL>
於是,我又嘗試把db_16k_cache_size設為100M,看看是什麼效果。
點選(此處)摺疊或開啟
我們設定的110M,查詢結果是112M,還是找不出規律,這個問題放到以後再研究一下。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30162081/viewspace-1754656/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【引數】DB_nK_CACHE_SIZE引數設定與資料庫預設塊大小之間的限制資料庫
- 閃回與歸檔引數的設定
- vsftpd設定引數FTP
- RAC 特定引數設定
- 兩個引數設定
- 手工指定CHANNEL與設定PARALLELISM引數的異同以及FILESPERSET引數的作用Parallel
- Metasploit設定LHOST引數技巧
- Metasploit設定VERBOSE引數技巧
- pandas引數設定小技巧
- Metasploit設定HttpTrace引數技巧HTTP
- tomcat vm 引數設定Tomcat
- JVM常見引數設定JVM
- JVM引數設定大氣JVM
- SAP系統引數設定
- SAP 系統引數設定
- ORACLE JOB INTERVAL引數設定Oracle
- chrome啟動引數設定Chrome
- 設定NLS_LANG引數
- Swift語言中為外部引數設定預設值可變引數常量引數變數引數輸入輸出引數Swift變數
- ajax中POST請求與引數(請求體)設定
- Oracle CSS的引數設定 心跳時間設定OracleCSS
- 【SQL 效能優化】引數設定SQL優化
- SAP 系統引數設定(zt)
- DBReplicator設定setpath.bat引數BAT
- javascript為函式設定預設引數JavaScript函式
- AIX7.1 VMO 引數預設設定AI
- gcc的-D和-U引數:宏的設定與取消(轉)GC
- 方法(函式)的定義與引數函式
- 2.6.10 設定許可證引數
- curl CURLOPT_WRITEFUNCTION 的引數設定Function
- basler工業相機引數設定
- Azure Blob (三)引數設定說明
- Nginx伺服器常用引數設定Nginx伺服器
- Mysql 5.5 設定資料庫引數MySql資料庫
- ORACLE COL SET 設定顯示引數Oracle
- 系統核心引數 設定 systemv (ipc)
- Data Guard 學習之引數設定
- oracle 安裝相關引數設定Oracle