【CDB】怎樣修改PDB的記憶體引數

恩強Boy發表於2021-01-12

多租戶環境中的記憶體引數管理(CDB PDB

1.  哪些引數可以在PDB 中修改

隨著多租戶資料庫的數顯,容器資料庫(CDB )和相關的可插拔資料庫( PDB )之間的記憶體管理仍然出現著一些問題。在處理 12c 及以上版本的多租戶資料庫時,意味著 CDB 中的特定引數的值被一個或多個 pdb 繼承。有些引數可以在 PDB 級別修改,並覆蓋從 CDB 繼承的內容。要確定哪些引數可以從 PDB 中修改, v$system_parameter 檢視中的 ispdb_modifiable 列必須為 true 。如果 ispdb_modifiable true ,則該引數從 CDB 繼承該值,直到 PDB 使用 alter system set 命令修改該值。

2.  修改引數的方式

1)  連線到PDB

SQL> ALTER SESSION SET CONTAINER= PDB1 ;

2)  進入到PDB 後,我們需要知道哪些引數是可以修改的,可以使用下面的 SQL 語句找到這些引數, ispdb_modifiable 必須為 true

SQL> SELECT NAME FROM V$SYSTEM_PARAMETER

WHERE ISPDB_MODIFIABLE = 'TRUE'

ORDER BY NAME;

3)  使用以下命令進行修改

SQL> ALTER SYSTEM SET PGA_AGGREGATE_TARGET= 800M  SCOPE=SPFILE;

(由於修改的是PDB1 的靜態引數,需要重啟 PDB1 生效。注意修改單個 PDB 的引數,只需要重啟相應 PDB 即可)

現在已經修改了引數,我們可以在PDB 級別的 v$parameter 檢視上看到這個更改。如果你想看到的引數的設定範圍( CDB or PDB ),我們可以使用檢視 v$system_paramete 。下面的 SQL 將顯示 CDB PDB PGA_AGGREGATE_TARGET 引數(注意 con_id 列)

4)  進入到CDB

SQL> alter session set container=cdb$root;

5)  執行以下查詢

SQL> col name for a30

SQL> col value for a 20

SQL> col DISPLAY_VALUE for a 10

SQL> set linesize 200

SQL> SELECT NAME, VALUE, DISPLAY_VALUE, CON_ID

FROM V$SYSTEM_PARAMETER

WHERE NAME = 'pga_aggregate_target'

ORDER BY NAME;

NAME                              VALUE                 DISPLAY_VA    CON_ID

------------------------------ -------------------- ---------- ----------

pga_aggregate_target            1666187264              1589M               0

pga_aggregate_target           838860800               800M                3

上面結果顯示,0 號容器( CDB )的 PGA 1589M 3 號容器的 PGA 800M

SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

         2 PDB$SEED                       READ ONLY  NO

          3 PDB1                           READ WRITE NO

         4 PDB2                           READ WRITE NO

         5 PDB3                           READ WRITE NO

再結合show pdbs 命令,可知 3 號容器就是修改的 PDB1 容器

3.  總結

可以透過多個初始化引數控制PDB 的記憶體使用情況。當我們以 PDB 作為當前容器設定初始化引數時,這些引數控制當前的 PDB 的記憶體使用情況。當為一個 PDB 設定了這些引數中的一個或多個時,請確保 CDB 和其他 PDB 有足夠的記憶體可用。

當我們在PDB 級別修改完 pga_aggregate_target 引數後,需要重啟該PDB 生效。然後我們可以嘗試在 PDB 級別建立 pfile

SQL> alter session set container=pdb1;

SQL> create pfile='/home/oracle/initpdb1.ora' from spfile;

$ cat /home/oracle/ initpdb1.ora

*.pga_aggregate_target=838860800

生成的pfile 內容僅有我們修改的一行。

 

 

---- end ----


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

相關文章