注册
DCA考试总结
专栏/技术分享/ 文章详情 /

DCA考试总结

M4x7 2025/08/29 12 0 0
摘要

考试心得:
1、考试整体难度不高,考验熟练度,理解每个知识点,整理好,多实操。
2、考试时有图形化和命令行两种方式,建议都有所掌握。数据库初始化、物理备份用命令行会快很多,但创建用户、作业的时候用图形化可以避免出错。考试时远程连接工具的刷新率较低,稍有卡顿,但图形化工具是绝对可以用的。
3、建议先在配置文件中设置变量$DISPLAY,这样新开一个终端时就不用重新设置了。
4、考试时如果屏幕中只有左上角有图像,可以右击选择显示设置,调整分辨率,先稍微调小再调回来。

考试内容:

1、数据库安装/dm、实例创建(指定页大小、字符集、数据库密码);
2、参数修改、创建表空间、创建用户、角色、权限管理;
3、创建表、约束、导入脚本数据、索引、视图等;
4、开归档、物理备份、逻辑备份;
5、DM作业、ODBC配置等。

一、安装前准备

1 创建用户
groupadd dinstall
useradd -g dinstall dmdba
passwd dmdba

id dmdba
2 创建安装路径并修改权限
mkdir /dm
chown dmdba:dinstall -R /dm
ls -ld /dm

打开两个控制台 ,一个root,一个dmdba

3 配置环境变量
su - dmdba
vi ~/.bash_profile

export LD_LIBRARY_PATH="$LD_LIBARARY_PATH:/dm/bin"
export DM_HOME="/dm"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

source ~/.bash_profile

root:
xhost +
echo $DISPLAY
这里会显示  :0.0 或者 :2.0
vi ~/.bashrc
export DISPLAY=:2.0
source ~/.bashrc
检查:
echo $DISPLAY

二、 数据库安装和实例创建

数据库安装/dm、实例创建(指定页大小、字符集、数据库密码);

4 安装数据库软件
dmdba:
命令行:
./DMInstall.bin -i
图形化:
./DMInstall.bin

安装完成之后根据提示执行配置脚本

root:
/dm/script/root/root_installer.sh

image

注:如果tmp空间不足

dmdba:
mkdir ~/tmp
vi ~/.bash_profile 

export DM_INSTALL_TMPDIR=/home/dmdba/tmp

source ~/.bash_profile
5 创建实例

方法一、dbca图形化

也可以图形化安装数据库后,点击初始化实例直接进入dbca

[dmdba@localhost ~]$ cd /dm/tool/
[dmdba@localhost tool]$ ./dbca.sh

注意初始化参数页面不要使用滚轮,小心误操作

image

结束后,复制命令注册服务(三击选中该行)

root:
mv /dm/bin/DmServiceDMSERVER.service /usr/lib/systemd/system/DmServiceDMSERVER.service
systemctl enable DmServiceDMSERVER.service
systemctl start DmServiceDMSERVER.service

方法二、dminit命令行

dmdba:
./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
su - root
/dm/script/root/dm_service_installer.sh -t dmserver -p PROD -dm_ini /dm/data/DMDB/dm.ini

dmdba:
/dm/bin/DmServicePROD start 

检查

ps -ef|grep dmserver
netstat -ntl|grep 523*

三、数据库管理

参数修改、创建表空间、创建用户、角色、权限管理;

6 访问数据库

方法一、 disql命令行

cd /dm/bin
./disql sysdba/Dameng123@localhost:5238
简写:
./disql sysdba/Dameng123

方法二、 manager图形化

配置好环境变量后使用dmdba可以直接
manager

左上角新建连接

7 参数修改

方法一、命令行修改sp_set_para_value

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

上面这条命令前面可以加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='参数名';
select PARA_NAME,PARA_VALUE,PARA_TYPE,FILE_VALUE from v$dm_ini where para_name='COMPATIBLE_MODE';

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

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

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

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

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

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

方法三、 console图形化工具修改参数,相当于直接修改dm.ini,只能重启服务器之后才会生效。

8 创建表空间

manager:右击表空间-新建表空间

例子:创建表空间TEST,数据文件/dm/data/DAMENG/TEST01.DBF,数据文件初始大小为32M.

image

image

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

同样的地方可以修改表空间。右击表空间然后修改。

给表空间增加数据文件。

alter tablespace "TEST" add datafile '/dm/data/DAMENG/TEST02.DBF' size 128;

增加大小

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

脱机/联机:右击表空间,点击脱机/联机

9 创建用户

用户-管理用户(右击)-新建用户

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

image

image

image

image

image

create tablespace TEST datafile '/dm/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;
10 创建角色

角色(右击)-新建角色

和创建角色相似。

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); 
11 权限管理

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

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

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

删除用户:
Drop user test;

四、模式对象管理

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

12 创建表

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

image

image

image

create table DMHR.EMP1
(
	ID INT not null ,
	NAME VARCHAR(50),
	SALARY NUMBER(7, 2),
	DEPTID INTEGER,
	primary key("ID")
)
storage(initial 1, next 1, minextents 1, fillfactor 0)
;

alter table DMHR.EMP1 add  check(salary>8000);

