目录

1、安装

1.1 安装前准备

1.1.1 关闭防火墙

1.1.2 新建dinstall用户组

1.1.3 创建dmdba用户并修改密码

1.1.4 创建安装目录

1.1.5 设置最大可打开文件数

1.1.6 挂载镜像文件

1.1.7 新建安装目录并修改目录权限

 1.1.8 /tmp临时扩大空间

 1.1.9 图形化界面需要再做配置

1.2 安装

1.2.1 命令行安装

1.2.2 图形化安装

1.2.3 配置环境变量

1.3 配置实例

1.3.1 命令行方式

1.3.2 图形化方式

1.4 注册数据库服务

1.4.1 命令行方式

1.4.2 图形化方式

1.5 卸载达梦数据库

1.5.1 命令行方式

1.5.2 图形化方式

 2、数据库连接

2.1 disql连接数据库

 2.2 DM管理工具连接数据库

3、启动和关闭DM数据库

 3.1 命令行方法

 3.2 图形化界面/服务器查看启动

 3.3 系统命令启动

 4、DM的客户端工具

4.1 DM管理工具(manager)

 4.2 DM控制台工具(console)

 4.3 DM数据迁移工具(dts)

 4.4 DM性能监视工具(monitor)

 5、参数配置

5.1 参数类型

 5.1.1 READ ONLY

5.1.2 SYS

5.1.3 IN FILE

5.1.4 SESSION

5.2 参数修改方法

5.2.1 SQL语句修改及相关参数

 5.2.2 系统函数修改

5.2.3 使用dm.ini修改 

 5.2.4 使用图形化修改

 6、数据缓冲区

 7.表空间管理

7.1 命令行方式

7.1.1 创建表空间

 7.1.2 修改数据库文件的扩展属性

7.1.3 添加数据文件

7.1.4 修改数据文件大小

7.1.5 删除表空间

7.1.6 增加表空间下的数据文件

7.1.7 修改表空间的名称

7.2 图形化方式

 7.3 表空间迁移

 命令行方式

 7.4 temp表空间

8、重做日志文件

 8.1 命令行方式

 8.1.1 查看联机日志

8.1.2 创建连接日志、修改连接日志大小

8.1.3 重做日志迁移

8.2 图形化方式

 9、归档管理

9.1 命令行方式

9.1.1  开启归档:

9.1.2 关闭归档

 9.1.3 手动切换归档日志文件

 9.1.4 归档数据字典

 9.1.5 归档清理

9.2 图像化方式

  9.3 编辑配置文档

 10、用户角色权限

10.1 用户管理

10.1.1 用户类型

10.1.2 命令行方式

10.1.3 图形化方式编辑

 10.2 权限管理

10.2.1 设置指定用户最大并发量:

10.2.2 any权限

10.2.3 添加查询权限

10.2.4 添加修改、删除权限

10.2.5 回收权限

 10.2.6 权限转授

10.3 角色管理

10.3.1 角色类型

 10.3.2 创建角色并授予角色权限

10.3.3 图形化方式创建角色

 11、模式对象管理

11.1 创建模式

11.2 查询模式

11.3 切换模式

11.4 删除模式

12、管理表

12.1 创建表

命令行方式

 图形化

12.2 调整字段

12.3 插入值

12.4 约束

12.4.1 约束类型

12.4.2 添加约束

12.4.3 禁用和启用约束

12.4.4 图形化点开“约束”报错的解决方案

 12.5 数据导入

命令行下:

客户端上:

12.6 索引管理

12.6.1 创建索引

 12.6.2 索引监控

 12.6.3 收集表的统计信息

12.7 视图

12.7.1 创建视图

12.7.2 动态视图查询等待

13、数据库的备份还原

13.1 两个参数

13.2 物理备份

13.2.1 联机备份(热备)

 13.2.2 脱机备份(冷备)

13.3 物理备份的还原

 13.3.1 表空间的还原与恢复

 13.3.2 库级的还原与恢复

 13.3.3 图形化

13.4 逻辑备份

13.4.1 全库导出、导入

13.4.2 按用户导出、导入

13.4.3 按模式导出、导入

13.4.4 按表导出

14、作业管理

15、ODBC的安装与配置

15.1 解压

15.2 三步安装

15.3 修改配置文件

15.4 切换到dmdba目录并登陆


1、安装

1.1 安装前准备

1.1.1 关闭防火墙

[root] systemctl stop firewalld
[root] systemctl disable firewalld

1.1.2 新建dinstall用户组

# 创建用户组
groupadd dinstall

1.1.3 创建dmdba用户并修改密码

# 创建用户
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
# 创建完成后使用以下命令查看是否成功
id dmdba
# 设置密码
passwd dmdba

1.1.4 创建安装目录

# 创建达梦安装路径
mkdir /dm8
# 更改文件夹的所属用户组、所属用户
chown dmdba:dinstall /dm8
# 查看是否更改成功
ll -ld /dm8

1.1.5 设置最大可打开文件数

修改配置文件/etc/security/limits.conf

vi /etc/security/limits.conf

添加如下语句:

dmdba hard nofile 204800
dmdba soft nofile 102400
root soft nofile 102400
root hard nofile 204800

使用su - dmdba切换到达梦用户,ulimit -a 查看是否成功。

1.1.6 挂载镜像文件

