DCA 考试重点初版

用途:本文只写 DCA 考试实操内容。流程按"考试准备 -> 环境检查 -> 挂载安装 -> 建库启停 -> 对象管理 -> 备份接口 -> 最后检查"整理。
说明:笔记中的 SQL 都是基础语句,不包含复杂操作,也不一定完全符合考试题目要求。考试时建议优先使用 Manager 等图形化工具完成题目要求,命令和 SQL 主要用于理解原理、查看 DDL、排错和图形化失败时兜底。

1. 考试注意

1.1 开两个终端窗口

创建dmdba用户后同时开两个 SSH 窗口:

窗口 登录用户 用途
窗口 1 root 防火墙、SELinux、挂载 ISO、建用户、注册服务、启停服务
窗口 2 dmdba 安装、建库、DIsql、导入导出、执行 SQL

两个窗口都先执行图形界面 DISPLAY 配置,防止后面打开安装器或 Manager 工具失败:

bash 复制代码
export DISPLAY=本机IP:0.0
echo $DISPLAY

说明:

  • 本机IP 是 Windows 上 Xmanager 监听的地址。
  • 如果使用 Xshell 的 X11 Forwarding,echo $DISPLAY 可能显示 localhost:10.0;如果考试要求统一用 Xmanager 直连,就按 export DISPLAY=本机IP:0.0
  • 两个窗口都执行一次,避免切换用户后环境变量丢失。

打开配置文件:

bash 复制代码
vi /etc/ssh/sshd_config

重点检查这两项:

text 复制代码
X11Forwarding yes
X11UseLocalhost yes

考试说明:

  • 要利用好图形化工具,安装、建库、表空间、用户权限、日志管理等复杂操作尽量使用图形化工具完成。
  • 图形化工具能减少长命令参数写错的概率;命令行模板主要作为图形化失败时的兜底和检查手段。
  • 如果改过 sshd_config,通常需要重启 sshd;考试现场优先少动服务器,只有 X11 转发失败时再排查这里。

1.2 配置 DM_HOME 和 PATH

bash 复制代码
export DM_HOME=/dm/dmdbms
export PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH
export LD_LIBRARY_PATH=$DM_HOME/bin:$LD_LIBRARY_PATH

检查:

bash 复制代码
echo $DM_HOME
which disql
which dexp
which dimp

说明:

  • export 只对当前终端生效。
  • root 窗口和 dmdba 窗口都可能需要分别执行。
  • 配好后执行 disqldexpdimp 可以少写完整路径。

1.3 关闭防火墙和 SELinux

bash 复制代码
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

永久关闭 SELinux:

bash 复制代码
vi /etc/selinux/config

把配置改成:

text 复制代码
SELINUX=disabled

考试注意:

  • setenforce 0 是临时关闭,重启后可能恢复。

2. 环境检查与用户准备

2.1 检查系统和资源

bash 复制代码
hostname
ip addr
df -h
free -m
uname -a
lscpu
lsblk

2.2 创建安装用户和目录

bash 复制代码
groupadd dinstall
useradd -g dinstall -m dmdba
passwd dmdba
id dmdba
bash 复制代码
mkdir -p /dm/dmdbms /dm/data /dm/backup
chown -R dmdba:dinstall /dm
chmod -R 775 /dm
ls -ld /dm /dm/dmdbms /dm/data /dm/backup

说明:

  • -g dinstall 指定主组。
  • -m 自动创建 /home/dmdba
  • 安装目录、数据目录、备份目录必须让 dmdba 可写。

3. 挂载 ISO 与安装

3.1 挂载 ISO

虚拟机里已经把 DM ISO 挂到 CD/DVD 后,在 Linux 中执行:

bash 复制代码
mkdir -p /mnt/dm
mount /dev/cdrom /mnt/dm
ls /mnt/dm

把安装文件复制出来:

