达梦数据库(DM8)基本使用及DCA考试心得
达梦数据库是一款完全自主原创的国产数据库。近些来的不断发展,达梦数据库在中国不断壮大,与政府及事业单位应用广泛。有幸在上年暑期参加了达梦举办的达梦精英挑战赛,认识接触到了达梦数据库,并有幸参加了DCA考试。因此发此博文记录。
DM8的安装
本次DM的安装均在中标麒麟7的操作系统下进行,其他Linux系统无独有偶,windows系统请自行尝试:
- 安装之前: 请检查系统配置,使用ulimit -a命令查看参数(主要注意参数如下)
(获取你可能发现你的open files不够。咋办?)
设置文件打开数 open files(临时方法,仅针对会话生效 ulimit -n):
[root@localhost opt]# ulimit -n 102400
[root@localhost opt]# ulimit -n
102400
设置文件打开数(修改配置文件,永久生效):
[root@localhost opt]# vim /etc/security/limits.conf
增加
dmdba soft nofile 10240
dmdba hard nofile 65536
- 安装用户组和安装用户(数据库推荐由一个专门dba用户统一管理,而不是root)
[root@localhost opt]# groupadd dinstall
[root@localhost opt]# useradd -g dinstall dmdba
- 创建安装目录及安装操作(本次使用图形化安装(方便!!),命令行安装可看最后附件。);
[root@localhost opt]# mkdir /dm8 #用于安装数据库的目录
[root@localhost /]# chown dmdba:dinstall /dm8 #切换属主属组
[root@localhost /]# chmod 755 /dm8 #更改目录权限
挂载 iso 镜像文件:
[root@localhost /]#mkdir /mnt/dm
[root@localhost /]# mount /opt/dm8_20210203_x86_rh6_64_ent_8.1.1.172.iso /mnt/dm
mount: /dev/loop0 写保护,将以只读方式挂载
[root@localhost /]# su - dmdba
[dmdba@localhost ~]$ cd /mnt/dm
[dmdba@localhost dm]$ ./DMInstall.bin #执行可视化安装
!!!注:若不能成功唤起可视化图形界面可用以下方法解决:
出现上述错误是图形化界面参数未设置好。使用下列方法设置图形化界面:
图形化界面设置(root 执行 xhost +,并查看 DISPLAY 变量):
[root@localhost 桌面]# xhost +
access control disabled, clients can connect from any host
[root@localhost 桌面]# echo $DISPLAY
:0
[root@localhost 桌面]#
设置 dmdba 用户的 DISPLAY(仅对当前会话生效)
[dmdba@localhost dm]$ echo $DISPLAY
[dmdba@localhost dm]$ export DISPLAY=:0
[dmdba@localhost dm]$ ./DMInstall.bin
切记用root执行!root执行!root执行!!!
4. 安装完成后主要使用的工具汇总:(主要在/dm8/tool的路径下);
- 创建数据库及数据库示例管理(./dbca.sh,命令行操作可看最后附件):
这步操作可按各自所需进行修改,若不修改可直接下一步直至完成。注意!!最后的命令也需要root执行!!!!! - DM客户端的使用(./manager 达梦的可视化效果还是很好的,可以实现全部操作的可视化了)
其中新建查询sql与oracle相似。 - 表空间管理
使用创建表空间示例:
#创建表空间,默认自动扩展了
Create tablespace tbsprod DATAFILE '/dm8/data/DMTEST3/tbs/tbsprod01.dbf' size 32;
#修改表空间的名字
alter tablespace TBSPROD rename to TBSPRODTEST;
#更改表空间文件大小
Alter tablespace "TBSPROD" resize datafile '/dm8/data/DMTEST3/tbs/tbsprod02.dbf' to 64;
alter TABLESPACE TBSPROD ADD DATAFILE '/dm8/data/DMTEST3/tbs/tbsprod02.dbf'size 32;
#添加数据文件
alter tablespace "TBSPROD" offline;
alter tablespace "TBSPROD" rename datafile '/dm8/data/DMTEST3/tbs/tbsprod01.dbf' to '/dm8/data/DMTEST3/tbsprod01.dbf';
alter tablespace "TBSPROD" online;
#修改表空间数据文件的位置
alter TABLESPACE TBSPROD DATAFILE '/dm8/data/DMTEST3/tbs/tbsprod02.dbf' AUTOEXTEND off; #修改为不自动扩展
alter TABLESPACE TBSPROD DATAFILE '/dm8/data/DMTEST3/tbs/tbsprod02.dbf' AUTOEXTEND on NEXT 2 maxsize 1024; #开启自动扩展,指定范围
Select * from DBA_DATA_FILES; #查看表空间的数据文件
select * from v$tablespace; #查看存在的表空间
Select * from v$huge_tablespace; #查看大表空间
以上命令不会写也没事,可以通过manager管理工具进行可视化操作,操作简单命令,因此不展示了!
- 用户管理:
示例:
#创建用户
create user "USERTEST" identified by "123456" default tablespace "TBSPROD";
Alter user USERTEST identified by .... 修改用户密码
Alter user USERTEST ACCOUNT lock(unlock); 用户锁定解锁
SELECT GRANTEE,PRIVILEGE,TABLE_NAME FROM DBA_TAB_PRIVS WHERE GRANTEE='aaa';查看用户权限信息
REVOKE CREATE TABLE FROM TEST; revoke VTI FROM aaa; 撤销权限
DROP USER USERTEST; 删除用户
#创建角色
CREATE ROLE ROLE1;
GRANT CREATE TABLE TO ROLE1;
GRANT UPDATE ON SYSDBA.EMP TO ROLE1; 给角色分配权限
如图:界面化操作简单明了,即便不会具体的sql,在界面依旧可以完成,同在DDL可以查看已操作的命令行sql语句!!
-
模式对象管理:
DM 中一个用户可以拥有多个模式,一个模式只能归属于一个用户。
Oracle 用户和模式是一对一,DM 可以一对多。
创建用户,默认会创建一个同名的模式,也可以单独创建模式。
默认情况下,用户查询同名模式下的对象。在模式下,可创建表,修改表,增加外键,索引 , 视图。。。。(语句与oracle基本类似)
创建表:
create table t_usertest(
userid int,
username varchar(20) )tablespace tbs;
修改字段:
alter table t_usertest modify username not null;
添加字段:
alter table t_usertest add phonenumber varchar(30) unique ;
alter table t_usertest add sex bit;
alter table t_usertest add email varchar(20);
删除字段:
alter table t_usertest drop column email;
外键(引用的是另一张表的主键):
create table t_emp
(emp_id int constraint pk_emp_empid primary key,
emp_name varchar(20),
dept_id int );
如图:图形化界面操作简单!!!!!!!!!!!!!!
10.备份与还原:
BAK_PATH 为数据库默认备份目录,生产环境建议修改此目录,避免磁盘损坏,备份文件
和源库数据文件同时损坏的情况。
(./dmservice.sh root 打开!!!)
保证DmAPService开启,需备份还原的数据库服务关闭!
(./console tool目录下 dmdba用户打开)
注意:表空间的还原和恢复(不需要更新数据库魔数)
数据库级的还原和恢复如果没有更新数据库魔数,则会启动失败。(需更新数据库魔数)
DCA考试
dca考试时长2小时,通过VLC远程连接服务器,按照考试试卷.txt进行操作即可,考试内容基本包含上述内容,且占大部分。可能还包含作业管理等等。整体难度适中,但考试一定要小心!!我就是因为没看清端口号,一直登不进数据库,还以为哪步操作错误了,看了半天日志。浪费了好多时间,太可惜了!!!总之:小心仔细,一定顺利通过考试的!!!!!
命令行操作:
(静默安装):./DMInstall.bin -i
dminit help 初始化创建数据库
创建数据库 dmdba用户
dminit path=/dm8/data db_name=DMTEST instance_name=DMTESTSERVER port_num=5237
创建服务 root用户 /dm8/script/root 默认未启动
./dm_service_installer.sh -t dmserver -p DMTESTSERVER -dm_ini /dm8/data/DMTEST/dm.ini
删除服务 root用户/dm8/script/root
./dm_service_uninstaller.sh -n DmServiceDMTESTSERVER
启动关闭服务
DmServiceDMTESTSERVER stop(start) dmdba用户/dm8/bin/
#
systemctl stop DmServiceDMTESTSERVER3.service root用户
dmserver dm.ini dmdba到要启动的数据库的目录下/dm8/data/DAMENG 临时的关闭了就没了
图形化进入dmservice.sh root用户进入修改
冷备/全量备份:服务需关闭
1. systemctl stop DmServiceDMSERVER.service 用root先关闭服务
2. ./dmrman dmdba用户/dm8/bin
3. backup database '/dm8/data/DAMENG/dm.ini' full; 备份
4. systemctl stop DmServiceDMTESTSERVER3.service root用户关闭DMTESTSERVER3
5. restore database '/dm8/data/DMTEST3/dm.ini' from backupset '/dm8/data/DAMENG/bak/DB_DAMENG_FULL_20200823_171641_696277'; 把DAMENG的数据恢复到DMTEST3中
6. recover database '/dm8/data/DMTEST3/dm.ini' update db_magic 还原
图形化进入console工具
backup database '/dm8/data/DAMENG/dm.ini' full;
restore database '/dm8/data/DMTEST/dm.ini' from backupset '/dm8/data/DAMENG/bak/DB_DAMENG_FULL_20200821_160405_556837';
recover database '/dm8/data/DMTEST/dm.ini' update db_magic;
创建表空间
Create tablespace tbsprod DATAFILE '/dm8/data/DMTEST3/tbs/tbsprod01.dbf' size 32; 默认自动扩展了
alter tablespace TBSPROD rename to TBSPRODTEST;
修改表空间的名字
Alter tablespace "TBSPROD" resize datafile '/dm8/data/DMTEST3/tbs/tbsprod02.dbf' to 64;
更改表空间文件大小
alter TABLESPACE TBSPROD ADD DATAFILE '/dm8/data/DMTEST3/tbs/tbsprod02.dbf'size 32; 添加数据文件
alter tablespace "TBSPROD" offline;
alter tablespace "TBSPROD" rename datafile '/dm8/data/DMTEST3/tbs/tbsprod01.dbf' to '/dm8/data/DMTEST3/tbsprod01.dbf';
alter tablespace "TBSPROD" online;
修改表空间数据文件的位置
alter TABLESPACE TBSPROD DATAFILE '/dm8/data/DMTEST3/tbs/tbsprod02.dbf' AUTOEXTEND off; 修改为不自动扩展
alter TABLESPACE TBSPROD DATAFILE '/dm8/data/DMTEST3/tbs/tbsprod02.dbf' AUTOEXTEND on NEXT 2 maxsize 1024; 开启自动扩展,指定范围
Select * from DBA_DATA_FILES; 查看表空间的数据文件
select * from v$tablespace; 查看存在的表空间
Select * from v$huge_tablespace; 查看大表空间
创建用户
create user "USERTEST" identified by "123456" default tablespace "TBSPROD";
Alter user USERTEST identified by .... 修改用户密码
Alter user USERTEST ACCOUNT lock(unlock); 用户锁定解锁
SELECT GRANTEE,PRIVILEGE,TABLE_NAME FROM DBA_TAB_PRIVS WHERE GRANTEE='aaa';查看用户权限信息
REVOKE CREATE TABLE FROM TEST; revoke VTI FROM aaa; 撤销权限
DROP USER USERTEST; 删除用户
创建角色
CREATE ROLE ROLE1;
GRANT CREATE TABLE TO ROLE1;
GRANT UPDATE ON SYSDBA.EMP TO ROLE1; 给角色分配权限
移动日志文件位置,一定要是mount状态
Alter database mount;
Alter database RENAME LOGFILE 'DMTEST301.log' to './redo/DMTEST301.log';
添加日志文件,在open状态
alter database add logfile '/dm8/data/DMTEST3/DATEST305.log' size 32;
添加日志文件
alter database resize logfile '/dm8/data/DMTEST3/redo/DMTEST301.log' to 500;
修改日志文件的大小
select * from SYS."V$RLOGFILE"; 查看重做日志信息
select * from SYS."V$RLOG"; 查看当前活跃的日志文件
数据迁移./dts disql sysdba/SYSDBA@192.168.88.135:5236
dmdba用户/dm8/bin ./disql disql start /dm8/data/backup/dmhr.sql 导入数据文件
逻辑导出
dexp help dmdba用户/dm8/bin
./dexp userid=sysdba/tls2008033:5239 directory=/dm8/data/bak file=dexpDAMENG_fulltest.dmp log=dexpDAMENG_fulltest.log full=y
必须是sysdba用户进行全量导出
逻辑导入 dmdba用户/dm8/bin
./dimp userid=sysdba/SYSDBA:5242 directory=/dm8/data/bak file=dexpDAMENG_fulltest.dmp log=dexpDAMENG_fulltestimp.log full=y
disql sysdba/SYSDBA@192.168.88.135:5236
cat /etc/dm_svc.conf 查看网络配置属性
执行DML语句(insert,update,delete,select) 需要commit或rollback;
创建索引
create index idx_id on t_test(id);
物理备份和逻辑备份
逻辑备份还原是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原。例如使用 dexp 和 dimp 进行的备份还原。逻辑备份针对的是数据内容,不关心这些数据物理存储在什么位置
物理备份还原是对 数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份还原。例如使用 RMAN 工具进行的备份还原。