达梦数据库与oracle数据库的区别和相似点以及如何设置达梦更好兼容oracle
信创来了
2024-01-08 15:45:19
48657
赞同 0
反对 0
达梦数据库与oracle数据库的区别和相似点以及如何设置达梦更好兼容oracle
达梦表空间由数据文件组成,一个表空间可以有多个数据文件,一个数据文件只能地属于一个表空间;
仅能对表空间进行offline,不能针对某个数据文件offline;
数据文件迁移,通过一个命令可以直接在操作系统层移动文件完成整体迁移;
由数据文件组成,一个表空间可以有多个数据文件,一个数据文件只能地属于一个表空间;
在12c以前,需要手动在操作系统层进行数据文件迁移,然后在数据库层更改相关路径参数;12c以后可以实现一键完成数据文件迁移
两者基本一致,不同的是:达梦一个用户下可以有多个模式,Oracle的用户和模式一一对应关系。
达梦数据库:dmrman的使用与RMAN很相似,但是只能做冷备,做热备的时候需要在数据库中进行备份操作。
索引组织表有且仅有一个聚簇索引键,表数据按照聚簇索引键排序(数据是有序的,插入有序),rowid是逻辑rowid,占用存储空间,所以索引组织表比堆表占用较多空间。
表、索引、视图、存储过程、约束、包、触发器、同义词、dblink, oralce有的达梦全支持,尤其是同义词国产集中式数据库达梦是唯一有同义词的。
达梦部署简单、支持国产各种芯片和服务器,优于oracle
oracle 生产中常用的三种架构:ADG、RAC、OGG,达梦对标:DataWatch、DSC、DMHS
达梦执行.sql文件使用start test.sql。
达梦有data watch的集群,可实现自动切换。
oracle有adg集群,如果想自动切换,需要配置dg_broker。
13、oracle数据库有三种状态:nomount,mount,open 而达梦有mount,open,suspend三种;
14、oracle数据库的users表空间,相当于达梦的MAIN表空间;
15、达梦初始化参数 RS_CAN_CACHE,是否启动结果集缓存,默认为 0,不启用。这和oracle不一样,oracle默认启用;
16、oracle的SGA是除了PGA之外,所有内存区的总和。而达梦的主内存池,是单独的,不是总和的概念;
17、达梦里面所有的值的单位都是M,并且我们设置值的时候,不能给单位,这跟oracle不一样;
18、rename 数据文件或日志文件,达梦是自动把文件拷贝过去,oracle的话需要人工拷贝;
19、达梦中没有联机日志组的概念,而oracle 有logfile member;
20、LSN=log sequence number,oracle中scn随时都在变,而达梦中lsn是有操作的时候才变;
21、在SQL>交互界面,执行.sql脚本时,DM 使用 start 或者`符号,oracle用户的@符号;
22、默认情况下,达梦的date类型,只存年月日,不存时分秒。如果设置set 'COMPATIBLE_MODE'=2 ,兼容oracle时,date类型自动转换,存年月日时分秒。而oracle的date类型存年月日时分秒;
23、CTAB_SEL_WITH_CONS 参数表示在create table as /create table like 的时候,会不会带上原表的约束信息。而oracle不会带过来;
24、dba_constraints 不会记录非空约束,非空约束是记录在dba_tab_cols的 NULLABLE字段中,这和oracle不一样,oracle的非空约束,也会记录在 dba_constraints 中;
25、在oracle中,alter table move 迁移表的时候,索引会失效。但在达梦中,alter table move 迁移表的时候,它自动会重建索引,所以索引不会失效;
26、oracle 去重distinct 带有order by 排序的功能,但达梦中,去重distinct之后的结果,是不排序的;
27、达梦的dexp 和 dexpdp 是同一个工具。而oracle的exp和expdp是不同的。
达梦数据库一个重要的配置:数据库兼容性。达梦数据库兼容Oracle数据库和MySQL数据库。这里主要介绍与Oracle的兼容性,兼容配置方式如下:
1、DM的dm.ini配置文件中参数设定对Oracle兼容性影响
(1)ORDER_BY_NULLS_FLAG,默认值为0,会话级动态参数。
【说明】:ASC 升序排序时,控制 NULL 值返回的位置。取值 0 或 1。1 表示 NULL 值在最后返回, 0 表示 NULL 值在最前面返回。在参数等于 1 的情况下, NULL 值的返回与 ORACLE 保持一致。DESC 降序时该参数无效
(2)DATETIME_FMT_MODE,默认值为0,系统级动态参数。
【说明】:是否兼容 ORACLE 日期格式。0:不兼容;1:兼容。Oracle中的Date类型与DM中的Date不兼容,与DM中DateTime类型是兼容的。
(3)PL_SQLCODE_COMPATIBLE,默认值为0,静态参数。
【说明】:默认值为 0;如果设置为 1,则 PL 的异常处理中, SQLCODE 的错误码值需要尽量与 ORACLE一致。
(4)LEGACY_SEQUENCE,默认值为0,系统级动态参数。
【说明】:序列兼容参数, 0:与 ORACLE 兼容;1:与旧版本 DM 兼容,不推荐使用。
目前,大多数应用程序使用的是 Oracle 数据库,用户或多或少地使用了 Oracle 的一些特殊功能,而这些特殊功能在其他数据库中都未实现。为了方便应用的移植, DM 实现了很多 Oracle 独特的功能和语法,使得多数 Oracle 的应用可以不用修改而直接移植到 DM 上面。
Oracle 兼容性方面实现的功能包括:ROWNUM 表达式、多列 IN 语法、层次查询、外连接语法“(+)”、 INSTEAD OF 触发器、 %TYPE 以及记录类型等。
OCI(Oracle Call Interface)是 ORACLE 公司开发的一个应用程序开发工具,是一个通过访问 Oracle 数据库的服务器,控制各类 SQL 语句的执行,进而创建应用程序的的应用程序接口(API)。它支持 SQL 所有的数据定义、数据操作、查询、事务管理等操作,支持 C和 C++的数据类型、调用、语法和语义。它提供了一组可对 Oracle 数据库进行存取的接口子例程(函数)。
DM DCI 是参照 OCI 的接口标准,结合自身的特点,为开发人员提供向 oracle 兼容功能的一款接口产品。为了与 oracle 兼容, DCI 提供的函数都是以 OCI 开头的与 OCI 同名的函数。
DM PROC 对 Oracle PROC 的常用语法进行了兼容, 在 dpc_new 预编译命令中将MODE 参数置为 ORACLE 表示使用兼容 ORACLE 语法的编译模式。使用兼容 Oracle 模式时,在编译时还需要使用 sqlca_ora.h、 sqlda_ora.h、 dpc_ora_dll.h。
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!