windows上传文件至银河麒麟v10,可使用Xftp远程连接

# 挂载镜像 mount /镜像地址 /挂载的目标路径
mount /opt/dm8_20220525_x86_rh6_64.iso /mnt

1.1.7 新建安装目录并修改目录权限

# 新建安装目录
mkdir /dm8
# 将新建的安装路径目录权限的用户修改为 dmdba,用户组修改为 dinstall
chown dmdba:dinstall -R /dm8/
# 设置权限
chmod -R 755 /dm8

 1.1.8 /tmp临时扩大空间

当/tmp目录不足1.8G时,会报错设备空间不足,可直接临时扩大空间。

arm版达梦8docker镜像_DM

mount -t tmpfs -o size=2048m  tmpfs /tmp

 1.1.9 图形化界面需要再做配置

[root] xhost +
[root] echo $DISPLAY
:0.0

切换至dmdba用户配置环境变量

[root] su - dmdba
[dmdba] export DISPLAY=:0.0

1.2 安装

1.2.1 命令行安装

# 切换至dmdba用户
su - dmdba
# 进入挂载目录
cd /mnt/
# 安装
./DMInstall.bin -i

# 安装过程中注意参数的选择
# 1、默认时区21;
# 2、1-典型安装;
# 3、配置安装目录为/dm8

数据库安装完成后切换至root用户,并执行命令/dm8/script/root/root_installer.sh以创建DmAPService。

1.2.2 图形化安装

# 切换至dmdba用户
su - dmdba
# 进入挂载目录
cd /mnt/
# 安装
./DMInstall.bin

若出现报错:初始化图形界面失败,如果当前监视器窗口不支持图形界面,请进入安装文件所在文件夹并使用"./DMInstall.bin -i"进行命令行安装。

官方给定解决方法:

  • 方法一:注销当前用户,登陆 dmdba 用户,执行 ./DMInstall.bin 命令,即重启直接登录dmdba用户;
  • 方法二:用当前用户执行 xhost +,切换到 dmdba 用户,执行 export DISPLAY=:0,再执行 xhost +命令。

相关参数选择与命令行一致,在此不再赘述,安装完成后按照提示执行脚本即可。

1.2.3 配置环境变量

切换至root用户,进入dmdba用户的根目录下,配置对应的环境变量。

# DM_HOME 变量和动态链接库文件的加载路径在程序安装成功后会自动导入
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

# 进入dmdba根目录并配置
cd /home/dmdba/
vim .bash_profile

加上最后一行内容,配置如下:

export LD_LIBRARY_PATH=“$LD_LIBRARY_PATH :/home/dmdba/dmdbms/bin"
export DM HOME=" /home/dmdba/dmdbms"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

切换至dmdba用户下,执行source .bash_profile命令使环境变量立刻生效。

1.3 配置实例

1.3.1 命令行方式

# 进入到目录
cd /dm8/bin
# 初始化数据库
./dminit path=/dm8/data db_name=DMTEST instance_name=DMTEST port_num=5237 page_size=16 SYSDBA_PWD=Dameng123

若报错,大多是目录权限导致的,可回到1.1.6重新执行目录权限的修改。

1.3.2 图形化方式

进入安装目录下的tool目录,使用./dbca.sh打开数据库配置助手

arm版达梦8docker镜像_数据库_02

 其后的各项配置可根据自身需要或其他要求选择

arm版达梦8docker镜像_表空间_03

 完成后根据提示执行脚本命令,即可完成创建。

1.4 注册数据库服务

1.4.1 命令行方式

# 进入到目录,root用户执行
cd /dm8/script/

# 执行注册数据库服务
./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DMSERVER

# 可根据自己的环境更改 dm.ini 文件的路径以及服务名
./dm_service_installer.sh -h

1.4.2 图形化方式

arm版达梦8docker镜像_DM_04

arm版达梦8docker镜像_linux_05

 完成后,按照弹出的提示执行脚本即可。

1.5 卸载达梦数据库

1.5.1 命令行方式

# 进入到达梦根目录
./uninstall.sh -i

1.5.2 图形化方式

# 进入到达梦根目录(root用户执行,如果是dmdba用户执行,到最后会弹出以root用户执行命令的窗口)
./uninstall.sh

卸载完成后还需手动删除log目录

arm版达梦8docker镜像_linux_06

 2、数据库连接

2.1 disql连接数据库

arm版达梦8docker镜像_arm版达梦8docker镜像_07

查看数据库状态

arm版达梦8docker镜像_表空间_08

 open状态转mount状态后

arm版达梦8docker镜像_表空间_09

 2.2 DM管理工具连接数据库

进入图形化管理工具

cd /dm8/tool
./manager

双击数据库并填入口令即可连接。

使用manager工具连接时,可在窗口 -> 选项 -> 查询编辑器 -> 编辑器 中启动sql语法检查等提示。

3、启动和关闭DM数据库

达梦数据库的启动顺序为:

                   Shutdown(关闭状态)–> Mount(配置状态)–> Open(打开状态)

 mount 与 open 可以相互转换(此处与Oracle不同);suspend(挂起)与 open 也可以相互转换,但与 mount 不行。

 3.1 命令行方法

前台启动:

