説明
このステートメントは、指定されたリモートデータベースへのアクセス用 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 を指定した場合、作成しようとする dblink が既に存在してもエラーは報告されません。指定しない場合で作成しようとする dblink が既に存在すると、システムはエラーを報告します。 |
| user_name | リモートデータベースのユーザー名を指定します。 |
| tenant_name | リモートデータベースのテナント名を指定します。 |
| password | リモートデータベースのユーザー名のログインパスワードを指定します。パスワードに数字や文字以外の特殊文字(~!@#%^&*_-+=|(){}[]:;,.?/ )が含まれる場合は、構文エラーを回避するために、パスワードをシングルクォートまたはダブルクォートで囲む必要があります。 |
| database_name | リモートMySQLテナントのデータベース名です。dblink でデータを読み取る際、デフォルトでこのデータベースにアクセスします。他のデータベースにアクセスする必要がある場合は、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を参照してください。