テーブルに関連付けられたオブジェクトを照会する
V2.xおよびV3.xバージョンとは異なり、OceanBaseデータベースV4.xバージョンでは、object_idを使用して一部のデータベースオブジェクトに対してグローバルな統一コードを割り当てます。object_idによって割り当てられるコードはテナント内で一意です。
さらに、OceanBaseデータベースV4.xバージョンでは、テーブルのobject_idとテーブルのtable_idが同一であり、あるテーブルのtable_idが既知であれば、table_idを使用してそのテーブルの情報を照会できます。これには、テーブル名、テーブルが属するデータベース、テーブルのサブオブジェクト(例えば、パーティション名)などの情報が含まれます。
システムテナント
ビュー
CDB_OBJECTSには、すべてのテナントのすべてのテーブルの情報が記録されており、ユーザーはこのビューを使用して任意のテーブルの関連情報を照会できます。ステートメントは以下のとおりです:obclient> SELECT * FROM oceanbase.CDB_OBJECTS WHERE CON_ID=tenant_id AND OBJECT_ID=table_id AND OBJECT_TYPE='TABLE';例えば、
tenant_idが1002のテナントにtable_idが500007のテーブルがある場合、システムテナントでそのテーブルを照会するステートメントは次のとおりです:obclient> SELECT * FROM oceanbase.CDB_OBJECTS WHERE CON_ID=1002 AND OBJECT_ID=500007 AND OBJECT_TYPE='TABLE';ユーザーテナント
MySQLモードのユーザーテナントでは、以下のステートメントを使用して照会できます。
obclient> SELECT * FROM oceanbase.DBA_OBJECTS WHERE OBJECT_ID=table_id AND OBJECT_TYPE='TABLE';Oracleモードのユーザーテナントでは、以下のステートメントを使用して照会できます。
obclient> SELECT * FROM SYS.DBA_OBJECTS WHERE OBJECT_ID=table_id AND OBJECT_TYPE='TABLE';
テーブルまたはパーティションの場所を照会する
あるテーブルのtable_idが既知であれば、table_idを使用してそのテーブル上のパーティションレプリカが配置されているノードの情報を照会することもできます。
システムテナント
システムテナントでは、以下のステートメントを使用して照会できます。
obclient> SELECT * FROM oceanbase.CDB_OB_TABLE_LOCATIONS WHERE TENANT_ID=tenant_id AND TABLE_ID=table_id AND TABLE_TYPE='USER TABLE';ユーザーテナント
MySQLモードのユーザーテナントでは、以下のステートメントを使用して照会できます。
obclient> SELECT * FROM oceanbase.DBA_OB_TABLE_LOCATIONS WHERE TABLE_ID=table_id AND TABLE_TYPE='USER TABLE';Oracleモードのユーザーテナントでは、以下のステートメントを使用して照会できます。
obclient> SELECT * FROM SYS.DBA_OB_TABLE_LOCATIONS WHERE TABLE_ID=table_id AND TABLE_TYPE='USER TABLE';