金仓数据库oracle_fdw扩展的使用
关键字:
dblink、外部表、kingbaseES、oracle 、人大金仓
oracle_fdw介绍
oracle_fdw是KingbaseES的一个扩展插件,提供了一个外部数据包装器,可以使KingbaseES方便高效的访问oracle数据库。
oralce_fdw的使用步骤
使用oracle_fdw主要包括以下步骤:
- 创建扩展 (CREATE EXTENSION),需要先安装oracle_fdw扩展;
- 创建服务 (CREATE SERVER),创建一个外部服务器对象,用来表示想要连接的远程数据库。
- 创建用户映射 (CREATE USER MAPPING),每一个用户映射都代表着你允许一个数据库用户访问一个外部服务器。
- 创建与访问表对应的外表 (CREATE FOREIGN TABLE),然后即可通过该外表访问存储在它对应的oracle数据库中的数据,当权限允许时,也可以使用insert、update或者delete语句修改远程表。
oracle_fdw使用展示
使用oracle_fdw需要用户具有superuser(超级用户)的权限,且必须有密码登录,KingbaseKES已经默认已经安装了oracle_fdw扩展,不需要个人再独自安装。
- 初始化数据,登录oracle数据库,建立一个用于测试的表并插入数据。
登录oracle命令:
./ sqlplus myusername/mypassword@ORCL
例如:
./sqlplus c##guangtong/QAZqwe123@192.168.45.198/ORCL
- kes中创建oracle_fdw
同fdw相关的系统视图包括sys_extension、sys_foreign_data_wrapper、sys_foreign_server、sys_user_mappings、sys_foreign_table。在创建扩展前,可以先搜索是否已经创建过扩展,防止创建失败。
- 创建服务
使用create server创建一个外部服务器对象,它用来表示想要连接的远程数据库,指定除了user和password之外的连接信息作为该服务器的选项(options),必选项为dbserver(可以是你的Oracle客户端相应配置的所有形式);可选项有isolation_level(默认值是serializable,其值可以是serializable/read_committed/ read_only),表示事务的隔离级别;nchar(bool类型,默认值为off)。同时,需要提供创建外部服务依赖的外部数据包装器(oracle_fdw)。
- 创建用户映射
定义一个用户到外部服务器的映射,可以理解为当前用户依赖指定的外部映射用来访问外部服务器上的数据库。
options包括:
- username: 连接oracel数据库的用户名,需要大写;
- password:对应连接用户的密码。
(5)创建与访问表对应的外表
使用CREATE FOREIGN TABLE创建一个ksql用户到外部oracle服务器的一个用户表映射,options包括:
- table(必选):oracle中的表名,须与oracle中完全相同,通常大写;
- schema(可选): oracle中表的schema,须与oracle中完全相同,通常大写;
- dblink(可选):oracle database link的名字;
- max_long(可选): 默认值为32767,oracle表中LONG、LONG RAW、XMLTYPE类型列的最大长度;
- readonly(可选):默认值为false,当该选项被设置为true、yes、on时则无法对外表进行INSERT、UPDATE、DELETE操作;
- sample_percent:仅影响ANALYZE处理
- prefetch(可选):默认值为200,指的是kes和oracle外表扫描期间单次 获取的行数,必须介于0~10240之间;
- key(可选):默认值false;如果被设置成了yes/on/true,oracle表中对应的列被认为是主键列,为能进行UPDATE、DELETWE需将所有主键列设置上该选项;
- strip_zero(可选):默认值false,当该选项为yes/on/true时,ASCII 0将在传输过程中删除。
注意:外部表的列必须匹配被引用的远程表,且必须使用mysql_fdw可以转换的数据类型定义kes列,可以参考表1.1。
表1.1 oracle_fdw支持的类型转换
参考资料
KingbaseES产品手册