达梦数据库DCA认证注意事项
- 第一章:DM8企业版安装
- 第二章:创建数据库实例
- 第三章:数据库的启动、连接和关闭
- 第四章:客户端管理
- 第五章:DMSQL
- 第六章:DM的体系结构
- 第七章:表空间管理
- 第八章:用户和权限管理
第一章:DM8企业版安装
安装过程中调用安装界面如果出不来怎么办?
Root用户下执行xhost +
Echo $DISPLAY
回显xxx
如果报错,把该窗口关闭重新打开一个控制台。
切换dmdba用户下,执行export DISPALY=:xxx
注意:该设置只适合当前窗口。
第二章:创建数据库实例
1.数据库配置助手创建数据库
[dmdba@localhost tool]$dbca.sh启动dbca.sh启动达梦数据库配置助手创建数据库实例:
注:如果不能正常启动界面,参考安装数据库部分。
簇大小、页大小、字符串大小写、字符集等一旦指定,数据库创建完成将无法更改。
2.命令行方式创建数据库
在[dmdba@localhost bin]$该目录下执行./dminit创建数据库,使用./dminit path=/
执行dminit path=/dm8/data db_name=DM01 instance_name=DMSVR01 port_num=5237。
3.注册数据库
dbca.sh方式创建数据库实例不需再注册数据库服务,命令行方式创建的数据库需要注册数据库,通过dbca.sh数据库配置助手来注册数据库服务。
4.删除数据库
通过dbca.sh数据库配置助手删除数据库
需要先关闭数据库再进行删除。
第三章:数据库的启动、连接和关闭
查看数据库服务状态
使用dmservice.sh查看DM服务,注册数据库服务成功后,会在DM服务查看器中显示正在运行。
root用户下:
systemctl status DmServiceDMSERVER.service
dmdba用户下:
DmServiceDMSERVER status
1.启动数据库
root用户:
root用户启动达梦服务查看器,dmdba用户可以打开,但没有操作权限。
或者命令行执行systemctl start DmServiceDMSERVER.service
dmdba用户:
DmServiceDMSERVER start
2.连接数据库
disql工具
disql sysdba/Dameng123
DM管理工具manager
3.关闭数据库
root用户:命令行执行systemctl stop DmServiceDMSERVER.service
dmdba用户:
DmServiceDMSERVER start
数据库状态切换
数据库有四种状态,mount(配置)、open(打开)、suspend(挂起)、shutdown(关闭)四种状态,其中Mount 和 open 可以相互转换,suspend 和 open 可以相互转换。mount 和 suspend 不能相互切换。
mount状态和open状态的转换:
DmService 命令可以将数据库启动到 mount 状态 [dmdba@DCA02 bin]$ ./DmServiceDMSERVER start mount
先连接数据库,查看实例状态select status$ from v$instance;
mount状态可以直接转换到open状态,alter database open;
suspend状态和open状态的转换:
-DM管理工具切换数据库状态:
第四章:客户端管理
dmdba@DCA02 tool]$ ./manager 如果报下面权限不够的错误,说明之前使用 root 打开过 DM 管理工具,此时需要将 tool 文 件夹的所属用户和所属组都改为 dmdba:dinstall。
如果出现大段的报错,无法打开 DM 管理工具,一般是图形化界面没有设置好。
DM 控制台工具(脱机工具) 可以修改数据库配置参数文件(dm.ini),修改参数需要重启数据库才能生效 可以对数据库备份和还原(冷备),等同于 DMRMAN 工具。
控制台工具:
[dmdba@DCA02 tool]$ ./console
DM数据迁移工具:
[dmdba@DCA02 tool]$ ./dts
DM 性能监视工具:
[dmdba@DCA02 tool]$ ./monitor
审计工具:
[dmdba@DCA02 tool]$ ./analyzer
第五章:DMSQL
SQL 分类
DML:数据操纵语言:SELECT、INSERT、UPDATE、DELETE
DDL:数据定义语言:CREATE、DROP、TRUNCATE、ALTER
TCL:事务控制语言:ROLLBACK、COMMIT、SAVEPOINT
DCL:权限控制语言:GRANT、REVOKE
第六章:DM的体系结构
1.DM 存储结构
数据文件、联机日志文件、控制文件、参数文件是必备的,缺一不可。
2.归档日志文件
数据库开启归档之后,会产生归档日志文件。
3.备份文件
数据备份产生的文件。
4.跟踪日志文件
安装目录 log 下面数据库运行时产生的日志文件。
5.参数文件 dm.ini(文本文件)
记录了数据库初始化相关参数、包含实例名、端口号、控制文件路径、控制文件的 备份路径,默认数据库备份路径、主内存池、数据库缓冲区、排序区、HASH 区等相 关参数等。
6.数据缓冲区
缓冲区:数据缓冲区、重做日志缓冲区、sql 缓冲区、数据字典缓冲区。
缓存的是数据页,分别是 NORMAL、KEEP、FAST 和 RECYCLE 四种。 对应表空间属性:NORMAL,正常淘汰,对应参数 BUFFER,一般来说,OLTP 占用内存 40- 60%,OLAP 系统占用内存 60-80% KEEP:在内存中较久保存 FAST 和 RECYCLE,系统指定,RECYCLE 用于临时表空间 MULTI_PAGE_GET_NUM:读多页,大数据读时可以开启。
7.重做日志缓冲区
用来存放 redo 信息,单位是页,如果事务操作多,OLTP 建议调大。 select * from v$dm_ini t where t.para_name like ‘%RLOG_BUF_SIZE%’; 查询数据库页大小:
8.SQL缓冲区
用来缓存 sql 语句,执行计划、sql 结果集。
第七章:表空间管理
1.DM8常用表空间:
SYSTEM、ROLL、MAIN、TEMP、HMAIN
2.SYSTEM 系统表空间:
存放数据字典信息(表定义、表结构、其他对象的定义、权 限信息)
3.ROLL 表空间:
回滚表空间,存放回滚信息。相当于 ORACLE 的 UNDO。 达梦中 ROLL 表空间只能有一个,可以对 ROLL 表空间添加数据文件,但不能新 增 ROLL 表空间。 UNDO_RETENTION:回滚段的保留时间,单位为秒 sp_set_para_double_value(1, ‘UNDO_RETENTION’, 600);
4.TEMP 表空间:
临时表空间,用来存放临时表、大量的排序可能占用临时表空间 select * from v$dm_ini t where t.PARA_NAME like ‘%TEMP%’;TEMP_SIZE:临时表空间的初始大小 TEMP_SPACE_LIMIT:临时表空间限制的最大值,为 0 表示不限制,建议生成环 境修改。 sp_set_para_value(1, ‘TEMP_SPACE_LIMIT’, 1024);
5.MAIN 表空间:
用户默认表空间,创建用户时,如果没有指定用户的默认表空间, 则使用 MAIN 表空间,相当于 ORACL 的 USERS 表空间。
6.HMAIN 表空间:
是 HUGE 表的默认表空间。 五个表空间不能删除,MAIN 和 HMAIN 可以脱机,其他不能脱机。
7.创建表空间
create tablespace “TBS”datafile ‘/dm8/data/DAMENG/TBS01.DBF’size 32;
8.修改数据文件大小:
alter tablespace tbs resize datafile ‘TBS01.dbf’ to 128;
9.设置自动扩展:
alter tablespace tbs datafile ‘TBS01.dbf’ autoextend on next 1 maxsize 10240; 关闭自动扩展:alter TABLESPACE tbs DATAFILE ‘TBS02.dbf’ AUTOEXTEND off;
10.增加一个数据文件:
alter tablespace tbs add datafile ‘TBS02.dbf’ size 128;
11.管理重做日志文件:
Redo 联机日志,记录 DML 插入、修改、删除动作所更新的数据页信息。 联机日志默认两个,循环使用,数据库创建之初,联机都为空,随着数据库的运行,redo 记 录被数据的数据,空间会不断占用,数据会覆盖。
alter database add logfile ‘DAMENG03.log’ size 128;
12.删除空的表空间:
drop TABLESPACE tbs;
13.管理数据文件
DM 表空间的数据文件只能增加、增大、不能减少,也不能单独删除某个数据文件、只能删 除整个表空间。表空间有数据时不能直接删除。
第八章:用户和权限管理
用户管理
DM 普通版本默认三权分立,默认创建如下用户: SYSDBA:数据库管理员 SYSAUDITOR:数据库审计员,设置数据库审计功能 SYSSSO:数据库安全员 SYS:内置用户,不能直接登录 安全版本会增加 SYSDBO(安全操作员) 系统支持的口令策略有: 0 无策略 1 禁止与用户名相同 2 口令长度不小于 9 4 至少包含一个大写字母(A-Z) 8 至少包含一个数字(0-9) 16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
对于同时满足的条件就累加
1.密码策略
创建用户时要指定密码,用户密码策略由系统参数 PWD_POLICY.
SQL> select para_name,para_type,para_value,description from v$dm_ini where para_name=‘PWD_POLICY’; 查看密码策略。
修改系统口令策略:SQL> sp_set_para_value(1,‘PWD_POLICY’,14);修改后的策略只针对新用户有用。
查看用户口令策略:SQL> select username,user_id,PASSWORD_VERSIONS from dba_users;
2.创建用户
SQL> create user user1 identified by Dameng123;
3.用户的锁定与解锁
当用户尝试登录,密码错误超过限制的尝试失败次数,用户会被自动锁定。
可以手动锁定和解锁:
4.锁定
SQL> alter user user1 account lock;
5.解锁
alter user user1 account unlock;
6.修改用户的资源限制
(例如当密码错误超过 5 次时,锁定 10 分钟)SQL> alter user user1 limit failed_login_attemps 5,password_lock_time 10;
7.修改user1用户默认表空间为TBS、默认索引表空间为tbsidx:
SQL> alter user user1 default tablespace tbs default index tablespace tbsidx;
8.用户删除
使用具有删除用户(DROPUSER)权限的用户删除其他用户,在删除前要保证用户里对象为空。
drop user user2;
权限管理
系统权限:
create table; alter database; create tablespace; alter tablespace; drop tablespace; create user; create view; create procedure; create role; create schema;
授予系统权限:
grant CREATE TABLE to USER1;
撤销系统权限:
revoke
授予对象权限
grant SELECT on DMHR CITY to USER1; 撤销:revoke
权限的查看:
系统权限(数据库权限)查看 DBA_SYS_PRIVS select * from dba_sys_privs;
对象权限查看 DBA_TAB_PRIVS select * from dba_tab_privs;
角色权限查看 DBA_ROLE_PRIVS select * from dba_role_privs;
1.对象权限的赋予和回收:可以赋给用户或角色
2.将dmhr.employee的查看权限赋予user1:(sysdba用户)SQL> grant select on dmhr.employee to user1;
从user1就可以查看dmhr.employee:SQL> select count(*) from dmhr.employee;
但user1不能查看dmhr.department,没有该权限,没有赋予
3.回收user1权限:从sysdba用户,revoke select on dmhr.employee from user1;
4.查询某张表的某些字段,可以赋给用户或角色
sysdba:SQL> grant select(employee_id,employee_name,salary) on dmhr.employee to user1;
user1: 不能查询整个表:但是可以查询employee_id,employee_name,SQL> select employee_id,employee_name,salary from dmhr.employee limit 5;
如果想查询dmhr.employee中的其他列,也没有查询权限。
角色管理
1.查看角色信息:
select * from dba_roles;
默认每种类型的管理员拥有五个角色(DBA、PUBLIC、RESOURCE、SOI、VTI)
DBA:管理员角色,拥有几乎所有的权限。
RESOURCE:拥有创建表、创建视图等对数据库操作的权限,但没有创建用户的权限。
PUBLIC:拥有数据操作权限(增删改查)。
SOI:拥有查询系统表(sys 开头的)
VTI:拥有动态视图(v$开头的查询权限)。
select * from DBA_SYS_PRIVS t where t.GRANTEE=‘PUBLIC’;
select * from DBA_SYS_PRIVS t where t.GRANTEE=‘RESOURCE’;
select * from DBA_TAB_PRIVS t where t.GRANTEE=‘VTI’;
select * from DBA_TAB_PRIVS t where t.GRANTEE=‘SOI’;
2.新建角色:
创建角色role1,并将create table权限赋给user1:(在SYSDBA用户)
create role R1;
grant create table to role1;
grant role1 to user1;
登录user1,并创建表,因为赋予了user1创建表的角色。
3.回收权限:
回收user1的role1的权限,user1不能创建表(在SYSDBA用户)
SQL> revoke role1 from user1;
假如 user1 即拥有角色 role1,也拥有创建表 create table 的权限,此时回收 user1 的 create table 的权限,问 user1 是否还能创建表。
回收user1的create table的权限,但是角色role1的权限并没有禁用,因此还可以创建表。
4.查看role1的权限:
select * from DBA_SYS_PRIVS t where t.GRANTEE=‘ROLE1’;
5.角色的启用和禁用:
禁用:SQL> sp_set_role(‘ROLE1’,0); 此时user1没有查询权限
启用:SQL> sp_set_role(‘ROLE1’,1);
第九章:模式管理
模式是一个特定的对象集合,可看作包含表、视图、索引等若干对象的对象集。
模式对象:表、视图、约束、索引等。
系统建立一个用户时,会自动生成一个模式,一个模式只能归属于一个用户,一个用户可以对应多个模式。
一个模式仅能归属于一个用户,而一个用户可以包含多个模式。 模式是一组对象的集合,使用模式可以使不同业务隔离。
创建模式:
create SCHEMA sche1 AUTHORIZATION hrtest;
模式下创建表:
create table sche1.t_test(id int, name varchar(20));
查询数据库中所有模式信息:
select * from SYSOBJECTS t where t.type
=
′
S
C
H
′
;
查
询
模
式
归
属
于
哪
个
用
户
:
s
e
l
e
c
t
a
.
n
a
m
e
,
a
.
t
y
p
e
='SCH'; 查询模式归属于哪个用户: select a.name, a.type
=′SCH′;查询模式归属于哪个用户:selecta.name,a.type, b.name, b.type$ from SYSOBJECTS a, SYSOBJECTS b where a.type$=‘SCH’ and a.pid= b.id;
第十章:表和约束管理
表管理
表分为用户表和系统表
表数据存储在表空间中,如果不指定,存储在默认表空间。行数据:MAIN,列数据:HMAIN。
1.新建表
命令行:SQL> create table emp (empid int,empname varchar(100),deptid int) tablespace tbs;
2.在表中增加或移除字段:
增加列:SQL> alter table test add column birthday bit;(向test表中增加一个名为birthday的字段)
将列删除:alter table test drop birthday;
3.删除表:drop table test;
约束管理
常见的约束类型:NOT NULL(非空) UNIQUE(唯一) PRIMARY KEY(主键) FOREIGN KEY(外键)表名需要增加模式名 CHECK(校验)
1.创建主键约束:SQL> alter table emp add constraint PK_emp_empid primary key(empid);
2.删除主键:如果该主键被引用为外键,则无法直接删除,需要使用 cascade 级联删除。alter table dept drop constraint PK_DEPT_DEPTID cascade;
3.设置非空约束:SQL> alter table emp modify empname not null;
4.设置外键:
SQL> create table dept(deptid int primary key,department_name varchar(100)) STORAGE(on tbs);
SQL> alter table emp add constraint fK_emp_deptid foreign key(deptid) references dept(deptid);
5.创键外键后删除dept表删除失败,因为emp表引用了dept表的相关信息
删除表时,如果该表的字段被别的表引用做外键约束,则不能被直接删除。 使用 cascade 可以删除,同时会级联删除外键约束。
用的外键需要是被引用的表的主键,否则无法创建外键。这里emp表外键是deptid为dept表的主键,因此可以设置外键。
6.外键的禁用和启用:
alter table emp disable constraint fK_emp_deptid;
alter table emp enable constraint fK_emp_deptid;
check约束
SQL> alter table test add column age int;
SQL> alter table test add constraint CH_emp_age check(age>=6);
删除约束alter table test drop constraint CH_emp_age check(age>=6);
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' |
‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" |
“Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash |
– is en-dash, — is em-dash |
第十一章:索引和视图管理
索引管理
索引是一种独立的数据库对象,通过指针加速查询速度,通过快速定位数据的方法减少磁盘IO,索引和表相互独立,服务器自动关使用和维护索引。
索引:创建索引的目的加快查询。从大表中查询少量的数据的时候,我们可以创建索引。 索引的缺点:使表的 DML 操作变慢。 在业务繁忙期间不建议创建索引,也不建议收集统计信息。
1.创建索引:
在user1.emp的employee_id字段上创建索引,如果表为空的话不能创建索引。
SQL> create index user1.ix_emp_name on user1.emp(employee_id);
2.查询索引:
查询所有索引:SQL> desc dba_indexes;
查询某个用户下的所有索引:SQL> select owner,index_name from dba_indexes where owner=‘USER1’;
查询索引建在哪个列上:select * from SYS.USER_IND_COLUMNS;
数据字典和动态性能视图
数据字典
数据字典(数据存放在 SYSTEM 表空间中,包含表、索引等对象的定义,用户、权限、 角色等):
USER_* 用户所拥有的对象信息
ALL_* 用户能访问的对象信息
DBA_* 整个数据库中的对象信息
SYS* 开头的系统表
⚫ 动态性能视图
V
开
头
的
为
动
态
视
图
,
存
放
在
内
存
中
。
缓
冲
池
动
态
性
能
表
,
用
来
记
录
除
循
环
使
用
缓
冲
池
外
的
缓
冲
池
控
制
页
结
构
的
信
息
S
E
L
E
C
T
∗
F
R
O
M
V
开头的为动态视图,存放在内存中。 缓冲池动态性能表,用来记录除循环使用缓冲池外的缓冲池控制页结构的信息 SELECT * FROM V
开头的为动态视图,存放在内存中。缓冲池动态性能表,用来记录除循环使用缓冲池外的缓冲池控制页结构的信息SELECT∗FROMVBUFFERPOOL;
显示数据文件信息
SELECT * FROM V
D
A
T
A
F
I
L
E
;
显
示
当
前
进
程
信
息
S
E
L
E
C
T
∗
F
R
O
M
V
DATAFILE; 显示当前进程信息 S ELECT * FROM V
DATAFILE;显示当前进程信息SELECT∗FROMVPROCESS;
显示当前线程信息
SELECT * FROM V
T
H
R
E
A
D
S
;
显
示
当
前
会
话
信
息
:
V
THREADS; 显示当前会话信息: V
THREADS;显示当前会话信息:Vsession
显示数据库中锁的信息:v
l
o
c
k
历
史
s
q
l
查
询
:
v
lock 历史 sql 查询: v
lock历史sql查询:vsql_history
显示数据库中事务信息:
V$TRX
从用户角度视图从一个特定的角度查看数据库中的数据,视图是虚拟的表,视图是基于表的,实际的数据在表中。视图分为简单视图和复杂视图,这里涉及到简单视图。
从数据库系统内部角度一个视图是由SELECT语句组成(简单视图)的查询定义的虚拟表。
DM 视图包含:简单视图、复杂视图、物化视图。
1.创建视图:
create view DMHR.V1 as select * from DMHR.CITY;
2.修改视图:
create or replace view DMHR.V1 as select DMHR.CITY.CITY_ID, DMHR.CITY.CITY_NAME from DMHR.CITY;
3.删除视图:
drop view DMHR.V1;
第十二章:数据库的备份还原
备份还原基本概念
物理备份还原:物理还原和恢复可以利用归档恢复到最新的时间点(完全恢复), 也可以恢复到指定时间点或指定 LSN(不完全恢复)。
逻辑备份还原(dexp&dimp 工具导入导出):只能恢复到导出的那一刻。 物理备份分冷备和热备(热备要开启归档)。
全量备份和增量备份
脱机备份与还原数据库 DMRMAN 是脱机备份命令行工具(与 ORACLE 的 RMAN 不同) 不指定备份集默认使用系统参数 BAK_PATH 指定: dmrman> backup database ‘/dm8/data/DAMENG/dm.ini’;
数据库备份环境参考:
https://blog.csdn.net/zfang9528/article/details/106202926
第十三章:作业管理
DM 作业管理
可以调用存储过程 SP_INIT_JOB_SYS(1)创建代理环境; 也可以调用图像化界面创建代理环境,创建代理环境后,系统会自动创建 SYSJOB 模 式(该模式包含 JOB 相关的系统包及 DBA_JOBS 视图) 。
DM 兼容 ORACLE 的 dbms_job, dbms_scheduler 系统包,用法相同。 图形化界面创建 JOB:
第十四章:DM8开发
DM 支持开发语言的种类 DM 支持 ODBC、JDBC、PHP、DCI 等,详细参考《DM8 程序员手册》。 dbms_logmnr 系统包可以实现数据挖掘的功能。
DM8 JDBC 配置
// 定义 DM JDBC 驱动串
String jdbcString = “dm.jdbc.driver.DmDriver”; // 定义 DM URL 连接串
String urlString = “jdbc:dm://localhost:5236”;
ODBC 配置: ODBC 安装三部曲:
[root@DCA02 opt]# tar -xvf unixODBC-2.3.0.tar.gz
[root@DCA02 opt]# cd unixODBC-2.3.0/
[root@DCA02 unixODBC-2.3.0]# ./configure
[root@DCA02 unixODBC-2.3.0]# make
[root@DCA02 unixODBC-2.3.0]# make install
配置 ODBC 配置文件:
[root@DCA02 unixODBC-2.3.0]# odbcinst -j unixODBC 2.3.0 DRIVERS…: /usr/local/etc/odbcinst.ini SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
配置文件内容:
[root@DCA02 etc]# cat odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = dameng123