bash 复制代码
cp /mnt/dm/DMInstall.bin /home/dmdba/
chown dmdba:dinstall /home/dmdba/DMInstall.bin
chmod +x /home/dmdba/DMInstall.bin
ls -lh /home/dmdba/DMInstall.bin

复制完成后可以卸载 ISO:

bash 复制代码
umount /mnt/dm

说明:

  • mount 是把 ISO 光盘内容挂到 Linux 目录下。
  • 安装文件已经复制到 /home/dmdba 后,后续安装不再依赖 CD-ROM,可以 umount
  • 如果提示设备忙,先确认没有终端停留在 /mnt/dm 目录。

3.2 启动安装

图形安装:

bash 复制代码
su - dmdba
export DISPLAY=本机IP:0.0
cd /home/dmdba
./DMInstall.bin

命令行安装兜底:

bash 复制代码
./DMInstall.bin -i

如果提示 /tmp 空间不足,手动指定大于 800M 的临时目录:

bash 复制代码
# 若提示 /tmp 空间不足,需手动指定大于 800M 的临时目录
export DM_INSTALL_TMPDIR=/home/dmdba/  # 临时向系统广播这个环境变量

考试注意:

  • DM_INSTALL_TMPDIR 只对当前终端临时生效,换窗口后要重新 export。
  • 图形界面打不开时,先检查 DISPLAY,再考虑用 ./DMInstall.bin -i

4. dminit 初始化数据库

考试建议优先使用 dbca 图形化工具初始化数据库,因为它可以在建库流程里顺带完成实例服务注册,后续使用服务脚本启动更方便;dminit 命令行主要作为兜底方式和参数复习。

4.1 先看帮助

bash 复制代码
cd /dm/dmdbms/bin
./dminit help

说明:

  • dminit help 用来查看初始化参数。
  • 考试不确定参数名时,先看 help,不要硬背错参数。

4.2 初始化模板

bash 复制代码
cd /dm/dmdbms/bin

./dminit PATH=/dm/data \
DB_NAME=DAMENG \
INSTANCE_NAME=DMSERVER \
PORT_NUM=5236 \
SYSDBA_PWD=Dameng123 \
SYSAUDITOR_PWD=Dameng123

一行版:

bash 复制代码
./dminit PATH=/dm/data DB_NAME=DAMENG INSTANCE_NAME=DMSERVER PORT_NUM=5236 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123

参数重点:

参数 含义
PATH 数据库文件生成目录
DB_NAME 数据库名,常见为 DAMENG
INSTANCE_NAME 实例名,常见为 DMSERVER
PORT_NUM 监听端口,默认常见为 5236
SYSDBA_PWD SYSDBA 密码
SYSAUDITOR_PWD 审计用户密码

初始化后重点确认:

bash 复制代码
ls /dm/data/DAMENG
ls /dm/data/DAMENG/dm.ini

5. 数据库服务启动、停止与连接

5.1 服务注册

注册服务需要 root:

bash 复制代码
su - root
cd /dm/dmdbms/script/root
./dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /dm/data/DAMENG/dm.ini

说明:

  • -t dmserver 表示注册数据库服务。
  • -p DMSERVER 决定服务名后缀,通常生成 DmServiceDMSERVER
  • -dm_ini 必须指向真实实例的 dm.ini

5.2 启停方式

数据库服务启动停止常见有四种方式:

  • 前台启动:直接执行 dmserver dm.ini,适合临时测试和看前台日志。
  • systemctl:通过系统服务管理,前提是已经注册服务。
  • 服务脚本:使用 DmServiceDMSERVER start/status/stop,推荐考试优先使用这种形式。
  • dmservice 工具:图形化服务管理工具,适合图形界面可用时操作。

考试原则:

  • 启停尽量使用同一种方式,不要一会儿前台、一会儿 systemctl 混着来。
  • 推荐使用服务脚本形式,例如 /dm/dmdbms/bin/DmServiceDMSERVER start/dm/dmdbms/bin/DmServiceDMSERVER stop
  • 如果前台启动,关闭时不要直接暴力关窗口,优先按题目要求规范停止。