#未注册数据库服务的只能选择此方法 /bin目录下
./dmserver /dm8/data/DAMENG/dm.ini(默认启动到 OPEN 状态)
./dmserver /dm8/data/DMOA/dm.ini mount(启动到 mount 状态)

 后台启动:

cd /dm8/bin
ll Dm*
#DMTESTSVR是实例名
./DmServiceDMTESTSVR start/status/stop

 3.2 图形化界面/服务器查看启动

在root用户下启动DM服务查看器

cd /dm8/tool
./dmservice.sh

arm版达梦8docker镜像_linux_10

 3.3 系统命令启动

systemctl status/start/stop DmServiceDMSERVER.service

 4、DM的客户端工具

4.1 DM管理工具(manager)

manager是一个图形化管理数据库,包含用户管理、角色权限管理、表空间、模式、模式下对象、数据库物理联机备份、作业管理等功能。

cd /dm8/tool
 ./manager

 4.2 DM控制台工具(console)

console是一个脱机工具,提供脱机备份还原、修改数据库参数(修改后重启数据库才能生效)等功能。

cd /dm8/tool
 ./console

 4.3 DM数据迁移工具(dts)

DM数据迁移工具支持其他数据库迁移到达梦,或者达梦迁移到文件等功能。

cd /dm8/tool
 ./dts

 4.4 DM性能监视工具(monitor)

cd /dm8/tool
 ./monitor

 5、参数配置

5.1 参数类型

达梦根据参数类型可分为静态参数和动态参数。

静态参数:只能修改配置文件中的值,对内存中的值不进行修改,因此修改后需重启数据库

动态参数:既能修改内存中的值,也能修改配置文件中的值,修改后立即生效。

arm版达梦8docker镜像_表空间_11

 5.1.1 READ ONLY

read only:只读参数,也是手工参数;不能通过系统函数、SQL命令来达到修改参数的目的,只能从dm.ini配置文件中进行修改;

5.1.2 SYS

sys:系统级动态参数,可以通过函数或SQL修改此类型的参数,既可修改内存中的值,也可修改参数文件file_value中的值;

5.1.3 IN FILE

in file:静态参数,可以通过函数或SQL修改此类型的参数,但不能修改其内存中的值,重启数据库后生效;

5.1.4 SESSION

session:会话级动态参数,可以通过系统函数和SQL命令达到修改参数的目的,可针对某个会话进行修改,便于调试。

5.2 参数修改方法

5.2.1 SQL语句修改及相关参数

both:既修改内存中的值,也修改配置文件中的值,重启不重启都一样生效;
spfile:只修改配置文件中的值,重启数据库生效;
memory:只修改内存中的值,重启数据库后恢复设置前的样子。(默认)

# 语法
alter system set ‘参数名’=参数值 spfile|memory|both;

# 例句
# 修改兼容参数类型
select name, value,type from v$parameter t where t.name like 'COMPATIBLE_MODE';
alter system set 'COMPATIBLE_MODE'=2 spfile;

# 动态参数
select name,type,value,sys_value,file_value from v$parameter t where name like 'UNDO_RETENTION';
#如果不指定则默认修改的是memory
alter system set 'UNDO_RETENTION'=180;

# 会话级参数
select name,type,value,sys_value,file_value from v$parameter t where name like 'LIST_TABLE';
alter session set 'LIST_TABLE'=1;

DM开启oracle兼容模式:

1、查看COMPATIBLE_MODE参数:
select para_name,para_value,para_type from v$dm_ini where para_name=‘COMPATIBLE_MODE’;

2、参数值的意义:
0:不兼容
1:兼容SQL92标准
2:兼容Oracle
3:兼容My SQL Server
4:兼容Mysql

3、修改参数:
sp_set_para_value(范围,参数名称,参数值);
范围:1-修改内存和参数文件;2-修改参数文件 --> 此处写2
sp_set_para_value(2,‘COMPATIBLE_MODE’,2);

4、重启数据库服务
service DmServiceDMSERVER restart
重复步骤1,查看修改是否生效

 5.2.2 系统函数修改

查看可以使用的系统函数:

select name,id from v$ifun t where name like '%SP_SET%_PARA%';

arm版达梦8docker镜像_arm版达梦8docker镜像_12

 查看系统函数的参数类型:

select * from v$ifun_arg t where id=584;

arm版达梦8docker镜像_DM_13

# 修改int类型的参数值COMPATIBLE_MODE
SQL> sp_set_para_value(2,'COMPATIBLE_MODE',0);
SQL> select name, value,FILE_VALUE, sys_value, type from v$parameter t where 
t.name like 'COMPATIBLE_MODE';

5.2.3 使用dm.ini修改 

# 直接编辑文件修改即可
cd /dm8/data/DAMENG
vim /dm8/data/服务名称 dm.ini

 5.2.4 使用图形化修改

开启tool目录下的console即进入DM控制台

注意:该方法不修改内存中的值,需要重启后生效

arm版达梦8docker镜像_linux_14

arm版达梦8docker镜像_arm版达梦8docker镜像_15

 6、数据缓冲区

定义:数据缓冲区是从磁盘读出的数据页在内存中的镜像,由INI配置中的BUFFER、FAST_POOL_PAGES、RECYCLE、KEEP等确定大小,不同类型的缓冲去主要表现为淘汰机制。

# 修改数据缓冲区buffer参数大小为 500M:
SQL> alter system set 'BUFFER'=500 spfile;
SQL> select name, value,FILE_VALUE, sys_value, type,description from 
v$parameter t where t.name like 'BUFFER';

