如何基於pfile啟動oracle11g全自動記憶體管理與memory_max_target及memory_target

wisdomone1發表於2015-09-20

背景

   oracle 11g啟用全自動記憶體管理,主要是和引數memory_max_target及memory_target有關;在之前文章測試了基於SPFILE如何啟動全自動記憶體管理功能,本
 文測試基於PFILE如何啟用全自動記憶體管理,到底涉及哪些操作,進而加深瞭解各種環境,提升應對技能。  
   本文測試環境為基於asm的ORACLE 11.2.0.3 rac,雙節點,現在我們步入正題,開始測試。


結論

   1,oracle rac可以採用pfile啟動
   2,pfile可以基於原生的spfile生成
   3,如果啟動pfile僅含引數memory_target,而無memory_max_target,啟動庫後後者引數值=前面引數的值
   4,如果啟動PFILE僅含引數memory_max_target,而無memory_target,啟動庫後memory_target=0,可動態調整,只要其值不大於前者引數值
   5,一定要注意如果基於SPFILE生成PFILE,如要要調整MEMORY相關引數,一定要確保memory相關的引數保持一致,否則可能會出你期望不到的結果
   6,如果你打算RAC資料庫或單例項資料庫採用PFILE,確保各個節點PFILE檔案在相同目錄,可採用SCP把一個節點傳遞到其它RAC節點,便於運維

測試



1,採用ASM儲存SPFILE
SQL> show parameter spfile


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      +DATA/jingfa/spfilejingfa.ora


2,備份SPFILE,防止中途操作出現故障,便於恢復資料庫,切記,一定要養成操作前備份的習慣,至關重要,且每一步操作,一實要記錄下來,不可遺漏,否則可能會出大麻煩
  --在節點1操作即可
SQL> create pfile='/home/oracle/spfilejingfa.ora_20150920bak' from spfile;


File created.


3,關於memory_max_target及memory_target如何配置,請參考我之前的文章
http://blog.itpub.net/9240380/viewspace-1804586/


4,在節點1基於ASM SPFILE生成另一個pfile,在這個基礎上啟用全自動記憶體管理
SQL> create pfile='/home/oracle/jingfa_memory.ora' from spfile;


File created.


5,在節點1基於第4步生成的PFILE檔案新增如下引數
[oracle@jingfa1 ~]$ tail -5f /home/oracle/jingfa_memory.ora
#zxy added
memory_max_target=800m
memory_target=743m
sga_target=0
pga_aggregate_target=0


6,在節點1以第5步生成的PFILE重啟節點1例項
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup pfile='/home/oracle/jingfa_memory.ora'
ORACLE instance started.


Total System Global Area  835104768 bytes
Fixed Size                  2232960 bytes
Variable Size             583011712 bytes
Database Buffers          247463936 bytes
Redo Buffers                2396160 bytes
Database mounted.
Database opened.


7,在節點1確認全自動記憶體管理配置正確
SQL> show parameter memory


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address             integer     0
memory_max_target                    big integer 800M
memory_target                        big integer 744M
shared_memory_address                integer     0
SQL> show parameter sga


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 800M
sga_target                           big integer 0
SQL> show parameter pga


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target                 big integer 0




8,在節點1把上述的PFILE以SCP付遞到節點2相同的目錄
[oracle@jingfa1 ~]$ scp jingfa_memory.ora oracle@jingfa2:/home/oracle
oracle@jingfa2's password: 
jingfa_memory.ora                                                                                                                          100% 1864     1.8KB/s   00:00    
[oracle@jingfa1 ~]$


9,在節點2重啟資料庫例項
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup pfile='/home/oracle/jingfa_memory.ora'
ORACLE instance started.


Total System Global Area  835104768 bytes
Fixed Size                  2232960 bytes
Variable Size             583011712 bytes
Database Buffers          247463936 bytes
Redo Buffers                2396160 bytes
Database mounted.
Database opened.


10,在節點2確認全自動記憶體管理配置正確
SQL> show parameter memory


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address             integer     0
memory_max_target                    big integer 800M
memory_target                        big integer 744M
shared_memory_address                integer     0
SQL> show parameter sga_   


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 800M
sga_target                           big integer 0
SQL> show parameter pga


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target                 big integer 0


11,在2個節點確認SPFILE及PFILE的資訊,在使用PFILE情況下,2引數皆無值
SQL> show parameter pfile


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string
SQL> show parameter pfile


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string




12,如果在PFILE沒有配置memory_max_target僅配置了memory_target,會如何呢?


13,在節點1調整pfile,移除memory_max_target,僅配置memory_target
[oracle@jingfa1 ~]$ tail -5f jingfa_memory.ora 
#zxy added
#memory_max_target=800m
memory_target=743m
sga_target=0
pga_aggregate_target=0


14,重啟節點1,發現memory_max_target雖然沒有在PFILE中配置,僅大於memory_target,即仍舊保持和之前的SPFILE配置一樣(因為我之前SPFILE是顯式配置了MEMORY_MAX_TARGET引數)
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup pfile='/home/oracle/jingfa_memory.ora'
ORACLE instance started.


