当前位置:网站首页>金仓数据库 Oracle至KingbaseES迁移最佳实践(2. 概述)
金仓数据库 Oracle至KingbaseES迁移最佳实践(2. 概述)
2022-07-27 18:07:00 【沉舟侧畔千帆过_】
2. 概述
本章节包含以下内容:
2.1. Oracle兼容特性概览
通常,异构数据库移植的工作量繁重。这些工作量主要来源于:在数据类型、SQL语言、PL/SQL语言、甚至客户端应用编程接口等诸多方面对两个数据库所进行的、大量的语法或功能的对齐处理。
同样的,从Oracle向KingbasES移植的情况也如此。为降低移植工作量,KingbaseES在其内部实现了大量的Oracle兼容特性。这些特性 从语法或功能上对Oracle提供了原生支持。因此,在移植过程中,Oracle程序只需很少甚至不做任何改动就能在KingbaseES环境中运行。
此外,对未提供原生支持的Oracle功能,KingbaseES也给出了相应的移植建议。
2.1.1. 数据类型
数据类型是描述数据库系统底层信息资源模式的常用手段。通常,两个数据库系统数据类型的兼容好坏直接影响移植的难易程度。因此,KingbaseES对Oracle的特有数据类型提供了全面的原生支持。这些类型如Oracle的NUMBER、VARCHAR2、CHAR(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移植的关键技术和实现方式。在每项技术和实现方式的描述上,本指南只提供有限的内容介绍,并未提供全面的细节说明。所以,用户若需了解某些技术的实现细节还请参照相关的技术资料。
边栏推荐
- Koin simple to use
- JVS基础介绍
- Redis 事物学习
- JD: search product API by keyword
- (manual) [sqli labs38, 39] stack injection, error echo, character / number type
- Ie11 method of downloading doc PDF and other files
- 如何监控NVIDIA Jetson的的运行状态和使用情况
- Flask Mdict builds online MDICT Dictionary Service
- Analysis on the optimization of login request in IM development of instant messaging mobile terminal
- Huawei's 150 member team rushed to the rescue, and Wuhan "Xiaotangshan" 5g base station was quickly opened!
猜你喜欢

C language -- array

Introduction to JVs Foundation

Redis 事物学习

How bad can a programmer be?

【效率】弃用 Notepad++,这款开源替代品更牛逼!

【深度学习】Pytorch Tensor 张量

Babbitt | metauniverse daily must read: Tencent News suspended the sales service of digital collections, users left messages asking for a "refund", and phantom core also fell into the dilemma of "unsa

Session attack

Jetpack Compose 性能优化指南——编译指标

从0开始写bootloader
随机推荐
Redis thing learning
人家这才叫软件测试工程师,你那只是混口饭吃(附HR面试宝典)
IM即时通讯开发如何提升移动网络下图片传输速度和成功率
SQL高级技巧CTE和递归查询
MySQL log query log
JVS基础框架功能列表
Can tonghuashun open an account on weekends? Is it safe to open an account
Scrollintoview realizes simple anchor location (example: select city list)
【数据集显示标注】VOC文件结构+数据集标注可视化+代码实现
【深度学习】Pytorch Tensor 张量
Recognized by international authorities! Oceanbase was selected into the Forrester translational data platform report
软件测试面试题:已知一个队列,如: [1, 3, 5, 7], 如何把第一个数字,放到第三个位置,得到:[3, 5, 1, 7]
access control
MySQL 日志查询日志
Interviewer: what is the abstract factory model?
One week activity express | in simple terms, issue 8; Meetup Chengdu station registration in progress
greedy
Anfulai embedded weekly report no. 275: 2022.07.18--2022.07.24
Express: search product API by keyword
用户和权限撤销用户权限