介绍
本项目是一个兼容工具集合,旨在为从其他异构数据库,迁移到 OpenGauss 之后的系统,创建必要的函数,以及系统视图的兼容。为后续的系统运维与应用改造提供便利。
脚本中带有版本控制,直接运行脚本时,会根据如下三种情况进行处理:
- 若待创建对象在目标数据库中不存在,则直接进行创建
- 若待创建对象版本高于目标数据库中的对象版本,则进行升级重建
- 若待创建对象版本不高于目标数据库中的对象版本,则跳过创建
软件架构
SQL文件:
- runMe.sql: 总调度脚本
- Oracle_Views.sql: Oracle数据库兼容性数据字典及视图
- Oracle_Functions.sql: Oracle数据库兼容性函数
- Oracle_Packages.sql: Oracle数据库管理包兼容
- MySQL_Views.sql: MySQL数据库兼容性数据字典及视图 //TODO
- MySQL_Functions.sql: MySQL数据库兼容性函数 //TODO
使用说明
直接在MogDB数据库中执行sql文本。
创建所有兼容性对象
创建所有兼容性对象,包括:视图,函数,管理包等。
# 本地用户,默认库登录 gsql -f runMe.sql # 详细创建语法,注意 test 用户权限(需要具有 sysadmin 权限) gsql -h 127.0.0.1 -p 5432 -U test -d postgres -f runMe.sql
复制
创建单一类兼容对象
以下以 Oracle 兼容性视图为例,其他兼容性对象脚本,也可以以此方式创建。
# 本地用户,默认库登录 gsql -f Oracle_Views.sql # 详细创建语法,注意 test 用户权限(需要具有 sysadmin 权限) gsql -h 127.0.0.1 -p 5432 -U test -d postgres -f Oracle_Views.sql
复制
Oracle 兼容视图
Oracle_Views.sql 包含如下几类 Oracle 兼容性视图:
管理视图: ALL*, DBA, USER_
ALL 视图当前与 DBA 视图一致,并未做权限检验,后期版本将会考虑权限校验。
- [DBA,ALL,USER]_CATALOG
- [DBA,ALL,USER]_CONS_COLUMNS
- [DBA,ALL,USER]_CONSTRAINTS
- [DBA,ALL,USER]_DATA_FILES
- [DBA,ALL,USER]_DEPENDENCIES
- [DBA,ALL,USER]_IND_COLUMNS
- [DBA,ALL,USER]_IND_PARTITIONS
- [DBA,ALL,USER]_IND_STATISTICS
- [DBA,ALL,USER]_INDEX_USAGE
- [DBA,ALL,USER]_INDEXES
- [DBA,ALL,USER]_OBJECTS
- [DBA,ALL,USER]_PART_INDEXES
- [DBA,ALL,USER]_PART_TABLES
- [DBA,ALL,USER]_PROCEDURES
- [DBA,ALL,USER]_SEGMENTS
- [DBA,ALL,USER]_SEQUENCES
- [DBA,ALL,USER]_SOURCE
- [DBA,ALL,USER]_SYNONYMS
- [DBA,ALL,USER]_TAB_COL_STATISTICS
- [DBA,ALL,USER]_TAB_COLS
- [DBA,ALL,USER]_TAB_COLUMNS
- [DBA,ALL,USER]_TAB_COMMENTS
- [DBA,ALL,USER]_TAB_MODIFICATIONS
- [DBA,ALL,USER]_TAB_PARTITIONS
- [DBA,ALL,USER]_TAB_STATISTICS
- [DBA,ALL,USER]_TABLES
- [DBA,ALL,USER]_TABLESPACES
- [DBA,ALL,USER]_TRIGGER_COLS
- [DBA,ALL,USER]_TRIGGERS
- [DBA,ALL,USER]_TYPES
- [DBA,ALL,USER]_VIEWS
- [DBA,ALL]_USERS
- DBA_SOURCE_ALL
其他短名称视图
- DICTIONARY
- DICT
- COLS
- IND
- OBJ
- TAB
- DUAL (For 2.0 and above)
动态性能视图: GV,V
- [GV,V]$DATAFILE
- [GV,V]$LOCK
- [GV,V]$PARAMETER
- [GV,V]$PARAMETER_VALID_VALUES
- [GV,V]$SESSION
- [GV,V]$SESSTAT
- [GV,V]$SPPARAMETER
- [GV,V]$SYSSTAT
- [GV,V]$TABLESPACE
- [GV,V]$VERSION
权限统一查询视图
- DBA_DETAIL_PRIVILEGES
- DBA_ALL_PRIVILEGES
- DBA_ALL_PRIVILEGES_SQL
Oracle 兼容函数
字符函数
- regexp_substr(text,text,int4)
- regexp_substr(text,text,int4,int4,text,int4) -- 注意: 最后一个参数 p_subexpr 不支持
- regexp_instr(text,text,int4,int4,text,int4)
- regexp_replace(text,text,text,int4,int4,text)
- regexp_count(text,text,int4,text)
- replace(text,text)
时间函数
- months_between(timestamp, timestamp)
- trunc(timestamp, text)
- trunc(timestamptz, text)
- round(timestamptz,text)
数字函数
- nanvl(numeric,numeric)
聚合函数
- wm_concat(text)
NULL 值相关函数
- nullif(anyelement, anyelement)
- nvl2(anyelement, anyelement, anyelement)
其他函数
- sys_guid()
- ora_hash(anyelement,bigint,bigint)
- show(text) -- 提供类似 Oracle 中 show xxx 查看相关参数的功能
- show_parameter(text) -- 等同于 show(text)
Oracle 管理包
DBMS_METADATA
- get_ddl(object_type, object_name, schema_name)
DBMS_OUTPUT
- enable(size)
- disable()
- get_line(line, status)
- get_lines(lines, numlines)
- new_line()
- put(text)
- put_line(text)
DBMS_RANDOM
- initialize(int4) -- deprecated in Oracle
- normal()
- random() -- deprecated in Oracle
- seed(int4)
- seed(text)
- string(char,int4)
- terminate() -- deprecated in Oracle
- value()
- value(numeric,numeric)
关于如何使用DBMS_RANDOM在MogDB数据库中生成随机数(数字、字符串和日期),请参见DBMS_RANDOM。
MySQL 兼容函数
字符函数
- find_in_set(text,text)
- find_in_set(text,text[])
NULL值相关函数
- ifnull (text, text)
- ifnull (numeric, numeric)
- ifnull (timestamp, timestamp)
- ifnull (timestamptz, timestamptz)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。