説明
このステートメントは、指定されたリモートデータベースへのアクセス用 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 アドレスは、クラスタのプロキシの IP アドレス、またはクラスタ内の特定の OBServer ノードの IP アドレスを指定できます。OBServer ノードの IP アドレスを指定する場合、ローカルデータベースと指定された OBServer ノード間のネットワークが相互接続可能である必要があります。
説明IP アドレス以外に、OceanBase データベースはドメイン名もサポートしています。例えば、 |
| port | リモートデータベースのポート番号を指定します。ポート番号は、クラスタのプロキシのポート番号、またはクラスタ内の特定の OBServer ノードのポート番号を指定できます。OBServer のポート番号を指定する場合、ローカルデータベースと指定された OBServer ノード間のネットワークが相互接続可能である必要があります。 |
| cluster_name | リモートの OceanBase クラスタ名を指定します。IP アドレスとポート番号がプロキシに属しており、かつプロキシが 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を参照してください。