【DM】达梦DCA培训及考试认证


达梦数据库是一款全自主的国产数据库,近年来在信息创新项目中起着至关重要的作用,作为信息项目从业人员,日常接触达梦数据库也较多,有幸参加了DCA考试,以此博文记录培训及考试心得。

安装前准备

本次演示过程均使用麒麟10操作系统,首先检查系统信息,是否符合安装要求
1、检查系统内存、磁盘空间等信息
在这里插入图片描述
2、查看tmp目录空间大小(要求tmp空闲空间至少为1.2G)
在这里插入图片描述
3、规划安装用户和用户组:
[root@Kylin10 opt]# groupadd dinstall
[root@Kylin10 opt]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
[root@Kylin10 opt]# passwd dmdba
更改用户 dmdba 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
4、规划数据库安装目录
root@Kylin10:/# mkdir /dm8
root@Kylin10:/# chown -R dmdba:dinstall /dm8

安装达梦数据库

使用dmdba用户执行安装程序
dmdba@Kylin10:/mount$ ./DMInstall.bin -i
请选择安装语言(C/c:中文 E/e:英文) [C/c]:
解压安装程序…
欢迎使用达梦数据库安装程序

是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n

是否设置时区? (Y/y:是 N/n:否) [Y/y]:
在这里插入图片描述
等待数据库安装完成提示以下信息:

请以root系统用户执行命令:
/dm8/script/root/root_installer.sh

安装结束
在这里插入图片描述
提示启动数据库服务成功。
图形化界面设置
root@Kylin10:~/桌面$ echo $DISPLAY
:0

root@Kylin10:~/桌面$ xhost +
access control disabled, clients can connect from any host
root@Kylin10:~$ su - dmdba
dmdba@Kylin10:~$

创建数据库实例

dmdba@Kylin10:~$ export DISPLAY=:0
dmdba@Kylin10:~$ /dm8/tool/dbca.sh
在这里插入图片描述
在这里插入图片描述
创建实例完成后,按要求使用root用户执行如下命令
1、mv /dm8/bin/DmServiceDMSERVER.service /usr/lib/systemd/system/DmServiceDMSERVER.service
2、systemctl enable DmServiceDMSERVER.service
3、systemctl start DmServiceDMSERVER.service

在这里插入图片描述

使用DM管理工具

连接数据库:
在这里插入图片描述

可以修改管理工具配置:窗口->选项->查询分析器->编辑器
在这里插入图片描述

SQL

--查询参数类型
select distinct	para_type from v$dm_ini;
--句柄相关的查询
select * FROM SYS."V$SESSIONS" WHERE n_used_stmt>=1 ;
select * FROM SYS."V$SESSIONS" ORDER by "V$SESSIONS".N_USED_STMT DESC;
select * FROM v$parameter WHERE name like 'MAX_SESSION_STATEMENT';

--查询实例状态
select status$ from v$instance;
--内连接 where子句
select a.department_id,b.department_name,count(*) as empnum
 from dmhr.employee a, dmhr.department b
 where a.department_id = b.department_id
 group by a.department_id, b.department_name
 having count (*) >=30
 order by empnum desc;
--内连接 join..on..子句
select a.department_id,b.department_name,count(*) as empnum
 from dmhr.employee a join dmhr.department b
 on a.department_id = b.department_id
 group by a.department_id, b.department_name
 having count (*) >=30
 order by empnum desc;
--左外连接
select a.department_id, b.department_name
, count(a.employee_id) as empnum
 from dmhr.employee a, dmhr.department b 
 where a.department_id = b.department_id(+)
 group by a.department_id, b.department_name
 having count(*) >=30
 order by empnum desc;
 
select a.department_id, b.department_name
,COUNT(a.employee_id) as empnum
 from dmhr.employee a left join dmhr.department b
 on a.department_id = b.department_id 
 GROUP BY a.department_id, b.department_name
 having count(*) >=30
 order by empnum desc;
 
