对于做oracle dba的同学来学习达梦数据库还是比较容易上手的,大部分的概念及管理模式基本都是相同和相通的,所以对于学过oracle的同学还是很容易入门的,以下为我在学习达梦数据库过程中总结的一些与oracle不同的地方。对于感兴趣的同学可以了解并在学习的过程中引起注意,有不足之处还请多指正交流。
1、数据库体系结构
oracle数据库:多进程结构,大家比较熟悉的dbwr,lgwr,smon,pmon,ckpt等都是进程。
达梦数据库:单进程多线程包含监听线程、工作线程、io线程、调度线程、日志相关线程等所有的线程都集成到了dmserver进程中。
2、状态的切换
oracle数据库:只能从mount状态启动到open状态,但不能从open状态直接切换到mount状态。
达梦数据库:可以在mount状态和open状态之间自由切换,还增加了一个suspend挂起状态。
suspend:只读状态,只能读,不能写。mount和open可以相互转换,suspend和open也可以相互转换。但mount和suspend不能相互转换。
3、结束符的使用
oracle数据库:命令、sql以及程序包都是以";"为结束符。
达梦数据库:sql和命令使用";"结束,但是在执行程序包、创建模式等操作的时候要以"/"为结束符。
4、关于备份
oracle数据库:热备在rman中进行操作。
达梦数据库:dmrman的使用与rman很相似,但是只能做冷备,做热备的时候需要在数据库中进行备份操作。
5、监听程序
oracle数据库:有单独的监听程序,使用lsnrctl进程监听操作。
达梦数据库:没有了单独的监听程序,监听变成了线程dm_lsnr_thd集成到了dmserver的进程中。
6、修改联机日志文件大小
oracle数据库:需要添加新的日志文件进来,删除原来老的日志进行替换。
达梦数据库:可以直接对logfile的大小进行扩容。
7、用户模式上有较大区别
oracle数据库:用户和模式为一一对应关系,一个用户对应一个模式
达梦数据库:用户和模式是一对多的管理,一个用户可以拥有多个模式,一个模式仅能归属于一个用户。
当系统建立一个用户时,会自动生成一个对应的模式用户还可以建立其他模式。
8、关于表
oracle数据库:默认创建的是堆表。
达梦数据库:dm默认创建的是索引组织表。
索引组织表和堆表的区别:
索引组织表有且仅有一个聚簇索引键,表数据按照聚簇索引键排序(数据是有序的,插入有序),
rowid是逻辑rowid,占用存储空间,所以索引组织表比堆表占用较多空间。
9、单个数据文件的大小
oracle数据库:单个数据文件的大小最大为2^22-1个块,数据块是大小是8k,那么能创建的最大的数据文件大小是:2^22*8k=32g-1,单个数据文件的最小值在实验中创建的最小数据文件为81k;
达梦数据库:最大值为页大小的 2的31次方-1,如果页大小是8k,最大值为2^31*8k=16t-1,
最小值不能低于页大小的 4096倍,如果页大小是8k最小值,将不低于32m。
10、关于参数修改的格式
oracle数据库:alter system set xxx scope=spfile/memory/both;
达梦数据库:alter system set xxx spfile/memory/both;
11、查询实例状态和在线日志文件的语句
oracle数据库:
select status from v$instance;
select * from v$log;
select * from v$logfile;
达梦数据库:
select status$ from v$instance;
select * from v$rlog;
select * from v$rlogfile;
以上为我在学习达梦数据库的过程中总结的两个数据库在细节方面的一些不同之处,仅为个人见解,供大家参考。有不对之处请大家指正。两个数据库其它的方面基本相同,大家感兴趣的可以研究一下大家共同交流。
为我们的国产化进程贡献自己的力量吧。