达梦数据库学习笔记
如果以前学过其他数据,可以对比了解下,比较常见的语法类就不写了,可以重点看下操作指令和理论性知识,对比其他数据库(如oracle)会更好的加深了解。
本文主要分两部分:
第一部分:理解性知识
第二部分:比较有代表性的执行语句(或指令)
理解性知识
达梦数据库模式
1、普通模式(normal):用户可以正常的访问数据库,操作没有限制
2、主库模式(primary):用户可以正常访问数据库,对数据库对象的 修改强制生成 redo 日志,在归档有效的时候,发送 redo 日志到备库。
3、备库模式(standby):接收主库发送过来的 redo 日志,并重做日志, 数据库对用户只读。
数据库的状态
1、配置状态(mount)
2、打开状态(open)
3、挂起状态(suspend)
4、关闭状态(sthutdown)
兼容模式
COMPATIBLE_MODE:是否兼容其他数据 库模式。
0:不兼容
1:兼容 SQL92 标准
2:兼容 ORACLE
3:兼容 MS SQL SERVER
4:兼容 MYSQL
各类文件格式
配置文件:*ini
控制文件:*ctl
数据文件:*dbf
重做日志文件:*log
归档日志文件:dmarch.ini
备份文件:*bak
事件日志文件:DM_实例名_日期
逻辑结构
页-----簇------段-----数据文件-----表空间-----数据库
页:最小逻辑单元,大小 4k,8k,16k,32k 默认值是 8k,oracle数据库是块
达梦数据库的体系结构
截图自培训材料,表述的比较清楚,可以找其他数据库的体系图对比学习。
DM 服务器使用的内存 3 个部分
1、缓冲区:
数据缓冲区
日志缓冲区
字典缓冲区
Sql 缓冲区
2、内存池:
共享内存池
其他运行时内存池
3、其他内存区:
排序区
Hash 区
数据缓冲区
BUFFER 是从磁盘读出的数据页在内存中的镜像,由 INI 配置中的 BUFFER、FAST_POOL、 28 RECYCLE、KEEP 等确定大小,不同类型的缓冲区主要表现为淘汰机制。
5个类型:
Normal:普通数据页,缓冲区满时淘汰
keep:普通数据页,很少淘汰
fast:数据页、回滚页,常驻缓冲区
recycle:临时表数据页,正常淘汰
相关参数:
Sys/session: 动态参数,同时修改内存和配置文件
Read only:在数据运行进,不能修改
In file:静态参数,修改配置文件,重启实例服务生效
roll:
与oracle区别:
Oralce:recycle 和 keep 存的表
达梦:RECYCEL 和 keep 存的是表空间
修改参数:
Oracle alter system set para_name=para_value DM:SP_SET_PARA_VALUE(SCOPE,PARA_NAME,PARA_VALUE) Alter system set para_name=para_value
字典缓存区视图
V$DICT_CACHE_ITEM:字典缓冲区中字典对象的信息
V$dict_cache:字典缓冲区的信息
达梦默认的系统表空间
System:数据字典和全局的系统数据
Roll:存入了数据库运行过程中产生的回滚记录
Temp:临时表空间
Main:存放对象数据的表空间,创建对象的时候,不指定表空间,就 是存放在该表空间中。
Hmain:huge 表空间。
数据库预定义用户(系统用户)
Sysdba:系统管理员
Sys:不能用于用户登录,是系统内置用户 (企业版、安全版无)
Syssso:安全用户
Sysauditor:审计用户
Sysdbo:系统操作员(企业版无)
用户规则
名字:字母开头,a_z ,0-9,$#_
密码,口令策略
0:无策略
1:禁止与用户名相同
2:口令长度不小于 9
4:至少包含一个大写字母
8:至少包含一个数字
16:至少包含一个标点符号(英文状态下输入,除空格和“”)
口令可以单独使用,也可组合使用,比如:要求口令策略禁止用户相 同,并且口令长度不小于 9)
达梦数据库sql分类
Sql 语句的分类
DQL:数据查询语句 select ... from ...where 组成的查询块
DDL:数据定义语句 create table create view create index 等等
DML:数据操作语句 insert update delete
DCL:数据控制语句 用于授予或回收访问数据库的权限,控制数据库 操作纵事务,对数据库进行监视等。 Grant revoke commit rollback lock unlock 等。
数据类型
int char varchar date clob blob number 等,和其他数据库相比,没有突破
约束
非空约束,唯一约束,主键,外键,检查约束,和其他数据库相比,没有突破
达梦支持的语言
C C++ java
部分语法(非常规)
ANY 将值与子查询返回的任意一个值进行比较
ALL 将值与子查询返回的每个值进行比较
> all:大于最大值
< all:小于最小值
>any:大于最小值
<any:小于最大值
例如:
select employee_name,salary
from dmhr.employee
where salary >all (select salary from dmhr.employee where department_id=105)
比较有代表性的语句(或指令)
登录数据库指令
disql sysdba/dameng123@localhost:5239 本地运行应该可以不用@及后面部分,与oracle类似。
数据库状态切换指令
Shutdown--mount 分配共享内存,启动后台的进程或是线程,打开控制文件
Shutdown--open
Open--mount
Mount--open 根据控制文件,打开所有的数据文件和重做日志文件
Alter database mount;
Alter database open;
数据库启动过程
1、shutdown--mount
2、mount-open
启停实例的方式
1)服务查看器
[root@localhost tool]# ./dmservice.sh
2)命令行启动
dmserver
3)操作系统命令
systemctl start DmServiceDM02 去启动和关闭
4)DmServiceDM02 start|stop 去启动和关闭
数据库管理工具
[dmdba@localhost tool]$ ./manager
控制台工具
[dmdba@localhost tool]$ ./console
主要作用1查看参数2脱机备份
数据库迁移工具
[dmdba@localhost tool]./dts
性能检测工具
[dmdba@localhost tool]$ ./monitor
服务查看工具
[dmdba@localhost tool]$ ./dmserver.sh
查看控制文件
dmctlcvt type=1 src=/dm8/data/DAMENG/dm.ctl dest=/tmp/dmctl.txt
DMCTLCVT V8
convert ctl to txt success!
增加重做日志文件
alter database add logfile '/dm8/data/DAMENG/DAMENG04.log' size 200;
alter database resize logfile '/dm8/data/DAMENG/DAMENG04.log' to 256;
alter database resize logfile '/dm8/data/DAMENG/DAMENG04.log' to 200;
打开/关闭跟踪日志文件
DM.INI SVR_LOG 参数为 1 的时候,就是打开了跟踪日志 0 关闭了跟踪日志
共享内存查询
select para_name,para_value from v$dm_ini
where para_name like '%MEMORY%';
memory_target 共享内存的总大小 0:表示不限制
与oracle相比,oracle区分为sga缓存区和pga缓存区
查看buffer参数
select para_name,para_value,para_type
from v$dm_ini
where para_name like '%BUFFER%';
运行sql文件
start /dm8/a.sql
修改 buffer 参数
sp_set_para_value(2,'BUFFER',1024);
重启生效
检查 gcc 包
[root@localhost ~]# rpm -aq|grep gcc
解压安装包
[root@localhost opt]# tar -xzvf unixODBC-2.3.0.tar.gz
配置 ODBC
[root@localhost unixODBC-2.3.0]# ./configure --enable-gui=no
编译安装 ODBC
[root@localhost unixODBC-2.3.0]# make && make install
查看 odbc 版本
[root@localhost unixODBC-2.3.0]# odbc_config --version 2.3.0
查看 odbc 配置文件路径
[root@localhost unixODBC-2.3.0]# odbcinst -j
测试链接
isql dm8