Oracle 与 达梦 数据库 对比

   当尝试安装了达梦数据库后,发现达梦真的和Oracle数据库太像了,甚至很多语法都相同。

比如:Oracle登录数据库采用sqlplus,达梦采用disql。

比如查看数据视图:达梦和Oracle都有 v$instance、v$database、dba_users等,使用的语句也都一样,唯一就是有些字段不同,比如查看数据库状态时,达梦是 status$,Oracle是 status。

当前国产数据库可以分为四大类:Oracle系,MySQL系,Informix系,PostgreSQL系

Oracle系的如武汉达梦;MySQL系如巨杉DB、阿里云、TIDB等;Informix系如南大通用;PostgreSQL系如华为GaussDB、金仓等

一、达梦与Oracle各产品对比

二、达梦数据库架构演进

三、达梦与Oracle数据库产品对比

3.1 数据库安装

达梦:
图形界面,基本操作简单,照着提示下一步基本完成;
命令行界面,字符操作,按照提示进行相应选择;

Oracle:
图形界面,内容相对达梦更多,先决条件检查等
静默安装,需提前准备好响应参数文件

3.2 数据库体系结构

达梦:单进程多线程,达梦分为实例与数据库两部分
实例,一组正在运行的DM后台进程/线程以及一个大型的共享内存组成,包含监听线程、工作线程、IO线程、调度线程、日志相关线程等。
数据库,由一组物理文件组成,包含数据文件、日志文件、控制文件以及临时文件等。
控制文件一主一备,备用的只有主不可用的情况才会被使用。

Oracle:多进程
实例,也是一组进程以及共享内存组成,涵盖进程更多
数据库,也是一组物理文件,如数据文件、日志文件、控制文件等
oracle的控制文件可以有多组,同时在线使用

3.3 表空间管理

达梦:
达梦表空间由数据文件组成,一个表空间可以有多个数据文件,一个数据文件只能地属于一个表空间;
仅能对表空间进行offline,不能针对某个数据文件offline;
数据文件迁移,通过一个命令可以直接在操作系统层移动文件完成整体迁移;

Oracle:
由数据文件组成,一个表空间可以有多个数据文件,一个数据文件只能地属于一个表空间;
能对表空间或者数据文件进行offline;
在12c以前,需要手动在操作系统层进行数据文件迁移,然后在数据库层更改相关路径参数;12c以后可以实现一键完成数据文件迁移

3.4 用户模式

两者基本一致,唯一不同是:
达梦一个用户下可以有多个模式(schema),Oracle的用户和模式(shema)是一一对应关系。

3.5 关于备份

达梦:dmrman的使用与RMAN很相似,但是只能做冷备,做热备的时候需要在数据库中进行备份操作。
Oracle:热备在RMAN中进行操作。

3.6 关于表

达梦:DM默认创建的是索引组织表。
Oracle:默认创建的是堆表。

3.7 产品对标

对于oracle有的功能,达梦数据库基本上真的什么都有,比如:

1)数据库对象对比
表、索引、视图、存储过程、约束、包、触发器、同义词、dblink, oralce有的达梦全支持,尤其是同义词国产集中式数据库达梦是唯一有同义词的。

2)安装部署对比
达梦部署简单、支持国产各种芯片和服务器,优于oracle

3)架构对比
oracle 生产中常用的三种架构:ADG、RAC、OGG,达梦对标:DataWatch、DSC、DMHS

4)一体机对比
oracle :Exadata ,达梦对比产品:QDM

5)监控对比
oracle:oem, 达梦:DEM

四、物理结构对比

4.1 达梦物理结构

4.2 Oracle物理结构

### 实现Oracle数据库连接到达梦数据库 #### 使用DataX作为迁移工具 为了实现从Oracle达梦数据库的数据传输,可以采用阿里云开发的开源工具——DataX。此工具支持多种异构数据源之间的高效数据同步功能[^3]。 对于具体操作而言,在配置文件`D:\datax\plugin\reader\rdbmsreader\plugin.json`以及`D:\datax\plugin\writer\rdbmswriter\plugin.json`中确认已加入对应版本的达梦驱动名称,这一步骤至关重要以保障读取器能够识别目标端口并建立有效链接。 ```json { "name": "dm", "class": "com.datax.plugin.writer.dmdbwriter.DmDbWriter" } ``` 上述JSON片段展示了如何指定达梦数据库写入插件类路径的一个例子;同样地,针对读取部分也需要相应调整来匹配Oracle环境下的需求。 #### JDBC驱动设置 除了利用专门设计用于跨平台间转移记录集的应用程序外,另一种常见的方式就是通过JDBC接口完成两套系统间的交互过程。此时需下载适用于各自品牌的Java桥接组件(即`.jar`包),并将它们加载至应用程序服务器或者命令行界面当中去执行必要的SQL语句从而达成目的。 例如,在Java项目里引入依赖项: ```xml <dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc8</artifactId> <version>19.8.0.0</version> </dependency> <!-- 达梦 --> <dependency> <groupId>dm</groupId> <artifactId>dmjdbc</artifactId> <version>7.1.6.24</version> </dependency> ``` 以上Maven坐标分别指向了最新版别的Oracle达梦关系型数据库管理系统对应的客户端库文件,确保开发者能够在编码期间顺利调用API函数实施查询动作或是事务处理逻辑。 #### 连接字符串构建 当所有前置条件均已满足之后,则可着手准备实际发起请求前的最后一环工作—拼凑URL参数串。这里给出一段Python风格伪代码用来展示怎样组合成兼容双方协议标准的形式化表达式: ```python import jaydebeapi as jdbc oracle_conn_str = 'jdbc:oracle:thin:@//host:port/service_name' dm_conn_str = 'jdbc:dm://host:port;DatabaseName=DB_NAME' conn_oracle = jdbc.connect( 'oracle.jdbc.driver.OracleDriver', oracle_conn_str, ['username', 'password'] ) conn_dm = jdbc.connect( 'dm.jdbc.Driver', dm_conn_str, ['username', 'password'] ) ``` 这段脚本示范了借助第三方模块`jaydebeapi`简化创建持久性会话对象的过程,并指明了不同厂商产品特有的语法结构差异之处以便读者参照学习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尚雷_TechTalk01

感谢您的鼓励,我会再接再厉。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值