alter table DMHR.EMP1 add  unique("NAME");

alter table DMHR.EMP1 add constraint foreign key("DEPTID") references DMHR.DEPARTMENT("DEPARTMENT_ID");


sp_tabledef('TEST','TEST3');
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) ;

CREATE TABLE "TEST"."MAJORS"
(
"MAJOR_ID" INT NOT NULL,
"MAJOR_NAME" VARCHAR(50),
"DEPARTMENT_NAME" VARCHAR(50),
NOT CLUSTER PRIMARY KEY("MAJOR_ID"));

CREATE TABLE "TEST"."COURSES"
(
"COURSE_ID" INT NOT NULL,
"COURSE_NAME" VARCHAR(50) NOT NULL,
"MAJOR_ID" INT,
"TEACHER_NAME" VARCHAR(50),
NOT CLUSTER PRIMARY KEY("COURSE_ID") 
FOREIGN KEY("MAJOR_ID") REFERENCES "TEST"."MAJORS"("MAJOR_ID"));


CREATE TABLE "TEST"."STUDENTS"
(
"STUDENT_ID" INT NOT NULL,
"STUDENT_NAME" VARCHAR(20) NOT NULL,
"STUDENT_SEX" VARCHAR(6),
"STUDENT_BIRTH" DATE NOT NULL,
"STUDENT_ADDR" VARCHAR(100) NOT NULL,
"STUDENT_MAJOR" INT,
NOT CLUSTER PRIMARY KEY("STUDENT_ID") 
FOREIGN KEY("STUDENT_MAJOR") REFERENCES "TEST"."MAJORS"("MAJOR_ID"));

维护

增加列 
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; 
13 约束
非空约束 
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); 
14 导入脚本数据
start ().sql
15 索引
create index "DMHR".IND_NAME on  DMHR.EMPLOYEE("EMPLOYEE_NAME");
create index IND_STU_NAME on STUDENTS("STUDENT_NAME");

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

Drop index test.IND_NAME;
16 视图
create or replace view test.view_emp as 
select employee_id,employee_name,salary,department_id from dmhr.EMPLOYEE where department_id=101; 

物化视图

CREATE MATERIALIZED VIEW ...

五、归档与备份

17 开启归档

图形化:manager-服务器连接(右击)-管理服务器

系统管理-配置-转换

归档配置-归档-加号-添加归档配置

系统管理-打开-转换

image

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

# 检查
select STATUS$ , MODE$ from v$instance;
select ARCH_MODE from v$database;
18 物理备份-冷备(脱机)
/dm/bin/DmServiceDMSERVER stop

方法一、console图形化

image

image

方法二、dmrman命令行

backup database '/dm/data/DAMENG/dm.ini' full backupset '/dm/backup/rmanbackup';
查看信息
show backupset '/dm/backup/rmanbackup' info meta;
19 物理备份-热备(联机)

要求:DMAP 服务是打开的,数据库实例也是打开的,数据库是归档模式

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

方法一、manager图形化

备份-库备份(右击)-新建库备份

全备

image

image

出现这个是因为备份目录不是默认的目录,不影响,忽略即可

增备

image

方法二、disql

backup database full backupset '/dm/backup/fullbak02';
backup database increment backupset '/dm/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 '/dm/data/DAMENG/bak/ARCH_2022_02_23_06_06_23' device type disk;
20 逻辑备份

dexp、dimp

方法一、图形化

manager中任意元素右击-导出dmp

方法二、dexp命令行

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

六、作业

第一步:代理(右击)-创建代理环境

SP_INIT_JOB_SYS(1);  

作业(右击)-新建作业

案例1:新建作业JOB1,每周天,周三晚上1:00做数据库全备

添加作业步骤

image

新建作业调度

image

call SP_CREATE_JOB('JOB1',1,0,'',0,0,'',0,'');

call SP_JOB_CONFIG_START('JOB1');

call SP_ADD_JOB_STEP_EX('JOB1', 'B1', 6, '00000000/dm/data/DAMENG/bak', 0, 0, 0, 0, NULL, 0, '');

call SP_ADD_JOB_SCHEDULE('JOB1', 'D1', 1, 2, 1, 9, 0, '01:00:00', NULL, '2025-08-20 16:20:29', NULL, '');

call SP_JOB_CONFIG_COMMIT('JOB1');

案例2:新建作业JOB2,每周一、二、四、五、六1:00对数据库做增量备份

image

call SP_CREATE_JOB('JOB2',1,0,'',0,0,'',0,'');

call SP_JOB_CONFIG_START('JOB2');

call SP_ADD_JOB_STEP_EX('JOB2', 'B2', 6, '10000000/dm/data/DAMENG/bak', 0, 0, 0, 0, NULL, 0, '');

call SP_ADD_JOB_SCHEDULE('JOB2', 'D2', 1, 2, 1, 118, 0, '01:00:00', NULL, '2025-08-20 16:25:16', NULL, '');

call SP_JOB_CONFIG_COMMIT('JOB2');

七、ODBC

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

vi odbc.ini

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

vi odbcinst.ini

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

su - dmdba

isql dm
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;
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服