OceanBase Database provides DBLinks to support cross-data source access. You can use a DBLink to access a remote database from your local database.
In the Oracle mode of OceanBase Database, you can create a DBLink between two Oracle tenants of OceanBase Database or between an Oracle tenant of OceanBase Database to an Oracle database.
Prerequisites
To create a DBLink, you must have the CREATE DATABASE LINK or CREATE PUBLIC DATABASE LINK privilege. For information about how to grant user privileges, see Modify user privileges.
Create a DBLink from an OceanBase database to another OceanBase database
To access a remote OceanBase database, you can create a DBLink from an Oracle tenant in your local OceanBase database to an Oracle tenant of the remote OceanBase database.
To create a DBLink, you must specify the DBLink name and provide information, such as the username, tenant name, password, IP address, port number, and access type, of the remote database. The data write feature of DBLink supports reverse links. The remote database can access objects, such as tables, views, and synonyms, in the local database through a reverse link. To use the reverse link feature, you must provide information, such as the username, tenant name, password, IP address, and port number, of the local database when you create a DBLink.
The SQL syntax for creating a DBLink from one Oracle tenant of OceanBase Database to another is as follows:
obclient> CREATE DATABASE LINK dblink_name CONNECT TO user@tenant IDENTIFIED BY password [OB] HOST 'ip:port' [CLUSTER cluster_name]
[MY_NAME local_user@local_tenant IDENTIFIED BY local_password HOST 'local_ip:local_port' [CLUSTER local_cluster_name]];
where
dblink_namespecifies the name of the DBLink. The value can contain a maximum of 128 characters.userspecifies the username for logging on to the remote OceanBase database.tenantspecifies the tenant name of the remote OceanBase database. Only Oracle tenants are supported.passwordspecifies the password for logging on to the remote OceanBase database. If the password contains a special character, such as@,#, or!, you must enclose the password with double quotation marks ("") to avoid syntax errors.OBspecifies that the type of the remote database is OceanBase. This parameter is optional.If this parameter is not specified, the remote database is an OceanBase database.
ipspecifies the IP address of the remote OceanBase database. It can be the IP address of the OceanBase Database Proxy (ODP) for the cluster or the IP address of an OBServer node in the cluster.If the IP address of an OBServer node is specified, network connectivity must be ensured between the local database and the specified OBServer node.
portspecifies the port of the remote OceanBase database. It can be the port of the ODP for the cluster, which is 2883 by default, or the SQL port of an OBServer node in the cluster, which is 2881 by default.If the SQL port of an OBServer node is specified, network connectivity must be ensured between the local database and the specified OBServer node.
cluster_namespecifies the name of the cluster on the remote OceanBase database. You need to specify the cluster name only when the specified IP address and port number are those of the ODP of the cluster and the ODP is deployed by using ConfigUrl. The cluster name is case-sensitive and must be enclosed with double quotation marks ("").Note
You can deploy a proxy such as ODP for a cluster by using the ConfigURL or RootService list.
- ConfigUrl: When ODP is started, the
obproxy_config_server_urlparameter specified in the command is used to query the RootServer information of the OceanBase cluster. - RoortService list: When ODP is started, the
-rparameter specified in the command is used to query the RootServer information of the OceanBase cluster.
- ConfigUrl: When ODP is started, the
[MY_NAME local_user@local_tenant IDENTIFIED BY local_password HOST 'local_ip:local_port' [CLUSTER local_cluster_name]]specifies the username, tenant name, password, IP address, port number, and cluster of the local database, which are required only if you want to use the reverse link feature of DBLink.local_user: the username of the local database.local_tenant: the name of the tenant to which the local database belongs.local_password: the password used to log on to the local database. If the password contains a special character, such as@,#, or!, you must enclose the password with double quotation marks ("") to avoid syntax errors.local_ip: the IP address of an OBServer node in the cluster of the local database.local_port: the SQL port number of an OBServer node in the cluster of the local database. By default, the SQL port number of the OBServer node is 2881.local_cluster_name: the name of the cluster of the local OceanBase database. You need to specify the cluster name only when the specified IP address and port number are those of the ODP of the cluster and the ODP is deployed by using ConfigUrl. The cluster name must be enclosed with double quotation marks ("").
Here is an example:
Create a DBLink to connect to a remote OceanBase database by using the IP address and port number of the specified OBServer node.
obclient> CREATE DATABASE LINK ob_dblink CONNECT TO ob_user@oracle IDENTIFIED BY ****** OB HOST 'xx.xx.xx.xx:2881'; Query OK, 1 row affectedCreate a DBLink to connect to a remote OceanBase database by using the IP address and port number of the ODP of a cluster. The ODP is deployed by using ConfigUrl.
obclient> CREATE DATABASE LINK ob_dblink_proxy CONNECT TO ob_user@oracle IDENTIFIED BY ****** OB HOST 'xx.xx.xx.xx:2883' CLUSTER "ob410"; Query OK, 1 row affectedNotice
Enclose the cluster name with double quotation marks ("") to prevent the cluster name from being capitalized.
Create a DBLink named
ob_dblink_reverse_linkthat connects to a remote OceanBase database and provides the reverse link feature.obclient> CREATE DATABASE LINK ob_dblink_reverse_link CONNECT TO ob_user2@oracle IDENTIFIED BY ****** OB HOST 'xx.xx.xx.xx:2881' MY_NAME local_ob_user@oracle IDENTIFIED BY ****** HOST 'xx.xx.xx.xx:2881'; Query OK, 1 row affected
Create a DBLink from an OceanBase database to an Oracle database
To access a remote Oracle database, you can create a DBLink from an Oracle tenant in your local OceanBase database to the remote Oracle database.
To create a DBLink, you must specify the DBLink name and provide information, such as the username, tenant name, password, IP address, port number, and access type, of the remote database. The data write feature of DBLink supports reverse links. The remote database can access objects, such as tables, views, and synonyms, in the local database through a reverse link. The DBLink from an OceanBase database to an Oracle database does not support reverse links.
The SQL syntax for creating a DBLink from an OceanBase database to an Oracle database is as follows:
obclient> CREATE DATABASE LINK dblink_name CONNECT TO user@oracle IDENTIFIED BY password OCI HOST 'ip:port/oracle_service_name';
where
dblink_namespecifies the name of the DBLink. The value can contain a maximum of 128 characters.userspecifies the username for logging on to the remote Oracle database.oracleis always used if the remote database is an Oracle database.passwordspecifies the password for logging on to the remote Oracle database. If the password contains a special character, such as@,#, or!, you must enclose the password with double quotation marks ("") to avoid syntax errors.OCIindicates that the type of the remote database is Oracle. If this parameter is not specified, the remote database type is OceanBase by default.ipspecifies the IP address of the remote Oracle Database instance.portspecifies the port number of the remote Oracle Database instance.oracle_service_namespecifies the name of the service provided by the remote Oracle Database instance.
Example: Create a DBLink to connect to a remote Oracle database:
obclient> CREATE DATABASE LINK orcl_dblink CONNECT TO orcl_user@oracle IDENTIFIED BY ****** OCI HOST 'xx.xx.xx.xx:1521/ORCL';
Query OK, 1 row affected
References
For more information about operations on DBLinks, see the following topics: