Oracle Database は、データベース内のすべてのテーブル、ビュー、列、プロシージャに関する情報を提供します。この情報に関する情報はメタデータとして知られています。[ 1 ]これは、データ ディクショナリテーブル (組み込みビューを介してアクセス) とメタデータ レジストリの2 つの場所に格納されます。
他のリレーショナルデータベース管理システムは、ANSI規格に相当する情報スキーマと呼ばれるものをサポートしています。
これらのビューの総数はOracleのバージョンによって異なりますが、1000程度です。
Oracle RDBMSのデータディクショナリテーブルにアクセスする主要な組み込みビューは少なく、以下のとおりです。
さらに、現在のユーザーが所有するオブジェクトのみを表示する「USER_」という接頭辞が付いたビュー(つまり、メタデータのより制限されたビュー)と、データベース内のすべてのオブジェクトを表示する「DBA_」という接頭辞が付いたビュー(つまり、データベースインスタンスのメタデータの制限のないグローバルビュー)も存在します。当然ながら、「DBA_」メタデータビューへのアクセスには、特定の権限が必要です。
テーブル名に「PATTERN」が含まれるすべてのテーブルを検索します。
SELECT Owner AS Schema_Name , Table_Name FROM All_Tables WHERE Table_Name LIKE '%PATTERN%' ORDER BY Owner , Table_Name ;列名に特定のパターンに一致する列が少なくとも1つ含まれるすべてのテーブルを検索します。
SELECT Owner AS Schema_Name , Table_Name , Column_Name FROM All_Tab_Columns WHERE Column_Name LIKE '%PATTERN%' ORDER BY 1 , 2 , 3 ;PATTERNに一致する列名を含むすべてのテーブルの行の総数を推定します(これはSQL*Plus固有のスクリプトです)。
COLUMN DUMMY NOPRINT COMPUTE SUM OF NUM_ROWS ON DUMMY BREAK ON DUMMY SELECT NULL DUMMY , T . TABLE_NAME , C . COLUMN_NAME , T . NUM_ROWS FROM ALL_TABLES T , ALL_TAB_COLUMNS C WHERE T . TABLE_NAME = C . TABLE_NAME AND C . COLUMN_NAME LIKE '%PATTERN%' AND T . OWNER = C . OWNER ORDER BY T . TABLE_NAME ;NUM_ROWSは、テーブルが最後に分析された時点(分析が行われた場合)の行数を記録することに注意してください。これは、現在テーブルに存在する実際の行数とは異なる可能性が高いです。
ビュー列を検索
SELECT TABLE_NAME , column_name , decode ( c . DATA_TYPE , 'VARCHAR2' , c . DATA_TYPE || '(' || c . DATA_LENGTH || ')' , 'NUMBER' , DECODE ( c . data_precision , NULL , c . DATA_TYPE , 0 , c . DATA_TYPE , c . DATA_TYPE || '(' || c . data_precision || DECODE ( c . data_scale , NULL , ')' , 0 , ')' , ', ' || c . data_scale || ')' )), c . DATA_TYPE ) data_type FROM cols c , obj o WHERE c . TABLE_NAME = o . object_name AND o . object_type = ' VIEW ' AND c.table_name LIKE ' % PATTERN % ' ORDER BY c.table_name , c.column_id ;警告: これは、char、varchar、timestamp などの複数のデータ型に関して不完全であり、Oracle 5 まで遡る非常に古い非推奨の辞書ビューを使用しています。
アンダースコアは、SQL のパターンマッチングにおいて単一の文字に一致する特殊な記号であり、クエリの LIKE 句で実際にアンダースコア文字を検索する場合は、エスケープする必要があります。
LIKE文の後に以下を追加するだけです。
逃げる '_'
そして、各リテラルアンダースコアは二重アンダースコアになります: __
例
LIKE '%__G' ESCAPE '_'
Oracle製品であるOracle Enterprise Metadata Manager(EMM)は、ISO/IEC 11179規格に準拠したメタデータレジストリです。管理対象のメタデータを、メタデータ公開に使用できる一貫した形式で格納します。2006年1月時点では、EMMはOracleのコンサルティングサービスを通じてのみ利用可能でした。