# 使用说明
-
通过dblink操作远端数据库的表时,需满足如下要求:
Note:
在分布式部署中,操作远端表时采用列存,除下表所列数据类型要求外,还应遵循列存的数据类型支持范围。
目的端为Oracle 目的端为YashanDB 需先安装libaio库和下载Oracle Instant Client安装包。 - 远端表字段需为下列数据类型: SMALLINT INT FLOAT/BINARY_FLOAT BINARY_DOUBLE NUMBER/DECIMAL DATE TIMESTAMP INTERVAL YEAR TO MONTH INTERVAL DAY TO SECOND CHAR VARCHAR NCHAR NVARCHAR VARCHAR2 NVARCHAR2 RAW BLOB(源端为分布式部署时,不适用) CLOB(源端为分布式部署时,不适用) NCLOB(源端为分布式部署时,不适用) TIMESTAMP WITH TIME ZONE(源端为分布式部署时,不适用) TIMESTAMP WITH LOCAL TIME ZONE(源端为分布式部署时,不适用) 远端表字段需为下列数据类型: TINYINT SMALLINT INT BIGINT FLOAT/BINARY_FLOAT DOUBLE/BINARY_DOUBLE NUMBER BIT BOOLEAN DATE TIME TIMESTAMP INTERVAL YEAR TO MONTH INTERVAL DAY TO SECOND CHAR VARCHAR RAW ROWID(源端为分布式部署时,不适用) -
在分布式部署中,无法对远端数据库的表进行INSERT、UPDATE、DELETE、SEQUENCE、PROCEDURE以及FUNCTION操作。
-
在使用dblink的场景下,不支持通过二阶段提交(Two-phase Commit)保证所有资源同时提交或回滚某个事务。
# 查询远端表
对远端表进行SELECT操作时,存在如下约束:
- 不能采用table.column@dblink形式。
- 单次最多查询32个远端表。
示例
# 插入远端表
对远端表进行INSERT操作时,存在如下约束:
- 不允许多表INSERT。
- 不允许指定分区INSERT。
- 不允许执行INSERT DUPLICATE UPDATE语句。
- 不允许执行INSERT RETURN语句。
- INSERT SELECT不支持LOB类型。
示例(单机、共享集群部署)
# 更新远端表
对远端表进行UPDATE操作时,存在如下约束:
- filter与更新本地数据库的对象的filter相比:
- 不能使用聚集函数。
- 不能使用窗口函数。
- 不能使用子查询。
- 不能使用序列。
- 不能使用自定义函数(包括UPDATE SET语句)。
- 不允许多表UPDATE。
- 不允许指定分区UPDATE。
示例(单机、共享集群部署)
# 删除远端表
对远端表进行DELETE操作时,存在如下约束:
- filter与删除本地数据库的对象的filter相比:
- 不能使用聚集函数。
- 不能使用窗口函数。
- 不能使用子查询。
- 不能使用序列。
- 不能使用自定义函数。
- 不允许多表DELETE。
- 不允许指定分区DELETE。
示例(单机、共享集群部署)