arm版达梦8docker镜像_linux_16

 7.表空间管理

表空间是数据库最大逻辑存储单元。

项目初期,业务需要创建自己的表空间,若空间不够,则需扩容。

数据库创建完成后,会默认创建如下表空间:

SYSTEM:存储数据字典信息;

ROLL:存放回滚信息。UNDO_RETENTION存放回滚段的保留时长;

MAIN:用户默认表空间;

TEMP:临时表空间;

HMAIN:HTS表空间;HUGE表的默认表空间。

arm版达梦8docker镜像_linux_17

在线收缩临时表空间的方法:SP_TRUNC_TS_FILE(3,0,10);

7.1 命令行方式

常用命令:

create tablespace XX datafile ‘XX’;
alter tablespace XX add/rename/resize datafile XX;
alter tablespace XX online/offline; 
drop tablespace XX;

7.1.1 创建表空间

create tablespace 表空间名 datafile '数据文件路径' SIZE 数据文件大小(单位为mb);
create tablespace dbtbs datafile 'TBS01.DBF' SIZE 32;
#查询页大小的4096倍,并换算成MB
select page*4096/1024/1024

arm版达梦8docker镜像_表空间_18

 7.1.2 修改数据库文件的扩展属性

alter tablespace tbs datafile 'TBS01.DBF' AUTOEXTEND off;

7.1.3 添加数据文件

alter tablespace tbs add datafile 'TBS02.DBF' SIZE 32 AUTOEXTEND off;

7.1.4 修改数据文件大小

alter tablespace 表空间名 resize datafile '数据文件路径' to 数据文件大小(单位为mb);
alter tablespace tbs resize datafile 'TBS01.DBF' to 64;

#修改表空间开启自动增长,增长步长,最大表空间
alter tablespace 表空间名 datafile '数据文件路径' autoextend on next 增长步长 maxsize 文件最大值
alter tablespace tbs datafile 'TBS01.DBF' autoextend on next 2 maxsize 10240;

7.1.5 删除表空间

用户自定义的表空间可以删除和脱机(脱机后该空间中的表将无法读写),但系统定义的不能;
删除后表空间下的数据文件也会级联删除。

drop tablesapce 表空间名;
drop tablespace dmtest;

arm版达梦8docker镜像_数据库_19

7.1.6 增加表空间下的数据文件

alter tablespace 表空间名 add datafile '数据文件路径' size 数据文件大小(单位为mb);
alter tablespace tbs add datafile 'TBS02.DBF' size 64;

7.1.7 修改表空间的名称

自定义表空间支持重命名:

alter tablespace 修改前表空间名 rename to 修改后表空间名;
alter tablespace tbs rename to dmtest;

7.2 图形化方式

一定要打开“自动扩充”!!!

arm版达梦8docker镜像_表空间_20

 7.3 表空间迁移

新的表空间路径,必须是由安装数据库的用户提前进行创建,或者把这个文件夹授予数据库安装用户读写权限,否则会因权限问题报数据库文件路径错误。

 命令行方式

1)创建新路径;

2)使表空间处于脱机状态 ;
3)指定要迁移的文件和迁移路径 ;
4)使表空间处于联机状态。

arm版达梦8docker镜像_数据库_21

# 先将表空间离线
alter tablespace 表空间名 offline;
alter tablespace TBS offline;
# 重命名数据文件名,并迁移,后面的文件夹路径必须是由安装数据库的用户创建的
alter tablespace 表空间名 rename datafile '重命名的数据文件名' to '路径';
alter tablespace TBS rename datafile 'TBS01.DBF' to '/dm8/data/DAMENG/TBS/TBS01.DBF';
alter tablespace TBS rename datafile 'TBS02.DBF' to '/dm8/data/DAMENG/TBS/TBS02.DBF';
# 将表空间上线
alter tablespace 表空间名 online;
alter tablespace dmtest online;

arm版达梦8docker镜像_DM_22

 7.4 temp表空间

查询temp表空间参数,达梦数据库启动的时候会根据这几个参数来创建或重建temp表空间:

select name,value,type from v$parameter where name like 'TEMP%';

TEMP_PATH:temp表空间的路径

TEMP_SIZE:temp表空间的初始值,单位为MB

TEMP_SPACE_LIMIT:temp表空间的空间限制,0表示不限制

 修改temp表空间大小,重启后依然有效

# 设置temp表空间初始值
alter system set 'TEMP_SIZE'=64 spfile;

# 查看更改是否生效
cat /dm8/data/DAMENG/dm.ini |grep TEMP_SIZE

收缩临时表空间temp的方法:SP_TRUNC_TS_FILE(3,0,10)。

第一个参数:临时表空间ID

第二个参数:临时表空间数据文件ID

第三个参数:截断至多大

temp表的相关信息可通过以下语句查询获得:

select * from v$tablespace where NAME='TEMP'; select table_name, tablespace_name from dba_tables where tablespace_name='TEMP';

8、重做日志文件

  • 重做日志:用于记录redo信息,重做日志默认为256M,数据库中的增、删、改操作都会记录redo和undo信息;
  • 其中redo信息写入联机日志文件(v$rlogfile记录联机日志),undo写入roll表空间对应的数据文件中;
  • 达梦的联机日志只支持系统自动切换,不支持手动切换(oracle支持);

 8.1 命令行方式

常用命令:

alter database add logfile ‘XXX’size xx;–添加联机日志
alter database resize logfile ‘XXX’ to xx; --修改联机日志大小
alter database rename logfile ‘XXX’ to xx; --迁移联机日志

 8.1.1 查看联机日志

## 当前正在使用的联机日志
select * from v$rlog;
select * from v$logfile;

8.1.2 创建连接日志、修改连接日志大小

达梦只支持往大了改:

alter database add logfile '日志名称' size 日志大小(单位MB);
alter database add logfile 'DAMENG03.log' size 128

alter database resize logfile '日志路径' to 日志大小(单位MB);
alter database resize logfile '/dm8/data/DAMENG/DAMENG03.log' to 256;

8.1.3 重做日志迁移

注意:需要在mount状态下操作,且要提前创建迁移目录。

1) 创建目录;

2) 表空间处于mount状态;
3) 联机日志迁移;
4) 将表空间改回open状态。

# 将数据库状态设置为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;

8.2 图形化方式

图形化联机日志迁移,此处可直接更改数据文件大小。

arm版达梦8docker镜像_数据库_23

arm版达梦8docker镜像_linux_24

 9、归档管理

默认达梦数据库运行在非归档模式。归档是对REDO日志的归档,备份归档是为了防止数据丢失。

9.1 命令行方式

9.1.1  开启归档:

注意:联机备份时一定要开启归档!!!

# 将数据库状态设置为mount
alter database mount;
# 打开归档
alter database archivelog;
# 归档配置,配置归档路径,归档文件大小(超过就新建一个文件),归档文件总的大小(超过限制,就会删除老的)
alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=10240';
# 将数据库状态设置为open
alter database open;

# 查询归档状态
select arch_mode from v$database;
# 查看归档文件
select * from SYS."V$ARCH_FILE";
# 查询归档配置
select * from v$dm_arch_ini;

9.1.2 关闭归档

alter database mount;
# 关闭归档
alter database noarchivelog;
# 删除归档文件
alter database delete archivelog 'type=local,dest=/dm8/arch';
# 将数据库状态设置为open
alter database open;

# 查询归档状态
select arch_mode from v$database;

 9.1.3 手动切换归档日志文件

与联机日志不同,达梦的归档日志文件由数据自动切换,但也支持手动切换:

alter system SWITCH LOGFILE;
alter SYSTEM ARCHIVE LOG CURRENT;
alter DATABASE ARCHIVELOG CURRENT;

 9.1.4 归档数据字典

select * from v$arch_file;

 9.1.5 归档清理

select * from v$ifun t where t.name like upper('sf_archive%');
SF_ARCHIVELOG_DELETE_BEFORE_LSN(3316220);
SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate -10);

9.2 图像化方式

arm版达梦8docker镜像_表空间_25

“配置”:

arm版达梦8docker镜像_arm版达梦8docker镜像_26

arm版达梦8docker镜像_DM_27

arm版达梦8docker镜像_DM_28

  9.3 编辑配置文档

# 查看归档状态是否开启,0关闭、1开启
cat dm.ini|grep ARCH_INI

arm版达梦8docker镜像_DM_29

 10、用户角色权限

10.1 用户管理

10.1.1 用户类型

SYS:内置用户,不能直接登陆

SYSDBA:系统管理员,拥有DBA角色(除了安全、审计其他都管)

SYSAUDITOR:系统审计管理员

SYSSSO:系统安全管理员

SYSDBO:系统安全操作员(达梦安全版才有)

10.1.2 命令行方式

create user 用户名 identified by 密码 default tablespace 表空间名;

create user dmtest identified by Dmeng123;
# 报错:密码长度不符合要求
# 原因:密码长度需要大于9
create user dmtest identified by Dmeng0123 PASSWORD_POLICY 15;
# 或者直接修改策略
alter system set 'PWD_POLICY' = 13 BOTH;
create user dmtest identified by Dmeng123;

设置密码时,需要查询下密码的策略

系统口令策略 PWD_POLICY 参数指定系统的口令策略,默认为 2;
系统支持的口令策略有:

> 0 无策略

> 1 禁止与用户名相同
> 2 口令长度不小于 9
> 4 至少包含一个大写字母(A-Z)
> 8 至少包含一个数字(0-9)
>16至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号) 口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略 2 和4,则设置口 令策略为 2+4=6 即可。

select * from v$parameter where name = 'PWD_POLICY';

调整密码策略:

alter system set 'PWD_POLICY' = 上述策略前数字相加 both;
alter system set 'PWD_POLICY' = 31 BOTH;

调整密码错误次数参数,默认输错3次后锁定账号,并且1分钟后自动解锁

# 将密码输错锁定次数改为5次,锁定时间为3分钟
alter user 用户名 limit FAILED_LOGIN_ATTEMPS 5,PASSWORD_LOCK_TIME 3;

# 新版本支持使用PROFILE
select * from DBA_PROFILES;
create PROFILE profile1 LIMIT FAILED_LOGIN_ATTEMPS 5 PASSWORD_LOCK_TIME 5
SESSION_PER_USER 3;
alter user DMTEST PROFILE profile1;

手动锁定或解锁账号