5.3 连接验证

密码含特殊字符

bash 复制代码
/dm/dmdbms/bin/disql SYSDBA/'"Dameng@1234"':5236

远程

sql 复制代码
/dm/dmdbms/bin/disql SYSDBA/'"Dameng@1234"'@远程ip:远程端口

6. Manager 图形工具与 DDL 查看

表空间、用户、角色、授权、联机日志等整节内容都可以用 DM Manager 图形化工具操作。Manager 的优势是直观,适合考试里不确定 SQL 语法时快速完成对象创建。

bash 复制代码
/dm/dmdbms/tool/manager

考试注意:

  • Manager 创建表空间、用户、角色、授权后,一般可以查看对应 DDL。
  • 会看 DDL 很重要:能确认图形化操作背后实际执行了什么 SQL。

7. 表空间、数据文件与联机日志

7.1 创建表空间

sql 复制代码
CREATE TABLESPACE DMTBS
DATAFILE '/dm/data/DAMENG/DMTBS01.DBF'
SIZE 128
AUTOEXTEND ON NEXT 32 MAXSIZE 1024;

验证:

sql 复制代码
SELECT NAME FROM V$TABLESPACE;
SELECT PATH, CLIENT_PATH FROM V$DATAFILE;

7.2 增加和扩展数据文件

sql 复制代码
ALTER TABLESPACE DMTBS
ADD DATAFILE '/dm/data/DAMENG/DMTBS02.DBF'
SIZE 128
AUTOEXTEND ON NEXT 32 MAXSIZE 1024;
sql 复制代码
ALTER TABLESPACE DMTBS
RESIZE DATAFILE '/dm/data/DAMENG/DMTBS01.DBF' TO 256;

7.3 迁移表空间数据文件

迁移表空间数据文件时,RENAME DATAFILE 类似 Linux 的 mv:既可以重命名,也可以移动路径。

操作顺序:

sql 复制代码
ALTER TABLESPACE DMTBS OFFLINE;

ALTER TABLESPACE DMTBS
RENAME DATAFILE '/dm/data/DAMENG/DMTBS01.DBF'
TO '/dm/data/DAMENG/DMTBS01_NEW.DBF';

ALTER TABLESPACE DMTBS ONLINE;

考试注意:

  • 迁移表空间数据文件前,该表空间必须脱机。
  • 迁移完成后必须恢复为联机状态。
  • 操作前后都查 V$DATAFILE,确认路径已经变更。

7.4 联机日志管理

联机日志又叫重做日志,记录数据库修改,默认两个文件,写满了就开始覆盖最旧记录。

查看日志:

sql 复制代码
SELECT GROUP_ID, FILE_ID, PATH, RLOG_SIZE FROM V$RLOGFILE;

考试注意:

  • 联机日志文件迁移必须在 MOUNT 状态下操作。
  • 优先在manager图形界面里做,并查看 DDL。

8. 用户、角色与授权

8.1 创建用户和角色

sql 复制代码
CREATE USER DMTEST IDENTIFIED BY "Dameng123" DEFAULT TABLESPACE DMTBS;

CREATE ROLE R_DCA;
GRANT CREATE TABLE, CREATE VIEW, CREATE INDEX TO R_DCA;
GRANT R_DCA TO DMTEST;

8.2 系统权限和对象权限

系统权限:

sql 复制代码
GRANT CREATE TABLE, CREATE VIEW, CREATE INDEX TO DMTEST;
REVOKE CREATE VIEW FROM DMTEST;

对象权限:

sql 复制代码
GRANT SELECT, INSERT, UPDATE ON DMHR.EMPLOYEE TO DMTEST;
REVOKE UPDATE ON DMHR.EMPLOYEE FROM DMTEST;

带转授权:

sql 复制代码
GRANT SELECT ON DMHR.EMPLOYEE TO DMTEST WITH GRANT OPTION;