--右外关联
insert into dmhr.DEPARTMENT(DEPARTMENT.DEPARTMENT_ID,
DEPARTMENT.DEPARTMENT_NAME)
values(888888,'Test');
commit;
select a.DEPARTMENT_ID, b.DEPARTMENT_id, b.DEPARTMENT_NAME,
count(a.employee_id) as empnum
 from dmhr.employee a, dmhr.DEPARTMENT b
where a.DEPARTMENT_ID(+) = b.DEPARTMENT_ID
 group by a.DEPARTMENT_ID, b.DEPARTMENT_id, b.DEPARTMENT_NAME;

--查询dm.ini配置文件中中参数的类型 
--READ ONLY:只读参数 仅能通过dm.ini文本文件修改该参数(重启数据库生效)
--SYS:动态(系统级)参数。可在运行数据库时修改
--SESSION:动态(会话级)参数。可在运行数据库时修改,且可只针对当前会话生效
--IN FILE:静态参数,可以在数据库运行时修改,重启数据库生效
select DISTINCT para_type from v$dm_ini;
--系统函数用于设置参数
select name FROM SYS."V$IFUN" t WHERE name LIKE 'SP_SET_%PARA%';
--修改静态参数(需重启数据库)
SP_SET_PARA_VALUE(2,'COMPATIBLE_MODE',0);
select PARA_NAME,PARA_VALUE,PARA_TYPE,T.FILE_VALUE from v$dm_ini t where t.para_name like 'COMPATIBLE_MODE';
select name,type,value,sys_value,file_value from v$parameter t where name LIKE 'COMPATIBLE_MODE';
alter system set 'COMPATIBLE_MODE'=2 spfile;
--修改系统及参数
alter system set 'LIST_TABLE'=1 memory;
--修改会话级参数
alter session set 'LIST_TABLE'=0;
select name,type,value,sys_value,file_value from v$parameter t where name LIKE 'LIST_TABLE';
--查找系统函数
select * FROM v$ifun t WHERE name LIKE 'SP_SET_PARA%';
sp_set_para_value(2,'COMPATIBLE_MODE',0);
sp_set_para_value(1,'LIST_TABLE',0);

--DM存储结构:
--数据缓冲区: BUFFER
select name,type,value,sys_value,file_value from v$parameter t where name in ('BUFFER','KEEP','FAST_POOL_PAGES','RECYCLE');
alter SYSTEM SET 'BUFFER'=1500 SPFILE;
--重做日志缓冲区 :对应INI参数RLOG_BUF_SIZE
select name,type,value,sys_value,file_value from v$parameter t where name like 'RLOG_BUF_SIZE';
--SQL缓冲区 :INI参数 CACHE_POOL_SIZE,相关数据字典
select * from v$cacheitem;
select * from v$cachesql;
select * from v$cachepln;
select * from v$cachers;
--字典缓冲区:DICT_BUF_SIZE
select * FROM v$dynamic_tables t where name like '%DICT%';
select * from v$dict_cache_item;
select * from v$dict_cache;
--共享内存池:MEMORY_EXTENT_SIZE
select name,type,value,sys_value,file_value from v$parameter t where name like 'MEM%';
select * from V$mem_pool;
--数据库层面进程和线程查询
select * from v$process;
select * from v$threads;
--不能以结束线程的方式结束会话,可能导致dm数据库挂掉


--第七部分:表空间管理
--临时表空间管理
select * FROM v$parameter where name like 'TEMP%';
--修改临时表空间初始大小:
alter system set 'TEMP_SIZE'=100 spfile;
--收缩TEMP表空间的方法
--1.重启数据库
--2.在线收缩临时表空间:SP_TRUNC_TS_FILE
select name,id from v$ifun t where name like 'SP_TRUNC%';
select * from v$ifun_arg where id=1298;
--相关数据字典
select * from dba_tablespaces;
select * FROM DBA_DATA_FILES;
select * FROM v$tablespace;
select * from v$datafile;
select * from DBA_FREE_SPACE; --数据文件剩余空间