# 手动解锁
alter user 用户名 account unlock;

# 手动锁定
alter user 用户名 account lock;

# 查看用户资源限制,例如最大并发数
select * from dba_users a,sysusers b where a.user_id = b.id;

 删除用户

#用户下有对象默认不能删除,可以使用CASCADE级联删除用户及用户下对象
drop user if EXISTS dmtest;

10.1.3 图形化方式

arm版达梦8docker镜像_表空间_30

arm版达梦8docker镜像_DM_31

arm版达梦8docker镜像_arm版达梦8docker镜像_32

arm版达梦8docker镜像_arm版达梦8docker镜像_33

arm版达梦8docker镜像_DM_34

arm版达梦8docker镜像_DM_35

 10.2 权限管理

10.2.1 设置指定用户最大并发量:

# 设置用户名为hrtest的用户,最大连接数为3
alter user hrtest limit SESSION_PER_USER 3;

10.2.2 any权限

达梦默认DDL语句的any权限不能转授,由参数ENABLE_DDL_ANY_PRIV控制:

select * from v$parameter where name = 'ENABLE_DDL_ANY_PRIV';
# 开启参数
alter system set 'ENABLE_DDL_ANY_PRIV'=1 both;
# 进行授权
grant create any table to hrtest;

10.2.3 添加查询权限

grant select on 模式名.表名 to 用户名;
grant select on dmtest.temp to hrtest;

10.2.4 添加修改、删除权限

不能只授予修改、删除权限,还要授予查询权限

grant select on 模式名.表名 to 用户名;
grant update on 模式名.表名 to 用户名;
grant delete on 模式名.表名 to 用户名;

10.2.5 回收权限

revoke 角色名 from 用户名;
revoke 具体权限 from 用户名;

revoke r1 from dmtest;
revoke select table from dmtest;
revoke create table from dmtest;

 注意:若回收的角色带有转授权限,那么需要加关键字,对其转授出去的角色一并级联回收

revoke select on sysdba.t_test from hrtest CASCADE;

 10.2.6 权限转授

  • 系统权限转授:with admin option
  • 对象权限转授:with grant option
  • 默认DDL语句的any权限不能转授
grant select on sysdba.t_test to hrtest with grant option;

10.3 角色管理

10.3.1 角色类型

DBA:系统管理员角色,拥有除审核、安全外的所有权限
RESOURCE:具有在当前用户模式下定义对象的权限,例如create table等
PUBLIC:具有在当前用户模式下数据操作的权限,例如insert table等
SOI:系统表(SYS为前缀)的访问权限
SVI:系统视图(VSYS为前缀)的视图权限
VTI:动态视图,具有 V$开头动态视图的查询权限

 10.3.2 创建角色并授予角色权限

create role 角色名;
grant 权限 to 角色名;

create role r1;
grant create table to r1;
grant select (employee_id, employee_name) on dmhr.employee to r1;
# 将角色赋给用户
grant r1 to dmtest;

10.3.3 图形化方式创建角色

arm版达梦8docker镜像_数据库_36

arm版达梦8docker镜像_DM_37

arm版达梦8docker镜像_linux_38

 11、模式对象管理

模式的定义:

是一个特定的对象集合,在概念上可将其看作是包含表、视图、索引等若干对象的对象集

模式对象:

 表、视图、约束、索引、序列、触发器、存储过程/函数、包、同义词、类、域

模式与用户之间的关系:

当系统建立一个用户时,会自动生成一个对应的模式。用户可以建立多个模式,DM 中用户和模式是一对多的关系,一个用户可以拥有多个模式, 一个模式仅能归属于一个用户。
Oracle 中用户和模式是一对一的关系。

11.1 创建模式

注:若在disql中执行此语句,空行后需要加上 / 再回车

# 创建模式前需要授予用户创建模式的权限

# 创建模式
create schema 模式名 authorization 用户名;
/
# 授予用户创建模式权限
grant create schema to 用户名;

11.2 查询模式

# 查询系统中的所有模式
select * from SYSOBJECTS a where a."TYPE$" = 'SCH'

# 查询模式和所属用户
select a.id scheid, a.name schename, b.id userid, b.name username
from SYS.SYSOBJECTS a, SYS.SYSOBJECTS b
where a."TYPE$" = 'SCH' and a.pid = b.id;

# 查询当前模式
select sys_context('USERENV','CURRENT_SCHEMA');

# 查询当前用户,两种都可以
select user;
select sys_context('USERENV','CURRENT_USER');

11.3 切换模式

注意:模式切换只对当前会话生效,目前没有方法可以设置永久生效

set schema 模式名;

11.4 删除模式

drop SCHEMA IF EXISTS HRTEST01;

# 级联删除模式下对象,生产环境慎用。
drop SCHEMA IF EXISTS HRTEST01 CASCADE;

12、管理表

DM默认是索引组织表(也支持堆表),Oracle默认是堆表。

注意:DM中表名是区分大小写的

12.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;

 图形化

客户端操作区分大小写,建议统一使用大写。

arm版达梦8docker镜像_DM_39

12.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;

12.3 插入值

insert into dmtest.t_testpid(pid, pname) values (1, 'aa');

12.4 约束

12.4.1 约束类型