Total System Global Area  835104768 bytes
Fixed Size                  2232960 bytes
Variable Size             583011712 bytes
Database Buffers          247463936 bytes
Redo Buffers                2396160 bytes
Database mounted.
Database opened.
SQL> show parameter memory


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address             integer     0
memory_max_target                    big integer 800M
memory_target                        big integer 744M
shared_memory_address                integer     0
SQL> 


15,節點1產生上述問題原因很簡單,因為我PFILE是基於SPFILE生成的,所以PFILE殘留有memory_max_target,從PFILE移除此引數
[oracle@jingfa1 ~]$ more jingfa_memory.ora|grep -i --color memory
*.memory_max_target=838860800
*.memory_target=779091968
jingfa1.memory_target=780140544
jingfa2.memory_target=780140544
#memory_max_target=800m
memory_target=743m


移除節點1PFILE檔案的memory_max_target引數
[oracle@jingfa1 ~]$ more jingfa_memory.ora|grep -i --color memory
#*.memory_max_target=838860800
*.memory_target=779091968
jingfa1.memory_target=780140544
jingfa2.memory_target=780140544
#memory_max_target=800m
memory_target=743m


16,重啟節點1,可見若僅配置memory_target,不配置memory_max_target,則以PFILE啟動資料庫後,memory_max_target=memory_target
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup pfile='/home/oracle/jingfa_memory.ora'
ORACLE instance started.


Total System Global Area  776646656 bytes
Fixed Size                  2232392 bytes
Variable Size             524292024 bytes
Database Buffers          247463936 bytes
Redo Buffers                2658304 bytes
Database mounted.
Database opened.
SQL> 
SQL> 
SQL> show parameter memory


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address             integer     0
memory_max_target                    big integer 744M
memory_target                        big integer 744M
shared_memory_address                integer     0




17,還有一種情況,如果不配置memory_target,僅配置memory_max_target,又會如何呢


18,在節點1移除引數memory_target


[oracle@jingfa1 ~]$ more jingfa_memory.ora|grep -i --color memory
#*.memory_max_target=838860800
#*.memory_target=779091968
#jingfa1.memory_target=780140544
#jingfa2.memory_target=780140544
memory_max_target=800m
#memory_target=743m


19,重啟節點1,可見僅配置引數memory_max_target,memory_target為0,可以在啟動庫後動態調整,只要不大於前者引數的值即可
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup pfile='/home/oracle/jingfa_memory.ora'
ORACLE instance started.


Total System Global Area  835104768 bytes
Fixed Size                  2232960 bytes
Variable Size             603983232 bytes
Database Buffers          226492416 bytes
Redo Buffers                2396160 bytes
Database mounted.
Database opened.
SQL> show parameter memory


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address             integer     0
memory_max_target                    big integer 800M
memory_target                        big integer 0
shared_memory_address                integer     0
SQL> alter system set memory_target=700m sid='jingfa1';


System altered.


SQL> show parameter memory


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address             integer     0
memory_max_target                    big integer 800M
memory_target                        big integer 700M
shared_memory_address                integer     0
SQL> 

個人簡介


8年oracle從業經驗,具備豐富的oracle技能,目前在國內北京某專業oracle服務公司從事高階技術顧問。
服務過的客戶:
中國電信
中國移動
中國聯通
中國電通
國家電網
四川達州商業銀行
湖南老百姓大藥房
山西省公安廳
中國郵政
北京302醫院     
河北廊坊新奧集團公司

 專案經驗:
中國電信3G專案AAA系統資料庫部署及最佳化
      中國聯通4G資料庫效能分析與最佳化
中國聯通CRM資料庫效能最佳化
中國移動10086電商平臺資料庫部署及最佳化
湖南老百姓大藥房ERR資料庫sql最佳化專案
四川達州商業銀行TCBS核心業務系統資料庫模型設計和RAC部署及最佳化
四川達州商業銀行TCBS核心業務系統後端批處理儲存過程功能模組編寫及最佳化
北京高鐵訊號監控系統RAC資料庫部署及最佳化
河南宇通客車資料庫效能最佳化
中國電信電商平臺核心採購模組表模型設計及最佳化
中國郵政儲蓄系統資料庫效能最佳化及sql最佳化
北京302醫院資料庫遷移實施
河北廊坊新奧data guard部署及最佳化
山西公安廳身份證審計資料庫系統故障評估
國家電網上海災備專案4 node rac+adg 
       貴州移動crm及客服資料庫效能最佳化專案
       貴州移動crm及客服務資料庫sql稽核專案
       深圳穆迪軟體有限公司資料庫效能最佳化專案

聯絡方式:
手機:18201115468
qq   :   305076427
qq微博: wisdomone1
新浪微博:wisdomone9
qq群:275813900    
itpub部落格名稱:wisdomone1    http://blog.itpub.net/9240380/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-1804611/,如需轉載,請註明出處,否則將追究法律責任。

相關文章