开发版与企业版功能相同,平时工作使用开发版即可,授权期限为一年
1.1.2 企业版支持集群特性,需要购买授权码
1.1.3 标准版不支持集群特性
1.1.4 安全版增加了访问控制等安全特性,用于SM机上
1.2 安装前确认 1.2.1 查看CPU信息使用以下两个命令查看CPU相关信息,并选择对应的达梦版本进行下载安装
lscpu注意:内核版本需要在2.6以上,否则在安装过程中会报错
cat /proc/versionglibc需要在2.3以上,否则在安装过程中会报错
ldd --versionrpm -qa|grep glibc![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1d0f77647d27319134ac467119f8c329.png)
安装odbc的时候,需要gcc包依赖,没有安装的话需要进行安装
gcc --versionrpm -qa|grep gcc至少需要20G,推荐给25G以上 如果tmp容量小于1G,使用以下命令扩容
推荐3G以上,Swap正常分区即可,银河麒麟比较吃内存,建议多给点
free -mcat /proc/meminfo
查看最大可打开文件数,如果是CentOS的话,默认是比较小的,可能会导致安装过程中报错,所以这边我们提前查看并设置
# 查看最大可打开文件数ulimit -a将下载的iso镜像文件上传到服务器上后,进行挂载操作(考试的时候,可能已经挂载,直接安装即可)
# 在mnt下创建dm目录mkdir /mnt/dm# 挂载镜像 mount /镜像地址 /挂载的目标路径mount /opt/dm8_20210818_x86_rh6_64_ent_8.4.2.18_pack14.iso /mnt/dm
可能会碰到以下问题,提示说tmp文件过小,就是因为1.2.5步骤没有执行,需要重新使用root用户执行,然后再执行1.5.1.2,然后再执行安装程序即可
配置XML文件,适用于一键安装的场景,具体参看达梦安装手册
1.6 创建数据库及数据库实例管理 1.6.1 图像化方式 # 进入到dm工具包目录cd /dm8/tool# 打开数据库配置助手./dbca.sh
以下参数都是在数据库创建时设定,后续无法修改
注意:这边如果报错的话,大部分是目录权限导致的,需要重新执行步骤1.3.3 创建安装目录
查看是否创建完成
查看达梦进程
卸载完成后,还会剩下几个目录,如果再次安装还是选择这个目录的话,需要在安装前手动删除这几个目录
删除完成后,达梦根目录下还有一个log目录需要手动删除
如果已经登陆到数据库中,可以直接使用conn命令进行连接到其他数据库
# 连接本机,ip可省略conn SYSDBA/Dameng123@192.168.31.124:5237# 加上ip地址conn SYSDBA/Dameng123@192.168.31.124:5237 2.2 使用图形化工具连接 2.2.1 图形化界面开启语法提示
对应到Oracle的Scope both:既修改内存中的值,也修改配置文件中的值,重启不重启都一样生效 spfile:只修改配置文件中的值,重启数据库生效 memory:只修改内存中的值,重启数据库后恢复设置前的样子
达梦根据参数类型可分为,静态参数和动态参数两种,这两种均支持通过系统函数、SQL命令进行修改 静态参数:只能修改配置文件中的值,对内存中的值不进行修改,所以静态参数修改后使其生效的话,需要对数据库进行重启 动态参数:既能修改内存中的值,也能修改配置文件中的值,所以动态参数修改后是立即生效的
3.1.1 READ ONLY只读参数,不能通过系统函数、SQL命令达到修改参数的目的,只能从dm.ini配置文件中进行修改
3.1.2 SYS静态参数,可以通过系统函数、SQL命令达到修改参数的目的
3.1.3 IN FILE动态参数(系统级),可以通过系统函数、SQL命令达到修改参数的目的
3.1.4 SESSION动态参数(会话级),可以通过系统函数、SQL命令达到修改参数的目的,可针对某个会话进行修改,便于调试(不然要应用到整个线上系统,一旦出错,影响面就广了)
3.2 参数修改方式 3.2.1 使用dm.ini修改 # 直接编辑文件修改即可vim /dm8/data/服务名称 dm.ini 3.2.2 使用图形化修改不修改内存中的值,修改的是配置文件中的值,需要重启后生效
cd /dm8/tool./console
修改完成后,需要
3.2.3 SQL语句修改 # 后面跟的是参数范围alter system set '参数名'='参数值' both | spfile | memory; 3.2.3.1 例子修改兼容参数
# 查询兼容参数类型select name,value,sys_value,file_value,type,description from v$parameter where name = 'COMPATIBLE_MODE';# 修改兼容参数类型alter system set 'COMPATIBLE_MODE'=2 spfile;修改UNDO_RETENTION
修改LIST_TABLE
查看可以使用的系统函数
select name,id from v$ifun t where name like '%SP_SET%_PARA%';查看系统函数的参数类型
select * from v$ifun_arg t where id=584;修改double类型的参数值,UNDO_RETENTION参数
考试的时候可能会让你修改数据缓冲区大小,没有特殊指明的话就是修改Normal缓冲区的大小,参数对应的是BUFFER
Normal对应参数BUFFER、Fast对应参数为FAST_POOL_PAGES、Recycle对应参数为RECYCLE、Keep对应参数为KEEP
alter system set 'BUFFER'=2000 spfile; 5.表空间管理(必考) 5.1 表空间类型 SYSTEM:系统表空间,存放的是数据字典信息,包含表定义、视图定义、用户权限等ROLL:回滚表空间,存放undo信息。INSERT、UPDATE、DELETE都会产生undo信息MAIN:用户默认表空间,创建用户时,没有指定表空间,则使用MAIN表空间TEMP:临时表空间,用于存放临时表数据、索引、大量数据排序等产生的数据HMAN:HUGE表(列存储表)的默认表空间考试会让你修改temp表空间,需要修改temp_size
alter system set 'TEMP_SIZE'=64 spfile; 5.2 操作表空间 5.2.1 命令行方式查看表空间
select * from dba_tablespaces;select * from dba_data_files;创建表空间
create tablespace 表空间名 datafile '数据文件路径' SIZE 数据文件大小(单位为mb);create tablespace dbtbs datafile 'DMTBS01.DBF' SIZE 32;# 查询页大小的4096倍,并换算成MBselect page*4096/1024/1024修改表空间大小
# 修改表空间大小alter tablespace 表空间名 resize datafile '数据文件路径' to 数据文件大小(单位为mb);alter tablespace dmtbs resize datafile 'DMTBS01.DBF' to 64;# 修改表空间开启自动增长,增长步长,最大表空间alter tablespace 表空间名 datafile '数据文件路径' autoextend on next 增长步长 maxsize 文件最大值alter tablespace dmtbs datafile 'DMTBS01.DBF' autoextend on next 2 maxsize 10240;删除表空间 用户自定义的表空间可以删除和脱机,系统定义的表空间不能脱机和删除 删除后表空间下的数据文件也会级联删除
drop tablesapce 表空间名;drop tablespace dmtest;增加表空间下的数据文件
alter tablespace 表空间名 add datafile '数据文件路径' size 数据文件大小(单位为mb);alter tablespace dmtbs add datafile 'DMTBS02.DBF' size 64;修改表空间名称
alter tablespace 修改前表空间名 rename to 修改后表空间名;alter tablespace dmtbs rename to dmtest; 5.2.2 图形化界面
迁移时注意:新的表空间路径,必须是由安装数据库的用户进行创建,或者把这个文件夹授予数据库安装用户读写权限,否则会因权限问题报数据库文件路径错误
# 先将表空间离线alter tablespace 表空间名 offline;# 重命名数据文件名,并迁移alter tablespace 表空间名 rename datafile '重命名的数据文件名' to '路径';# 将表空间上线alter tablespace 表空间名 online;# 务必注意,后面的文件夹路径必须是由安装数据库的用户创建的,否则会因权限问题报数据库文件路径错误alter tablespace dmtest offline;alter tablespace dmtest rename datafile 'DMTBS01.DBF' to '/dm8/data/DAMENG/DMTEST/DMTBS01.DBF';alter tablespace dmtest rename datafile 'DMTBS02.DBF' to '/dm8/data/DAMENG/DMTEST/DMTBS02.DBF';alter tablespace dmtest online; 5.4 temp表空间(考点)查询temp表空间参数,达梦数据库启动的时候会根据这几个参数来创建或重建temp表空间
select name,value,type from v$parameter where name like 'TEMP%';修改TEMP表空间大小,重启后依旧生效
# 设置temp表空间初始值alter system set 'TEMP_SIZE'=64 spfile;# 查看更改是否生效cat /dm8/data/DAMENG/dm.ini |grep TEMP_SIZE重做日志:用于记录redo信息,重做日志默认为256M,数据库中的增、删、改操作都会记录redo和undo信息 redo信息写入联机日志文件,undo写入roll表空间对应的数据文件中 达梦的联机日志只支持系统自动切换,不支持手动切换(oracle支持)
6.1 重做日志命令行方式查看联机日志
## 当前正在使用的联机日志select * from v$rlog;select * from v$logfile;创建连接日志、修改连接日志大小(达梦只支持往大了改)
alter database add logfile '日志名称' size 日志大小(单位MB);alter database add logfile 'DAMENG03.log' size 128alter database resize logfile '日志路径' to 日志大小(单位MB);alter database resize logfile '/dm8/data/DAMENG/DAMENG03.log' to 256; 6.2 重做日志迁移 # 将数据库状态设置为mount状态alter database mount;alter database rename logfile '原日志路径' to '迁移到的日志路径';# 将数据库状态设置为open状态alter database open;alter database mount;alter database rename logfile '/dm8/data/DAMENG/DAMENG01.log' to '/dm8/data/DAMENG/REDO/DAMENG01.log';alter database rename logfile '/dm8/data/DAMENG/DAMENG02.log' to '/dm8/data/DAMENG/REDO/DAMENG02.log';alter database rename logfile '/dm8/data/DAMENG/DAMENG03.log' to '/dm8/data/DAMENG/REDO/DAMENG03.log';alter database open; 6.2 重做日志图像化方式
归档是对REDO的归档,备份归档是为了防止数据丢失,利用归档文件可以恢复数据库里的数据
7.1 开启归档 7.1 命令行方式开启归档
# 将数据库状态设置为mountalter database mount;# 打开归档alter database archivelog;# 归档配置,配置归档路径,归档文件大小(超过就新建一个文件),归档文件总的大小(超过限制,就会删除老的)alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=10240';# 将数据库状态设置为openalter database open;# 查询归档状态select arch_mode from v$database;# 查看归档文件select * from SYS."V$ARCH_FILE";# 查询归档配置select * from v$dm_arch_ini;关闭归档
alter database mount;# 关闭归档alter database noarchivelog;# 删除归档文件alter database delete archivelog 'type=local,dest=/dm8/arch';# 将数据库状态设置为openalter database open;# 查询归档状态select arch_mode from v$database; 7.2 图像化方式
设置密码的时候,需要查询下密码策略是什么
select * from v$parameter where name = 'PWD_POLICY';如果想调整密码策略
alter system set 'PWD_POLICY' = 下图策略相加 both;调整密码错误次数参数,默认输错3次后锁定账号,并且1分钟后自动解锁
手动锁定或解锁账号
# 手动解锁alter user 用户名 account unlock;# 手动锁定alter user 用户名 account lock; # 查看用户资源限制,例如最大并发数select * from dba_users a,sysusers b where a.user_id = b.id;
创建角色,并授予角色权限
create role 角色名;grant 权限 to 角色名;create role r1;grant赋予用户角色
grant 角色名 to 用户名;grant r1 to dmtest; 8.3 权限管理设置指定用户最大并发量
# 设置用户名为hrtest的用户,最大连接数为3alter user hrtest limit SESSION_PER_USER 3;多余3个连接会报错 设置可以赋予其他用户在非当前用户模式下创建对象权限
不能只授予修改、删除权限,还要授予查询权限
grant select on 模式名.表名 to 用户名;grant update on 模式名.表名 to 用户名;grant delete on 模式名.表名 to 用户名; 8.3.3 回收权限 revoke 角色名 from 用户名;revoke 具体权限 from 用户名;revoke r1 from dmtest;revoke create table from dmtest; 8.3.1.2 图形化方式参数步骤 8.1.2.1 图形化方式实现
8.4 小结(了解) 系统权限CREATE TABLE、INDEX、VIEW,CREATE user等 对象权限对某张表的查询、修改、删除、插入权限,也可以是某个存储过程的执行权限 权限转授系统权限转授,with admin option 对象权限转授,with grant option grant select on sysdba.t_test to hrtest with grant option;什么是模式: 模式是一个特定的对象集合,在概念上可将其看作是包含表、视图、索引等若干对象的对象集
什么是模式对象: 表、视图、约束、索引、序列、触发器、存储过程/函数、包、同义词、类、域
模式与用户的关系 当系统建立一个用户时,会自动生成一个对应的模式,用户和模式是一对多的关系(Oracle是一对一)
9.2 创建模式注意:如果在disql中执行此语句,空行后需要加上/再回车
# 创建模式前需要授予用户创建模式的权限# 创建模式create schema 模式名 authorization 用户名;/# 授予用户创建模式权限grant create schema to 用户名;查询系统中所有模式
select * from SYSOBJECTS a where a."TYPE$" = 'SCH'查询模式和所属用户
select a.id scheid, a.name schename, b.id userid, b.name usernamefrom SYS.SYSOBJECTS a, SYS.SYSOBJECTS bwhere a."TYPE$" = 'SCH' and a.pid = b.id;查询当前模式
select sys_context('USERENV','CURRENT_SCHEMA');查询当前用户,两种都可以
select user;select sys_context('USERENV','CURRENT_USER'); 9.4 切换模式注意:这个切换只对当前会话生效,咨询过老师,目前没有方法可以设置永久生效
set schema 模式名; 10.表管理(必考 建表、加约束)表名是区分大小写的
10.1 创建表 create table dmtest.t_testpid(pid int,pname varchar(10),logtime datetime DEFAULT sysdate,sex bit) tablespace HRTBS;从别的表复制
# 只复制表结构(不带约束信息)create table t_emp03 as select * from dmhr.employee where 1=0;# 复制表结构+表数据create table t_emp01 as select * from dmhr.employee;create table t_emp02 like dmhr.employee; 10.2 调整字段 # 添加字段alter table dmtest.t_testpid add email varchar(20);# 修改字段alter table dmtest.t_testpid modify email varchar(30);# 删除字段alter table dmtest.t_testpid drop email; 10.3 约束 10.3.1 约束类型 NOT NULL:非空约束UNIQUE:唯一约束,可以为空,简写为UK_表名_字段名PRIMARY KEY:主键约束(唯一约束+非空约束),简写为PK_表名_字段名FOREIGN KEY:外键引用约束,引用的是另一张表(父表)的主键或唯一键。简写为FK_表名_字段名CHECK:检验约束,用户校验数据的准确性,简写为CK_表名_字段名主键约束和唯一约束的区别:一张表只能有一个主键,但是可以有多个唯一约束。
10.3.2 添加约束注意:字段如果为小写需要小写并且加上双引号,字段为大写不需要加双引号
# 添加主键约束alter table dmtest.t_testpid add CONSTRAINT pk_testpid_pid PRIMARY key("pid");# 添加外键约束,注意REFERENCES表里的字段必须是主键或者是添加了唯一索引的字段alter table dmtest.t_testchild add CONSTRAINT fk_testchild_pid FOREIGN key("pid") REFERENCES dmtest.t_testpid("pid");# 添加校验约束alter table dmtest.t_testchild add CONSTRAINT ck_testchild_salary CHECK ("salary">=3000); 10.3.2 禁用和启用约束 10.3.2.1 禁用 alter table 模式名.表名 disable constraint "约束名"如果说点击约束,出现下图报错 解决方案如下
dexp在达梦的bin目录下 注意需要先创建目录,而且导出用户和导入用户都使用dmdba
./dexp userid=sysdba/SYSDBA:5238 directory=/dm8/backup/dexp file=full.dmp log=full.log full=y 12.1.2 按用户导出 dexp userid=sysdba/SYSDBA:5238 directory=/dm8/backup/dexp file=dmtest.dmp log=dmtest.log owner=dmtest 12.1.1 导入sql文件在disql里执行的话使用以下命令
start sql文件路径在达梦客户端工具里执行的话,使用以下命令
` sql文件路径;commit; 12.2 物理导出 12.2 联机备份 12.2.1 命令行方式 # 全库备份到默认路径下backup database# 全库备份到指定路径下(备份目录不带文件名)backup database full backupset '备份目录';# 基于基础备份集的增量备份,并备份到指定目录backup database increment to incrbak01 backupset '/dm8/backup/incr/incrbak01';基于默认备份集、指定备份集、增量备份目录下三个目录交集的最新的备份集,来进行增量备份
# 基于指定备份集的增量备份,并备份到指定目录backup database increment with BACKUPDIR '/dm8/backup/full' to incrbak02 backupset '/dm8/backup/incr/incrbak02'; 12.2.2 图形化方式
如果说这里报错了,需要手动执行下检查点
checkpoint(100)如果备份在指定目录下,需要手动添加目录才能看到备份的内容
出现以下报错是因为没有停止数据库服务,冷备必须关闭数据库
命令行方式创建代理环境
SP_INIT_JOB_SYS(1);图形化方式创建代理环境
切换到dmdba用户,进行登陆即可
su -dmdbaisql dm8 -v