达梦
梁敬彬
数据库技术专家,著有《收获,不止Oracle》、《收获,不止SQL优化》等多本畅销数据库技术书籍。
展开
-
达梦数据库知识总结链接贴
1.数据库安装【原创】达梦数据库的安装数据库实例管理【原创】dminit & dm.ini的研究【原创】达梦数据库的启停3.体系结构等【原创】达梦数据库体系结构研究【原创】达梦数据库的KEEP缓存4.表空间【原创】达梦数据库的表空间管理用户及权限【原创】达梦的用户口令策略及限制6.SQL【原创】达梦数据库的递归WITH特性研究7.过程函数包触发器【原创...原创 2019-11-26 17:29:17 · 2835 阅读 · 1 评论 -
DM的位图索引
DM是一样支持位图索引的,试验如下drop table t purge;create table tasselect rownum name_id,decode(ceil(dbms_random.value(0,2)),1,‘M’,2,‘F’)gender,ceil(dbms_random.value(1,50)) location,decode(ceil(dbms_random.value(0,3)),1,‘child’,2,‘young’,3,‘middle_age’,4,‘o原创 2020-07-18 15:54:20 · 250 阅读 · 0 评论 -
达梦数据库的包与过程函数的测试
达梦数据库与Oracle的兼容性总体来说还是不错的,下面我们来一起探索一下包过程函数的基本功能的实现与一些注意点。匿名块结构:Declare (可选项,申请变量)Begin –开始Boby;Exception (可选项,异常处理)End;来一个hello worldSQL> set serveroutput onSQL> begin2 print(‘hel...原创 2019-12-11 18:16:45 · 800 阅读 · 1 评论 -
达梦数据库的索引组织表与堆表的说明
达梦数据库可支持索引组织表,堆表,临时表,分区表,外部表等,不过 和Oracle不一样,Oracle默认是堆表,而DM默认是索引组织表不用加任何参数,默认就是索引组织表的模式SQL> create table t_branch(id int ,name varchar(20));操作已执行已用时间: 2.286(毫秒). 执行号:56.如果要变成堆表模式,需要指定NOBRANCH参...原创 2019-12-10 18:07:07 · 1611 阅读 · 0 评论 -
达梦HUGE表
HUGE表实际上是列式存储的,缓存在HUGE BUFFER中。表空间需要是建立HUGE表空间,建HUGE表的时候不写表空间则默认指定在HMAIN。drop table t_huge;create huge table t_huge as select * from dba_objects;drop table t_huge;create huge table t_huge LOG AL...原创 2019-12-10 18:04:24 · 2619 阅读 · 0 评论 -
达梦数据库查看执行计划
两种格式,一个是explain ,一个是explain for (更详细的计划)构造环境create table t1 as select rownum as id ,rownum+1 as id2,rpad(’’,1000,’’) as contents from dual connect by level<=1;操作已执行2 create index idx_id_t1 o...原创 2019-12-10 17:58:15 · 4042 阅读 · 1 评论 -
达梦数据库的并行设置生效与查看
开启并行设置前提,PARALLEL_POLICY 参数的设置。首先,使用 PARALLEL_POLICY 参数来设置并行策略。取值范围: 0、 1 和 2,默认值0。其中, 0 表示不支持并行; 1 表示自动并行模式; 2 表示手动并行模式。当开启本地并行(PARALLEL_POLICY>0)时,使用 PARALLEL_THRD_NUM 指定本地并行查询使用的线程数,取值范围为 1~1...原创 2019-12-10 17:56:17 · 1053 阅读 · 0 评论 -
达梦数据库热备几个注意点
达梦数据库热备试验中的一些注意点将数据库修改为归档模式[root@dm1 bin]# ./disql SYSDBA/SYSDBA@localhost:5237服务器[localhost:5237]:处于普通打开状态登录使用时间: 6.349(毫秒)disql V7.6.0.96-Build(2018.09.19-97292)ENTConnected to: DM 7.1.6.96...原创 2019-12-10 17:54:01 · 622 阅读 · 0 评论 -
达梦数据库的恢复
在备份的基础上我们测试一下恢复。先查看表空间的情况SQL> select tablespace_name,status from dba_tablespaces;行号 TABLESPACE_NAME STATUS1 SYSTEM 02 ROLL 03 TEMP ...原创 2019-12-10 17:51:53 · 986 阅读 · 0 评论 -
达梦数据库的逻辑备份恢复
我们一起看看达梦数据库的逻辑备份恢复工具:dexp/dimp准备工作针对数据库对象,有 FULL、 OWNER、 SCHEMAS、 TABLES 四种导出方式可供选择。一次导出只能指定一种方式。 可选参数,缺省为 SCHEMA。FULL 方式导出整个数据库。OWNER 方式导出一个或多个用户拥有的所有对象SCHEMAS 方式的导出一个或多个模式下的所有对象。TABLES 方式导出和导...原创 2019-12-10 17:50:03 · 1048 阅读 · 0 评论 -
达梦数据库全局临时表
DM的临时表 ON COMMIT 关键词指定表中的数据是事务级还是或会话级的,默认情况下是事务级的。ON COMMIT DELETE ROWS:指定临时表是事务级的,每次事务提交或回滚之后,表中所有数据都被删除;ON COMMIT PRESERVE ROWS:指定临时表是会话级的,会话结束时才清空表,并释放临时 B 树。接下来我们来做系列测试[root@dm1 bin]# ./...原创 2019-12-10 15:49:28 · 1589 阅读 · 0 评论 -
达梦数据库的表空间管理
日志组切换SQL> alter system switch logfile;操作已执行已用时间: 0.279(毫秒). 执行号:0.SQL> select path from v$rlogfile;行号 PATH1 /dm7/data/DAMENG/DAMENG01.log2 /dm7/data/DAMENG/DAMENG02...原创 2019-11-26 17:53:40 · 930 阅读 · 0 评论 -
达梦数据库的启停
DM 数据库包含以下几种状态:配置状态(MOUNT): 不允许访问数据库对象,只能进行控制文件维护、归档配置、数据库模式修改等操作;打开状态(OPEN): 不能进行控制文件维护、归档配置等操作,可以访问数据库对象,对外提供正常的数据库服务;挂起状态(SUSPEND): 与 OPEN 状态的唯一区别就是,限制磁盘写入功能;一旦修改了数据页,触发 REDO 日志、数据页刷盘,当前用户将被挂起。...原创 2019-11-26 17:48:34 · 2878 阅读 · 0 评论 -
dminit & dm.ini的研究
[root@dm1 bin]# ./dminit helpinitdb V7.6.0.96-Build(2018.09.19-97292)ENTdb version: 0x7000afile dm.key not found, use default license!License will expire in 14 day(s) on 2019-10-18格式: ./dminit ...原创 2019-11-26 17:47:15 · 1957 阅读 · 0 评论 -
达梦数据库的安装
1.确定操作系统(找到对应的安装包)[root@dm7 桌面]# cat /etc/issue[root@dm7 桌面]# uname -r2.6.32-220.el6.x86_64(i386 i686)2.确定硬件要求[root@dm7 opt]# df-h[root@dm7 opt]#free[root@dm7 opt]#cat /proc/cpuinfo3.规划安装用户[r...原创 2019-11-26 17:39:53 · 408 阅读 · 0 评论 -
达梦的CTAS写法的Oracle兼容性问题
在SQL编写的过程中要注意,DM是不支持create table xxx( 列1 ,列2…) as select …的模式要改造成create table xxx as select …as 列1,…as 列2…这样的模式。这个模式无论DM还是Oralce都支持,就不会报错了。以下语句在Oracle是OK的,在DM不支持DROP TABLE t1;CREATE TABLE t1 (id, ...原创 2019-11-26 17:00:57 · 2509 阅读 · 0 评论 -
达梦作业管理遇到的坑
设置DM的JOB,原本以为很简单的东西,结果折腾了好久,遇到了一个坑。我在写commit的时候想当然的回车换行了,结果作业任务就不能正常用了,这个有点坑啊(估计不少人和我一样),你看下图,生成的脚本也换行了,导致实际无法执行了。...原创 2019-11-26 16:23:05 · 1298 阅读 · 0 评论 -
达梦的用户口令策略及限制
口令策略用户密码最长为48个字节,创建用户语句时使用 password policy子句来指定口令策略。DM.INI PWD_POLICY系统支持的口令策略:0 无策略1 禁止与用户名相同2 口令长度不小于94 至少包含一个大写字母(A-Z)8 至少包含一个数字(0-9)16 至少包含一个标点符号(英文状态输入,除”和空格外)口令策略可单独使用,也可组合应用,比如:...原创 2019-11-26 16:16:28 · 4733 阅读 · 0 评论 -
达梦数据库的触发器研究
库级[root@dm1 bin]# ./disql SYSDBA/SYSDBA@localhost:5237服务器[localhost:5237]:处于普通打开状态登录使用时间: 5.547(毫秒)disql V7.6.0.96-Build(2018.09.19-97292)ENTConnected to: DM 7.1.6.96SQL> create table tab1( n...原创 2019-11-26 16:14:48 · 781 阅读 · 0 评论 -
达梦数据库类型的精度与标度
NUMBER[(精度 [, 标度])]NUMBER数据类型用于存储零、正负定点数。其中:精度是一个无符号整数,定义了总的数字数,精度范围是1至38。标度定义了小数点右边的数字位数。一个数的标度不应大于其精度,如果实际标度大于指定标度,那么超出标度的位数将会四舍五入省去精度与标度比如NUMBER(4,1)定义了小数点前面3位和小数点后面1位,共4位的数字,范围在-999.9到999.9。所...原创 2019-11-26 16:11:33 · 6697 阅读 · 0 评论 -
达梦数据库的并行设置生效与查看
达梦数据库的并行设置生效与查看首先,使用 PARALLEL_POLICY 参数来设置并行策略。取值范围: 0、 1 和 2,默认值0。其中, 0 表示不支持并行; 1 表示自动并行模式; 2 表示手动并行模式。当开启本地并行(PARALLEL_POLICY>0)时,使用 PARALLEL_THRD_NUM 指定本地并行查询使用的线程数,取值范围为 1~1024,缺省值为 10。需要注意...原创 2019-11-14 11:00:57 · 1317 阅读 · 0 评论 -
达梦数据库的COUNT(*)
达梦数据库在统计条数方面有较大的性能优势,请看系列试验开始只有2000多条数据,COUNT(*)需要0.2毫秒,插入需要32毫秒。drop table t purge;create table t as select * from dba_objects;SQL> insert into t select * from t;影响行数 1401已用时间: 32.849(毫秒). ...原创 2019-11-14 16:58:24 · 4157 阅读 · 0 评论 -
达梦数据库的递归WITH特性研究
题目:一个布袋中装有数量相同的四种颜色的小球。随机从布袋中取四次,每次取完都放回去。现在问四次结果总颜色数等于3的概率是多少?题目很短,实现起来比较困难,尤其是只能用一条SQL来实现的时候,就更难了。不过,利用递归WITH的特性,确实在Oracle中可以用单条语句实现。我今天想分享的主题是,这么复杂的SQL达梦数据库也同样可以支持,只是要注意一些版本和参数方面的问题。SQL语句实现如下:...原创 2019-11-14 17:05:47 · 3332 阅读 · 0 评论 -
达梦数据库体系结构研究
总体来说,和Oracle差别不大, 也是由数据库和实例构成,其中数据库指的是磁盘上存放在DM 数据库中的数据的集合,实例一般是由一组正在运行的DM 后台进程/线程以及一个大型的共享内存组成。最大的差别在于Oracle是多进程而达梦数据库是单进程多线程模式[root@dm1 bin]# ps -ef|grep dmavahi 1729 1 0 06:16 ? ...原创 2019-11-14 17:15:45 · 1021 阅读 · 0 评论 -
达梦数据库的KEEP缓存
在说DM的KEEP缓存之前,我们先说说Oralce的KEEP缓存大家都有接触过Oracle的KEEP缓存,把表和索引keep到buffer中先说一下前提条件:1.确保确保db_keep_cache_size 不为0,2. 确保表和索引在KEEP区alter table xxx storage(buffer_pool keep);,3.把表和索引的记录都进去。SQL> alter...原创 2019-11-14 17:23:41 · 1367 阅读 · 0 评论 -
达梦数据库分区表--局部唯一索引的限制
DM数据库分区表有这么一个限制:局部唯一索引必须包含全部分区列.SQL> create table range_part_tab (id number,deal_date date,area_code number,nbr number,contents varchar2(4000))2 partition by range (deal_date)3 ...原创 2019-11-14 17:40:53 · 2108 阅读 · 0 评论