PDBごとのセッション数使用率を出力するSQL
対応バージョン
Oracle Database 12.1
2016-02-25記事公開
PDBごとのセッション数使用率を出力するSQLについて記載します。
CDB構成(コンテナ構成)を選択した場合に、初期化パラメータのSESSIONSにより、PDBごとに使用可能なセッションの上限を指定することが出来ます。
その際にEnterprise ManagerにPDBごとにセッション数使用率を監視できるメトリックがなかったため、PDBのセッション使用率を確認できるSQLを作成しましたので、その内容を記載します。
セッション数の使用状況についてはv$resource_limit動的ビューを使用して確認可能ですが、12cR1におけるv$resource_limitについてはCDB全体の確認のみ可能となっています。
CDB名:orcl PDB名:pdborcl
CDB構成(コンテナ構成)を選択した場合に、初期化パラメータのSESSIONSにより、PDBごとに使用可能なセッションの上限を指定することが出来ます。
その際にEnterprise ManagerにPDBごとにセッション数使用率を監視できるメトリックがなかったため、PDBのセッション使用率を確認できるSQLを作成しましたので、その内容を記載します。
セッション数の使用状況についてはv$resource_limit動的ビューを使用して確認可能ですが、12cR1におけるv$resource_limitについてはCDB全体の確認のみ可能となっています。
PDBごとのセッション数使用率について
PDBに指定できるセッション数
CDBの初期化パラメータに指定したSESSIONSを超えない範囲でPDBのSESSIONSを制限することが出来ます。
CDBのSESSIONSに指定されている値は、PDBのSESSIONS合計値ではないことに注意してください。
指定可能な範囲はCDBのSESSIONS値までであり、PDBのSESSIONS合計値がCDBのSESSIONS値を超えていても問題ありません。
以下マニュアルより、SESSIONSのデフォルトはPROCESSES * 1.5 + 22となります。
指定可能な範囲はCDBのSESSIONS値までであり、PDBのSESSIONS合計値がCDBのSESSIONS値を超えていても問題ありません。
https://docs.oracle.com/cd/E57425_01/121/REFRN/GUID-52804B5A-164F-44F3-8980-F2593B58D807.htm
Oracle Databaseリファレンス
12cリリース1 (12.1)
B71292-09
PDBごとの最大セッション数の変更
以下にPDBのSESSIONSを150に設定する例を示します。CDB名:orcl PDB名:pdborcl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# su - oracle $ sqlplus / as sysdba -- CDB の最大セッション数を確認します。 SQL> show parameter sessions -- pdborcl にコンテナを変更します。 SQL> alter session set container=pdborcl; -- 現在のコンテナを確認します。 SQL> set line 120 pages 1000 trim on SQL> select CON_ID,DBID,NAME,OPEN_MODE from v$pdbs; -- pdborcl の最大セッション数を確認します。 SQL> show parameter sessions -- pdborcl の最大セッション数を変更します。 SQL> alter system set sessions = 150 scope=both; -- pdborcl の変更後最大セッション数を確認します。 SQL> show parameter sessions SQL> exit |
PDBごとのセッション数使用率の確認
以下のSQLでセッション数の使用率を確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
$ sqlplus / as sysdba -- pdborcl にコンテナを変更します。 SQL> alter session set container=pdborcl; -- 現在のコンテナを確認します。 SQL> set line 120 pages 1000 trim on SQL> select CON_ID,DBID,NAME,OPEN_MODE from v$pdbs; -- pdborcl の最大セッション数を確認します。 SQL> show parameter sessions -- pdborcl の現在のセッション数を確認します。 SQL> select a.inst_id 2 , a.con_id 3 , count(1) num_session 4 from GV$SESSION a 5 , V$PDBS b 6 where a.con_id = b.con_id 7 group by a.inst_id,a.con_id; -- pdborcl のセッション使用率を確認します。 SQL> select a.inst_id 2 , 100 * (count(1) / c.value) session_ratio 3 from GV$SESSION a 4 , V$PDBS b 5 , GV$PARAMETER c 6 where a.con_id = b.con_id 7 and c.con_id = b.con_id 8 and a.inst_id = c.inst_id 9 and c.name = 'sessions' 10 group by a.inst_id 11 , c.value 12 order by 1; |