DCP培训考试学习心得
写在最前面,笔试考试最少要把复习题刷2遍,3遍以上更好,俗话说的好,刷题千变,其意自现,除了上课的笔记,有空还是要看一下官方文档的几本书,特别是管理员手册,对很多概念有详细解释。
实操考试考察的还是对操作的熟练度。四个小时的时间看似很长,但是如果有某个地方卡壳,耽误了时间,可能就会出现做不完的情况。给最后一道大题留下的时间,最好有1个小时以上。
平时还是要多多练习,实操。达梦数据库对环境的要求不高,内存,cpu的门口都比较低,自己的虚拟机环境就能安装,这是相比很多动不动就要几十G内存的某些国产数据库要好很多,所以更应该平时多实操练习。
最好能把守护集群的操作练习2遍以上,这样就不会在考试中手忙脚乱的去查考试机器上的文档。临时查是肯定做不完的。
如果对命令比较熟悉,使用命令的做题速度肯定比图形化界面会快,如果不熟悉命令,那就只能点点界面了。
考试中遇到的一个坑,在创建外部表时,需要dmdba是目录owner,而外部表在opt中,默认owner是root,提醒这里要注意,我是直接将opt目录的owner改成了dmdba
最后贡献一下听课的笔记吧:
主库建库:
dbca
建表空间
create tablespace TEST02 datafile '/dm8/data/DAMENG/TEST02_01.DBF' size 50 autoextend
on next 1 maxsize 1024 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","ROLE1","SOI" to TEST;
grant CREATE TABLE,CREATE VIEW to TEST;
grant SELECT on DMHR.EMPLOYEE to TEST;
grant SELECT on DMHR.DEPARTMENT to TEST;
建分范围分区
create TABLESPACE tbs1 datafile 'TBS01.DBF' size 32;
create TABLESPACE tbs2 datafile 'TBS02.DBF' size 32;
create TABLESPACE tbs3 datafile 'TBS03.DBF' size 32;
create table t_f1 (
id int,
name varchar(50)
) STORAGE (on main)
PARTITION BY RANGE (id)
(
PARTITION p1 VALUES LESS THAN (1000) TABLESPACE tbs1,
PARTITION p2 VALUES less than (2000) tablespace tbs2,
PARTITION p3 VALUES LESS THAN (3000) TABLESPACE tbs3
);
外部表
参数列表可以配置分隔符,如果不填的话,默认分隔符是’|’
[dmdba@localhost ~]$ mkdir -p /home/dmdba/data
在数据库中创建目录:
SQL> create DIRECTORY dmdir as '/home/dmdba/data';
给 test 用户在该目录上读写的权限:
SQL> grant read,write on directory dmdir to test;
create EXTERNAL table t_ext1
(
id int,
name varchar(100)
)
from datafile DEFAULT DIRECTORY DMDIR
LOCATION ('T_F1.txt')
PARMS (fields ',',skip 1
);
序列
CREATE SEQUENCE TEST.SEQ_TEST
INCREMENT BY 1
START WITH 1
MAXVALUE 999999999999
MINVALUE 1
CYCLE
CACHE 20;
-- 序列查询
select * from USER_SEQUENCES;
select SEQ_TEST.nextval;
select SEQ_TEST.currval;
select SEQ_TEST.nextval;
-- 序列删除
drop SEQUENCE seq_test;
同义词
创建普通同义词:
create SYNONYM f1 for t_sales;
创建公共同义词:
create PUBLIC SYNONYM f1 for t_f1;
-- 删除同义词
drop SYNONYM emp;
drop PUBLIC SYNONYM emp;
同义词的数据字典:
SELECT * FROM USER_SYNONYMS;
SELECT * FROM DBA_SYNONYMS;
物化视图
手动刷新物化视图
create MATERIALIZED VIEW mv_t6 as select * from t6;
select * from mv_t6 where id=1;
select * from t6 where id=1;
update t6 set name='AAA111' where id=1;
commit;
手动刷新物化视图:
REFRESH MATERIALIZED VIEW mv_t6;
统计信息
收集统计信息
dbms_stats.gather_table_stats('TEST','T_F1');
索引
创建唯一索引
create unique index idx_id on t_f1(id);
全文索引
CREATE CONTEXT INDEX <索引名>
ON <表名>(<列名>)
[TABLESPACE <表空间名>]
[LEXER <分词器名>]
[SYNC <同步方式>];
执行全文检索
select * from t_contexttab t where CONTAINS(T.MSG, '通信安全');
全文索引更新
--自动:创建索引时如果指定 sync transaction,事务提交后会自动填充
--手动:完全填充和增量填充
alter CONTEXT index CTI_CONTEXTTAB_MSG ON T_CONTEXTTAB REBUILD;
alter CONTEXT index CTI_CONTEXTTAB_MSG ON T_CONTEXTTAB INCREMENT;
全文索引的删除
drop CONTEXT index CTI_CONTEXTTAB_MSG ON T_CONTEXTTAB;
全文索引的查看
select * from SYSCONTEXTLIBS; --记录全文索引所需要的词库信息
select * from SYSCONTEXTINDEXES; --全文索引信息
创建全文索引,没有立即填充信息
create CONTEXT INDEX ind_address on PERSON.ADDRESS(ADDRESS1);
全量更新全文索引的信息
alter CONTEXT INDEX PERSON.ind_address on PERSON.ADDRESS
REBUILD ;
审计
打开审计
需要使用审计用户
SYSAUDITOR
查看数据库是否开启审计
select * from v$dm_ini where para_name like '%ENABLE_AUDIT%';
0 关闭审计
1 打开普通审计
2 打开普通审计和实时审计
需要使用 SYSAUDITOR 开启数据库的审计
sp_set_enable_audit(1);
select * from v$dm_ini where para_name='ENABLE_AUDIT';
达梦数据库审计记录文件存放在/dm8/data/DAMENG
对象审计
审计 TEST 用户删除 TEST.T6 表记录的操作:
sp_audit_object('DELETE','TEST','TEST','T6','ALL');
审计任何用户插入 TEST.T6 表记录的操作:
sp_audit_object('INSERT','NULL','TEST','T6','ALL')
参数顺序分别是:操作,用户,schema,table, 审计的时机
要先提交了对象的插入,然后再执行sp_audit_object,不然会锁表,执行失败
取消审计
SP_NOAUDIT_OBJECT('INSERT','NULL','TEST','T6','ALL');
查看审计记录
select
username,OPERATION,SUCC_FLAG,SQL_TEXT,DESCRIPTION,OPTIME from
V$AUDITRECORDS;
数据快速装载
创建导入文件
vi fldrtest.txt
插入
1,'aaaa',2025-09-10
2,'bbbb',2025-08-11
3,'cccc',2025-07-09
4,'dddd',
创建导入表
create table fldrtest(
id int,
name varchar(50),
bir date
);
创建导入控制文件
vi fldrtest.ctl
插入数据
LOAD DATA
INFILE ‘/home/dmdba/data/fldrtest.txt’
INTO TABLE fldrtest
fields ‘,’
注意导入的数据文件和ctl控制文件将owner给dmdba
执行导入
控制文件的路径中单引号要进行转义
/dm8/bin/dmfldr test/Dameng123 control='/home/dmdba/data/fldrtest.ctl'
备份还原
冷备和热备
冷备(脱机备份):DMAP 服务是打开的,数据库实例是关闭的。
热备:DMAP 服务是打开的,数据库实例也是打开的,数据库是归档模式。设置备份路径为/dm8/backup
使用DMRMAN备份
[dmdba@kylin1 opt]$ cd /dm8/bin
[dmdba@kylin1 bin]$ ./dmrman
dmrman V8
RMAN> backup database '/dm8/data/DAMENG/dm.ini' full backupset '/dm8/backup/rmanbackup';
热备
使用命令
backup database full backupset '/dm8/backup/20250825';
查看所有备份集
SELECT * FROM V$BACKUPSET;
-- 备份还原
先关闭数据库服务
./DmServiceDMSERVER stop
./dmrman
RMAN> RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/backup/20250825'
RMAN> RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/backup/20250825'
RMAN> RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC
RMAN> exit
启动数据库服务
./DmServiceDMSERVER start
作业管理
工具使用manager
在左侧列表中找到代理,首次使用,需要右键,选择创建代理环境
1,新建作业
2,新建作业步骤
3,新建作业调度
搭建数据守护集群
1、关闭主库,备份数据库,将备份拷贝到备库的机器上
主库:
[dmdba@localhost bin]$ ./DmServiceDMSERVER stop
Stopping
DmServiceDMSERVER:
[ OK ]
[dmdba@localhost bin]$ ./dmrman
dmrman V8
RMAN> backup database
'/dm8/data/DAMENG/dm.ini' backupset
'/dm8/backup';
[dmdba@localhost
backup]$
scp
backup.*
dmdba@192.168.240.102:/dm8/backup
2、配置主库的 dm.ini,dmmal.ini,dmwatcher.ini,dmarch.ini 文件
进入/dm8/data/DAMENG/目录下,创建文件并配置
配置 MAL:
[dmdba@localhost DAMENG]$ cat dmmal.ini
MAL_CHECK_INTERVAL= 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME =DMSERVER
MAL_HOST = 192.168.240.101
MAL_PORT = 15236
MAL_INST_HOST = 192.168.240.101
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
[MAL_INST2]
MAL_INST_NAME = DMSERVER2
MAL_HOST = 192.168.240.102
MAL_PORT = 15236
MAL_INST_HOST = 192.168.240.102
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT =45101
注意标黄的参数,要根据时间数据库名,ip,端口等信息配置
配置归档:
[dmdba@localhost DAMENG]$ cat dmarch.ini[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSERVER2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
配置数据守护:
[dmdba@localhost DAMENG]$ cat dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 8888
INST_INI = /dm8/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0RLOG_APPLY_THRESHOLD = 0
这里要检查目录是否正确
修改 dm.ini
开启归档,开启mail,不允许用户直接通过 SQL 语句修改服务器的模式
,备库不允许 OFFLINE 表空间
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS= 0
ENABLE_OFFLINE_TS= 2
3、将数据库启动到配置状态
将数据库启动到 mount 状态:
使用前台启动的方式
[dmdba@localhost bin]$ ./dmserver /dm8/data/DAMENG/dm.ini mount
启动之后,这个窗口就不要动了
4、初始化备库的实例,还原恢复数据库
在备库建库,这里使用dminit建库,避免把库启动,也可以用dbca建库,然后再把库关掉
[dmdba@localhost
bin]$
./dminit db_name=DAMENG instance_name=DMSERVER2 path=/dm8/data SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123
使用DMRMAN命令
还原数据库:
RMAN> restore database '/dm8/data/DAMENG/dm.ini' from backupset
'/dm8/backup';
恢复数据库
RMAN> recover database '/dm8/data/DAMENG/dm.ini' from backupset
'/dm8/backup';
更新魔数
RMAN> recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
备份还原恢复也可以用console工具图形化来做
5、配置备库的 dm.ini,dmmal.ini,dmwatcher.ini,dmarch.ini 文件
配置 MAL:
MAL文件和主库一样,不用改
[dmdba@localhost DAMENG]$ cat dmmal.ini
MAL_CHECK_INTERVAL= 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME =DMSERVER
MAL_HOST = 192.168.240.101
MAL_PORT = 15236
MAL_INST_HOST = 192.168.240.101
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101[MAL_INST2]
MAL_INST_NAME = DMSERVER2
MAL_HOST = 192.168.240.102
MAL_PORT = 15236
MAL_INST_HOST = 192.168.240.102
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT =45101
配置归档:
备库的归档文件要改归档目标,改为主库实例名
[dmdba@localhost DAMENG]$ cat dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSERVER
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
配置数据守护:
数据守护配置和主库一样,不用改
[dmdba@localhost DAMENG]$ cat dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 8888
INST_INI = /dm8/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
修改 dm.ini
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS= 0
ENABLE_OFFLINE_TS= 2
6、将备库启动到 mount 状态:
[dmdba@localhost bin]$ ./dmserver /dm8/data/DAMENG/dm.ini mount
启动后,窗口不要关闭和操作
7、修改主库的 oguid 和修改数据库模式为主库:
SQL> sp_set_oguid(8888);
SQL> alter database primary;
8、修改备库的 oguid 和修改数据库模式为备库:
SQL> sp_set_oguid(8888);
SQL> alter database standby;
9、分别启动主库和备库上的守护进程:
[dmdba@localhost ~]$ cd /dm8/bin
[dmdba@localhost bin]$ ./dmwatcher /dm8/data/DAMENG/dmwatcher.ini
10、配置监视器:
[dmdba@localhost data]$ cat dmmonitor.ini
MON_DW_CONFIRM = 0
MON_LOG_PATH = /dm8/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0[GRP1]
MON_INST_OGUID= 8888
MON_DW_IP = 192.168.182.178:65101
MON_DW_IP = 192.168.182.130:65101
登录到监视器:
[dmdba@localhost bin]$ ./dmmonitor /dm8/data/dmmonitor.ini
login
用户名:sysdba
密码:
查看信息:
Show
主备切换:
switchover
11、注册数据库实例和数据守护进程的服务
在/dm8/script/root 目录下,使用root用户执行
注册备机的数据库服务:
[root@localhost root]# ./dm_service_installer.sh -t dmserver -p DMSERVER2 -dm_ini /dm8/data/DAMENG/dm.ini
注册主机和备机的数据守护进程服务
[root@localhost root]# ./dm_service_installer.sh -t dmwatcher -p DMSERVER -watcher_ini /dm8/data/DAMENG/dmwatcher.ini
[root@localhost root]# ./dm_service_installer.sh -t dmwatcher -p DMSERVER2 -watcher_ini /dm8/data/DAMENG/dmwatcher.ini
给监视器注册服务
[root@localhost root]# ./dm_service_installer.sh -t dmmonitor -p
MONITOR -monitor_ini /dm8/data/dmmonitor.ini
文章
阅读量
获赞