20120410 創建數據庫內存分配& ora-06502 &ora-22973

------------   20120410 創建數據庫內存分配  begin  ---------

 

1、9I安裝的時候默認值爲

 

共享池: 48MB

緩衝區高速緩存:24MB

JAVA池:32M

大型池:8

PGA:24

合計爲176MB

2\9I 安裝的時候調整爲100%

 

用於ORACLE的物理內存爲(2047MB)的百分比

當百分率爲100的時候

共享池: 333MB

緩衝區高速緩存:1000MB

JAVA池:32M

大型池:197

PGA:444

合計爲2046MB

 

3、自定義分配 

IDEACENTER K330 物理內存 2.99GB

3.1    根據分配原則

 

  SGA不超過1.7GPGA+SGA不超過2G

  shared_pool_size  200M--300M      

  log_buffer : 128K ---- 1M

  large_pool_size 10M --- 50M     

  java_pool_size 30M           

  data buffer ,在做了前面的設置後,凡可以提供給oracle的內存

  PGA :   =(total_mem * 80%) * 20%     (這裏的total_mem爲機器的內存  total_mem * 80%=分配給ORACLE的內存=2046) 計算所得409

 

3.2    實際分配

3.2.1  SGA

 

shared_pool_size      分配250

large_pool_size  分配 50

java_pool_size             分配 32

data buffer     分配 1200 mb

 

3.2.2

PGA :      分配444

 

 以上合計爲 2016

 

數據庫字符集:ZHSGBK32

國家字符集:AL16UTF16

NLS_LENGTH_SEMANTICS=CHAR

 

------------   20120410 創建數據庫內存分配  end---------
 
---------    ORA-06502  begin -------------

以上設置

數據庫字符集:ZHSGBK32

國家字符集:AL16UTF16

NLS_LENGTH_SEMANTICS=CHAR

但是出現如下錯誤:

 

 ORA-06502 PL/SQL Numeric or value error

原因:有一天你把BYTE改成了CHAR,然後去調用該存儲過程,你會發現報 ORA-06502 PL/SQL Numeric or value error錯誤,因爲雖然環境使用的是CHAR語義,

但是存儲過程裏還是使用的BYTE語義,此時你需要重要編譯該存儲過程,它後重新讀取當前SESSION的值,寫入代碼中。

 

處理:

1、

數據庫字符集:AL32UTF8

國家字符集:UTF8

2、忽略問題,然後用PL/SQL 工具重新編譯無效的存儲過程

3、備註

數據庫字符集在創建數據庫時指定,在創建後通常不能更改。在創建數據庫時,可以指定字符集(CHARACTER SET)和國家字符集(NATIONAL CHARACTER SET)
<st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">2.4.1</st1:chsdate>

數據庫字符集
    (1)
用來存儲CHAR, VARCHAR2, CLOB, LONG等類型數據
    (2)
用來標示諸如表名、列名以及PL/SQL變量等
    (3)
用來存儲SQLPL/SQL程序單元等
國家字符集:
    (1)
用以存儲NCHAR, NVARCHAR2, NCLOB等類型數據
    (2)
國家字符集實質上是爲oracle選擇的附加字符集,主要作用是爲了增強oracle的字符處理能力,因爲NCHAR數據類型可以提供對亞洲使用定長多字節編碼的支持,而數據庫字符集則不能。國家字符集在oracle9i中進行了重新定義,只能在unicode編碼中的AF16UTF16UTF8中選擇,默認值是AF16UTF16

 

---------    ORA-06502  end-------------
 
 
------- 修改 出現   ORA-01450 超出最大關鍵字長度(2395)  ---------
 

數據庫字符集:AL32UTF8

國家字符集:UTF8

NLS_LENGTH_SEMANTICS=CHAR

出現錯誤   ORA-01450 超出最大關鍵字長度(2395)
原來數據庫塊 6144              
排序區  524288
 
 2395/6144=38%   
 
修改方法 :  http://blog.itpub.net/post/468/68512  通常可以達到80%左右
 
處理 :
改回來
 

數據庫字符集:ZHSGBK32

國家字符集:AL16UTF16

NLS_LENGTH_SEMANTICS=CHAR

可以考慮調整數據塊爲  8k   8192

可以排序區 爲   640K

 
 
------- 修改 出現   ORA-01450 超出最大關鍵字長度(2395)  ---------

 

 

 

 

 

 

 

發佈了61 篇原創文章 · 獲贊 4 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章