目录
达梦数据库是当前信创领域主流的国产安全数据库,本文档主要从数据库的前期软硬件准备,到数据库的安装卸载、数据库配置、数据库备份还原等进行详细说明,旨在为后续工作做好充分准备。
1 确定软硬件环境
1.1 硬件环境需求
安装达梦数据库所需要的硬件基本配置如下表所示。
表 1‑1硬件环境需求
名称 | 要求 |
CPU | Intel Pentium 4以上处理器 |
内存 | 512MB以上 |
硬盘 | 5GB以上 |
网卡 | 10MB以上支持TCP/IP协议 |
光驱 | 32倍速以上光驱 |
显卡支持 | 1024*768*256以上彩色显示 |
鼠标/键盘 | 普通鼠标/键盘 |
1.2 软件环境需求
运行达梦数据库所需要的软件环境主要如下表所示。
表 1‑2软件环境需求
名称 | 要求 |
操作系统 | Windows(简体中文服务器版SP2以上) Linux(glibc2.1以上,内核2.6,已安装KDE/GNOME桌面环境,已安装UnixODBC组件) |
网络协议 | TCP/IP |
系统盘 | 至少1GB以上剩余空间 |
1.3 本次部署的软硬件情况
本次部署的软硬件情况如下表所示。
表 1‑3本次部署的软硬件清单
软/硬件 | 名称 | 要求 |
硬件信息 | CPU | Intel® Core™i7-6500 CPU @ 2.5GHz |
内存 | 12GB | |
硬盘 | 120GB SSD + 1TB HDD | |
网卡 | 千兆以太网网卡 | |
光驱 | USB移动光驱 | |
显卡支持 | 1366*768*256彩色显示 | |
鼠标/键盘 | 光电鼠标/内置键盘 | |
软件信息 | 虚拟机 | Vmware 16 |
Xmanager | Xmanager 6 | |
Xftp | XFTP 6 | |
VNC Viwer | VNC Viewer 6.20 | |
操作系统 | 中标麒麟高级服务器操作系统软件V7.0U6 | |
达梦数据库安装包 | DM8 |
上述软硬件满足本次部署要求。
2 软硬件准备
本次在个人笔记本上完成部署任务,需要预先准备好安装软件。
2.1 软件版本
本次部署达梦数据库所需要的软件版本如下表所示。
表 2‑1软件版本
序号 | 名称 | 版本 |
1 | 虚拟机 | VMware-workstation-full-16.1.1-17801498.exe |
2 | Xmanager | XmanagerPowerSuite-6.0.0009r |
3 | Xftp | Xftp 6 |
4 | VNC Viwer | VNC-Viewer-6.20.113-Windows-64bit |
5 | 操作系统 | nsV7Update6-adv-lic-build4-x86_64 |
6 | 达梦数据库安装包 | dm8_20210420_x86_rh6_64_ent_8.6.1.190_pack4 |
2.2 软件获取
目前已将上述软件上传至百度云,具体下载方式如下:
表 2‑2软件获取
序号 | 名称 | 下载地址 |
1 | 虚拟机 | https://pan.baidu.com/s/1XR4-JoK7-KG1R1-9J8zDCA 提取码:0u0p |
2 | Xmanager | https://pan.baidu.com/s/1g9B8GgvW0hyHWSgyVP9-rw 提取码:5q7o |
3 | Xftp | https://pan.baidu.com/s/1tkdlVMt4kV9rBzDv8juPNA 提取码:s21p |
4 | VNC Viwer | https://pan.baidu.com/s/1gEuVT-QqJ6r7Xs_X-8gaDg 提取码:ohk3 |
5 | 操作系统 | https://pan.baidu.com/s/1SXoQL7Tk-XqqsCqtwrypQg 提取码:upav |
6 | 达梦数据库安装包 | https://pan.baidu.com/s/1-rTa6Ekynmi0p4y5gLq80A 提取码:eiqh |
上述软件准备完毕后,在本地计算机上安装好VMware pro 16,VMware pro 16的安装步骤略。
3 安装操作系统
在安装中标麒麟操作系统时,有如下几点需要注意:
- 虚拟机的基础配置。虚拟机内存建议分配2GB,硬盘分配60GB。
- 以图形化方式启动操作系统安装,如下图所示。
- 选择软件安装时,需要选择如下附加选项。
4. 禁用KDUMP。
5. 操作系统分区,建议自定义分区,主要分区包括:
/boot分区,建议分配512Mib;
swap分区,建议分配4GB;
/分区,建议将硬盘剩余空间全部分配给/。设置并牢记root用户口令。
4 软件包上传
4.1 服务器网络配置
安装完成操作系统后,需要配置操作系统的IP地址、掩码和网关,配置虚拟机的网络连接模式,确保本地计算机和虚拟机的网络可以连通。
虚拟机IP配置如下图所示。
为了测试本地计算机与虚拟机的连通,且虚拟机不与外界网络连通,因此可将虚拟机网络配置为仅主机模式。
关闭服务器防火墙
测试网络连通性
4.2 软件上传
主要步骤如下:
- 使用Xftp连接服务器;
- 将dm8_20210420_x86_rh6_64_ent_8.6.1.190_pack4.iso、unixODBC-2.3.0.tar.gz、dm.key等文件上传至服务器/home目录。
5 数据库安装、配置与卸载
5.1 数据库安装前准备工作
在安装达梦数据库之前要检查或修改操作系统配置,确保达梦数据库可以正确安装和执行。
5.1.1 检查系统信息
主要检查内容如下:
- 获取系统位数,查询命令:getconf LONG_BIT
- 查询操作系统release信息,查询命令:lsb_release -a
- 查询系统信息,查询命令:cat /etc/issue
- 查询系统名称,查询命令:uname -a
如下图所示。
由上图可以看出,系统位数64位,内核版本3.10。
5.1.2 创建用户
使用root用户创建达梦安装用户dmdba、创建达梦用户组dinstall,并为用户设置密码,主要操作如下。
groupadd dinstall useradd –g dinstall –m –d /home/dmdba –s /bin/bash dmdba passwd dmdba |
5.1.3 Linux操作系统限制
在Linux系统中,因ulimit命令的存在,会使程序使用操作系统资源进行限制,为了使达梦数据库能够正常运行,需要修改Ulimit参数。
运行ulimit –a查询当前系统限制信息。
如下图所示。
参数使用限制:
序号 | 参数 | 默认参数 | 建议参数 |
1 | data seg size(kbites,-d) | ulimited | ulimited |
2 | file size(block, -f) | ulimited | ulimited |
3 | open files(-n) | 1024 | 102400或ulimited |
4 | virtual memory(kbytes,-v) | ulimited | ulimited |
由上表可知,需要修改open files参数,修改方法如下:
使用root用户编辑/etc/security/limits.conf文件,添加如下内容:
* soft nofile 102400 * hard nofile 102400 |
如下图所示。
上述配置需要重启操作系统后生效。
5.2 数据库安装
5.2.1 挂载达梦iso镜像
挂载命令:
#将数据库iso镜像挂载到/mnt目录下 mount -o loop dm8_20210420_x86_rh6_64_ent_8.6.1.190_pack4.iso /mnt |
5.2.2 配置远程连接服务器图形化界面
使用root用户和dmdba用户分别执行:
export DISPLAY=10.3.0.110:0.0 |
标注红色部分是远程连接服务器的终端IP地址。
上述方法如果不适用,建议在服务端安装VNCServer,在客户端安装VNC-Viewer对服务端进行远程连接,主要步骤如下:
- 在服务端安装VNCServer,安装包如下:
[root@localhost Packages]# ll | grep vnc -rw-rw-r-- 2 root root 40544 9月 18 2018 gtk-vnc2-0.7.0-3.el7.i686.rpm -rw-rw-r-- 2 root root 41264 9月 18 2018 gtk-vnc2-0.7.0-3.el7.x86_64.rpm -rw-rw-r-- 2 root root 96160 9月 18 2018 gvnc-0.7.0-3.el7.i686.rpm -rw-rw-r-- 2 root root 95308 9月 18 2018 gvnc-0.7.0-3.el7.x86_64.rpm -rw-rw-r-- 2 root root 234268 10月 9 2018 libvncserver-0.9.9-11.el7.i686.rpm -rw-rw-r-- 2 root root 238300 10月 9 2018 libvncserver-0.9.9-11.el7.x86_64.rpm -rw-rw-r-- 2 root root 245148 3月 1 2019 tigervnc-1.8.0-13.el7.x86_64.rpm -rw-rw-r-- 2 root root 38512 3月 1 2019 tigervnc-icons-1.8.0-13.el7.noarch.rpm -rw-rw-r-- 2 root root 29044 3月 1 2019 tigervnc-license-1.8.0-13.el7.noarch.rpm -rw-rw-r-- 2 root root 219336 3月 1 2019 tigervnc-server-1.8.0-13.el7.x86_64.rpm -rw-rw-r-- 2 root root 1090840 3月 1 2019 tigervnc-server-minimal-1.8.0-13.el7.x86_64.rpm |
- 使用rpm –ivh tigervnc-server-1.8.0-13.el7.x86_64.rpm方式进行安装。
- 启动VNC服务。
[root@dm8 ~]# vncserver You will require a password to access your desktops. Password: Verify: Would you like to enter a view-only password (y/n)? n A view-only password is not used xauth: file /root/.Xauthority does not exist New ‘dm8:1 (root)’ desktop is dm8:1 Creating default startup script /root/.vnc/xstartup Creating default config /root/.vnc/config Starting applications specified in /root/.vnc/xstartup Log file is /root/.vnc/dm8:1.log |
- 查看VNC服务。
[root@localhost Packages]# vncserver -list TigerVNC server sessions: X DISPLAY # PROCESS ID :1 7210 |
连接测试。使用VNC-Viewer工具连接,连接方式为IP:5901,如下图所示。
5.2.3 安装数据库
主要步骤如下:
- 使用Xshell连接服务器,用root用户登录操作系统,切换到/mnt目录;
- 将DMInstall.bin文件复制到/home目录下;
- 对DMInstall.bin文件执行:chown –R dmdba.dinstall DMInstall.bin
- 使用dmdba用户执行DMInstall.bin文件开始安装。
安装截图如下:
5.3 配置数据库实例
5.3.1 图形化创建实例
数据库安装完成后自动弹出数据库初始化页面,可根据实际情况选择是否初始化,一般情况下,作为服务端需要进行初始化。
数据库安装完成后如不进行初始化,后续希望进行初始化,则需要执行/home/dmdba/dmdbms/tool/目录下的dbca.sh文件进行初始化。
5.3.2 命令行创建实例
在/home/dmdba/dmdbms/bin目录下,存在一个dminit文件,使用dminit可快速创建实例。
如:
./dminit path=/home/dmdba/dmdbms/data db_name=DM02 instance_name=DM02 PORT_NUM=5239 |
创建好实例后,需要手动启动数据库,启动方式是:
cd /home/dmdba/dmdbms/bin ./dmserver /home/dmdba/dmdbms/data/DM02/dm.ini |
如果希望自动启动数据库实例,需要对实例进行注册,使用root用户将实例注册到操作系统,注册方法是:
#切换到/home/dmdba/dmdbms/script/root/目录 cd /home/dmdba/dmdbms/script/root #注册实例 ./dm_service_installer.sh –t dmserver -dm_ini /home/dmdba/dmdbms/data/DM02/dm.ini -p DM02 |
注册完成后,可使用root用户查看注册结果,启动注册实例,查看方法是:
#切换到/home/dmdba/dmdbms/tool/ ./dmservice.sh |
启动注册实例DM02时,如果报错,如下图所示,需要创建一条软连接。
软连接创建方法是:
ln –s ‘/usr/lib/systemd/system/DmServiceDM02.service’ ‘/etc/systemd/system/multi-user.target.wants/DmServiceDM02.service’ |
如下图所示。
创建完成软连接后再次使用root执行dmservice.sh就不会再报错。
5.4 测试数据库的连接
连接方式一:
使用笔记本计算机本地的达梦客户端管理工具连接服务器达梦数据库,如下图所示,
如果不能正常连接,一般情况是服务器端防火墙阻拦,关闭服务器防火墙或者放行防火墙端口即可连接。连接成功后如下图所示。
连接方式二:
使用达梦交互式工具连接数据库:
5.5 数据库启动与停止
以启动与停止DM02为例,主要操作如下:
手动启动
cd /home/dmdba/dmsbms/bin ./dmserver /home/dmdba/dmdbms/data/DM02/dm.ini |
使用服务查看器的方式启动,方式如下:
cd /home//dmdba/dmsbms/tool ./dmservice.sh |
手动停止
systemctl stop DmServiceDM02.service |
使用操作系统命令启动
systemctl start DmServiceDM02.service |
使用操作系统命令停止
systemctl stop DmServiceDM02.service |
状态查看
systemctl status DmServiceDM02.service |
查看数据库的进程与端口
#查看进程 ps –ef | grep dmserver #查看端口 netstat –antl | grep 5236 netstat –antl | grep 5239 |
5.6 数据库卸载
5.6.1 实例卸载
可以使用tool目录下的dm_service_uninstaller.sh 脚本使用root用户来卸载已经注册成操作系统服务的DM服务,卸载方法是:
cd /home/dmdba/dmdbms/tool ./dm_service_uninstaller.sh –n DmServiceDM02.service |
5.6.2 数据库卸载
使用安装目录下的uninstall.sh文件卸载数据库,卸载方式,使用root用户执行:
cd /home/dmdba/dmdbms/ ./uninstall.sh |
6 DM8数据库工具的使用
6.1 数据库管理工具(MANAGER)
在/home/dmdba/dmdbms/tool/目录下,执行manager可显示数据库管理工具,如下图所示。
6.2 控制台工具(CONSOLE)
1. 执行tool目录下的console可以查看实例参数,并修改。
COMPATIBLE_MODE:是否兼容其他数据库模式,0:不兼容,1:兼容SQL92标准,2:兼容Oracle,3:兼容MS SQL Server, 4:兼容MySQL
2. 脱机备份还原。这里的备份还原只能脱机使用,如果数据库正在运行则不能备份或还原。
3. 许可证信息。
6.3 数据库迁移工具(DTS)
在/home/dmdba/dmdbms/tool/目录下,执行dts可显示数据库迁移工具,如下图所示。
6.4 性能监控工具(MONITOR)
在/home/dmdba/dmdbms/tool/目录下,执行monitor可显示数据库性能监控工具,如下图所示。
7 表空间管理
表空间是由一个或多个数据文件构成的,表空间是数据库容器,存放 数据库中的数据对象(表、索引等)
达梦默认的系统表空间:
System:数据字典和全局的系统数据
Roll:存入了数据库运行过程中产生的回滚记录
Temp:临时表空间
Main:存放对象数据的表空间,创建对象的时候,不指定表空间,就是存放在该表空间中。 Hmain:huge 表空间。
7.1 查询表空间信息
#查询表空间信息 SELECT TABLESPACE_NAME, STATUS FROM USER_TABLESPACES; |
#查询表空间详细信息 SELECT FILE_NAME, FILE_ID, TABLESPACE_NAME, BYTES/1024/1024 FROM DBA_DATA_FILES WHERE TABLESPACE_NAME='ROLL'; |
7.2 表空间创建
表空间创建的语法是:
CREATE TABLESPACE "表空间名称" DATAFILE '表空间路径/表空间名称_01.DBF' SIZE 表空间默认创建大小 AUTOEXTEND ON NEXT 递增值 MAXSIZE 最大表空间值 CACHE=NORMAL; |
如:
CREATE TABLESPACE "TEST" DATAFILE '/home/dmdba/dmdbms/data/DM02/TEST_01.DBF' SIZE 32 AUTOEXTEND ON NEXT 1 MAXSIZE 10240, '/home/dmdba/dmdbms/data/DM02/TEST_02.DBF' SIZE 32 AUTOEXTEND ON NEXT 1 MAXSIZE 10240 CACHE=NORMAL; |
7.3 表空间状态
1、联机状态 status =0;
2、脱机状态 status=1;表空间的数据不能访问
注意:system, roll, temp 不能 offline.
修改表空间在线、离线命令:
Alter tablespace test offline; Alter tablespace test online; |
7.4 表空间维护
表空间不足时,需要对表空间进行维护,主要方法有如下几种:
- 创建大的表空间,将原表空间的数据导出,再导入到新创建的表空间。
- resize数据文件大小
- 增加数据文件
步骤:
查看表空间的数据文件。
SELECT FILE_NAME, FILE_ID, TABLESPACE_NAME, BYTES/1027/1024 FROM DBA_DATA_FILES WHERE TABLESPACE_NAME='TEST'; |
增加数据文件
ALTER TABLESPACE TEST ADD DATAFILE '/home/dmdba/dmdbms/data/DM02/TEST_03.DBF' SIZE 32 AUTOEXTEND ON NEXT 1 MAXSIZE 102400; |
更换存储位置
思路是,先将表空间Offline,修改存储位置后,再将表空间Online,注意:system、roll、temp表空间不能Offline。
ALTER TABLESPACE TEST OFFLINE; |
查看表空间状态
SELECT TABLESPACE_NAME, STATUS FROM USER_TABLESPACES WHERE TABLESPACE_NAME='TEST'; |
TEST表空间Offline后状态为1,表示目前该表空间已不能访问。
修改表空间存储位置,方法是:
ALTER TABLESPACE TEST RENAME DATAFILE '/home/dmdba/dmdbms/data/DM02/TEST_03.DBF' TO '/home/dmdba/dmdbms/data/DAMENG/TEST03.DBF'; |
修改完成后查看表空间位置:
SELECT FILE_NAME, FILE_ID, TABLESPACE_NAME, BYTES/1024/1024 FROM DBA_DATA_FILES WHERE TABLESPACE_NAME='TEST'; |
表空间Online。
ALTER TABLESPACE TEST ONLINE; |
再次确认表空间状态
SELECT TABLESPACE_NAME, STATUS FROM USER_TABLESPACES WHERE TABLESPACE_NAME='TEST'; |
7.5 临时表空间
查看临时表空间配置:
SELECT PARA_NAME, PARA_VALUE FROM V$DM_INI WHERE PARA_NAME LIKE '%TEMP%'; |
扩展临时表空间:
ALTER TABLESPACE TEMP RESIZE DATAFILE '/home/dmdba/dmdbms/data/DM02/TEMP.DBF' TO 256; |
修改后查询TEMP表空间信息:
7.6 ROLL空间
ROLL表空间称为回滚表空间,ROLL表空间不足时,处理方式同TEMP表空间处理。
#查看ROLL表空间信息 SELECT FILE_NAME, FILE_ID, TABLESPACE_NAME, BYTES/1024/1024 FROM DBA_DATA_FILES WHERE TABLESPACE_NAME='ROLL'; #更新ROLL表空间大小 ALTER TABLESPACE TEMP RESIZE DATAFILE '/home/dmdba/dmdbms/data/DM02/ROLL.DBF' TO 256; |
7.7 删除表空间
DROP TABLESPACE TEST; |
8 用户管理
8.1 用户相关概念
在达梦数据库中用户管理主要涉及到三部分,用户、权限和角色。
权限:执行特定类型 sql 或是访问其他模式对象的权利 系统权限:数据库对象的创建,删除,修改等等。 对象权限:对数据对象的数据的操作权限。
数据库预定义用户(系统用户)
Sysdba:系统管理员
Sys:不能用于用户登录,是系统内置用户
Syssso:安全用户
Sysauditor:审计用户
Sysdbo:系统操作员(安全版才有)
企业版三权分立
Sysdba:系统管理员
Syssso:安全用户
Sysauditor:审计用户
安全版四权分立
Sysdba:系统管理员
Syssso:安全用户
Sysauditor:审计用户
Sysdbo:系统操作员
角色:一组权限的集合
达梦8预定义角色
DBA
PUBLIC
RESOURCE
SOI
VTI
8.2 规划用户
名字:字母开头,a_z ,0-9,$#_
位置:对应的表空间
密码:口令策略
0:无策略
1:禁止与用户名相同 47
2:口令长度不小于 9
4:至少包含一个大写字母
8:至少包含一个数字
16:至少包含一个标点符号(英文状态下输入,除空格和“”)
口令可以单独使用,也可组合使用,比如:要求口令策略禁止用户相 同,并且口令长度不小于 9,至少包含一个大写字母 则设置口令策略 为:1+2+4=7)
PWD_POLICY=7
SP_SET_PARA_VALUE()、
SP_SET_PARA_DOUBLE_VALUE()和
SP_SET_PARA_STRING_VALUE()对参数值进行修改。
参数名 | 缺省值 | 属性 | 说明 |
PWD_POLICY | 2 | 动态,系统级 | 设置系统默认口令策略。 0:无策略; 1:禁止与用户名相同; 2:口令长度不小于9; 4:至少包含一个大写字母; 8:至少包含一个数字; 16:至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号”)若为其他数字,则表示配置值的和,如3=1+2,表示同时启用第1项和第2项策略。当COMPATIABLE_MODE=1时,PWD_POLICY的实际值为0。 |
FAILD_LOGIN_ATTEMPS:密码尝试登录次数
PASSWORD_LOCK_TIME:密码失败后锁定时间
PASSWORD_LIFE_TIME:密码过期时间。
#创建用户 CREATE USER TEST IDENTIFIED BY "xinhe108108"; #修改用户TEST密码尝试登录次数为2次,连续2次出错后锁定5分钟,密码过期时间未60天。 ALTER USER "TEST" LIMIT FAILED_LOGIN_ATTEMPS 2, PASSWORD_LIFE_TIME 60, PASSWORD_LOCK_TIME 5; |
8.3 用户案例
案例1:规划用户TEST3,用户的默认表空间为TEST3,密码尝试登录3次,失败锁定1分钟,密码有效期60天。
#创建表空间 CREATE TABLESPACE TEST3 DATAFILE '/home/dmdba/dmdbms/data/DAMENG/test3_01.dbf' SIZE 32; #创建用户TEST3,密码尝试次数3次, # PASSWORD_GRACE_TIME:宽限期。如果密码过期了并且PASSWORD_GRACE_TIME设置为60天,那么在60天在之内如果不变更密码就会被锁定 CREATE USER TEST3 IDENTIFIED BY "xinhe108108" LIMIT FAILED_LOGIN_ATTEMPS 3, PASSWORD_LOCK_TIME 1, PASSWORD_GRACE_TIME 60 DEFAULT TABLESPACE "TEST3"; #赋予TEST3用户PUBLIC、VTI角色 GRANT "PUBLIC", "VTI" TO TEST3; #赋予TEST3用户创建表权限 GRANT CREATE TABLE TO TEST3; |
案例2:规划一个用户test5, 用户每60天变更一次密码,密码的宽限期为3天,密码尝试连接2次失败,账号锁定5分钟,用户能查询dmhr.employee表。
#创建用户 # PASSWORD_GRACE_TIME为宽限期的意思,意思是若设定10天修改一次密码,如果10天后还没修改,密码将会到期,但用户不会锁定,那么再经过3天,如果还没修改,用户将会锁定。 CREATE USER TEST5 IDENTIFIED BY "xinhe108108" LIMIT PASSWORD_LIFE_TIME 60, PASSWORD_GRACE_TIME 3, FAILED_LOGIN_ATTEMPS 3, PASSWORD_LOCK_TIME 5 DEFAULT TABLESPACE "TEST3"; #赋予角色 GRANT "PUBLIC", "VTI" TO TEST5; #赋予权限。该查询需要数据库在安装时已经安装了示例数据库DMHR GRANT SELECT ON "DMHR"."EMPLOYEE" TO TEST5; |
8.4 其他操作
8.4.1 查询用户状态
#查询用户状态 SELECT USERNAME, ACCOUNT_STATUS, LOCK_DATE FROM DBA_USERS; |
8.4.2 用户锁定
#锁定用户 ALTER USER TEST5 ACCOUNT LOCK; #解锁用户 ALTER USER TEST5 ACCOUNT UNLOCK; |
8.4.3 赋予权限
#给TEST5用户创建视图的权限 GRANT CREATE VIEW TO TEST5; #给TEST5用户在DMHR.CITY上查询的权限 GRANT SELECT ON DMHR.CITY TO TEST5; #给TEST5用户在DNHR.EMPLOYEE上查询HARE_DATE、EMPLOYEE_NAME的权限 GRANT SELECT ("HIRE_DATE","EMPLOYEE_NAME") ON DMHR.EMPLOYEE TO TEST5; |
8.4.4 收回权限
#收回TEST5用户在DNHR.EMPLOYEE上查询的权限,CASCADE参数是强制收回的意思 REVOKE SELECT ON "DMHR"."EMPLOYEE" FROM "TEST5" CASCADE; |
8.4.5 删除用户
DROP USER TEST5; #强制删除用户,该操作需要慎重,最好先备份该用户下的数据,再执行删除操作 DROP USER TEST5 CASCADE; |
8.4.6 创建角色
#创建角色LR CREATE ROLE "LR"; #将public、vti角色给LR GRANT "PUBLIC","VTI" TO LR; GRANT SELECT,INSERT ON "DMHR".CITY TO LR; GRANT SELECT ON DMHR.EMPLOYEE TO LR; #创建用户LR01 CREATE USER LR01 IDENTIFIED BY "xinhe108108"; #将LR角色赋予LR01用户 GRANT LR TO LR01; |
8.4.7 查看用户角色
SELECT * FROM SYS.DBA_ROLE_PRIVS; |
SELECT * FROM SYS.DBA_ROLE_PRIVS WHERE GRANTEE='LR01'; |
查看角色的相关权限:
SELECT GRANTEE, PRIVILEGE FROM SYS.DBA_SYS_PRIVS WHERE DBA_SYS_PRIVS.GRANTEE='PUBLIC' |
8.4.8 删除角色
DROP ROLE LR; |
9 模式对象管理
模式定义:模式是一个特定的对象集合,在概念上可将其看作是包含表、视图、索引等若干对象的对象集。
模式对象:表、视图、约束、索引、序列、触发器、存储过程/函数、 包、同义词、类、域。
模式与用户之间的关系: 当系统建立一个用户时,会自动生成一个对应同名的模式,用户还可以建立其他模式(一个用户可以对多个模式)
9.1 表的管理
9.1.1 达梦支持的表
默认的表是索引组织表,支持堆表,临时表,分区表,外部表等。
9.1.2 表的规划
1、命名:字母开头,a-z,0-9,$#_
2、数据类型:int char varchar date clob blob number 等。
3、存储位置:自已规划的表空间,如果没有指定表空间,则会存到main 表空间。
4、约束(5 大约束)非空约束,唯一约束,主键,外键,检查约束。
5、注释:comment。
遵循 3 范式。
案例:规划一张学员信息表
表名:STU
学号:ID char(10)
姓名:sname varchar(20) not null
性别: sex char(1)
年龄:age int
电话:tel varchar(15) not null
家庭住址:address varchar(50)
表空间:STU
约束:主键列----学号,非空----姓名和电话
备注:studentinfo
create table "TEST"."STU"
(
"ID" CHAR(10) not null ,
"SNAME" VARCHAR(20) not null ,
"SEX" CHAR(1),
"AGE" INT,
"TEL" VARCHAR(15) not null ,
"ADDRESS" VARCHAR(50),
primary key("ID")
)
storage(initial 1, next 1, minextents 1, fillfactor 0, on "STU");
comment on table "TEST"."STU" is 'STUDENTINFO';
9.1.3 表的维护
增加列:
Alter table test.stu add column(CJ NUMBER(3,1));
删除列:
Alter table test.stu drop column CJ;
创建约束
CREATE TABLESPACE "TEST" DATAFILE '/home/dmdba/dmdbms/data/DAMENG/TEST.DBF' SIZE 32 AUTOEXTEND ON NEXT 1 MAXSIZE 10240 CACHE=NORMAL; CREATE USER TEST IDENTIFIED BY "xinhe108108" DEFAULT TABLESPACE TEST; GRANT CREATE TABLE, CREATE VIEW, ALTER USER, INSERT TABLE, DROP USER TO TEST; |
- 非空约束
create table test.t3(id int);
alter table test.t3 modify id int not null;
- 唯一约束
create table test.t4(id int,name varchar(20) unique);
insert into test.t4 values(1,'sssss');
insert into test.t4 values(2,null);
insert into test.t4 values(3,'');
insert into test.t4 values(4,null);
insert into test.t4 values(5,'');
insert into test.t4 values(6,null);
insert into test.t4 values(7,null);
insert into test.t4 values(8,null);
insert into test.t4 values(9,null);
insert into test.t4 values(10,null);
commit;
唯一约束,遇到 null 会忽略,可以录入多个 null 值 ,但‘’,只能录入一下。
- 主键约束 一张表只能有一个主键约束
create table test.t5(id int primary key,name varchar(20));
create table test.t6(id int,name varchar(20));
alter table test.t6 add constraint t6_pri primary key(id);
- 外键约束 一个表的外键,一定是另一张表的主键,用来保证数据的一致性。
create table test.t7(sid int primary key ,pid int);
create table test.t8(id int primary key, sid int foreign key references test.t7(sid));
- 检查约束
create table test.t10(id int check(id>=5));
insert into test.t10 values(3);
insert into test.t10 values(6);
Commit;
- 对列加备注
Comment on column test.t8.sid is ‘编号’
- 查看约束和注释
select constraint_name,constraint_type, table_name from dba_constraints where table_name='T8';
9.2 视图
从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据。
从数据库系统内部来看,一个视图是由 SELECT 语句组成的查询 定义的虚拟表。
视图的分类:简单视图、复杂视图、物化视图。
1、简单视图:对单表做查询
语法:
Create or replace view() as select () from () where();
如:create view test.emp as select employee_id,employee_name,phone_num from dmhr.employee;
2、复杂视图,关联两张表以上的或是包含集函数的sql.
create view test.v5 as
select d.department_name, a.av1 from
(select department_id,avg(salary) as av1 from dmhr.employee e
group by department_id having avg(salary)>10000) A
JOIN dmhr.department d on a. department_id=d.department_id;
3、物化视图 简单视图和复杂视图是不占存储空间的,是虚拟表。物化视图是占存储空间的。 相关数据字典
DBA_VIEWS;
删除视图 Drop view test.v5;
9.3 索引
索引是:一种数据库对象,通过指针加速查询速度,通过快速定位数 据的方法,减少磁盘 I/O,索引与表相互独立,服务器自动使用和维护索引。索引占空间。
达梦支持的索引:二级索引,位图过索引,唯一索引,复合索引,函数索引,分区索引等。
什么情况下适合建索引
1、经常查询的列
2、连接条件列
3、谓词经常出现的列(where)
4、查询是返回值的一小部分数据。
不适合建索引的情况。
1、列上有大量的 null.
2、列上的数据有限的(性别)
创建索引:
1、规划索引表空间,表的数据是无序的,索引的数据是有序的。
创建索引表空间:
create tablespace INDEX1 datafile '/dm8/data/DAMENG/index_01.dbf' size 32;
创建索引:
create table test.emp as select * from dmhr.employee;
Create index ind_emp on test.emp(employee_id) tablespace index1;
2、 相关字典
DBA_INDEXES
维护索引:
ALTER INDEX TEST.IND_EMP REBUILD;
ALTER INDEX TEST.IND_EMP REBUILD ONLINE;
注意:创建索引,删除索引,重建索引,收集统计信息的,不要在业务高 峰去做,在业务低谷的时候去操作。
删除索引:
DROP INDEX TEST.IND_EMP;
10 数据库备份与还原
数据库备份就是制作数据库的“副本” 防止数据库丢失数据 在数据丢失后重建数据库。
完全备份:是指一个备份包含指定数据库或表空间的所有数据
增量备份:是指在一次全备份或上一次增量备份后,每次的备份只需备份与前一次相比增加或者修改的部分。
备份的方式:物理备份和逻辑备份
备份的介质:磁盘,磁带,光盘
集群:数据守护,dsc(rac) 也支持第三方的备份软件:爱数,鼎甲
10.1 数据库备份
10.1.1 冷备份
冷备份:dmap 服务是打开的,数据库实例是关闭的。
冷备份的方式有:
1)使用控制台工具($DM_HOME/dmdbms/tool/console)进行冷备份;
2)使用dmrman工具进行冷备份。
在$DM_HOME/dmdbms/tool目录下有一个dmrman工具,在数据库实例停止后可以对数据库进行备份,如下图所示。
10.1.2 热备份
热备 DMAP 服务是打开的,数据库实例是打开的,数据库是归档模式。
打开归档方式:
SQL> alter database mount;
SQL> alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=0';
SQL> alter database archivelog;
SQL> alter database open;
SQL> select name, status$,arch_mode from v$database;
行号 NAME STATUS$ ARCH_MODE
---------- ------ ----------- ---------------- ------ ----------- ---------
1 DAMENG 4 Y
开启归档后就可以对数据库做热备。
也可以使用“管理服务器”的方式打开归档,方法是,在新建的连接上点击右键,选择“管理服务器”,但必须使用DM8客户端才可以配置。
使用管理工具做热备份(全备份、增量备份)
注:如在备份时,报“归档日志不连续”错误,需要重启数据库,再进行备份。
使用DISQL进行热备(全备份、增量备份)
备份语句:
backup database full backupset ‘备份路径’; backup database increment backupset ‘备份路径’; |
如下图所示:
10.2 数据库还原
10.2.1 表空间还原
表空间只能脱机还原,使用 dmrman
1、模拟表空间损坏
[dmdba@localhost DAMENG]$ mv TEST_01.DBF TEST_01.DBF.BAK
重启实例,实例处于 mount 状态。关闭实例服务。
校验备份集
还原表空间:
restore database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' tablespace test from backupset '/home/dmdba/dmdbms/bakcup'; |
恢复表空间:
recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' tablespace test; |
备份管理相关过程与函数:
序号 | 函数名 | 含义 |
1 | SF_BAKSET_BACKUP_DIR_ADD | 添加备份目录 |
2 | SF_BAKSET_BACKUP_DIR_REMOVE | 指定删除内存中的备份目录 |
3 | SF_BAKSET_BACKUP_DIR_REMOVE_ALL | 删除内存中全部的备份目录 |
4 | SF_BAKSET_CHECK | 对备份集进行校验 |
5 | SF_BAKSET_REMOVE | 删除指定设备类型和指定备份集目录的备份集 |
6 | SF_BAKSET_REMOVE_BATCH | 批量删除满足指定条件的所有备份集 |
7 | SP_DB_BAKSET_REMOVE_BATCH | 批量删除指定时间之前的数据库备份集 |
8 | SP_TS_BAKSET_REMOVE_BATCH | 批量删除指定表空间及指定时间之前的表空间备份集 |
9 | SP_TAB_BAKSET_REMOVE_BATCH | 批量删除指定对象及指定时间之前的表备份集 |
10 | SP_ARCH_BAKSET_REMOVE_BATCH | 批量删除指定条件的归档的备份集 |
11 | V$BAKUPSET | 显示备份集基本信息 |
12 | V$BACKUPSE_DBINFO | 显示备份集的数据库相关信息 |
10.2.2 逻辑备份还原
导入导出(dexp\dimp)
分四级别:分别独立,互斥,不能同时存在
- 数据库级别
- 用户
- 模式
- 表级
1、逻辑导出
./dexp sysdba/xinhe108108@localhost:5236 file=20210712.dmp log=20210712.log directory=/home/dmdba/dmdbms/data/ full=y; |
2、逻辑导入
./dimp sysdba/xinhe108108@localhost:5236 file=/home/dmdba/dmdmbs/data/20210712.dmp log=/home/dmdba/dmdbms/data/20210712.log |
FULL | 导出整个数据库 | 可选,四者中选其一,默认为SCHEMAS |
OWNER | 用户名列表,导出一个或多个用户所拥有的所有对象 | |
SCHEMAS | 模式列表,导出一个或多个模式下的所有对象 | |
TEBLES | 表名列表,导出一个或多个指定的表或分区 |