--创建表空间等不能指定单位,否则报错
select 4096*page/1024/1024; --表空间最小大小为页大小的4096倍
create tablespace tbs DATAFILE 'TBS01.DBF' SIZE 32;
alter tablespace tbs add DATAFILE 'TBS02.DBF' SIZE 128 AUTOEXTEND on NEXT 2 MAXSIZE 20480;
alter tablespace tbs DATAFILE 'TBS01.DBF' AUTOEXTEND on NEXT 2 MAXSIZE 20480;
alter TABLESPACE tbs DATAFILE 'TBS01.DBF' AUTOEXTEND OFF;

--初始表空间大小的更改
alter tablespace tbs RESIZE DATAFILE 'TBS01.DBF' to 128;

--迁移表空间数据文件,修改数据文件路径,要求dmdba用户要对该目录有操作权限
alter TABLESPACE tbs OFFLINE;
alter tablespace tbs RENAME DATAFILE 'TBS01.DBF' TO 'F:\dmdbms\data\DAMENG\TBS\TBS01.DBF';
alter tablespace tbs RENAME DATAFILE 'TBS02.DBF' TO 'F:\dmdbms\data\DAMENG\TBS\TBS02.DBF';
alter TABLESPACE tbs online;

create table t_test(id int,name VARCHAR(20)) TABLESPACE tbs;
insert into T_TEST(id,name) VALUES (1,'aaa');
insert into T_TEST(id,name) VALUES (2,'bbb');
insert into T_TEST(id,name) VALUES (3,'ccc');
insert into T_TEST(id,name) VALUES (4,'ddd');
commit;
--表空间处于脱机状态下时,表空间的数据无法读写,即无法查询 
select * from t_test;

create tablespace "DMTEST" datafile 'F:\dmdbms\data\DAMENG\TBSTEST\TBSTEST01'
 size 64 autoextend on next 2 maxsize 10240, 'F:\dmdbms\data\DAMENG\TBSTEST\DMTEST02'
 size 64 autoextend on next 2 maxsize 10240 CACHE = NORMAL;

--调整undo_retention
select * from v$parameter t where name like 'UNDO_RET%';
alter SYSTEM set 'UNDO_RETENTION'=300 both;

--重做联机日志 
select * from v$rlogfile;
select * from v$rlog; --cur_file表示正在使用的联机日志
--修改联机日志大小,联机日志只能由系统自动切换,不能手动切换
alter DATABASE RESIZE LOGFILE 'F:\dmdbms\data\DAMENG\DAMENG01.log' TO 300;
alter DATABASE RESIZE LOGFILE 'F:\dmdbms\data\DAMENG\DAMENG02.log' TO 300;
alter database ADD LOGFILE 'F:\dmdbms\data\DAMENG\DAMENG03.log' SIZE 300;
--修改日志文件路径(日志迁移)
alter DATABASE MOUNT;
alter DATABASE RENAME LOGFILE 'DAMENG01.log' TO 'F:\dmdbms\data\DAMENG\REDO\DAMENG01.log';
alter DATABASE RENAME LOGFILE 'DAMENG02.log' TO 'F:\dmdbms\data\DAMENG\REDO\DAMENG02.log';
alter DATABASE RENAME LOGFILE 'DAMENG03.log' TO 'F:\dmdbms\data\DAMENG\REDO\DAMENG03.log';
alter DATABASE OPEN;

--开启归档
select arch_mode from v$database;--查询是否开启了数据库归档
--开归档
alter database mount;
alter DATABASE ARCHIVELOG;
--配置归档日志属性,归档大小不要设置太大
--alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=10240';
alter database add archivelog 'type=local,dest=F:\dmdbms\arch,file_size=64,space_limit=10240';
select * from v$dm_arch_ini;
alter database open;
--关闭归档
alter database mount;
alter database noarchivelog;
alter database delete ARCHIVELOG 'type=local,dest=F:\dmdbms\arch';
alter database open;

--查询所有的归档日志文件
select * from v$arch_file;
select * from v$archived_log;
--默认是数据库自动切换日志归档,DM支持手动切换日志归档,如下三个命令均可
alter SYSTEM ARCHIVE log CURRENT;
alter system switch logfile;
alter database ARCHIVELOG CURRENT;

--查询密码策略
--系统支持的口令策略有:
--0 无策略
--1 禁止与用户名相同
--2 口令长度不小于 9
--4 至少包含一个大写字母(A-Z--8 至少包含一个数字(0-9--16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
--口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略 24,则设置口
--令策略为 2+4=6 即可
select * FROM v$parameter t where name like 'PWD_POLICY';
--设置密码策略
alter SYSTEM set 'PWD_POLICY' = 15 BOTH;
--访问非默认模式下的对象时需要带上模式名,SYSDBA用户默认模式为SYSDBA
select * from dmhr.employee t where t.employee_id=1001;
--设置模式,设置模式后查询模式下对象时不需要带模式名
set SCHEMA DMHR;
select * from employee limit 3;
--模式管理,表管理
--创建模式
CREATE SCHEMA HRTEST AUTHORIZATION SYSDBA;
--创建表
create TABLE HRTEST.testid(id int,name varchar(20),sex bit);
--增加列
alter table HRTEST.testid add column(age int);
--删除列
alter table HRTEST.testid drop sex;

--约束
alter table "HRTEST"."TESTID" add constraint "uk_test"  unique("ID") using index tablespace "DMTEST";
alter table "HRTEST"."TESTID" add constraint "ck_test"  check(age>18);

alter table HRTEST.TESTID DISABLE CONSTRAINT "ck_test";
alter table hrtest.testid enABLE CONSTRAINT "ck_test";
alter table "HRTEST"."TESTID" drop constraint "ck_test";

--创建视图(作用:简化查询)
create view hrtest.v_emp
 as
 select a.employee_id,a.employee_name,a.email,a.phone_num from dmhr.employee a where a.department_id=1001;
select * from hrtest.v_emp;
--创建视图 :
create view dmhr.a_emp
 as
select a.department_id,b.department_name,avg(salary) as empavgsry
 from DMHR.EMPLOYEE a,DMHR.DEPARTMENT b
 where a.department_id=b.department_id
 group by a.department_id,b.department_name
 HAVING avg(salary)>=9000;
 

select a.DEPARTMENT_ID, count(*) as empnum
 from dmhr.employee a 
 group by a.DEPARTMENT_ID
 having count(*) >=30;



--索引提高查询速度,索引是基于某张表的某个字段创建的
--索引不是越多越好,索引会降低DML的效率(DML操作要维护索引)
select * from DMHR.EMPLOYEE;
explain select * from dmhr.employee t where t.employee_name='马学铭';
create index ix_employee_employee_name on dmhr.employee(employee_name);
explain select * from dmhr.employee t where t.employee_name='马学铭';
--删除索引
drop index dmhr.IX_EMPLOYEE_EMPLOYEE_NAME;

--收集统计信息
dbms_stats.gather_table_stats('DMHR','EMPLOYEE');
--统计信息的查看
dbms_stats.table_stats_show('DMHR','EMPLOYEE');
dbms_stats.index_stats_show('DMHR','IX_EMPLOYEE_EMPLOYEE_NAME');

--索引的监控
alter INDEX DMHR.IX_EMPLOYEE_EMPLOYEE_NAME MONITORING USAGE; --开启索引监控
alter INDEX DMHR.IX_EMPLOYEE_EMPLOYEE_NAME  NOMONITORING USAGE;--关闭索引监控
alter index DMHR.IX_EMPLOYEE_EMPLOYEE_NAME rebuild online; --索引的 重建
select * from v$object_usage;
--查询模式下的索引
select * from dba_indexes t where t.owner='DMHR';
select * from DBA_IND_COLUMNS t where t.index_owner='DMHR';

--备份与还原
select * from v$parameter where name in ('BAK_USE_AP','BAK_PATH');
SELECT * from v$backupset;
select * from v$ifun where name like 'SF_BAKSET%';
--联机备份
--全量备份
backup database full to "ONLINEBAKFULL_01" backupset 'ONLINEBAKFULL_01';
--增量备份
backup database increment to "ONLINEBAKINCR_01" backupset 'F:\dmdbms\data\DAMENG\bak\ONLINEBAKINCR_01' device type disk;
--报错检查点LSN小于备份的LSN,需执行检查点
checkpoint(100);

select SF_BAKSET_CHECK('DISK','ONLINEBAKFULL_01');

--创建作业
call SP_CREATE_JOB('JOB01',1,0,'',0,0,'',0,'');

call SP_JOB_CONFIG_START('JOB01');

call SP_ADD_JOB_STEP('JOB01', 'FULLBAK', 6, '00000000F:\dmdbms\backup\fullbak', 0, 0, 0, 0, NULL, 0);

call SP_ADD_JOB_SCHEDULE('JOB01', 'FULLBAK', 1, 2, 1, 1, 0, '22:00:00', NULL, '2022-01-25 19:54:42', NULL, '');

call SP_JOB_CONFIG_COMMIT('JOB01');


select * from sysjob.sysjobs;
dbms_job.run(1643111736);
--查看运行JOB日志
select * from sysjob.SYSJOBHISTORIES2;

--开启归档后需要执行检查点
checkpoint(100);

开启归档

开启归档需将数据库设置为配置状态
在这里插入图片描述
设置归档目标路径,文件大小等
在这里插入图片描述
注意:开启归档后需将数据库再次置于打开状态

数据库备份与还原

备份的前置条件是数据库须开启归档。
新建联机备份:
在这里插入图片描述
可选择完全备份或增量备份
在这里插入图片描述
分别可以进行库、表、表空间、归档备份。

数据库还原与恢复
数据库恢复使用console(脱机工具)
还原:
在这里插入图片描述
恢复
在这里插入图片描述
更新数据库模数,还原后要更新数据库模数,否则数据库会无法启动
在这里插入图片描述

作业管理

创建代理环境
在这里插入图片描述
代理->作业:右键创建作业
在这里插入图片描述

填写作业步骤作业调度
在这里插入图片描述
在这里插入图片描述

ODBC

考试中拿到的是一个源码包,需要编译安装
(1)解压
[root@Kylin10 opt]# tar -zxvf unixODBC-2.3.0.tar.gz
(2)源码安装三部曲(配置、编译、安装)
[root@Kylin10 opt]# cd unixODBC-2.3.0/
[root@Kylin10 unixODBC-2.3.0]# ./configure
[root@Kylin10 unixODBC-2.3.0]# make && make install
(3) 配置 odbc.ini 数据源信息和 odbcinst.ini 驱动信息,内容参考如下
[root@Kylin10 unixODBC-2.3.0]# cd /usr/local/etc/
[root@Kylin10 etc]# vi odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = Dameng123
TCP_PORT = 5236
[root@Kylin10 etc]# vi odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so
(4)验证
使用dmdba用户执行命令
isql dm8 -v
执行时报错
[dmdba@Kylin10 etc]# isql dm8 -v
[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect
在这里插入图片描述
确认配置没有问题,后来在知乎上看到这篇文章,
https://zhuanlan.zhihu.com/p/73173576
尝试执行命令后可以解决
解决办法:

安装共享库后要注意共享库路径设置问题, 如下:

A、如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig(root用户执行 )命令
执行该命令后可正常连接
在这里插入图片描述

DCA考试

DCA考试共2个小时,使用VNC远程连接,考试要注意找个网络好的环境,避免因中途断网浪费考试时间。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值