CHECK_METADATA¶
説明
Denodo サーバーは、そのすべてのエレメント間の参照を保持します。つまり、メタデータは、データソースとその基本ビューの間および基本ビューとそのデータソースの間、ビューと Web サービスの間および Web サービスとビューの間などの参照を保持します。 CHECK_METADATA
ストアドプロシージャは、Virtual DataPort のメタデータエレメントを解析して、これらすべての参照の正しさを保証します。
CHECK_METADATA
ストアドプロシージャにより検出されたメタデータ情報の不整合を修正することもできます。
このプロシージャは、カタログデータベースが Virtual DataPort に組み込まれている Apache Derby データベースである場合だけでなく、 外部データベースにメタデータを保存する 機能が有効な場合にも実行できます。
重要
メタデータの不整合を修正するために、このプロシージャは、サーバーを シングルユーザーモード に切り替えます。
したがって、このプロシージャは、サーバーの負荷が非常に低いかまったくないときに修正モードで実行するようにしてください。
このプロシージャは、カタログデータベースから未使用の行を削除して未使用のスペースを解放するのではなく、メタデータ情報の不整合を検出して解決するという点で、 MAINTAIN_METADATA_TABLES と異なります。
重要
メタデータを共有するクラスタ環境の要件
メタデータを共有するクラスタ環境でこのプロシージャを使用するには、まず以下のコマンドを実行します。
-- Defines the stored procedure "CLEAN_METADATA_CACHE", which clears the
-- in-memory cache of metadata
CREATE PROCEDURE CLEAN_METADATA_CACHE
CLASSNAME='com.denodo.vdb.contrib.storedprocedure.CleanMetadataCache';
-- Execute the procedure "CLEAN_METADATA_CACHE"
CALL CLEAN_METADATA_CACHE();
構文
CHECK_METADATA(
input_database_name : int
, input_databases_list : array
, input_remove_broken_references : boolean
, input_remove_broken_views_on_cascade : boolean
, input_remove_broken_jar_references : boolean
, input_remove_privileges : boolean
)
input_database_name
(オプション): ストアドプロシージャが不整合を検索するデータベースの名前。input_databases_list
(オプション): プロシージャが不整合を確認するデータベースの配列。input_database_name
とinput_databases_list
の両方の入力パラメータを使用してこのプロシージャを実行することはできません。これらのパラメータがどちらも定義されていない場合、ストアドプロシージャはすべてのメタデータを処理します。input_remove_broken_references
(オプション):true
の場合、プロシージャは、検出した不整合を修正します。false
の場合、不整合のリストを生成します。デフォルト値:false
input_remove_broken_views_on_cascade
(オプション):true
の場合、プロシージャは、メタデータで見つからなかったビューとストアドプロシージャをカスケードで削除します。デフォルト値:false
input_remove_broken_jar_references
(オプション):true
の場合、プロシージャは、データソースによって参照されている拡張機能 (jar) が存在するかどうかを分析します。デフォルト値:false
input_remove_privileges
(オプション):true
の場合、プロシージャは、既存の権限が既存のアイテムに対して定義されているかどうかを分析します。デフォルト値:true
重要
データベースのパラメータは、適用した修正が他のデータベースに影響を及ぼすことを保証しません。つまり、 input_database_name
または input_databases_list
で指定されていないデータベースのエレメントが、ストアドプロシージャを実行しているデータベースに見つからないエレメントを参照している場合、 input_remove_broken_views_on_cascade
オプションが選択されていれば、そのエレメントをカスケードで削除することができます。
このプロシージャは、壊れた参照のリストを出力します。input_remove_broken_references
パラメータが true
の場合、プロシージャは、無効な ID への参照を正しい ID への参照で更新し、この更新の詳細を出力します。有効な ID を見つけられない場合、その参照を削除します。さらに、不整合のあるエレメントを無効化または削除する必要がある可能性があります。
出力スキーマには以下のフィールドがあります。
database_name
: 不整合が見つかったデータベースの名前。type
: 不整合があるエレメントのタイプ。name
: 壊れた参照または不整合を含むエレメントの名前。reference_to_problematic_element
: 存在しないエレメントの ID。problem_type
: 不整合のタイプ。problem_description
: 不整合の詳しい説明。
注釈
出力に含まれる行数は、 input_remove_broken_references
パラメータに応じて異なります。このパラメータが true
の場合、一部の問題を修正すると、他の不整合が自動的に修正される可能性があります。それらの不整合は(このパラメータを false
に設定して実行した場合にリストに出力されたとしても)出力には含まれません 。
重要
このプロシージャを実行するための推奨事項:
このストアドプロシージャを実行する前にメタデータをバックアップすることをお勧めします。
このストアドプロシージャを実行する前に、
Retrieve all rows
オプションを選択していることを確認してください。大量の仮想データベースが存在する環境では、
queryTimeout
コンテキストパラメータを追加することを検討してください。
必要な権限
このプロシージャを呼び出すことができるのはグローバル管理者のみです。
例
例 1
SELECT database_name
,type
,name
,reference_to_problematic_element
,problem_type
,problem_description
FROM CHECK_METADATA()
このプロシージャは、メタデータで見つかった不整合を返しますが、サーバーのエレメントは変更しません。
例 2
SELECT database_name
,type
,name
,reference_to_problematic_element
,problem_type
,problem_description
FROM CHECK_METADATA()
WHERE input_databases_list = { ROW('customer_report'), ROW('operations') }
AND input_remove_broken_references = true
このプロシージャは、データベースの customer_report
と operations
で見つかった不整合を返して、それらの不整合を修正します。
例 3
SELECT database_name
,type
,name
,reference_to_problematic_element
,problem_type
,problem_description
FROM CHECK_METADATA()
WHERE input_remove_broken_references = true
AND input_remove_broken_jar_references = true
AND input_remove_broken_views_on_cascade = true
CONTEXT ('queryTimeout'='1800000')
このプロシージャは、メタデータで見つかった不整合を返し、クエリタイムアウトを 30 分に設定して可能な限りすべての不整合を修正します。