14 DBMS_ACTIVITY
DBMS_ACTIVITY
には、認可されたユーザーがOATSによって取得されたアクティビティ情報を制御できるファンクションおよびプロシージャが含まれています。
このパッケージの所有者はSYS
であるため、SYS
以外のユーザーにはEXECUTE
パッケージ権限が必要です。 DBAロールを持つユーザーには、このパッケージのEXECUTE
権限が付与されます。
この章のトピックは、次のとおりです:
14.1 DBMS_ACTIVITYの使用方法
オブジェクト・アクティビティ・トラッキング・システム(OATS)は、様々なデータベース・オブジェクトに関連付けられた様々なタイプのアクティビティに関する情報を提供するRDBMSベースの汎用トラッキング・サービスです。 アクティビティは、表のスキャンやロードなど、ユーザーまたはシステムが開始するアクションを表します。 ほとんどのアクティビティは、15分間の表のスキャン数など、頻度(固定時間間隔における件数)という形で追跡されます。
アクティビティを追跡するデータベース・オブジェクトには、表およびマテリアライズド・ビューが含まれます。 アクティビティのタイプとしては、行の挿入、削除および更新、表のスキャン、ロードおよび切捨て、パーティション・メンテナンス操作(作成、削除、移動、分割、マージおよび交換)、マテリアライズド・ビューのリライトおよびリフレッシュなどがあります。
アクティビティのもう1つ重要な分類は、MV、索引、ゾーン・マップなどの補助構造の使用または不使用に関連するものです。
追跡手法は、アクティビティのタイプに応じて、高精度、近似、確率的のいずれかにできます。 ほとんどのアクティビティは、効率上の理由から、近似で追跡されます。
追跡手法には、アクティビティのタイプと様々なクライアントによるその使用状況によって向き不向きがあります。 たとえば、索引およびマテリアライズド・ビューの使用状況を追跡する場合にはカウンタが便利です。 カウンタは、経時的にオブジェクトの使用パターンを取得できるように一定の期間保持されます。 同様に、表の列の更新アクティビティを追跡するには、更新カウンタを個別に保持します。 別の追跡手法としてビットベクトルにビットを設定するというものがあり、これは、ある期間内に特定のアクティビティが発生したことを登録し、アクティビティの発生回数は示さない場合に適しています。
高精度追跡: アクティビティは、100%の精度で考慮されます。 マルチプロセッサ環境で高精度追跡を行うには、なんらかの形式のアトミック更新またはラッチが必要です。 OATSは、通常、クライアントがその種類の精度を必要としないかぎり、高精度追跡を回避します。
近似追跡: アクティビティは、ほとんどの場合に考慮されますが、稀に例外があります。 近似追跡の例として、アクティビティ・カウンタの内容を保証しない更新があります。 カウンタの変更時にロックまたはラッチが実行されず、アトミック操作が使用されないため、内容を保証しない更新は非常に効率的です。 ただし、内容を保証しない更新の結果として、更新が失われ、カウント数が実際よりも少なくなる可能性があります。 更新の損失が稀である場合には、内容を保証しない更新は近似追跡に非常に効率的な手法です。
確率的追跡: アクティビティは特定の確率でサンプリングされ、サンプルの一部になる時期が考慮されます。 確率的追跡では、アクティビティ・データの精度は低くなりますが、追跡アクションの発生頻度が抑えられます。
発生追跡: 特定のアクティビティがある期間内に発生したことを記録します。 具体的には、特定のオブジェクト・アクティビティの発生回数を示すのではなく、それが特定の期間に少なくとも1回発生したことを示す情報を提供します。 ビットベクトルの使用は、発生追跡でよく使用される手法です。 発生追跡は、ビットベクトルでのビットの設定方法に応じて、高精度(衝突なし)または近似(衝突の可能性あり)のいずれかにできます。
トランザクションおよびロールバックによるカウンタの影響: 高精度追跡のカウンタ以外のタイプのカウンタは、いずれもトランザクション型ではなく、ロールバックの影響を受けません。 つまり、トランザクションが失敗しても、近似カウンタはそのトランザクションからのアクションを記録できます。 また、データベースがセーブポイントにロールバックされたときに、近似カウンタは以前の状態に戻されません。
14.2 DBMS_ACTIVITYサブプログラムの要約
DBMS_ACTIVITY
では、CONFIGURE
、CREATE_SNAPSHOP
、DELETE_SNAPSHOTS
の各プロシージャを使用します。
表14-1 DBMS_ACTIVITYパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
認可されたユーザーは、OATSの構成パラメータをパラメータ/値という形式で設定できます。 |
|
認可されたユーザーは、メモリーに保持されているアクティビティ情報をディスクにフラッシュすることで、ローカル・インスタンスまたはすべてのデータベース・インスタンスにアクティビティ・スナップショットを手動で作成できます |
|
認可されたユーザーは、 |
|
認可されたユーザーは、 |
14.2.1 CONFIGUREプロシージャ
このプロシージャを使用すると、認可されたユーザーはOATSの構成パラメータをパラメータ/値という形式で設定できます。
このファンクションは、異なる構成パラメータを設定するたびに何度もコールすることも、同じパラメータを異なる値でコールすることもできます。 パラメータ設定は、示されたデータベースまたはローカル・データベースに適用されます。
構文
DBMS_ACTIVITY.CONFIGURE ( PARAMETER_NAME IN VARCHAR2 PARAMETER_VALUE IN NUMBER, CON_DBNAME IN VARCHAR2 := NULL );
パラメータ
表14-2 CONFIGUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
設定する構成パラメータの名前。 使用可能なパラメータ:
|
|
使用する構成パラメータの値。 |
|
統合データベース(CDB)内のコンテナの名前。 ルートまたはプラガブル・データベースのいずれかです。 省略すると、デフォルトはローカル・データベースになります。 ノート: 現在のCDB名またはPDB名は、サポートされている、null以外の値のみです。 |
使用上のノート
ユーザーは、SYS
であるか、DBAロールを持っているか、またはEXECUTE
パッケージ権限を付与されている必要があります。
14.2.2 CREATE_SNAPSHOTプロシージャ
このプロシージャを使用すると、認可されたユーザーは、メモリーに保持されているアクティビティ情報をディスクにフラッシュすることで、ローカル・インスタンスまたはすべてのデータベース・インスタンスにアクティビティ・スナップショットを手動で作成できます。
構文
DBMS_ACTIVITY.CREATE_SNAPSHOT( ALL_INSTANCES IN BOOLEAN := TRUE, CON_DBNAME IN VARCHAR2 := NULL );
パラメータ
表14-3 CREATE_SNAPSHOTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
アクティビティ・スナップショットをローカル・インスタンスに対してのみ作成する場合は、 |
|
統合データベース(CDB)内のコンテナの名前。 ルートまたはプラガブル・データベースのいずれかです。 省略すると、デフォルトはローカル・データベースになります。 ノート: 現在のCDB名またはPDB名は、サポートされている、null以外の値のみです。 |
使用上のノート
作成されたスナップショットのSNAP_ID
。
ユーザーは、SYS
であるか、DBAロールを持っているか、またはEXECUTE
パッケージ権限を付与されている必要があります。
14.2.3 DELETE_SNAPSHOTSプロシージャ
このプロシージャを使用すると、認可されたユーザーはBEFORE_SNAP_ID
という入力スナップショットIDに基づいて古いスナップショットをすべて手動で削除できます。
構文
DBMS_ACTIVITY.DELETE_SNAPSHOTS ( BEFORE_SNAP_ID IN NUMBER, CON_DBNAME IN VARCHAR2 := NULL );
パラメータ
表14-4 DELETE_SNAPSHOTSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
統合データベース(CDB)内のコンテナの名前。 ルートまたはプラガブル・データベースのいずれかです。 省略すると、デフォルトはローカル・データベースになります。 ノート: 現在のCDB名またはPDB名は、サポートされている、null以外の値のみです。 |
使用上のノート
1つ以上のスナップショットが削除された場合はTRUE
、それ以外の場合はFALSE
を戻します。
ユーザーは、SYS
であるか、DBAロールを持っているか、またはEXECUTE
パッケージ権限を付与されている必要があります。
14.2.4 DELETE_SNAPSHOTSプロシージャ
このプロシージャを使用すると、認可されたユーザーはBEFORE_TIME
という入力タイムスタンプ値に基づいて古いスナップショットをすべて手動で削除できます。
構文
DBMS_ACTIVITY.DELETE_SNAPSHOTS ( BEFORE_TIME IN TIMESTAMP, CON_DBNAME IN VARCHAR2 := NULL );
パラメータ
表14-5 DELETE_SNAPSHOTSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
この引数値より小さい時間に関連付けられたスナップショットはすべて、ディスク記憶域(SYSAUX)から削除されます。 |
|
統合データベース(CDB)内のコンテナの名前。 ルートまたはプラガブル・データベースのいずれかです。 省略すると、デフォルトはローカル・データベースになります。 ノート: 現在のCDB名またはPDB名は、サポートされている、null以外の値のみです。 |
使用上のノート
1つ以上のスナップショットが削除された場合はTRUE
、それ以外の場合はFALSE
を戻します。
ユーザーは、SYS
であるか、DBAロールを持っているか、またはEXECUTE
パッケージ権限を付与されている必要があります。