达梦数据库是一款优秀的国产数据库,在设计时参考了oracle的架构。所以从oracle转到达梦相对比较容易。

本文简单列举一些达梦数据库和oracle之间的不同。以下以麒麟v10平台上的dm8版本为例。

1.软件安装:
 达梦数据库软件安装比oracle相对简单,大概步骤:
 创建安装目录,如:mkdir /opt/dm8
 与oracle类似,创建专用用户和组:groupadd dinstall;   useradd  -g dinstall -m -d /home/dmdba -s /bin/bash dmdba;
 修改安装目录归属:chown -R dmdba:dinstall /opt/dm8
 将安装介质iso挂载后,直接运行命令进行安装:./DMInstall.bin -i  安装过程中:
  是否输入 Key 文件路径? (Y/y:是 N/n:否) [Y/y]:n
  设置时区,选择21 中国标准时间,  根据需求选好安装类型,安装目录输入:/opt/dm8 
  最后,根据提示,【请以 root 系统用户执行命令:,此脚本将修改权限,创建软连接,创建并启动DmAPService】  
                                /dm8/script/root/root_installer.sh

2.创建实例:
类似于oracle,使用工具:/opt/dm8/tool/dbca.sh ,此为图形工具,根据指引进行实例创建即可。最后,按说明使用root用户执行3个命令即可。
 【说明:麒麟v10中设置图形环境:root用户查看DISPLAY的值,并执行 xhost +,在dmdba用户下设置相同的DISPLAY值即可。】

3.数据库文件组成:
类似于oracle,达梦数据库的数据库文件也由如下几部分组成:参数文件dm.ini, 控制文件,重做日志文件,数据文件,归档日志文件等。不同之处主要有:
-- 达梦开启归档模式后,归档配置信息单独保存在一个归档配置文件dmarch.ini中,而oracle是保存在参数文件中。
-- 参数文件dm.ini为文本格式,可以直接编辑;而oracle的参数文件有二进制和文本两种格式。
-- 查看参数信息,达梦没有show parameter ...的方法,而是需要查看系统动态视图【v$parameter】或【v$dm_ini】:
-- 达梦库在命令行修改参数,在指明修改范围时少了【scope=】,如:alter system set 'COMPATIBLE_MODE' = 2 spfile; 范围同样有三种选项:memory/spfile/both
-- 达梦数据库同样有mount/open启动步骤,不同之处在于,达梦没有nomount模式,且达梦库的mount/open两种模式间可直接进行转换,而oracle实例mount到open只能单向转换。
    达梦open模式的实例可以通过【alter database mount;】回退到mount模式,而不必重启实例,这个功能比较方便。
-- 除了使用命令直接修改参数,达梦还提供了函数来进行参数变更。
-- 达梦系统工具dmctlcvt.sh可以将控制文件在文本和二进制间进行转换。
-- 重做日志文件,在创建实例时,达梦默认创建2组redo日志,实例创建成功后,可以按需要增加或减少日志文件。
-- 归档日志文件清理,达梦使用函数SF_ARCHIVELOG_DELETE_BEFORE_LSN或SF_ARCHIVELOG_DELETE_BEFORE_TIME实现,而oracle在rman中处理。

4.表空间:
和oracle一样,达梦在逻辑上也使用表空间来管理存储。一个初始生成的实例默认包含5个表空间【SYSTEM/ROLL/TEMP/MAIN/HMAIN】:
-- ROLL类比于oracle的UNDOTBS1,为undo表空间,存放回滚段信息;
-- MAIN类比于oracle的USER表空间,为达梦创建的用户表空间;
-- HMAIN在oracle中没有对应,是达梦新添加的功能,为默认 HTS 表空间(HUGE 列存储表的默认表空间)。
-- TEMP即临时表空间。不同于oracle,达梦临时表空间的初始相关配置信息存储在参数文件中,比如临时数据文件目录,临时数据文件初始大小,数据库重启时会根据参数中的内容重置临时表空间。达梦同时提供了函数,对临时表空间进行在线收缩【SP_TRUNC_TS_FILE】。
-- 在使用命令创建新表空间时,达梦中不能指定数据文件大小的单位,否则会报错。达梦有默认单位MB。
在表空间数据文件增加,位置变动,重命名,自动扩展等方面的管理均与oracle类似。

5.用户及安全管理:
达梦数据库普通版本默认三权分立,安全版本四权分立;普通版本默认创建四个用户:
SYS:系统内置用户,不能直接登录。
SYSDBA:系统管理员,拥有除强制访问控制和数据库审计之外的几乎所有权限。
SYSAUDITOR:审计管理员,拥有数据库审计权限;
SYSSSO:安全管理员,拥有强制访问控制等权限;
SYSDBO: 安全版本才有此用户,安全操作员。

-- 在口令策略安全管理方面,不同于oracle使用profile机制来控制,达梦通过参数PWD_POLICY来实现密码复杂度控制。而密码历史,有效期,锁定次数,客户端ip白名单,登录时间窗口限制等直接对用户设定即可。

6.脚本执行,数据迁移和备份恢复
-- oracle中在sql命令行执行数据库脚本文件使用@符号引导,在达梦中则使用【start 】或【`】符号引导。
-- 物理备份达梦支持在线备份【在sql命令行使用backup 关键字进行】和脱机备份【在dmrman命令行使用backup关键字,须指定参数文件】。和oracle一样达梦可以使用归档日志和备份集来恢复数据库到指定的时间点。

7.数据库sql命令行管理数据库启停:
-- 达梦sql命令行工具为disql 【disql 用户名/密码:服务端口】,关闭实例可在sql命令行:shutdown immediate;  启动则不像oracle,不能在sql命令行直接启动实例。而是通过启动服务来启动实例。
  使用工具【 DmServiceDMSVR start】 或 【dmserver 参数文件 [mount] 】的方式启动。

以上,简单罗列了达梦相较于oracle的几处不同。可以看出从架构到sql再到日常管理,达梦尽量靠近oracle,对oracle管理员和开发者都非常友好。是数据库国产化的一个非常好的选择。当然,由于本人初次接触达梦数据库,不恰当之处,欢迎指正。谢谢!

资料来源:内容参考达梦培训讲义,及达梦相关技术手册。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