达梦数据库体验
文章目录达梦数据库体验前言1、DM8安装中注意事项2、DM8使用2.1数据库工具2.2用户管理2.3角色管理2.4备份还原3、总结3.1设置文件最大打开数3.2不要用root账户3.3初始化图形化界面失败3.4锁超时3.5sql命令行填充历史命令3.6sql脚本达梦数据库体验前言 最近由于工作需要接触了一款国产化数据
文章目录
达梦数据库初体验
前言
最近由于工作需要接触了一款国产化数据–达梦数据库。可以直接在达梦官网获取开发版,可以有至发布之日起一年的试用时间,这里附上官网链接达梦官网下载,注意自己使用的环境。基本体验可以直接使用windows版,由于我是用的是中标麒麟的系统,所以我选用了DM8开发版(Linux-rh7-64位)。不同版本之间有些差别,可以直接在官网查询,这里只按照开发版来使用。
1、DM8安装中注意事项
关于达梦数据库安装的方法网上已经有了很多,这里只总结一些需要注意到的地方。
-
安装gcc依赖
[root@localhost ~]# yum -y install gcc gcc-c++
-
设置文件打开数量
[root@localhost ~]# ulimit -n 65536
-
防火墙,达梦数据库实例是端口形式,所以我们要开放对应端口,这里我直接关闭防火墙
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
-
init命令行方法安装的数据库是没有示例库的,实例库需要通过图形化界面安装
2、DM8使用
2.1数据库工具
-
disql
sql命令行
两个路径下都有disql
bin中,不需要连接
[dmdba@localhost bin]$ ./disql sysdba/SYSDBA 服务器[LOCALHOST:5236]:处于普通打开状态 登录使用时间: 2.895(毫秒) disql V8 SQL> exit;
tool中:需要连接,相当于是oracel的sqlplus/nolog
[dmdba@localhost tool]$ ./disql sysdba/SYSDBA disql V8 SQL> select status$ from v$instance; 未连接 SQL> conn sysdba/SYSDBA:5236 服务器[LOCALHOST:5236]:处于普通打开状态 登录使用时间: 2.579(毫秒)
-
manager
管理工具
[dmdba@localhost tool]$ ./manager
-
console工具
查看和修改参数
做冷备和恢复
[dmdba@localhost tool]$ ./console
-
DTS迁移工具
[dmdba@localhost tool]$ ./dts
-
性能监视工具
[dmdba@localhost tool]$ ./monitor
2.2用户管理
-
查看用户
-
不同版本达梦数据库有不同的用户
-
企业版中有
SYS:不能登录,存放的数据字典和视图
SYSDBA:管理员
SYSAUDITOR:审计员
SYSSSO:安全员
-
安全版:
在企业版基础上,增加SYSDBAO(数据库对象操作员)
-
-
密码策略:
PWD_POLICY,默认2,设置系统默认口令策略。
0: 无策略;
1: 禁止与用户名相同;
2: 口令长度不小于9;
4: 至少包含一个大写字母(A-Z);
8 :至少包含一个数字(0-9);
16:至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
若为其他数字,则表示配置值的和,如3=1+2,表示同时启用第1项和第2项策略。
当COMPATIBLE_MODE=1时,PWD_POLICY的实际值均为0
3=2+1 6=2+4
将密码策略设置为 禁止与用户名相同并且口令长度不小于9
即改即生效
SQL> sp_set_para_value(1,'PWD_POLICY',3); DMSQL 过程已成功完成 已用时间: 5.084(毫秒). 执行号:322. SQL> SELECT para_name,para_value from v$dm_ini where para_name = 'PWD_POLICY'; 行号 PARA_NAME PARA_VALUE ---------- ---------- ---------- 1 PWD_POLICY 3 已用时间: 2.287(毫秒). 执行号:324.
-
创建用户
创建TBS用户,用户属于TBS表空间,TBS用户有建表和建视图的权限
-
创建TBS表空间
create tablespace "TBS" datafile '/dm8/data/DAMENG/TBS01.DBF' size 32 CACHE = NORMAL;
-
创建用户
create user "TBS" identified by "dameng123" limit failed_login_attemps 3, password_lock_time 1, password_grace_time 10 default tablespace "TBS"; grant "PUBLIC","VTI" to "TBS"; grant CREATE TABLE,CREATE VIEW to "TBS";
-
修改用户
TBS用户可以查询dmhr.employee的字段employee_name,salary
列级控制
grant SELECT("SALARY") on "DMHR"."EMPLOYEE" to "TBS"; grant SELECT("EMPLOYEE_NAME") on "DMHR"."EMPLOYEE" to "TBS";
-
不能查看dmhr.employee的字段salary
赋予权限可以按列,回收权限只能回收到表级
revoke SELECT ON dmhr.employee FROM TBS;
-
修改用户默认表空间
alter user "TBS" default tablespace "TEST";
-
锁定用户
alter user TBS account lock;
-
解锁用户
alter user TBS account unlock;
-
删除用户
不能删除有表的,可以强制删除
drop user test;
2.3角色管理
角色是一组权限的集合,方便权限管理。角色是可以被授予给角色和用户的。
-
创建角色
create role "R1"; grant "PUBLIC","RESOURCE" to "R1"; grant CREATE TABLE,CREATE TRIGGER,CREATE INDEX to "R1"; grant SELECT("EMPLOYEE_NAME"),UPDATE("EMPLOYEE_NAME") on "DMHR"."EMPLOYEE" to "R1";
-
授予角色给用户
grant "R1" to "TBS";
-
撤回角色
revoke "R1" from "TBS";
-
启用、禁用角色
./manager
工具右键用户 -
删除角色
drop role R1;
2.4备份还原
-
物理备份
冷备:不需要开启归档,需要开启DmAP服务,需要关闭数据库实例,针对整库做备份
-
console(dmdba下使用,不要使用root)
关闭数据库实例
[dmdba@localhost bin]$ ./DmServiceDMSERVER stop Stopping DmServiceDMSERVER: [ OK ]
检查DmAP服务
[dmdba@localhost bin]$ ./DmAPService status DmAPService (pid 8851) is running.
新建备份
-
用dmrman工具备份,只支持冷备
[dmdba@localhost bin]$ ./dmrman dmrman V8 RMAN> backup database '/dm8/data/DAMENG/dm.ini' backupset '/dm8/backup';
-
-
物理还原
-
检查备份集是否有效
[dmdba@localhost bin]$ ./dmrman dmrman V8 RMAN> check backupset '/dm8/backup'; check backupset '/dm8/backup'; CMD END.CODE:[0] check backupset successfully. time used: 32.745(ms)
-
console工具还原
-
还原后需更新魔数,不然报错
-
更新魔数
-
正常启动,完成全库还原
-
-
导入、导出
dexp/dimp命令,可以导入导出库、用户、模式、表四个级别
查看帮助
[dmdba@localhost bin]$ ./dexp help dexp V8 格式: ./dexp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN) 例程: ./dexp SYSDBA/SYSDBA GRANTS=Y TABLES=(SYSDBA.TAB1,SYSDBA.TAB2,SYSDBA.TAB3) USERID 必须是命令行中的第一个参数 关键字 说明(默认值) -------------------------------------------------------------------------------- USERID 用户名/口令 格式:USER/PWD*MPP_TYPE@SERVER:PORT#SSLPATH@SSLPWD FILE 导出文件 (dexp.dmp) [dmdba@localhost bin]$ ./dimp help dimp V8 格式: ./dimp KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN) 例程: ./dimp SYSDBA/SYSDBA IGNORE=Y ROWS=Y FULL=Y USERID 必须是命令行中的第一个参数 关键字 说明(默认值) -------------------------------------------------------------------------------- USERID 用户名/口令 格式:USER/PWD*MPP_TYPE@SERVER:PORT#SSLPATH@SSLPWD
全库导出
[dmdba@localhost bin]$ ./dexp sysdba/SYSDBA file=full.dmp log=full.log directory=/dm8/backup full=y
用户导出
[dmdba@localhost bin]$ ./dexp sysdba/SYSDBA file=dmhr.dmp log=dmhr.log directory=/dm8/backup owner=SYSDBA
表导出
[dmdba@localhost bin]$ ./dexp sysdba/SYSDBA file=emp.dmp log=emp.log directory=/dm8/backup tables=emp
库导入
[dmdba@localhost bin]$ ./dimp sysdba/SYSDBA file=full.dmp log=imp_full.log directory=/dm8/backup full=y
注意:执行用户导入时,如果用户不存在,要先创建用户。否则报错,无法导入。
3、总结
3.1设置文件最大打开数
安装数据库时提示文件大小问题
linux系统对于文件打开数量会有限制,查看方法
[root@localhost ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 14989
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 14989
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
其中open files
的默认值是1024,这在我们使用中很容易达到,造成性能瓶颈,所以我们直接设置为最大值,也就是65536。此方法为临时生效,针对进程、系统级别的调整这里不进一步介绍。可以参考Linux设置系统打开文件数量
[root@localhost ~]# ulimit -n 65536
[root@localhost ~]# ulimit -n
65536
3.2不要用root账户
在linux下,不同账户之间的权限应该严格隔离。为了减少对操作系统的影响,用户不应该以 root 系统用户来安装和运行 DM。同样也不建议用户使用 root 系 统用户初始化和运行 DM 数据库系统和客户端工具。
3.3初始化图形化界面失败
如果使用root用户登录,然后执行了su - dmdba
切换用户之后,安装数据库就会出现无法调用安装图形化界面的问题。虽然可以直接使用-i
来命令行安装,但是非常不方便。同理,也会出现在切换用户后任意一图形界面上。
比如。xclock时钟组件,在root下可以显示,但是dmdba不能
如果提示xclock指令未找到,可能是没有安装xorg-x11-apps
[root@localhost ~]# yum install xorg-x11-apps*
这是因为你从root登录到dmdba上运行dmdba的程序时,对于应用程序来说,root是客户端。对于图形化界面来说,它就会在root客户端上显示。但是我们本意是要在dmdba上显示,所以我们需要使用root作为服务端,dmdba作为客户端输出图形化界面。因此登录到dmdba之前,需要在root中运行xhost+来设置使其他用户也能访问root的服务端。
在Linux/Unix类操作系统上, DISPLAY用来设置将图形显示到何处。
xhost补充:
命令用途: 是用来控制X server访问权限的
xhost + 是使所有用户都能访问Xserver.
xhost + ip 使ip上的用户能够访问Xserver.
在dmdba下显示图形化界面操作如下
-
查看root用户下display环境变量
[root@localhost ~]# echo $DISPLAY :0
-
设置xhost+
[root@localhost ~]# xhost + access control disabled, clients can connect from any host
-
切换dmdba,查看dmdba的display环境变量
[dmdba@localhost ~]$ export DISPLAY=:0
-
设置dmdba的display参数
[dmdba@localhost ~]$ export DISPLAY=:0 [dmdba@localhost ~]$ echo $DISPLAY :0
-
执行xclock打开图形化界面
3.4锁超时
在使用达梦数据的过程中,出现未知原因的事务锁。
可以直接在./disql
中执行commit
提交事务,结束会话。
上面只是一种临时解决手段,我们可以通过另一种方法来解决这个问题
-
达梦数据库提供了视图查询,其中有锁、会话信息视图
---查询锁信息 select * from v$lock ---查询对象信息 select * from sysobjects ---查询会话信息 select * from v$sessions
-
通过连接查询就可以查出是那张表的哪个锁由那个会话操作造成的
select l.*,sys.NAME,s.SESS_ID from v$lock l left join sysobjects sys on sys.ID=l.TABLE_ID left join v$sessions s on l.TRX_ID=s.TRX_ID
-
关闭掉会话就会释放掉锁
SP_CLOSE_SESSION(session_id)
3.5sql命令行填充历史命令
linux下的oracle、sqlplus等sql命令行都不能自动填充历史命令,十分不方便。达梦数据库的./disql
工具也是一样,好在我们可以使用第三方的工具来帮我们完成这件事
-
安装readline依赖
[root@localhost ~]# yum -y install readline*
-
下载解压安装rlwrap
github地址rlwrap下载
[root@localhost opt]# tar -xvf rlwrap-0.43.tar.gz [root@localhost opt]# cd rlwrap-0.43/ [root@localhost rlwrap-0.43]# ./configure [root@localhost rlwrap-0.43]# make && make install
-
使用rlwrap运行
./disql
[root@localhost rlwrap-0.43]# rlwrap /dm8/tool/disql disql V8 SQL> conn SYSDBA/SYSDBA 服务器[LOCALHOST:5236]:处于普通打开状态 登录使用时间: 2.886(毫秒) SQL> conn SYSDBA/SYSDBA
此时使用上下键已经可以填充历史命令了
-
还可以配置环境变量,更加方便使用
[dmdba@localhost ~]$ vim .bash_profile [dmdba@localhost ~]$ source .bash_profile
下次运行
./disql
就会自动使用rlwrap了
3.6sql脚本
DM数据库执行sql脚本命令start,oracle数据库执行sql脚本名用@
SQL> start /tmp/test.sql
更多推荐
所有评论(0)