説明
このステートメントは、指定されたリモートデータベースへのアクセス用 dblink を作成するために使用します。このステートメントでは dblink の名前を指定し、リモートデータベースのユーザー名、テナント名、パスワード、IP アドレス、ポート番号、およびアクセスタイプを提供する必要があります。逆リンクの場合は、ローカルデータベースのユーザー名、テナント名、パスワード、IP アドレス、ポート番号を提供する必要があります。アクセスタイプを指定しない場合、デフォルトでリモートのOceanBaseデータベースにアクセスする dblink が作成されます。
リモートデータベースがOceanBaseデータベースの場合、IPアドレスとポート番号は、リモートのOceanBaseクラスタ内の特定のOBServerノードのIPアドレスとポート番号、またはOceanBaseクラスタのProxyのIPアドレスとポート番号を指定できます。dblink の作成時に指定するポート番号がクラスタのProxyのポート番号であり、かつProxyがConfigUrlによってデプロイされている場合は、クラスタ名を指定する必要があります。逆リンク機能が必要な場合は、ローカルのOceanBaseクラスタ内の特定のOBServerのIPアドレスとポート番号、およびユーザー名、テナント名、パスワードを追加で提供する必要があります。
リモートデータベースがOracleデータベースの場合、アクセスタイプを明示的に OCI タイプと指定し、oracle_sid を指定する必要があります。また、テナント名は oracle に設定する必要があります。
構文
CREATE DATABASE LINK dblink_name CONNECT TO user_name@tenant_name
IDENTIFIED BY password_str [OB|OCI] HOST 'ip:port[/oracle_sid]' [CLUSTER cluster_name] [MY_NAME local_user_name@local_tenant_name
IDENTIFIED BY local_password_str HOST 'local_ip:local_port'];
説明
フィールド |
説明 |
|---|---|
| dblink_name | アクセスするデータベースリンクの名前を指定します。 |
| user_name | リモートデータベースのユーザー名を指定します。 |
| tenant_name | リモートデータベースのテナント名を指定します。リモートデータベースがOracleの場合、テナント名は常に oracle です。 |
| password | リモートデータベースのユーザー名のログインパスワードを指定します。パスワードに数字や文字以外の特殊文字(~!@#%^&*_-+=|(){}[]:;,.?/ )が含まれる場合は、二重引用符で囲んで構文エラーを回避してください。 |
| OB | OCI | OBはリモートデータベースのタイプをOceanBaseデータベースと指定することを表し、OCI はリモートデータベースのタイプをOracleと指定することを表します。両方のパラメータを指定しない場合、OceanBaseデータベースがデフォルトのリモートデータベースタイプとなります。 |
| ip | リモートデータベースのIPアドレスを指定します。リモートデータベースのタイプがOceanBaseデータベースの場合、IPアドレスはクラスタのProxyのIPアドレス、またはクラスタ内の特定のOBServerのIPアドレスを指定できます。OBServerのIPアドレスを指定する場合、ローカルデータベースと指定したOBServer間のネットワークが相互接続可能である必要があります。
説明IPアドレスに加えて、OceanBaseデータベースはドメイン名もサポートしています。例えば、 |
| port | リモートデータベースのポート番号を指定します。リモートデータベースのタイプがOceanBaseデータベースの場合、クラスタのProxyのポート番号、またはクラスタ内の特定のOBServerのポート番号を指定できます。OBServerのポート番号を指定する場合、ローカルデータベースと指定したOBServer間のネットワークが相互接続可能である必要があります。リモートデータベースのタイプがOracleデータベースの場合、IPアドレスはOracleインスタンスのIPアドレスです。 |
| oracle_sid | リモートOracleデータベースの sid。リモートデータベースのタイプがOracleデータベースの場合にのみ oracle_sid を指定する必要があります。 |
| cluster_name | リモートOceanBaseクラスタ名。IPアドレスとポート番号がProxyのものであり、かつProxyがConfigUrlによってデプロイされている場合にのみクラスタ名を指定する必要があります。クラスタ名は二重引用符で囲む必要があります。 |
| local_cluster_name | ローカルOceanBaseクラスタ名。IPアドレスとポート番号がProxyのものであり、かつProxyがConfigUrlによってデプロイされている場合にのみクラスタ名を指定する必要があります。クラスタ名は二重引用符で囲む必要があります。 |
| local_user | ローカルデータベースのユーザー名。 |
| local_tenant | ローカルデータベースのテナント名。 |
| local_password | ローカルデータベースのユーザー名のログインパスワード。パスワードに数字や文字以外の特殊文字(~!@#%^&*_-+=|(){}[]:;,.?/ )が含まれる場合は、二重引用符で囲んで構文エラーを回避してください。 |
| local_ip | ローカルデータベースクラスタ内の特定のOBServerのIPアドレス。 |
| local_port | ローカルデータベースクラスタ内の特定のOBServerのポート番号。 |
例
例1:リモートのOceanBaseデータベースに接続する dblink を作成します。名前は ob_dblink_proxy です。リモートデータベースのテナントはデフォルトの oracle を使用します。ProxyはConfigUrlによってデプロイされます。クラスタ名は二重引用符で囲む必要があります。これは、クラスタ名の文字が大文字になるのを防ぐためです。
obclient> CREATE DATABASE LINK ob_dblink_proxy CONNECT TO ob_testuser@oracle IDENTIFIED BY **1** OB HOST '10.XXX.XXX.XXX:30084' CLUSTER “ob***”;
Query OK, 1 row affected
例2:リモートのOceanBaseデータベースに接続する dblink を作成します。名前は ob_dblink_reverse_link で、逆リンクも有効にします。リモートデータベースのテナントは oracle です。
obclient> CREATE DATABASE LINK ob_dblink_reverse_link CONNECT TO ob_testuser2@oracle IDENTIFIED BY **1** OB HOST '10.XXX.XXX.XXX:35305' MY_NAME local_ob_testuser@oracle identified by **2** host '10.XXX.XXX.XXX:35307';
Query OK, 1 row affected
例3:リモートのOracleデータベースに接続するdblinkを作成します。名前はorcl_dblink、リモートデータベースのテナントはoracleです。
obclient> CREATE DATABASE LINK orcl_dblink CONNECT TO orcl_testuser@oracle IDENTIFIED BY **1** OCI HOST '10.XXX.XXX.XXX:1521/ORCL';
Query OK, 1 row affected