注册
DCA考试速成
培训园地/ 文章详情 /

DCA考试速成

Coisini. 2025/09/13 120 0 0

本文档偏向使用命令行方式,非必要不使用图形化。

一、DCA考点

考试形式:机考 2 小时,VNC 客户端连接云主机。具体流程见考试流程指南。
考试内容:
1、数据库安装/dm、实例创建(指定页大小、字符集、数据库密码);
2、参数修改、创建表空间、创建用户、角色、权限管理;
3、创建表、约束、导入脚本数据、索引、视图等;
4、开归档、物理备份、逻辑备份;
5、DM 作业、ODBC 配置等。

二. 安装前准备

1. 创建用户

在root权限下,

  • 查看dmdba用户是否存在:

    id dmdba

  • 创建安装用户组 dinstall:

    groupadd dinstall -g 10001

  • 创建安装用户 dmdba 并指定用户组:

    useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u 10001 dmdba

  • 校验用户是否创建成功:

    id dmdba

  • 初始化用户密码:

    passwd dmdba

  • 之后通过系统提示进行密码设置。

删除用户使用userdel -r dmdba,删除组使用groupdel dinstall

2. 创建安装路径并修改权限

试卷中会给出路径要求,在路径下创建目录并将所属权限修改为dmdba:dinstall。

例如:

mkdir /dm8
chown dmdba:dinstall -R /dm8
chmod 755 /dm8
ls -ld /dm8

推荐打开两个控制台 ,一个root,一个dmdba。

3. 设置图形化

在root用户下,

xhost +
#会显示access control disabled, clients can connect from any host,这是正常的

echo $DISPLAY
#这里会显示  :0.0 或者 :2.0,需要记住结果

vim ~/.bashrc
输入:export DISPLAY=:0.0
退出后执行:source ~/.bashrc
检查:echo $DISPLAY

然后切换dmdba用户,
检查:echo $DISPLAY
如果没有显示任何东西,
vim ~/.bashrc
输入:export DISPLAY=:0.0
退出后执行:source ~/.bashrc
检查:echo $DISPLAY

4. 配置环境变量

su - dmdba
vim ~/.bash_profile
#写入
export LD_LIBRARY_PATH="$LD_LIBARARY_PATH:/dm8/bin"
export DM_HOME="/dm8"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
#执行
source ~/.bash_profile

三、数据库安装

1. 执行安装命令

su - dmdba
#命令行执行安装
./DMInstall.bin -i

2_3.png

2. 验证key文件

可以选择是否输入 Key 文件路径,试用版不输入则进入下一步安装;

2_4.png

3. 输入时区

时区选择21;

2_5.png

4. 选择安装类型

数据库软件安装程序提供四种安装方式:”典型安装”、“服务器安装”、“客户端安装”和“自定义安装”,用户可根据实际情况灵活地选择。如下所示:

典型安装包括:服务器、客户端、驱动、用户手册、数据库服务。

服务器安装包括:服务器、驱动、用户手册、数据库服务。

客户端安装包括:客户端、驱动、用户手册。

自定义安装包括:用户根据需求勾选组件,可以是服务器、客户端、驱动、用户手册、数据库服务中的任意组合。

生产环境可以根据实际需求选择,在考试中选择"典型安装"即可;

5. 选择安装目录

选择默认或是自定义目录,根据考试要求选择目录:

2_6.png

在这里报错的两种可能性:

  • 安装目录没有给权限,使用chmod指令授权即可;
  • 提前创建了同名文件夹dmdbms,导致无法创建,删除dmdbms即可;

6. 安装小结

2_7.png

7. 注册数据库服务

当安装进度完成时将会弹出提示,提示使用 root 系统用户执行/opt/dm/script/root/root_installer.sh命令。

2_8.png

至此,安装过程结束。

如果tmp空间不足:

mkdir ~/tmp
vi ~/.bash_profile 
export DM_INSTALL_TMPDIR=/home/dmdba/tmp
source ~/.bash_profile

通过上述命令,重新设置临时安装目录。

四、创建实例

