OceanBaseデータベースのOracleモードにおけるデータディクショナリは、読み取り専用のテーブル群であり、データベースの管理メタデータを提供します。
データデータ・ディクショナリ・ビューの概要
OceanBaseデータベースのOracleモードにおけるデータディクショナリは、システムテーブルとデータデータ・ディクショナリ・ビューから構成されており、データベースの重要な部分です。
システムテーブルはデータベースに関する情報を格納しており、OceanBaseデータベースのみがこれらのテーブルへの書き込みと読み取りを行うことができます。ユーザーが直接システムテーブルにアクセスすることはほとんどありません。これは、それらが内部実装メカニズム向けであり、読みにくい上に、バージョン間で外部互換性が保証されていないためです。
データデータ・ディクショナリ・ビューは、システムテーブルのデータをユーザーにとって有用な情報に解読します。例えば、ユーザー名やテーブル名を結合キーまたはWHERE句のフィルタ条件として使用し、システムテーブルの情報を簡素化します。ビューには、データディクショナリ内のすべてのオブジェクトの名前と説明が含まれます。一部のビューはすべてのデータベースユーザーがアクセスできますが、他のビューは管理者専用です。
データディクショナリには、以下の情報が含まれますが、これに限定されません:
データベース内の各スキーマオブジェクトの定義、列のデフォルト値、整合性制約情報など。
スキーマオブジェクトに割り当てられたストレージ容量と現在使用中のストレージ容量。
データベースユーザーの名前、ユーザーに付与された権限とロール、およびユーザーに関連する監査情報。
データデータ・ディクショナリ・ビューの構成
データデータ・ディクショナリ・ビューは一般的に、以下の表に示す情報で構成されます。
| プレフィックス | 権限 | 内容 | その他の情報 |
|---|---|---|---|
| DBA_ | データベース管理者 | すべてのオブジェクト | 特定のDBA_ビューには、管理者にとって有用な情報を含む追加の列があります。 |
| ALL_ | すべてのユーザー | ユーザーが保持する権限のあるオブジェクト | ユーザーが所有するオブジェクトを含みます。 |
| USER_ | すべてのユーザー | ユーザーが所有するオブジェクト | プレフィックスUSER_付きのビューには通常、列OWNERが含まれません。 |
ALL_プレフィックス付きのビュー
ALL_プレフィックスを持つビューは、ユーザーによるデータベース全体の概観に使用されます。ユーザーが所有するスキーマオブジェクトに加えて、これらのビューは公開または明示的にユーザーに付与されたスキーマオブジェクトも返します。
DBA_プレフィックス付きのビュー
DBA_プレフィックスを持つビューは、データベース全体のすべての関連情報を表示します。DBA_ビューには、管理者権限でのアクセスが必要です。
USER_プレフィックス付きのビュー
通常のデータベースユーザーが最も頻繁に使用するビューは、USER_プレフィックスを持つビューです。
この種のビューには、以下の特徴があります:
ユーザーが作成したスキーマオブジェクトや、ユーザーが付与した権限など、ユーザーのプライベート環境に関するメタデータをデータベース内で参照します。
ユーザーに関連する行のみを表示し、
ALL_ビューの情報のサブセットを返します。他のビューと同じ列を持ちますが、暗黙の列
OWNERが含まれます。便宜上、
PUBLICシノニムを省略できます。
データデータ・ディクショナリ・ビューの動作メカニズム
Oracleモードでは、ユーザーのSYSユーザーがデータディクショナリのすべてのベーステーブルとユーザーがアクセス可能なビューを所有します。各Oracleテナントは作成時に、デフォルトでSYSユーザーを持ちます。
データベース操作の過程で、データベースシステムはデータディクショナリを読み取り、スキーマオブジェクトが存在するかどうか、およびユーザーが適切なアクセス権限を持つかどうかを判断します。Oracleモードでは、データディクショナリを継続的に更新することで、データベース構造、監査、権限付与、データの変更を反映します。
例えば、ユーザーhrが「インターン」という名前のテーブルを作成した場合、データベースはデータディクショナリに新しい行を追加して、新しいテーブル、列、セグメント、データブロック、およびhrがそのテーブルに対して持つ権限を反映します。次回データデータ・ディクショナリ・ビューをクエリする際、この新しい情報は依然として表示されます。
データディクショナリのベーステーブルにあるデータは、Oracleモードでの正常な動作に不可欠です。データディクショナリ情報への書き込みや変更は、データベース自体のみが行うべきです。Oracleモードのユーザーは、SYSユーザーのスキーマに含まれる行やスキーマオブジェクトを変更してはなりません。このような操作はデータの整合性を損なう可能性があるため、セキュリティ管理者はこれを厳しく制御する必要があります。
データデータ・ディクショナリ・ビューのストレージ
OceanBaseデータベースでは、各テナントのメタデータを一つのまとまりとして扱うデータディクショナリは、各テナントのディクショナリ情報内にのみ保存されます。
特定のテナントのメタデータを格納するデータディクショナリは、そのテナント専用のディクショナリテーブルに保存されるため、各データディクショナリは自分自身のテナント専用のディクショナリテーブルに保存されます。