金仓数据库 Oracle至KingbaseES迁移最佳实践(2. 概述)

2. 概述

本章节包含以下内容:

2.1. Oracle兼容特性概览

通常,异构数据库移植的工作量繁重。这些工作量主要来源于:在数据类型、SQL语言、PL/SQL语言、甚至客户端应用编程接口等诸多方面对两个数据库所进行的、大量的语法或功能的对齐处理。

同样的,从Oracle向KingbasES移植的情况也如此。为降低移植工作量,KingbaseES在其内部实现了大量的Oracle兼容特性。这些特性 从语法或功能上对Oracle提供了原生支持。因此,在移植过程中,Oracle程序只需很少甚至不做任何改动就能在KingbaseES环境中运行。

此外,对未提供原生支持的Oracle功能,KingbaseES也给出了相应的移植建议。

2.1.1. 数据类型

数据类型是描述数据库系统底层信息资源模式的常用手段。通常,两个数据库系统数据类型的兼容好坏直接影响移植的难易程度。因此,KingbaseES对Oracle的特有数据类型提供了全面的原生支持。这些类型如Oracle的NUMBERVARCHAR2CHAR(n)DATE等。不仅如此,KingbaseES对Oracle PL/SQL中使用的复杂数据类型也提供了兼容性支持,这些类型如Oracle的RECORD类型、%TYPE属性、%ROWTYPE属性、关联数组、可变数组和嵌套表等。

关于interval数据类型目前 V8.6 和Oracle有些差异,主要是精度和语法格式方面。精度方面,V8.6 interval默认精度为6位,Oracle默认精度为9位;语法格式方面,Oracle支持的语法 V8.6 基本都支持。所以在移植方面主要是精度有些差异,从Oracle移植到 V8.6 数据可能会被截断。

2.1.2. SQL语句

在KingbasES中,对大多数常用的Oracle特有SQL语句均提供了原生支持。这项措施使得Oracle应用程序在KingbaseES系统中通常只需很少的代码变动就可正常运行。

KingbaseES主要兼容如下Oracle的 SQL语句:

  • TRUNCATE语句

  • 层次查询

  • DUAL伪表

  • SELECT INTO 的FOR UPDATE语句

  • UPDATE[前缀]多列更新

  • INSERT INTO TABLE([前缀]列)

  • DELETE [FROM]语句

  • 支持WITH子句

  • 支持DBLINK

  • 支持CREATE FORCE VIEW

  • 支持SEQUENCE访问子句

上述这些SQL语句均从语法和语义上实现了Oracle兼容。

2.1.3. PL/SQL语法

KingbaseES支持如下Oracle PL/SQL的常用语法:

  • 赋值语句

  • IF-THEN-ELSE 语句

  • CASE 语句

  • 多种循环语句,如LOOP 语句、WHILE-LOOP 语句和FOR LOOP 语句

  • GOTO 语句

  • %TYPE 属性和%ROWTYPE 属性

  • REF CUSOR 游标

  • %NOTFOUND、%FOUND、%ISOPEN 和 %ROWCOUNT 游标属性

  • RETURNING INTO 语句

  • EXECUTE IMMEDIATE 语句

  • 支持 BULK COLLECT

  • PL/SQL 支持集合类型(关联数组、嵌套表、可变数组)

  • PL/SQL 异常处理

  • FORALL 语句

2.1.4. PL/SQL对象

KingbaseES支持如下Oracle PL/SQL对象:

  • 内置标量函数

  • 行级BEFORE触发器

  • 行级AFTER触发器

  • INSTEAD OF触发器

  • 匿名块

  • 存储过程

  • 函数

  • 子类型

  • 对象类型

2.1.5. 客户端SQL交互工具

在实际应用中,通常客户DDL脚本和报表是通过SQL交互工具移植的。针对这种情况,KingbaseES提供了如下SQL交互工具:

  • KSQL:命令行的SQL交互工具,类似Oracle的 SQL* PLUS。

  • 数据库系统管理工具:图形化的SQL交互工具,类似Oracle的SQL Developer图形化工具。

通过上述工具,用户可连接数据库服务器,运行数据库实用程序,发送SQL语句,运行SQL脚本,或运行KingbaseES数据库管理命令实施数据库管理等。

2.2. 相关技术资源

本指南重点从语句兼容特性、迁移工具、迁移场景和应用程序移植等几方面描述Oracle移植的关键技术和实现方式。在每项技术和实现方式的描述上,本指南只提供有限的内容介绍,并未提供全面的细节说明。所以,用户若需了解某些技术的实现细节还请参照相关的技术资料。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值