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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- tomcat vm 引數設定Tomcat
- JVM常見引數設定JVM
- pandas引數設定小技巧
- Metasploit設定VERBOSE引數技巧
- Metasploit設定HttpTrace引數技巧HTTP
- Metasploit設定LHOST引數技巧
- JVM引數設定大氣JVM
- ajax中POST請求與引數(請求體)設定
- 2.6.10 設定許可證引數
- [20200220]windows設定keepalive引數.txtWindows
- ES 筆記十二: 顯示 Mapping 設定與常見引數筆記APP
- [轉帖]Redis相關的核心引數解釋與設定Redis
- 方法(函式)的定義與引數函式
- Nginx伺服器常用引數設定Nginx伺服器
- 2.7.11 檢視引數設定的方法
- Azure Blob (三)引數設定說明
- curl CURLOPT_WRITEFUNCTION 的引數設定Function
- basler工業相機引數設定
- Java設定JSON字串引數編碼JavaJSON字串
- Python3之函式的引數傳遞與引數定義Python函式
- springmvc引數設定預設值,多地址請求SpringMVC
- Flink提交Job的方式以及引數設定
- 19c exadata不能設定的引數
- 建立 MQTT 連線時如何設定引數?MQQT
- MySQL的配置檔案的引數設定MySql
- Java 動態設定 JVM 引數的方法JavaJVM
- webapi 設定swagger上請求引數的預設值WebAPISwagger
- java 執行緒池的初始化引數解釋和引數設定Java執行緒
- PostgreSQL DBA(1) - 資料庫引數設定#1SQL資料庫
- PostgreSQL DBA(2) - 資料庫引數設定#2SQL資料庫
- 2024最新版IDEA設定啟動引數Idea
- vue3 獲取和設定路由引數Vue路由
- 系統引數nofile設定不生效問題
- Windows系統常用系統引數設定文件Windows
- 引數的定義和引數的傳遞
- cad標註樣式設定引數 怎麼設定cad標註樣式
- Angular2入門系列(五)———— 路由引數設定Angular路由
- JVM引數設定的一些參考方法JVM
- XamarinAndroid元件教程設定動畫的時長引數NaNAndroid元件動畫