OceanBaseデータベースのシステムビューは、ディクショナリビューとパフォーマンスビューに分類されます。本記事では、主にディクショナリビューとパフォーマンスビューの内容および参照方法について説明します。
ディクショナリビューは、データベース内のメタデータ情報やシステム状態情報を表示するための仮想テーブルであり、テーブル、列、インデックス、ユーザー、ロール、権限などが含まれます。ディクショナリビューは通常、システムテーブル領域に格納され、読み取り専用であり、変更や削除はできません。
パフォーマンスビューは、データベースのメモリ構造に基づいて構築された仮想テーブルであり、データベースのパフォーマンス統計情報や監視情報を表示するために使用されます。主にパフォーマンスに関連しているため、動的パフォーマンスビューとも呼ばれます。パフォーマンスビューは内部ディスク構造やメモリ構造に関するデータを提供することができますが、それが主な目的ではありません。パフォーマンスビューも通常、システムテーブル領域に格納され、読み取り専用であり、変更や削除はできません。
ディクショナリビューとパフォーマンスビューは、データベース内の非常に重要なメタデータ情報およびシステム状態情報の源泉であり、パフォーマンスチューニングや最適化を行うために、データベースの構造、状態、パフォーマンスを理解するのに役立ちます。
sysテナントのビューの概要
OceanBaseデータベースのメタデータ情報やシステム状態情報を照会する必要がある場合、sys テナントのビューを照会することで取得できます。sys テナントはOceanBaseデータベース内の特別なテナントであり、テーブル領域、ユーザー、ロール、権限など、すべてのシステムレベルのオブジェクトとメタデータ情報を含んでいます。sys テナントには、データベースの構造と状態情報を表示するための多くの仮想テーブル、すなわちビューが存在します。以下では、OceanBaseデータベースの sys テナントにあるビューの概要を説明します。
ディクショナリビュー
sys テナントのディクショナリビューは、データベース内のメタデータ情報やシステム状態情報を表示するための仮想テーブルであり、これらのビューを照会することでデータベースの構造と状態情報を取得できます。 sys テナントのディクショナリビューには、oceanbase.CDB_* ビューと oceanbase.DBA_* ビューが含まれます。
oceanbase.CDB_*ビュー:この種のビューは、システムテナントからすべてのテナントのデータベースオブジェクト情報にアクセスするために使用されます。一般的に、テナントレベルのデータディクショナリビューはDBA_OB_*に対応します。oceanbase.DBA_*ビュー:この種のビューは、現在のテナント内のすべてのデータベースオブジェクト情報を取得するために使用されます。すべてのテナントから見えるビューであり、この種のビューにアクセスするには管理者権限が必要です。以下のビューは
sysテナントでのみ表示されます:- oceanbase.DBA_OB_RESOURCE_POOLS
- oceanbase.DBA_OB_ROOTSERVICE_EVENT_HISTORY
- oceanbase.DBA_OB_SERVERS
- oceanbase.DBA_OB_SERVER_EVENT_HISTORY
- oceanbase.DBA_OB_SERVER_JOBS
- oceanbase.DBA_OB_TENANT_JOBS
- oceanbase.DBA_OB_UNITS
- oceanbase.DBA_OB_UNIT_CONFIGS
- oceanbase.DBA_OB_UNIT_JOBS
- oceanbase.DBA_OB_ZONES
パフォーマンスビュー
sys テナントのパフォーマンスビューは、データベースのパフォーマンス統計情報や監視情報を表示するための仮想テーブルであり、これらのビューを照会することでデータベースのパフォーマンス状態と監視情報を取得できます。 パフォーマンスビューの名前は GV$* または V$* で始まります。GV$ ビューを照会すると、すべての条件に合致する V$ ビューの情報が返されます。
GV$*: クラスタ全体の稼働状態とパフォーマンス指標情報を表示するために使用されます。この種のビューはクラスタ全体でアクセス可能で、グローバルな状態情報を提供します。 アクセス権限によって、以下のように分類されます:sysテナントからアクセスする場合、すべてのテナントの情報が表示されます。- 通常のテナントからアクセスする場合、現在のテナントの情報が表示されます。
V$*: クライアントが接続しているノードの稼働状態とパフォーマンス指標情報を表示するために使用されます。この種のビューは、クライアントが接続しているノードの状態情報のみを提供するために使用できます。他のノードの状態情報にアクセスする必要がある場合は、GV$*ビューを使用してください。
ビューの確認
sysテナントにログインし、SHOWステートメントを使用して対応するタイプのビューを確認できます。
oceanbase.CDB_*ビュー、oceanbase.DBA_*ビュー、およびパフォーマンスビューの例を以下に示します:obclient> USE oceanbase; obclient> SHOW TABLES;
MySQLテナントのビューの概要
OceanBaseデータベースでは、MySQLテナント内のビューは仮想テーブルであり、1つまたは複数の基本テーブルの行と列で構成される論理テーブルです。ビューは基本テーブルの複雑さを隠蔽し、クエリ操作を簡素化し、データアクセスの効率とセキュリティを向上させることができます。
ディクショナリビュー
MySQLテナント内のディクショナリビューには、information_schema.xxxビューとmysql.xxxビューが含まれます。
information_schema.xxxビュー:この種のビューは、MySQLテナント内のデータベースメタデータ(データベースまたはテーブル名、列のデータ型、アクセス権限など)へのアクセスを提供します。これらはデータディクショナリまたはシステムカタログと呼ばれます。mysql.xxxビュー:この種のビューには、データベースオブジェクトのメタデータを格納するデータディクショナリテーブルと、その他の操作目的で使用されるシステムテーブルが含まれます。また、一部のmysql.xxxプレフィックスを持つビューと互換性があります。例えば、mysql.help_xxxビューにはサーバー側のヘルプ情報が含まれています。mysql.time_zone_xxxはタイムゾーン関連情報を記録しており、mysql.userビューとmysql.dbビューはユーザー権限関連情報を記録しています。
以下は、MySQLテナントで一般的に使用されるディクショナリビューの一部です:
information_schema.tables:データベース内のテーブル情報を表示します。テーブル名、テーブルタイプ、テーブルが属するデータベースなどが含まれます。
information_schema.columns:データベース内の列情報を表示します。列名、データ型、主キーであるかどうかなどが含まれます。
information_schema.indexes:データベース内のインデックス情報を表示します。インデックス名、インデックスタイプ、インデックスが属するテーブルなどが含まれます。
information_schema.views:データベース内のビュー情報を表示します。ビュー名、ビュー定義などが含まれます。
mysql.user:データベース内のユーザー情報を表示します。ユーザー名、パスワード、権限などが含まれます。
パフォーマンスビュー
MySQLテナント内のパフォーマンスビューの名前はGV$*またはV$*で始まります。各V$ビューには、ほぼ対応するGV$ビューが存在します。
GV$*: クラスタ全体の稼働状態とパフォーマンス指標情報を表示するために使用されます。この種のビューはクラスタ全体でアクセス可能で、グローバルな状態情報を提供します。 アクセス権限によって、以下のように分類されます:sysテナントからアクセスする場合、すべてのテナントの情報が表示されます。- 通常のテナントからアクセスする場合、現在のテナントの情報が表示されます。
V$*: クライアントが接続したノードの稼働状態とパフォーマンス指標情報を表示するために使用されます。この種のビューは、クライアントが接続したノードの状態情報を提供するためにのみ使用できます。他のノードの状態情報にアクセスする必要がある場合は、GV$*ビューを使用してください。
ビューの確認
MySQLテナントにログインし、SHOW ステートメントを使用して対応するタイプのビューを確認できます。
information_schema.*ビューを確認する例:obclient> USE information_schema; obclient> SHOW TABLES;mysql.*ビューを確認する例:obclient> USE mysql; obclient> SHOW TABLES;
Oracleテナントのビューの概要
OceanBaseデータベースでは、OracleテナントはOracleデータベースで一般的に使用されるテーブル、ビュー、ストアドプロシージャなどのオブジェクトとの互換性を提供し、ユーザーの移行と使用を容易にします。Oracleテナントには通常、データベースのメタデータとオブジェクト情報を表示するシステムテーブルやビューも存在します。
機能の適用範囲
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
ディクショナリビュー
Oracleテナントのディクショナリビューは、以下の表に示す情報で構成されています。
プレフィックス |
権限 |
その他の情報 |
|---|---|---|
| DBA_ | データベース管理者 | すべてのユーザーのテーブル、インデックス、ビュー、ストアドプロシージャなどを含みます。一部の DBA_ ビューには、管理者にとって有用な情報を含む追加の列があります。 |
| ALL_ | すべてのユーザー | ユーザーが所有するオブジェクトを含みますが、現在のユーザーがアクセス権限を持つオブジェクトのみが表示されます。 |
| USER_ | すべてのユーザー | 現在のユーザーのテーブル、インデックス、ビュー、ストアドプロシージャなどを含みます。プレフィックス USER_ を持つビューには通常、列 OWNER が含まれません。 |
DBA_プレフィックスを持つビューデータベース全体のすべての関連情報を表示します。
DBA_ビューは管理者権限でのアクセスが必要です。ALL_プレフィックスを持つビューユーザーによるデータベース全体の概要を把握するために使用されます。ユーザーが所有するスキーマオブジェクトに加え、これらのビューは公開または明示的にユーザーに付与されたスキーマオブジェクトも返します。
USER_プレフィックスを持つビュー一般のデータベースユーザーが最も頻繁に使用するビューです。この種のビューには以下の特徴があります:
ユーザーのプライベート環境をデータベース内で参照し、ユーザーが作成したスキーマオブジェクト、ユーザーが付与した権限などのメタデータを含みます。
ユーザーに関連する行のみを表示し、
ALL_ビューの情報のサブセットを返します。他のビューと同じ列を持ちますが、列
OWNERは暗黙的です。
Oracleテナントでは、ディクショナリビューへのアクセス権限はユーザーによって異なります。
SYSユーザー データベースのスーパーユーザーであり、最高レベルの権限を持ち、すべてのデータベースオブジェクトとメタデータ情報にアクセスできます。SYSユーザーは、
DBA_、ALL_、USER_プレフィックスを持つすべてのビューにアクセスでき、すべてのユーザーのメタデータ情報も含まれます。一般ユーザー 自身のオブジェクトとメタデータ情報、および自身に付与されたオブジェクトとメタデータ情報にのみアクセスできます。つまり、自身の
USER_プレフィックスを持つビューとすべてのユーザーのALL_プレフィックスを持つビューにのみアクセスでき、DBA_プレフィックスを持つビューにはアクセスできません。
要するに、Oracleテナントでは、DBA_、ALL_、USER_ プレフィックスを持つビューはデータベースのメタデータ情報にアクセスするためのビューです。SYSユーザーはすべてのビューにアクセスできますが、一般ユーザーは自身のビューとすべてのユーザーの共通ビューにのみアクセスできます。
パフォーマンスビュー
Oracleテナントのパフォーマンスビューには SYS.V$* ビューと SYS.GV$* ビューが含まれ、どちらもSYSデータベースに配置されています。クエリ時にはプレフィックス SYS. を省略できます。
SYS.V$*: クライアントが接続したノードの稼働状態とパフォーマンス指標情報を表示するために使用されます。この種のビューは、クライアントが接続したノードの状態情報を提供するためにのみ使用できます。他のノードの状態情報にアクセスする必要がある場合は、SYS.GV$*ビューを使用してください。SYS.GV$*: クラスタ全体の稼働状態とパフォーマンス指標情報を表示するために使用されます。この種のビューはクラスタ全体でアクセス可能で、グローバルな状態情報を提供します。 アクセス権限の違いにより、以下のように区別されます:- SYSテナントからアクセスする場合、すべてのテナントの情報が表示されます。
- 一般テナントからアクセスする場合、現在のテナントの情報が表示されます。
ビューのクエリ
SELECT ステートメントを使用して、対応するタイプのシステムビューを確認できます。
ビューのクエリ例は以下のとおりです:
obclient> SELECT * FROM DBA_VIEWS;
obclient> SELECT * FROM ALL_VIEWS;