考试注意:

  • 系统权限不带 ON 对象
  • 对象权限必须写 ON 模式名.对象名
  • Manager 图形化授权后,也要能看懂对应的 GRANT / REVOKE DDL。

检查:

sql 复制代码
SELECT USERNAME, DEFAULT_TABLESPACE FROM DBA_USERS WHERE USERNAME='DMTEST';
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE='DMTEST';
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='DMTEST';
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE='DMTEST';

9. SQL 脚本执行与提交

9.1 执行 SQL 文件

如果 SQL 文件在当前目录,先确认路径:

bash 复制代码
pwd
ls

进入 DIsql 后推荐用绝对路径:

sql 复制代码
START /home/dmdba/UTF-8/1-CREATESCHEMA.sql;
COMMIT;

也可以在 shell 中重定向执行:

bash 复制代码
/dm/dmdbms/bin/disql SYSDBA/Dameng123@127.0.0.1:5236 < /home/dmdba/UTF-8/1-CREATESCHEMA.sql

执行后再登录补一次:

sql 复制代码
COMMIT;

考试注意:

  • START xxx.sql 后统一手写一次 COMMIT;
  • 因为最后一句是 DDL 才会自动提交;为了保险,所有脚本执行后统一手动提交。
  • 相对路径依赖 DIsql 当前工作目录,考试推荐绝对路径。

10. 模式对象高频模板

本节 SQL 只用于理解对象类型和兜底练习。考试中表、约束、索引、视图、物化视图、序列、同义词等对象,尽量使用 Manager 图形化工具完成,并通过查看 DDL 确认实际执行语句。

10.1 表、约束、索引

sql 复制代码
CREATE TABLE DMTEST.T_STUDENT(
  ID INT PRIMARY KEY,
  NAME VARCHAR(50) NOT NULL,
  AGE INT CHECK(AGE BETWEEN 0 AND 120),
  DEPT_ID INT
);

CREATE INDEX IDX_STUDENT_DEPT ON DMTEST.T_STUDENT(DEPT_ID);
sql 复制代码
ALTER INDEX IDX_STUDENT_DEPT REBUILD;
DROP INDEX IDX_STUDENT_DEPT;

10.2 视图

sql 复制代码
CREATE VIEW DMTEST.V_STUDENT AS
SELECT ID, NAME, AGE
FROM DMTEST.T_STUDENT
WHERE AGE >= 18;

只读视图:

sql 复制代码
CREATE VIEW DMTEST.V_STUDENT_RO AS
SELECT ID, NAME
FROM DMTEST.T_STUDENT
WITH READ ONLY;

10.3 物化视图、序列、同义词

sql 复制代码
CREATE MATERIALIZED VIEW DMTEST.MV_STUDENT_DEPT
REFRESH COMPLETE ON DEMAND
AS
SELECT DEPT_ID, COUNT(*) CNT
FROM DMTEST.T_STUDENT
GROUP BY DEPT_ID;

CALL DBMS_MVIEW.REFRESH('DMTEST.MV_STUDENT_DEPT');
sql 复制代码
CREATE SEQUENCE DMTEST.SEQ_STUDENT_ID
START WITH 1
INCREMENT BY 1
NOCYCLE
CACHE 20;
sql 复制代码
CREATE SYNONYM EMP FOR DMHR.EMPLOYEE;
CREATE PUBLIC SYNONYM PUB_EMP FOR DMHR.EMPLOYEE;

考试注意:

  • 同义词只是别名,不等于授权。
  • 序列第一次不能直接用 CURRVAL,先用 NEXTVAL
  • 物化视图保存结果,普通视图只保存 SQL 定义。

11. 逻辑导出导入

准备目录:

bash 复制代码
mkdir -p /dm/backup/dexp
chown -R dmdba:dinstall /dm/backup
cd /dm/dmdbms/bin

全库导出:

bash 复制代码
./dexp SYSDBA/Dameng123 directory=/dm/backup/dexp file=fulldb.dmp log=fulldb.log full=Y

