説明
このステートメントは、指定されたリモートデータベースにアクセスするためのdblinkを作成します。このステートメントでは、dblinkの名前を指定し、リモートデータベースのユーザー名、テナント名、データベース名、パスワード、IPアドレス、ポート番号、およびクラスタ名を提供する必要があります。
OceanBaseデータベースのMySQLモードでは、現在ローカルOceanBaseクラスタのMySQLテナントがリモートOceanBaseクラスタのMySQLテナントのデータを読み取ることのみサポートされています。同一クラスタ内の異なるMySQLテナント間でもdblinkを作成できます。ただし、OceanBaseクラスタのMySQLテナントがネイティブMySQLデータを読み取ること、またはネイティブMySQLがOceanBaseクラスタのMySQLテナントデータを読み取ることは、現時点ではサポートされていません。
OceanBaseデータベースのMySQLモードにおけるdblinkは、以下のデータ型の読み取りをサポートしています。
数値型:
TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL。日付時刻型:
DATE、TIME、YEAR、DATETIME、TIMESTAMP。文字列型:
CHAR、VARCHAR、TINYBLOB、TINYTEXT、BLOB、TEXT、MEDIUMTEXT、LONGBLOB、LONGTEXT。その他の型:
ENUM、SET。
構文
CREATE DATABASE LINK [IF NOT EXISTS] dblink_name CONNECT TO user_name@tenant_name DATABASE database_name IDENTIFIED BY password HOST 'ip:port' [CLUSTER cluster_name];
説明
| フィールド | 説明 |
|---|---|
| dblink_name | アクセスするデータベースリンクの名前を指定します。 |
| IF NOT EXISTS | IF NOT EXISTS を指定した場合、作成予定のdlinkが既に存在していてもエラーは報告されません。指定しない場合、作成予定のdlinkが既に存在しているとシステムはエラーを報告します。 |
| user_name | リモートデータベースのユーザー名を指定します。 |
| tenant_name | リモートデータベースのテナント名を指定します。 |
| password | リモートデータベースのユーザー名のログインパスワードを指定します。パスワードに数字やアルファベット以外の特殊文字(~! @ # % ^ & * _ - + = | () { } [ ] : ; , . ? / )が含まれる場合は、構文エラーを回避するために、パスワードを一重引用符またはダブルクォーテーションマークで囲む必要があります。 |
| database_name | リモートMySQLテナントのデータベース名です。dlinkを使用してデータを読み取る際、デフォルトでこのデータベースにアクセスします。他のデータベースにアクセスする必要がある場合は、SQLステートメントでテーブルに特定のデータベースを指定できます。 |
| ip | リモートデータベースのIPアドレスを指定します。IPアドレスは、クラスタのProxyのIPアドレス、またはクラスタ内の特定のOBServerノードのIPアドレスを指定できます。OBServerノードのIPアドレスを指定する場合、ローカルデータベースと指定されたOBServerノード間のネットワークが相互接続可能であることが求められます。
説明IPアドレスに加えて、OceanBaseデータベースはドメイン名アドレスもサポートしています。例えば、 |
| port | リモートデータベースのポート番号を指定します。ポート番号は、クラスタのProxyのポート番号、またはクラスタ内の特定のOBServerノードのポート番号を指定できます。OBServerのポート番号を指定する場合、ローカルデータベースと指定されたOBServerノード間のネットワークが相互接続可能であることが求められます。 |
| cluster_name | リモートOceanBaseクラスタの名前を指定します。IPアドレスとポート番号はProxyに属しており、ProxyがConfigUrlによってデプロイされる場合にのみクラスタ名を指定する必要があります。クラスタ名は大文字と小文字を区別し、ダブルクォーテーションマークで囲む必要があります。 |
例
リモートのOceanBaseクラスタ上の特定のOBServerノードに接続するためのdblinkを作成します。名前は
ob_dblinkです。リモートデータベースのテナントはmysql(任意のMySQLテナントを指定できます)、ユーザーはuser1、データベースはtestです。ユーザーは実際の環境に応じてパスワード、IPアドレス、ポート番号を指定します。obclient> CREATE DATABASE LINK IF NOT EXISTS ob_dblink CONNECT TO user1@mysql DATABASE test IDENTIFIED BY '******' HOST 'xx.xx.xx.xx:xx'; Query OK, 1 row affectedリモートのOceanBaseクラスタに接続するためのdblinkを作成します。名前は
ob_dblink_proxyです。リモートデータベースのテナントはデフォルトのmysql(任意のMySQLテナントを指定できます)、ユーザーはuser1、データベースはtestです。ユーザーは実際の環境に応じてパスワード、IPアドレス、ポート番号を指定します。obclient> CREATE DATABASE LINK IF NOT EXISTS ob_dblink_proxy CONNECT TO user1@mysql DATABASE test IDENTIFIED BY '******' HOST 'xx.xx.xx.xx:xx' CLUSTER "obcluster"; Query OK, 1 row affected
dblinkを作成した後、クエリや削除などの操作が可能になります。詳細については、SELECTを参照してください。
ユーザーは、ビューoceanbase.DBA_DB_LINKSを使用して作成されたdblink情報を照会できます。詳細については、DBA_DB_LINKSを参照してください。