NOT NULL:非空约束;
UNIQUE:唯一约束,可以为空,简写为UK_表名_字段名;
PRIMARY KEY:主键约束 (唯一约束+非空约束),简写为PK_表名_字段名;
FOREIGN KEY:外键引用约束,引用的是另一张表(父表)的主键或唯一键,简写为FK_表名_字段名

CHECK:检验约束,用户校验数据的准确性,简写为CK_表名_字段名;

 主键约束和唯一约束的区别:一张表只能有一个主键,但是可以有多个唯一约束。

12.4.2 添加约束

注意:字段如果为小写需要小写并且加上双引号,字段为大写不需要加双引号

# 非空约束
alter table hrtest.t_testpid modify pname not null;
# 唯一约束
alter table hrtest.t_testpid add CONSTRAINT uk_testpid_email unique (email);
# 主键约束
alter table hrtest.t_testpid ADD CONSTRAINT pk_testpid_pid PRIMARY KEY(pid);
# 检验约束
alter table hrtest.t_testpid add salary number(10,2);
alter table hrtest.t_testpid ADD CONSTRAINT ck_testpid_salary CHECK (salary>=2100);
# 外键约束,REFERENCES表里的字段必须是主键或者是添加了唯一索引的字段
alter table hrtest.t_test add CONSTRAINT fk_test_id FOREIGN KEY(id) REFERENCES
hrtest.t_testpid(pid);

12.4.3 禁用和启用约束

alter table 模式名.表名 disable constraint "约束名"
alter table 模式名.表名 enable constraint "约束名"

图形化可右键直接禁/启用。

12.4.4 图形化点开“约束”报错的解决方案

arm版达梦8docker镜像_数据库_40

 解决:

arm版达梦8docker镜像_arm版达梦8docker镜像_41

 12.5 数据导入

命令行下:

disql sysdba/Dameng123 '`/dm8/backup/DEPT.sql'
# 或者
SQL> start /dm8/backup/DEPT.sql

客户端上:

直接使用`/dm8/backup/DEPT.sql

注:客户端需要“提交”数据

arm版达梦8docker镜像_arm版达梦8docker镜像_42

12.6 索引管理

12.6.1 创建索引

create index idx_表名_字段名 ON 表名 (字段名,字段名);
create index ix_emp01_employeename ON HRTEST.T_EMP01(EMPLOYEE_NAME);
create index ix_testpid_name on dmtest.t_testpid(pname);

图形化:

arm版达梦8docker镜像_DM_43

arm版达梦8docker镜像_数据库_44

arm版达梦8docker镜像_linux_45

 12.6.2 索引监控

alter INDEX DMTEST.IX_TESTPID_NAME MONITORING USAGE;
alter INDEX DMTEST.IX_TESTPID_NAME noMONITORING USAGE;
select * from SYS."V$OBJECT_USAGE";
select * from user_indexes;
select * from user_ind_columns;

 12.6.3 收集表的统计信息

dbms_stats.gather_table_stats('DMTEST','T_TEST');
dbms_stats.table_stats_show('DMTEST','T_TEST');

12.7 视图

12.7.1 创建视图

create or replace view 视图名称 as
select * from aaa where age > 10

create or REPLACE view v_empnum as select b.DEPARTMENT_NAME, a.department_id, count(*) empnum from t_emp a, t_dept b where a.department_id = b.DEPARTMENT_ID
group by b.DEPARTMENT_NAME, a.department_id having count(*) >=25;

12.7.2 动态视图查询等待

select * from v$trxwait;

两个会话窗口同时运行命令时,若其中一个未提交,则另一个将会卡住。(会话未提交导致的卡住问题只在表有主键时存在) ->

解决办法:用该语句查询等待,然后手动结束会话(sp_close_session(会话id)/线程),或者手动提交(commit)

# 查看被锁表
select * from v$lock t where t.BLOCKED =1;

13、数据库的备份还原

备份分为物理备份和逻辑备份。

物理备份是拷贝有效的数据页,逻辑备份是导出数据库中的逻辑数据。

物理备份=完全备份+增量备份,除此之外还能分为冷备(脱机备份)和热备(联机备份)。

13.1 两个参数

数据库备份需要关注两个参数:

select * from SYS."V$PARAMETER" t where t.name in ('BAK_USE_AP', 'BAK_PATH');

arm版达梦8docker镜像_DM_46

BAK_USE_AP:DMAP线程是否开启

BAK_PATH:bak路径,自定义备份路径不能与此相同

13.2 物理备份

13.2.1 联机备份(热备)

联机备份:数据库是开启状态,联机备份要求数据库打开归档,备份时AP服务需要为启动状态。

备份级别:库备份、表空间、表备份、归档备份都可以使用联机备份的方式。

命令行方式:

# 全库备份到默认路径下
backup database;

# 全库增量备份到默认路径下
backup database INCREMENT;

# 全库备份到指定路径下(备份目录不带文件名)
backup database full backupset '备份目录';
backup database to DMFULLBAK01 BACKUPSET '/dm8/backup/full/DMFULLBAK01';

# 基于基础备份集的增量备份,并备份到指定目录
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';

图形化方法:

arm版达梦8docker镜像_DM_47

arm版达梦8docker镜像_数据库_48

 如果备份在指定目录下,需要手动添加目录才能看到备份的内容

arm版达梦8docker镜像_数据库_49

若备份时报错:收集到的归档日志不连续

-> 使用checkpoint(100)函数主动刷新检查点。

 13.2.2 脱机备份(冷备)

是数据库关闭状态下的备份。

备份级别:库备份、表空间、表备份、归档备份。

 命令行(dmrman):

dm8-bin目录下通过 ./dmrman 进入命令行环境

arm版达梦8docker镜像_linux_50

cd /dm8/bin
 ./dmrman 
-->
backup database '/dm8/data/DAMENG/dm.ini' to DMFULLBAK03 backupset '/dm8/backup/full/DMFULLBAK03';

图形化:

打开 tool 下的 ./dmservice.sh 先停止数据库服务,打开 ./console DM控制台工具

arm版达梦8docker镜像_DM_51

arm版达梦8docker镜像_数据库_52

arm版达梦8docker镜像_DM_53

arm版达梦8docker镜像_表空间_54

arm版达梦8docker镜像_DM_55

arm版达梦8docker镜像_linux_56

13.3 物理备份的还原

DM8全库恢复和表空间恢复都只能在数据库脱机状态下实现

 13.3.1 表空间的还原与恢复

# 模拟表空间故障,删除数据文件 TBS01.DBF
cd /dm8/data/TBS
ls
rm TBS0*

cd /dm8/bin
 ./dmrman 
-->

# 还原
RMAN> restore database '/dm8/data/DAMENG/dm.ini' tablespace dmtbs from backupset 
'/dm8/backup/full/DMFULLBAK03';

RMAN> recover database '/dm8/data/DAMENG/dm.ini' tablespace dmtbs;

 13.3.2 库级的还原与恢复

# 模拟数据库故障,删除 SYSTEM.DBF
cd /dm8/data/DAMENG 
rm SYSTEM.DBF

cd /dm8/bin
 ./dmrman 
-->

# 还原
RMAN>
1-
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup/full/DMFULLBAK03';
2- 归档还原
recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch';
3- 更新魔数
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;

 13.3.3 图形化

基于console:

arm版达梦8docker镜像_DM_57

arm版达梦8docker镜像_linux_58

arm版达梦8docker镜像_表空间_59

arm版达梦8docker镜像_arm版达梦8docker镜像_60

arm版达梦8docker镜像_linux_61

arm版达梦8docker镜像_linux_62

arm版达梦8docker镜像_数据库_63

arm版达梦8docker镜像_数据库_64

arm版达梦8docker镜像_arm版达梦8docker镜像_65

13.4 逻辑备份

dexp在达梦的bin目录下,若未配置环境变量,使用时需写作 ./dexp

另外,需注意要先创建目录,且导入导出用户都使用dmdba

13.4.1 全库导出、导入

导出:
./dexp userid=SYSDBA/SYSDBA:5236 directory=/dm8/backup/dexp file=full.dmp log=full.log full=y
导入:
./dimp userid=SYSDBA/SYSDBA:5236 directory=/dm8/backup/dexp file=full.dmp log=full.log full=y

13.4.2 按用户导出、导入

导出:
./dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=HRTEST.dmp 
log=HRTEST.log owner=HRTEST
导入:
./dimp SYSDBA/SYSDBA@192.168.109.22:5237 file=/home/dmdba/dmdbms/data/dexp_user/ dexp_user.dmp log=dimp_user.log owner=ttt directory=/ home/dmdba/dmdbms/data/dimp_user

13.4.3 按模式导出、导入

导出:
./dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=DMHR.dmp 
log=DMHR.log schemas=DMHR
导入:
./dimp userid=sysdba/Dameng123:5238 directory=/dm8/backup/dexp file=DMHR.dmp 
log=impDMHR.log REMAP_SCHEMA=DMHR:DMTEST

13.4.4 按表导出

./dexp userid=sysdba/Dameng123:5238 directory=/dm8/backup/dexp file=dmtest_emp.dmp log=dmtest_emp.log tables=DMTEST.T_EMP

14、作业管理

arm版达梦8docker镜像_数据库_66

arm版达梦8docker镜像_表空间_67

arm版达梦8docker镜像_linux_68

arm版达梦8docker镜像_DM_69

arm版达梦8docker镜像_linux_70

arm版达梦8docker镜像_数据库_71

arm版达梦8docker镜像_linux_72

select * from SYSJOB.SYSJOBS;
select * from SYSJOB.SYSJOBHISTORIES2;
# 启动运行
dbms_job.run(1664259582);  # 根据第一条语句的结果来
checkpoint(100);

15、ODBC的安装与配置

15.1 解压

# root用户下
tar -zxvf /opt/unixODBC-2.3.0.tar.gz

15.2 三步安装

# 进入解压目录
cd unixODBC-2.3.0
# 配置
./configure
# 编译
make
# 安装
make install

15.3 修改配置文件

cd /usr/local/etc/
ll
vim odbc.ini

[DM8] # 这个按要求改
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER # 要和下面对应
SERVER = localhost
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
vim odbcinst.ini
[DM8 ODBC DRIVER]   #与上面对应
Description = ODBC DRIVER FOR DM8 
Driver = /dm8/bin/libdodbc.so   --dm8安装目录的bin目录下

15.4 切换到dmdba目录并登陆

su - dmdba
isql dm8 -v

arm版达梦8docker镜像_arm版达梦8docker镜像_73

arm版达梦8docker镜像_数据库_74