全库导入:

bash 复制代码
./dimp SYSDBA/Dameng123 directory=/dm/backup/dexp file=fulldb.dmp log=imp_full.log full=Y

模式导出:

bash 复制代码
./dexp SYSDBA/Dameng123 directory=/dm/backup/dexp file=dmhr.dmp log=dmhr.log schemas=DMHR

模式导入并重映射:

bash 复制代码
./dimp SYSDBA/Dameng123 directory=/dm/backup/dexp file=dmhr.dmp log=imp_dmhr.log remap_schema=DMHR:DMTEST

检查:

bash 复制代码
ls -lh /dm/backup/dexp

考试注意:

  • dexp/dimp 是逻辑导出导入,不等同于物理备份。
  • directoryfilelog 三个参数必须写清楚。
  • 模式导入前先准备目标用户、默认表空间和权限。

13. ODBC 和 dmPython

13.1 ODBC

配置驱动:

ini 复制代码
[DM ODBC DRIVER]
Description = ODBC DRIVER FOR DM
Driver = /dm/dmdbms/bin/libdodbc.so

配置数据源:

ini 复制代码
[DM]
Description = DM ODBC DSN
Driver = DM ODBC DRIVER
SERVER = 127.0.0.1
UID = SYSDBA
PWD = Dameng123
TCP_PORT = 5236

检查:

bash 复制代码
odbcinst -j
isql DM SYSDBA Dameng123

13.2 dmPython

bash 复制代码
cd /dm/dmdbms/drivers/python/dmPython
python3 setup.py install

测试:

python 复制代码
import dmPython

conn = dmPython.connect(user='SYSDBA', password='Dameng123', server='127.0.0.1', port=5236)
cur = conn.cursor()
cur.execute('select 1')
print(cur.fetchone())
conn.close()

考试注意:

  • ODBC 最容易错的是驱动路径。
  • dmPython 最容易错的是 LD_LIBRARY_PATH、端口、密码。
  • 配置完成后必须真实连接验证。

15. 高频易错点

  • 两个窗口都要配置 export DISPLAY=本机IP:0.0
  • 防火墙和 SELinux 开头先处理,避免后面连接失败。
  • dminit 是初始化数据库,不是安装软件。
  • 注册服务的 -dm_ini 必须指向真实 dm.ini
  • 启停服务尽量使用同一种方式。
  • Manager 可以做表空间、授权、日志等操作,同时注意查看 DDL。
  • 迁移表空间数据文件:表空间先 OFFLINE,迁移后 ONLINE
  • 迁移联机日志:必须在 MOUNT 状态下操作。
  • START xxx.sql 后统一 COMMIT;
  • 同义词不是授权,能解析对象名不代表有访问权限。
  • dexp/dimp 导入前准备好目标用户、表空间、目录权限。
相关推荐
留白_1 小时前
numpy学习
学习·numpy
花岛溯1 小时前
AI产品经理学习 DAY4 · Cursor 生成figma 原型
学习·产品经理·figma
-To be number.wan1 小时前
计算机组成原理 | Cache替换算法
学习·计算机组成原理
kgduu2 小时前
cosmos学习笔记
笔记·学习
AI_零食2 小时前
鸿蒙PC Electron跨平台应用开发:辗转相除法计算器实现详解
前端·学习·华为·electron·开源·鸿蒙·鸿蒙系统
weixin_428005302 小时前
C#调用 AI学习从0开始-第2阶段(Function Calling+工具调用智能体)-第9天实战
人工智能·学习·ai·c#·functioncalling
SNSZR13 小时前
2026 AI实操五大学习思路:破解碎片化自学无法落地商用项目的核心痛点
人工智能·学习
落地加湿器3 小时前
从Hermes cli的源代码中学习skill
人工智能·python·学习·智能体·源码解读
MartinYeung53 小时前
[论文学习]人工智慧启用系统的隐私增强技术:威胁分析、PETs 应用框架
学习·威胁分析