参加为期3天的DCA线上培训并通过考试后,我感到收获颇丰。在这次培训中,我不仅初步掌握了达梦数据库的基础理论知识,还在实际操作中得到了很好的锻炼。这次培训让我更全面地认识了达梦数据库的功能和特点,也为我日后在数据库领域的进一步学习打下了坚实的基础。通过这次学习,我对达梦数据库的后续深入研究产生了浓厚的兴趣,相信在未来的工作中,我能够更加自信地应用这些知识。
以下内容分为考试经历和个人整理的笔记内容,共享给大家
培训老师和考试老师非常认真负责,及时在qq群里回复消息!有问题可以直接请教
考试的形式:纯上机考试(2h),考试的登录信息会在考试前半小时发送到个人邮箱上,需要提前安装VNC软件,根据邮件里提供的用户密码、服务器IP和端口号,通过VNC软件进行登录
考试的范围:基本上培训课讲到的内容都会涵盖
考试结果:考试完成后的2~3个工作日内,就会收到考试结果
整个培训的过程体验都很好,培训的讲师非常有经验,能应对各种专业问题。
在正式考试前建议多练习几遍上课的内容,熟悉基础操作和图形化的工具使用,考试需要仔细的确认题目的要求,题目要求比较严谨。
C/S架构,由客户端+服务器构成
数据库=数据库文件+实例
数据库文件:配置文件、控制文件、数据文件、重做日志文件、归档日志文件、跟踪日志文件、备份文件
实例=一组进程/线程+共享内存
数据库实例是数据库管理系统的运行环境,负责管理和操作数据库;数据库是存储在磁盘上的数据集合,由实例管理。两者共同构成了完整的数据库系统,确保数据的存储、管理和访问功能。
实例又分为单实例和集群。单实例就是一个实例管理一个数据库,集群是多个实例管理一个数据库。
配置文件
/dm8/data/DAMENG
中以.ini
结尾的文件
数据库参数的类型:
select distinct para_type from v$dm_ini;
静态参数在数据库运行期间不能修改内存中的值,动态参数在数据库运行期间可以修改内存中的值(修改后立即生效)。
数据库参数的修改方法:
console 控制台工具
图形化界面方式修改,不管修改什么类型参数都需要重启数据库才能生效(修改的是 dm.ini 配置文件)。
直接修改 dm.ini 配置文件
可以 vim 编辑 dm.ini 文件,采用此方式不管修改什么类型参数都需要重启数据库才能生效。
系统函数修改
可以用来修改静态和动态参数,静态参数只能修改配置文件中的值(修改后需要重启数据库才能生效),动态参数即可以修改内存中的值(修改成功后即生效),也可以修改参数文件的值。
SP_SET_PARA_VALUE
:修改整型参数。SP_SET_PARA_DOUBLE_VALUE
:修改浮点型参数:比如 UNDO_RETENTION。SP_SET_PARA_STRING_VALUE
:修改字符型参数参数说明:SCOPE:修改范围(0:memory;1:both(memory+spfile);2:spfile)
使用 SQL 语句 alter system set 命令修改
可以用来修改静态和动态参数,静态参数只能修改配置文件中的值(修改后需重启数据库才能生效),动态参数即可以修改内存中的值(修改成功后即生效),也可以修改参数文件的值。
alter system set '***'=2 both|memory|spfile;
对于会话级动态参数,可以只针对当前会话生效:
alter session set 'LIST_TABLE'=0;
数据文件
以.DBF
结尾的文件
select * from v$datafile;
控制文件
以.ctl
结尾的文件
DM 控制文件 dm.ctl 为二进制文件,无法直接打开,可以用 dmctlcvt 工具转换为文本文件。控制文件中包含了 OGUID、数据库状态、数据库名称、最后启动时间等、表空间信息、数据文件信息、联机日志文件信息等。
select para_name,para_value from v$dm_ini where para_name like '%PATH%';
查看控制文件内容:
使用工具dmctlcvt
./dmctlcvt help
# 将控制文件转换为文本文件
./dmctlcvt type=1 src=/dm8/data/DAMENG/dm.ctl dest=/tmp/dmctl.txt
重做日志文件
重做日志文件记录的是数据库发生变化(insert,update,delete,alter.create)的信息。**至少需要两个重做日志文件。**重做日志的特点是循环写,可覆盖。重做日志文件可以重命名、扩展大小,也可以添加。重做日志文件不能被删除。重做日志文件频繁切换会对数据库产生比较大的影响,考虑增加日志文件,或者是扩展文件大小。
视图:v$rlogfile
select file_id,path,rlog_size from v$rlogfile;
新增重做日志文件
alter database add logfile '/dm8/data/DAMENG/DAMENG03.log' size 300;
resize重做日志文件大小
alter database resize logfile '/dm8/data/DAMENG/DAMENG01.log' to 300;
迁移重做日志文件
alter database mount;
alter database rename logfile '/dm8/data/DAMENG/DAMENG01.log' to '/dm8/DAMENG01.log'
alter database open;
归档日志文件
就是重做日志文件的副本。用来做数据库备份恢复,数据库守护集群,读写分离集群的同步。
开启归档:
CLI:
alter database open;
alter database mount;
alter database archievelog;
alter database add archivelog 'type=local,dest=/dm8/data/arch,file_size=100,space_limit=0';
select name,arch_mode from v$database;
alter database open;
GUI
管理服务器
系统管理
将数据库启动到mount状态
归档配置
开启归档模式并设定归档路径及文件大小、空间限制等。
将数据库启动到open状态
备份文件
以.bak
为扩展名的文件。备份文件就是数据库在某一个时间点的副本。
跟踪日志文件
跟踪日志文件记录的是各个会话执行的sql信息。还记录了数据库错误信息、性能相关问题。
通过参数SVR_LOG
,默认值为0,关闭。
select para_value,para_name from v$dm_ini where para_name='SVR_LOG';
物理结构
共享内存是
共享内存池是DMSERVER启动时从操作系统申请的一大片内存,实例在运行中可以向共享内存池申请或者释放内存
select * from SYS."V$DM_INI" where "V$DM_INI".PARA_NAME like '%MONORY%';
运行时内存池
给特定模块单独使用,例如绘画内存池和虚拟机内存池。
数据缓冲区
缓存的是数据页(空闲、干净、脏、正在使用),使用数据缓冲区可以提高数据库的读写性能。
数据库缓冲区设置的太小会造成性能问题,设置的过大又会引起资源浪费。
select * from v$bufferpool;
select * from SYS."V$PARAMETER" t WHERE name in ('BUFFER','FAST_POOL_PAGES','RECYCLE','KEEP');
--修改数据缓冲区大小为500M:
alter system set 'BUFFER'= 500 spfile;
数据缓冲区有4种类型:
日志缓冲区
存放的是重做日志信息,单位是页,避免直接对磁盘进行操作,提升数据库的性能。
select para_name,para_value from v$dm_ini where para_name like '%RLOG_%';
重做日志的刷盘机制:每三秒/事务提交。
字典缓冲区
字典缓冲区是存在数据库对象的一片缓冲区,对应 INI 参数 DICT_BUF_SIZE
select para_name,para_value from v$dm_ini where para_name like '%DICT_BUF_SIZE%';
SQL缓冲区
缓存 sql 语句、对应的执行计划、缓存结果集(需要开启结果集缓存,默认不开启)
select para_name,para_value from v$dm_ini where para_name like '%CACHE_POOL%';
排序区
排序去就是sql排序需要的内存空间,在内存中无法完成将转移到磁盘上(临时表空间)
select para_name,para_value from v$dm_ini where para_name='SORT_BUF_SIZE';
逻辑结构
监听线程
检测来自客户端的连接请求,把任务交给工作线程。
IO线程
将数据也从磁盘读入数据缓冲区中,将数据缓冲区中的脏页在一定机制(缓冲区满,数据库关闭,执行检查点)下刷到磁盘中。
日志刷新线程
将重做日志缓冲区中的记录在一定机制下刷新(事务提交,执行检查点,每3秒,缓冲区满,数据库关闭)到重做日志文件。
日志归档线程
将重做日志文件在切换时拷贝到归档路径下。
日志重做线程
主要用于数据库恢复。
调度线程
检查系统级的事件触发器;
清理SQL缓存、计划缓存中失效的项,或者超出缓存限制后淘汰不常用的缓存项;
动态缓冲区检查,根据需要动态扩展或动态收缩系统缓冲池;
自动执行检查点
会话超时检测
必要时执行数据更新页刷盘
唤醒等待的工作线程;
一个SQL执行过程
cat /proc/cpuinfo
物理内存至少为1G,swap分区一般是物理内存的1.5倍
free -m
fdisk -l df -h
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
mkdir -p /dm8
groupadd dinstall useradd -d /dm8 -m -g dinstall dmdba passwd dmdba chown dmdba:dinstall -R /dm8 ls -ld /dm8
su - dmdba
vim ~/.bash_profile
export DM_HOME=/dm8
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin"
source ~/.bash_profile
重启服务器生效
vim /etc/security/limits.conf dmdba soft nofile 4096 dmdba hard nofile 65536
临时生效
ulimit -n 65536
GUI版本安装
mount -o loop /home/dm8_setup_rh7.iso /mnt
cd /mnt
export DISPLAY=192.168.128.1:0.0
xhost +
./DMInstall.bin
查看DmAP服务
./DmAPService status ./dmservice.sh
命令行安装
./DMInstall.bin -i
安装完成后的文件夹
DmAPService
——数据库辅助插件服务DmServiceDMSERVER
——数据库实例服务dminit
dmserver
——前台进程启动数据库DmServiceDMSERVER
——后台进程启动关闭数据库disql
dmservice.sh
——DM服务查看器dbca.sh
——达梦数据库配置助手manager
——管理工具console
——查看和修改参数,做冷备和恢复monitor
——监控./uninstall.sh
./uninstall.sh -i
一个数据库软件是可以创建多个实例,通过端口号区别,达梦默认端口号是:5236
GUI
su - dmdba
export DISPLAY=192.168.128.1:0.0
xhost+
cd /dm8/tool/
./dbca.sh
创建数据库模板
指定数据库目录
/dm8/data
数据库标识
数据库文件
/dm8/data/DAMENG/dm.ctl
初始化参数
口令管理
创建示例库
创建摘要
创建
查看数据库是否启动
ps -ef|grep dmserver netstat -nt|grep 5236 ./DmServiceDMSERVER status ./dmservice.sh
CLI
建库查看帮助
./dminit help
./dminit db_name=DAMENG02 instance_name=DMSERVER2 port_num=5327 path=/dm8/data
注册服务查看帮助:
脚本所在路径:/dm8/script/root
./dm_service_installer.sh -h
./dm_service_installer.sh -t dmserver -p DMSERVER2 -dm_ini /dm8/data/DAMENG02/dm.ini
alter database open;
alter database suspend;
select instance_name,status$ from v$instance;
shutdown -> mount
根据dm.ini配置文件中的参数分配内存,启动后台进程或者线程,找到控制文件并打开控制文件。
mount -> open
根据控制文件打开所有的数据文件以及重做日志文件,校验数据库是否处于一致性状态。
通过前台方式启动/关闭数据库
./dmserver /dm8/data/DAMENG/dm.ini
exit
通过后台进程形式启动/关闭数据库
./DmServiceDMSERVER start ./DmServiceDMSERVER stop
通过服务查看启停数据库(root)
./dmservice.sh
bin路径下
disql
./disql
conn db_name/"db_passwd":port
manager
./manager
console
./console
DTS迁移工具
性能监视工具
monitor
查看模式下所有表
select table_name from user_tables;
查看表结构
desc table_name;
sp_tabledef('SYSDBA','table_name');
SYSTEM:系统表空间,存放数据字典信息、动态性能视图
ROLL:回滚表空间,存放数据库运行中的回滚记录
TEMP:临时表空间,做排序
MAIN:数据库默认表空间,存放的是用户的数据。创建用户或者数据库对象时不指定表空间,就放在该表空间中
HMAIN:HUGE表空间
查询表空间和数据文件
select tablespace_name,file_name from dba_data_files;
创建表空间
创建表空间test,数据文件初始大小为50M,每次自动扩展2M,最大可扩展1G
create tablespace "TEST" datafile '/dm8/data/DAMENG/TEST01.DBF' size 50 autoextend on next 2 maxize 1024 CAHCE = NORMAL;
表空间状态
脱机状态
alter tablespace test offline;
连接状态
alter tablespace test online;
查看表空间状态
select A.TABLESPACE_NAME,A.STATUS from dba_tablespaces A;
0为联机状态,1为脱机状态
维护表空间
表空间不足
扩展数据文件
alter tablespace "TEST" resize datafile 'TEST01.DBF' to 2000;
添加数据文件
alter tablespace "TEST" add datafile '/dm8/data/DAMENG/TEST02.DBF' size 100 autoextend on next 1 maxsize 2000;
更换数据文件路径
表空间脱机
更换路径
alter table space test rename datafile '/dm8/data/DAMENG/TEST01.DBF' to '/dm8/TEST01.DBF';
表空间联机
维护回滚表空间
alter tablespace "ROLL" add datafile '/dm8/data/DAMENG/ROLL02.DBF' size 100 autoextend on next 1 maxsize 10240;
临时表空间
select para_name.para_value from v$dm_ini where para_name like '%TEMP%';
system,roll,temp表空间不允许脱机,temp表空间不能被删除。
表空间删除
drop tablespace test;
select a.USERNAME,a.ACCOUNT_STATUS from dba_users a;
规划用户
命名:以字母开头,a-z,0-9,$#_,长度不超过128个字符
权限分配:系统权限、对象权限、角色
存储:表空间
密码策略:PWD_POLICY
设置系统默认口令策略
配置的和,如3=1+2,表示同时启用第1项和第2项策略
将密码策略设置为禁止与用户名相同并且口令长度不小于9
sp_set_para_value(1,'PWD_POLICY',3);
系统权限
权限名称 | 说明 |
---|---|
CREATE TABLE |
创建表 |
ALTER DATABASE |
修改数据库 |
CREATE TABLESPACE |
创建表空间 |
ALTER TABLESPACE |
修改表空间 |
DROP TABLESPACE |
删除表空间 |
CREATE USER |
创建用户 |
CREATE VIEW |
创建视图 |
CREATE PROCEDURE |
创建存储过程/函数 |
CREATE ROLE |
创建角色 |
CREATE SCHEMA |
创建模式 |
对象权限
对象权限 | 表 | 视图 | 序列 | 过程 |
---|---|---|---|---|
ALTER | √ | √ | ||
DELETE | √ | √ | ||
EXECUTE | √ | |||
INSERT | √ | √ | ||
REFERENCES | √ | √ | ||
SELECT | √ | √ | √ | |
UPDATE | √ | √ |
创建用户
创建tbs用户,用户属于tbs表空间,tbs用户有建表和建视图的权限。
创建tbs表空间
create tablespace "TBS" datafile '/dm8/data/DAMENG/TBS01.DBF' size 32 CACHE = NORMAL;
创建tbs用户
修改用户
修改用户默认表空间
alter user "TBS" default tablespace "TEST";
锁定用户
alter user tbs account lock;
解锁用户
alter user tbs account unlock;
删除用户
drop user test;
角色是一组权限的集合,方便权限管理。角色是可以被授予给角色和用户的。
创建juese
授予角色给用户
撤回角色
启动角色
禁用角色
删除角色
drop role r1;
模式就是一组数据库对象的集合
模式对象:表、索引、视图、触发器、存储过程、同义词、包、序列
模式与用户的关系:一个用户可以对应多个模式,一个模式只能属于一个用户,创建用户时会自动创建一个同名的模式。
模式
用sysdba用户登录,默认就是在sysdba模式下。
创建模式
create schema abc;
/
模式存在,则不允许创建与模式同名的用户
切换模式
set schema abc;
删除模式
drop schema abc;
``
表
DM支持表的类型:索引组织表、堆表、外部表、分区表
创建表
非空约束
create table test (id char(20) not null);
唯一约束:创建唯一约束会自动创建一个唯一索引,忽视控制,空不等于任何值。
create table test(id int unique,name varchar(20));
主键约束:非空+唯一,一个表只能有一个主键,设计主键尽量避免业务逻辑的列
create table test(id int primary key);
外键约束:保证数据完整性
create table "TEST"("ID" int);
alter table test add constaint foreign key("ID") references "TEST"("ID");
检查约束
create table test(id int chech(id>5));
管理表
重命名表
alter table test2 rename test1;
添加列
alter table "TEST1" add column ("add" VARCHAR(50));
删除列
alter table "TEST1" drop column "add";
管理约束
查看约束
select constraint_name,table_name,status from user_constraints;
启动约束
alter table test1 enable constraint CONS***;
禁用约束
alter table test disable constraint CONS***;
视图
视图就是一个查询语句,一张虚拟表
DM视图:简单视图、复杂视图、物化视图
创建视图的语法:
create view *** as select ***;
create or replace view *** as select ***;
删除视图
drop view ***;
索引
索引是数据库对象
索引作用:加快查询速度,对更新少量数据时,可以提高更新速度,insert时会有延迟。
数据库会自动维护索引,索引会占用存储空间。
创建索引基本要求:
不适合建立索引:
列上有大量的重复值
列上有大量的null
结果集返回大量的数据
创建索引
create index "IND_EMP" on "EMP"("EMPLOYEE_NAME");
查询索引信息
usesr_indexes
查看sql执行计划
explain select * from emp where employee_name='aaa';
重建索引
alter index IND_EMP rebuild;
删除索引
drop index IND_EMP;
物理备份主要是备份使用过的有效数据页,逻辑备份主要是备份数据库对象(表,索引,视图,存储过程等)
物理备份分为联机备份和脱机备份;完全备份和增量备份
还原就是将某个时间点的数据库副本拷贝到对应的目录下。
恢复就是在完成数据库还原之后,应用部分或者是全部归档日志。
冷备:不需要开启归档,需要开启DmAP服务,需要关闭数据库实例,针对整库做备份
./DmServiceDMSERVER stop
-- 查看备份路径
show parameter bak
console工具备份
用dmrman工具备份,只支持冷备
cd /dm8/bin
./dmrman
backup database '/dm8/data/DAMENG/dm.ini' backupset '/dm8/backup';
热备:需要开启归档,数据库需要打开,可以备份数据库、表空间、表、归档日志
查看数据库归档模式:
select name,arch_mode from v$database;
用manager工作做热备
整库备份
命令行做全备:disql工具
backup database full to "DB_DAMENG_FULL";--备份到参数文件中的备份路径
backup database full to "DB_DAMENG_FULL2" BACKUPSET '/dm8/backup';
做增量备份
backup database increment to "***" backupset '***';
表空间备份
表空间备份只能联机,还原只能脱机
表备份
归档备份
归档不连续
-- 查看归档文件 select * from v$arch_file; -- 删除归档 sf_archivelog_delete_before_lsn(700363)
检查备份集是否有效
./dmrman
check backupset '/dm8/backup';
console工具还原
dmrman工具还原
restore database '/dm8/data/DAMENG/dm.ini' from bashupset '/dm8/backup';
recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/data/arch';
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
表空间还原
restore database '/dm8/data/DAMENG/dm.ini' tablespace MAIN from backupdset '/dm8/backup';
recover database '/dm8/data/DAMENG/dm.ini' tablespace MAIN;
备份的是数据库对象
逻辑备份可以用来迁移和重组数据库,是数据库辅助性备份。
工具:dexp/dimp
四个级别导入导出:
库级别
用户
模式
表
查看帮助:
./dexp help
./dimp help
全库导出:
./dexp sysdba/DAMENG123 file=full.dmp log=full.log directory=/dm8/backup full=y
用户导出:
./dexp sysdba/Dameng123 file=dmhr.dmp log=dmhr.log directory=/dm8/backup owner=dmhr
导出表:
./dexp sysdba/Dameng123 file=emp.dmp log=emp.log directory=/dm8/backup tables=emp
全库导入
./dimp sysdba/Dameng123 file=full.dmp log=imp_full.log directory=/dm8/backup full=y
执行用户导入时,如果用户不存在,要先创建用户
创建代理环境
新建作业1,每周三,每周日22:00做全备
新建作业2,每周一二四五六做增量备份
Linux配置odbc
用root配置,检查gcc包
rpm -qa|grep gcc
tar -xvf unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0
./configure
make && make install
odbcinst -j
配置文件/usr/local/etc/odbcinst.ini
[DM8 ODBC DRIVER] Description = ODBC DRIVER FOR DM8 DRIVER = /dm8/bin/libdodbc.so
配置文件/usr/local/etc/odbc.ini
[dm8] Description = DM ODBC DSND Driver = DM8 ODBC DRIVER SERVER = localhost UID = SYSDBA PWD = Dameng123 TCP_PORT = 5236
测试连接:用dmdba账号
dialect/lsql dm8
考试时间两个小时,总分100分
考试环境:中标麒麟7+达梦8
考试内容:数据库软件安装、实例创建、用户创建、表空间管理、建表、建视图、数据导入、参数修改、备份还原、作业、DMSQL、ODBC配置。
文章
阅读量
获赞