1. 相关参数

  • PATH

    初始数据库存放的路径。默认路径为 dminit 当前所在的工作目录。文件路径长度最大为 256 个字符,PATH 为可选参数。

    生产环境中,该路径可根据前期规划的路径进行修改,一般为最大空间路径。

  • EXTENT_SIZE

    数据文件使用的簇大小,即每次分配新的段空间时连续的页数。取值:16、32、64。单位:页数。缺省值 16。EXTENT_SIZE 为可选参数。

    生产环境中该参数建议设置为 32,或依据用户实际需求进行指定。

  • PAGE_SIZE

    数据文件使用的页大小。取值:8、16、32,单位:K。默认值为 8。可选参数。选择的页大小越大,则支持的元组长度也越大,但同时空间利用率可能下降。

    在达梦数据库中,页大小可以为 8 KB、16 KB 或者 32 KB,一旦创建好了数据库,在该库的整个生命周期内,页大小都不能够改变。如果系统中存在或者以后可能存在含有较长的字符串类型的表,建议该参数设置为 16 或者 32。页大小设置越大,最后数据文件的物理大小就会越大,系统运行时,每次从磁盘调入内存的数据单位也就越大。除了每个字段的最大长度限制外,每条记录总长度不能大于页面大小的一半。

    生产环境中该参数建议设置为 32,或依据用户实际需求进行指定。

  • LOG_SIZE

    重做日志文件大小。取值:32 位版本时,取值为 256 和 2048 之间的整数;64 位版本时,取值为 256 和 8192 之间的整数,单位 MB。默认值为 4096MB。可选参数。每个数据库实例至少有两个重做日志文件,循环使用,LOG_SIZE 设置每个重做日志文件的大小。

    生产环境中该参数建议给 2048,或依据用户实际需求进行指定。

  • CASE_SENSITIVE

    标识符大小写敏感。当大小写敏感时,小写的标识符应当用 "" 括起,否则被系统自动转换为大写;当大小写不敏感时,系统不会转换标识符的大小写,在标识符比较时也不能区分大小写。取值:Y、y、1 表示敏感;N、n、0 表示不敏感。默认值为 Y 。可选参数。

    DM 为了兼容不同的数据库,在初始化数据库的时候有一个参数字符串比较大小写敏感,用于确定数据库对象及数据是否区分大小写,默认为区分,不可更改。建议从 MYSQL 和 SQLSERVER 迁移过来的系统,使用大小写不敏感,ORACLE 迁移过来的系统,使用大小写敏感,以便和原来系统匹配。

    生产环境中该参数依据用户实际需求进行指定。

    关于大小写敏感参数细节问题另开一篇文档展开描述。

  • CHARSET/UNICODE_FLAG

    字符集选项。取值:0 代表 GB18030,1 代表 UTF-8,2 代表韩文字符集 EUC-KR。默认为 0。可选参数。

    GB18030 编码向下兼容 GBK 和 GB2312,兼容的含义是不仅字符兼容,而且相同字符的编码也相同。GB18030 收录了所有 Unicode3.1 中的字符,包括中国少数民族字符,GBK 不支持的韩文字符等等,也可以说是世界大多民族的文字符号都被收录在内。

    Unicode Transformation Format-8bit 是用以解决国际上字符的一种多字节编码。它对英文使用 8 位(即一个字节),中文使用 24 为(三个字节)来编码。UTF-8 包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8 编码的文字可以在各国支持 UTF8 字符集的浏览器上显示。

    建议采用默认值 GB18030,如果需要国际字符可以采用 Unicode。GB18030 数字字母占 1 个字节,普通汉字占 2 个字节,部分繁体及少数民族文字占 4 字节。Unicode 在达梦中采用 UTF-8 编码格式,欧洲的字母字符占 1 到 2 个字节,亚洲的大部分字符占 3 个字节,附加字符为 4 个字节。如果只存储中文和字母数字,一般来说 GB18030 更节省空间一些。生产环境中该参数可依据用户实际需求进行指定。

  • DB_NAME

    初始化数据库名称,默认为 DAMENG。名称为字符串,长度不能超过 128 个字符。可选参数。WINDOWS 下文件名不能包含字符 /*:? <>"|,LINUX 下文件名不能包含字符 /:<>"|。

    生产环境中该参数一般保持默认,或依据用户实际需求进行指定。

  • INSTANCE_NAME

    初始化数据库实例名称,默认为 DMSERVER。名称为字符串,长度不能超过 128 个字符。可选参数。
    生产环境中该参数一般保持默认,或依据用户实际需求进行指定。

  • PORT_NUM

    初始化时设置 dm.ini 中的监听端口号,默认 5236 。服务器配置此参数,有效值范围(1024~65534),发起连接端的端口在 1024~65535 之间随机分配。可选参数。在测试环境或学习中,建议自定义端口号。

    生产环境中该参数一般保持默认,或依据用户实际需求进行指定。

  • SYSDBA_PWD

    初始化时设置 SYSDBA 的密码,不允许缺省。密码为字符串,必须同时包含大写字母、小写字母、数字,不允许与用户名重名。

    数据库创建成功后,SYSDBA 可通过修改用户密码语句修改自己的密码。

  • SYSAUDITOR_PWD

    初始化时设置 SYSAUDITOR 的密码,不允许缺省。密码为字符串,必须同时包含大写字母、小写字母、数字,不允许与用户名重名。

    数据库创建成功后,SYSAUDITOR 可通过修改用户密码语句修改自己的密码。

2. 初始化实例

在root权限下,数据库软件安装目录/bin中使用下列命令:

./dminit  path=/dm/data db_name=DMDB instance_name=PROD port_num=5238 page_size=8 extent_size=16 charset=1 sysdba_pwd=Dameng123 sysauditor_pwd=Dameng123

在实际考试中会指定参数的取值,根据考试要求对参数进行修改即可。

3. 创建实例服务

su - root
cd ../script/root
./dm_service_installer.sh -t dmserver -p PROD -dm_ini /dm/data/DMDB/dm.ini

2_10.png

4. 启动实例服务

在dmdba用户下执行

cd /dm8/bin

./DmServiceDMSERVER start

屏幕截图 20250721 140957.png

服务启停

操作前先登入dmdba操作系统账户:

su - dmdba
cd /dm8/bin
  • 启动服务

    ./DmServicePROD start

  • 停止服务

    ./DmServicePROD stop

  • 查看服务

    ./DmServicePROD status

  • 重启服务

    ./DmServicePROD restart

当出现下列错误时,考虑文件权限不足的问题。

屏幕截图 20250721 141838.png

在root用户下,执行chown -R dmdba:dinstall /optchmod -R 750 /opt即可解决。

除了以服务的方式启动外,还可以这样启动:

在/opt目录下以dmdba用户执行./dm/bin/dmserver ./dameng/DAMENG/dm.ini,等到出现SYSTEM IS READY.即可。

5. 检查验证

使用ps -ef|grep dmserver可以查询 dmserver 进程。

使用netstat -tunlp | grep 523*可以查询相应端口号的进程。

五、数据库管理

1. 访问数据库

方法一、命令行:

使用disql登录的方法,密码和端口号会根据实际设置的情况变化。

cd /dm8/bin
./disql sysdba/'"Dameng123"'@localhost:5236

方法二、图形化:

在配置好图形化之后,可以使用manager管理工具连接数据库。

cd /dm8/tool
./manager

进入管理工具后,左上角新建连接。

2. 修改参数

参数类型分为以下四类:

READ ONLY:手动参数,不能通过SQL命令或函数修改;只能通过修改dm.ini文本文件修改此参数(需要重启数据库才能生效);

SYS:动态(系统级)参数。数据库运行中可以直接修改,即可以修改内存中的值,也可以修改参数文件中的值。可以通过SQL命令或系统函数修改;

SESSION:动态(会话级)参数,数据库运行中可以直接修改,即可以修改内存中的值, 也可以修改参数文件中的值,还可以只修改当前会话的值。可以通过SQL命令或函数修改,且可以只针对当前会话生效;

IN FILE:静态参数,不能修改内存中的值,只能修改参数文件中的值,可以通过SQL命令或函数修改,但需要重启数据库才能生效。

方法一、disql命令行修改sp_set_para_value

sp_set_para_value(SCOPE,'参数名',参数值);

上面这条命令前面可以加select查看结果。
SCOPE:修改范围(0:memory;1:both(memory+spfile);2:spfile)     修改内存值或者修改配置文件中的值。

检查:
select PARA_NAME,PARA_VALUE,PARA_TYPE,FILE_VALUE from v$dm_ini where para_name='参数名';

方法二、disql命令行修改alter system set

ALTER SYSTEM SET ' '=1 both|memory|spfile

方法三、直接修改dm.ini文件

进入数据库实例目录,打开dm.ini文件进行修改

cd /dm/data/DMDB
vim dm.ini

/参数名查找参数,修改值,修改完毕后保存文件,重启数据库即可。

3. 创建表空间

创建表空间:

create tablespace TEST datafile '/dm8/data/DAMENG/TEST01.DBF' size 32 CACHE = NORMAL;
create tablespace TBS datafile '/dm/data/DMDB/TBS01.DBF' size 64 autoextend on next 1 maxsize 1024 CACHE = NORMAL;

给表空间增加数据文件:

alter tablespace TBS add datafile '/dm/data/DMDB/TBS02.DBF' size 64 autoextend on next 1 maxsize 1024;

增加大小:

alter tablespace "TEST" resize datafile 'TEST01.DBF' to 64;

4. 创建用户

例子:创建用户TEST,密码Dameng123,默认表空间为TEST。该用户在登录失败 5次后,账号锁定3分钟,用户在180天后自动过期,拥有创建表、创建视图的权限,查看dmhr.employee、dmhr.department。授予TEST用户RESOURCE角色。

create tablespace TEST datafile '/dm8/data/DAMENG/TEST01.DBF' size 32 CACHE = NORMAL; 

create user TEST identified by "Dameng123"
limit FAILED_LOGIN_ATTEMPS 5 PASSWORD_LIFE_TIME 180 PASSWORD_LOCK_TIME 3
default tablespace "TEST";

grant "PUBLIC","RESOURCE","SOI" to TEST;

grant CREATE TABLE,CREATE VIEW to TEST;

grant SELECT on DMHR.EMPLOYEE to TEST;

grant SELECT on DMHR.DEPARTMENT to TEST;

5. 创建角色

和创建用户类似。

create role ROLEM; 
grant "RESOURCE" to ROLEM; 
grant CREATE TABLE,CREATE VIEW,CREATE INDEX to ROLEM; 
grant SELECT (hire_date) on DMHR.EMPLOYEE to ROLEM; 
grant select (employee_name) on dmhr.employee to ROLEM; 
grant SELECT on DMHR.DEPARTMENT to ROLEM; 
grant UPDATE (PHONE_NUM)on DMHR.EMPLOYEE to ROLEM; 

将rolem 角色授予给TEST用户 
grant rolem to test;

角色的禁用和启用 1:启用  0禁用 
SP_SET_ROLE('ROLEM',0); 
SP_SET_ROLE('ROLEM',1); 

考试例子:

create role ROLEDM;
grant "RESOURCE" to ROLEDM;
grant CREATE TABLE,CREATE VIEW,CREATE INDEX to ROLEDM;
create user TEST identified by "Dameng123" limit FAILED_LOGIN_ATTEMPS 5 PASSWORD_LOCK_TIME 3 default tablespace "TBS";
grant "ROLEDM" to TEST; 

6. 权限管理

修改用户密码:
alter user sysdba identified by Dameng123;

修改用户的权限:
revoke CREATE VIEW from TEST;

修改用户的状态(锁定和解锁用户):
alter user test ACCOUNT LOCK; alter user TEST ACCOUNT UNLOCK;

删除用户:
Drop user test;

六、模式对象管理

创建表、约束、导入脚本数据、索引、视图等。

这一步需要使用图形化,命令行操作会比较麻烦,需要在manager中连接数据库。

1. 创建表

模式-DMHR-表(右击)-新建表

rBlJjp1iZHzF5JGgYWDoRhk5iVUffd5uNCfiqLDfWlc.png
sTAFMg7VT2NWHUEyF6IJpSQDFad5NZRi_oLK1cpn2I.pngASqME90m9wqcaYYcv1VhInWvHZeOwGXMggENxP9XZQ.png

CREATE TABLE "DMHR"."EMP1"
(
"ID" INT NOT NULL,
"NAME" VARCHAR(50),
"SALARY" NUMBER(7,2),
"DEPTID" INTEGER,
NOT CLUSTER PRIMARY KEY("ID"),
UNIQUE("NAME"),
FOREIGN KEY("DEPTID") REFERENCES "DMHR"."DEPARTMENT"("DEPARTMENT_ID"),
CHECK(SALARY > 8000)) STORAGE(ON "MAIN", CLUSTERBTR) ;

维护表,例子如下:

增加列
alter table TEST.TEST1 add column(NAME VARCHAR(20)); 
修改列 
alter table TEST.TEST1 modify "NAME" VARCHAR(30); 
重命名列 
alter table test.test1 RENAME COLUMN name to addr; 
重命名表 
alter table test1 rename to  test6; 
删除列 
alter table TEST.TEST6 drop column "ADDR"; 
删除表
drop table TEST.TEST6; 

2. 约束

即主键约束、外键约束、唯一约束等。

非空约束 
alter table hrtest.t_testpid modify pname not null; 
唯一约束 
alter table hrtest.t_testpid add CONSTRAINT uk_testpid_email unique (email); 
主键约束 
alter table hrtest.t_testpid ADD CONSTRAINT pk_testpid_pid PRIMARY KEY(pid); 
检验约束 
alter table hrtest.t_testpid add salary number(10,2); 
alter table hrtest.t_testpid ADD CONSTRAINT ck_testpid_salary CHECK (salary>=2100); 
外键约束(外键引用一张表的主键或者唯一键) 
alter table hrtest.t_test  add CONSTRAINT fk_test_id FOREIGN KEY(id) REFERENCES hrtest.t_testpid(pid); 

3. 导入脚本数据

start 路径/脚本名.sql

4. 索引

create index "TEST".IND_NAME on DMHR.EMPLOYEE("EMPLOYEE_NAME");

Alter index test.IND_NAME rebuild; 
Alter index test.IND_NAME rebuild online; 

Drop index test.IND_NAME;

考试例子:

create index IND_STU_NAME on STUDENTS("STUDENT_NAME");

5. 视图

create or replace view test.view_emp as 
select employee_id,employee_name,salary,department_id from dmhr.EMPLOYEE where department_id=101; 

考试例子:

CREATE OR REPLACE VIEW VIEW_NUM AS
SELECT S.STUDENT_MAJOR, M.MAJOR_NAME, COUNT(S.STUDENT_ID) as STUDENT_NUMBER
FROM MAJORS M 
INNER JOIN STUDENTS S ON M.MAJOR_ID = S.STUDENT_MAJOR
GROUP BY S.STUDENT_MAJOR, M.MAJOR_NAME
HAVING COUNT(S.STUDENT_ID) > 15;

物化视图

CREATE MATERIALIZED VIEW ...

七、归档与备份

1. 开启归档

# dmdba创建归档目录
mkdir -p /dm8/arch                   
# 开启归档
alter database mount;
ALTER DATABASE ARCHIVELOG;
alter database add archivelog 'DEST=/dm/arch, TYPE=LOCAL, FILE_SIZE=128';
alter database open;

# 检查
select STATUS$ , MODE$ from v$instance;
select ARCH_MODE from v$database;

如果执行时报错:系统未配置归档,解决方法为:

打开该数据库实例的dm.ini文件,将其中ARCH_INI参数值改为1,即可解决。

2. 物理备份-冷备(脱机)

要求:数据库服务关闭,DMAP服务开启。

/dm8/bin/DmServiceDMSERVER stop

./dmrman
backup database '/dm8/data/DAMENG/dm.ini' full backupset '/dm8/backup/rmanbackup';
#查看信息
show backupset '/dm8/backup/rmanbackup' info meta;

3. 物理备份-热备(联机)

要求:DMAP服务开启,数据库实例开启,数据库是归档模式。

检查状态:
select name,arch_mode from v$database;

使用disql:

backup database full backupset '/dm/backup/FULL_BACK';
backup database increment backupset '/dm8/backup/icrbak02';

其他类型备份:

备份表
backup table "TEST"."EMP" to "TAB_TEST_EMP_2022_02_23_06_03_40" backupset 'TAB_TEST_EMP_2022_02_23_06_03_40';
备份表空间
backup tablespace "STU" full to "TS_STU_FULL_2022_02_23_06_05_25" backupset 'TS_STU_FULL_2022_02_23_06_05_25'; 
备份归档
backup archivelog to "ARCH_2022_02_23_06_06_23" backupset '/dm8/data/DAMENG/bak/ARCH_2022_02_23_06_06_23' device type disk;

4. 逻辑备份

使用dexp逻辑导出:

库级
/dm8/bin/dexp sysdba/Dameng123 DIRECTORY=/dm8/backup FILE=full.dmp FULL=Y 
LOG=full.log
用户级
/dm/bin./dexp USERID=TEST/'"Dameng123"':5238 DIRECTORY=/dm/backup FILE=test.dmp LOG=test.log OWNER=TEST  
模式级
/dm8/bin/dexp SYSDBA/'"Dameng123"' DIRECTORY=/dm8/backup FILE=dmhr.dmp SCHEMAS=DMHR  LOG=dmhr.log
表级
/dm8/bin/dexp SYSDBA/Dameng123 DIRECTORY=/dm8/backup FILE=job.dmp TABLES=DMHR.JOB LOG=job.log

八、作业

使用disql。

1. 创建代理环境

首先使用disql连接数据库实例,随后执行:

SP_INIT_JOB_SYS(1);

2. 创建全量备份

举例,全量备份定时每周六23点00分进行:

call SP_CREATE_JOB('JOB_FULL_BAK_TIMELY',1,0,'',0,0,'',0,'定时全量备份');

call SP_JOB_CONFIG_START('JOB_FULL_BAK_TIMELY');

call SP_ADD_JOB_STEP('JOB_FULL_BAK_TIMELY', 'STEP_FULL_BAK', 6, '01000000/dm/backup', 1, 2, 0, 0, NULL, 0);

call SP_ADD_JOB_SCHEDULE('JOB_FULL_BAK_TIMELY', 'SCHEDULE_FULL_BAK', 1, 2, 1, 64, 0, '23:00:00', NULL, '2020-12-16 22:00:00', NULL, '');

call SP_JOB_CONFIG_COMMIT('JOB_FULL_BAK_TIMELY');

3. 创建增量备份

举例,增量备份定时每日23点00分进行(除周六):

call SP_CREATE_JOB('JOB_INCREMENT_BAK_TIMELY',1,0,'',0,0,'',0,'定时增量备份');

call SP_JOB_CONFIG_START('JOB_INCREMENT_BAK_TIMELY');

call SP_ADD_JOB_STEP('JOB_INCREMENT_BAK_TIMELY', 'STEP_INCREMENT_BAK', 6, '11000000/dm/backup|/dm/backup', 1, 2, 0, 0, NULL, 0);

call SP_ADD_JOB_SCHEDULE('JOB_INCREMENT_BAK_TIMELY', 'SCHEDULE_INCREMENT_BAK', 1, 2, 1, 63, 0, '23:00:00', NULL, '2020-12-16 22:00:00', NULL, '');

call SP_JOB_CONFIG_COMMIT('JOB_INCREMENT_BAK_TIMELY');

在实际使用中,路径和时间都需要更改。

九、ODBC

按下述步骤执行即可。

#root:
cd /opt
tar -xzvf unixODBC-2.3.0.tar.gz
cd ./unixODBC-2.3.0
./configure
make && make install
odbcinst -j
cd /usr/local/etc/
#opt目录下有模板,要修改odbcinst.ini和odbc.ini

vi odbc.ini

[dm8] 
Description = DM ODBC DSN 
Driver = DM8 ODBC DRIVER            
SERVER = localhost           
UID = SYSDBA              
PWD = Dameng123              
TCP_PORT = 5238

vi odbcinst.ini

[DM8 ODBC DRIVER] 
Description = ODBC DRIVER FOR DM8 
Driver = /dm/d/bin/libdodbc.so 
#bin目录下和/dm8/drivers/odbc/libdodbc.so两个位置都有

su - dmdba

isql dm8
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服