DBLinkが正常に作成されると、DBLinkを使用してリモートデータベースのオブジェクトにアクセスできます。オブジェクトにはテーブルやビューなどが含まれます。
制限事項
現在のところ、OceanBaseデータベースのMySQLテナントがDBLinkを通じてMySQLデータベースのデータを読み取ることはサポートされておらず、またMySQLデータベースがDBLinkを通じてOceanBaseデータベースのMySQLテナントのデータを読み取ることもサポートされていません。
MySQLモードでは、DBLinkを通じてアクセスできるデータ型は以下のとおりです:
数値型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL
日付時刻型:DATE、TIME、YEAR、DATETIME、TIMESTAMP
文字列型:CHAR、VARCHAR、TINYBLOB、TINYTEXT、BLOB、TEXT、MEDIUMBLOB、LONGBLOB、LONGTEXT
その他の型:ENUM、SET
注意
OBClientの制限により、現在DBLlinkを使用してテーブルデータを読み取る際、リモートテーブル内の
ENUMおよびSET型の列はVARCHAR型の列として処理されます。
各データ型の詳細な説明については、データ型の概要を参照してください。
前提条件
DBLinkが作成済みであること。DBLinkの作成手順の詳細については、DBLinkの作成を参照してください。
リモートデータベースのテーブルへのアクセス
SELECT... FROM テーブル名@DBLink 名 構文を使用して、リモートデータベース内のテーブルデータにアクセスします。SQLステートメントは以下のとおりです:
SELECT select_expr_list
FROM table_name@dblink_name
WHERE where_conditions;
select_expr_list:
table_name.*
| table_alias_name.*
| expr [[AS] column_alias_name]
ステートメントの使用方法:
select_expr_list:クエリ対象の式または列名を指定します。異なる列間は英語のカンマ(,)で区切ります。アスタリスク(*)はすべての列を示します。table_name.*:指定されたテーブルやビューからすべての列を選択します。table_alias_name.*:テーブルやビューのエイリアスを指定します。expr [[AS] column_alias_name]:クエリする列または式のエイリアスを指定します。ASはオプションです。
table_name@dblink_name:クエリ対象のリモートデータベース内のテーブルを指定します。複数のデータベース間は英語のカンマ(,)で区切ります。デフォルトでは、DBLink作成時に指定したデータベース内のテーブルにアクセスします。他のデータベース内のテーブルにアクセスする必要がある場合は、SQLステートメントで指定できます。書式はdatabase_name.table_name@dblink_nameです。where_conditions:フィルタ条件を指定します。クエリ結果には条件を満たすデータのみが含まれます。これはオプションです。
その他のDBLink関連のクエリステートメントについては、SELECTステートメントを参照してください。
例:
ob_dblinkという名前のDBLinkを使用して、リモートデータベース内のテーブルtbl1のデータを照会します。SELECT * FROM tbl1@ob_dblink;DBLinkを使用して、リモートデータベース
test内のテーブルtbl1を読み取り、ローカルデータベースのテーブルtbl1とJoin操作を実行します。SELECT a.c_decimal, b.c_double FROM tbl1 a, tbl1@ob_dblink b WHERE a.c_int = b.c_int;DBLinkを使用して、リモートデータベース
mysql(DBLink作成時に指定したデータベースはtest)内のtbl2テーブルを読み取ります。SELECT * FROM mysql.tbl2@ob_dblink;
関連ドキュメント
その他のDBLink関連の操作については、以下の情報を参照してください: