dm8 dca考试心得体会

dm8 dca考试心得体会

本周参加了达梦公司开展的dm8的dca考前培训,以及考试,考试顺利通过,以下为参加本次培训以及考试的心得体会。

本次培训考试的内容包括:

DM8 系列产品,DMSQL, DM 体系结构,DM8 安装,创建数据库、表、约束、索引、视图、模式等内容,以及数据库的备份恢复,作业系统,ODBC等。

具体如下:
一、安装数据库
1.1 系统信息检查
#获取系统位数:getconf LONG_BIT ;
#查询操作系统 release 信息:lsb_release -a
#查询系统信息:cat /etc/issue ;
#查询系统名称:uname -a
#查看 CPU 信息:lscpu 或 cat /proc/cpuinfo
#查看 glibc 版本:ldd --version 或 rpm -qa|grep glibc
#查看 gcc 版本:gcc --version 或 rpm -qa|grep gcc

#获取内存总大小:grep MemTotal /proc/meminfo
#获取交换分区大小:grep SwapTotal /proc/meminfo
#获取内存使用详情:free -m
#检查存储空间:fdisk -l
#查询安装目录可用空间:df -h /home/dmdba
#查询临时文件目录/tmp 可用空间:df -h /tmp

1.2 检查 ulimit 参数:
#命令:ulimit -a
#修改文件/etc/security/limits.conf,以更改 ulimit 的资源限制,更改参数有:data seg size、file size、 open files、virtual memory,最好都改成 65536/unlimited(无限制),如下:
dmdba hard nofile 65536
dmdba soft nofile 65536
dmdba hard nproc 65535
dmdba soft nproc 65535
dmdba hard core unlimited
dmdba soft core unlimited
core 同 ulimit -c;data 同 ulimit -d;fsize 同 ulimit -f;memloc 同 ulimit -l
nofile 同 ulimit -n;stack 同 ulimit -s;cpu 同 ulimit -t;nproc 同 ulimit -u

1.3 创建用户组、用户,规划安装路径
#创建安装用户组:dinstall:groupadd -g dinstall
#创建安装用户:
dmdba:useradd -g dinstall -m -d /dm8 -s /bin/bash dmdba
#初始化用户密码:passwd dmdba
#创建安装路径,并授权:
mkdir /dm8 ; chown dmdba:dinstall -R /dm8
#挂载、安装:
mount -o loop /opt/dm8.iso /mnt chmod 755 DMInstall.bin ./DMInstall.bin -i
#卸载命令:./uninstall.sh -i

二、初始化数据库
2.1 常用参数含义:
INI_PATH:用已有 DM.INI 初始化数据库
PATH:初始化数据库存放路径
CTL_PATH:控制文件存放路径
LOG_PATH:日志文件存放路径
EXTENT_SIZE:簇大小
PAGE_SIZE:页大小
LOG_SIZE:日志文件大小
CASE_SENSITIVE:大小写敏感
CHARSET:字符集类型
SYSDBA_PWD:管理员初始密码
DB_NAME:数据库名称
INSTANCE_NAME:实例名
PORT_NUM:数据库端口
BUFFER:系统缓冲区大小,以 M 为单位
MAX_SESSIONS:系统允许同时连接的最大数
BLANK_PAD_MODE:设置字符串比较时,结尾空格填充模式是否兼容 ORACLE取值 0 或 1。0 不兼容,1兼容。默认为 0
COMPATIBLE_MODE:是否兼容其他数据库模式。0:不兼容,1:兼容 SQL92 标准,2:部分兼容 ORACLE,3:部分兼容 MS SQL SERVER,4:部分兼容 MYSQL,5:兼容 DM6,6:部分兼容
#更多参数可查看《系统管理员手册》
注:簇大小、页大小、字符集、大小写敏感、VARCHAR 类型以字符为单位等一旦指定,数据库创建完成将无法更改。
如:./dminit path=/dm8/data db_name=DMTEST instance_name=DMTESTSVR sysdba_pwd=“自定义” port_num=5236 page_size=16 charset=0
附:
VARCHAR 类型以字符为单位(默认以字节为单位)
以字节为单位:
Varchar(10), gb18030 字符集,一个中文占用两个字节,Varchar(10)只能保存五个中文。
Varchar(10), utf-8 字符集,一个中文占用三个字节,Varchar(10)只能保存三个中文。
以字符为单位:
Varchar(10), gb18030 字符集,相当于 Varchar(20),可以保存十个中文;
Varchar(10), utf-8 字符集,相当于 Varchar(40),可以保存 13 个中文。

2.2注册数据库,启动
DM 数据库启动顺序:读取配置参数文件 dm.ini,找到控制文件 dm.ctl,启动后台进程和线程,启动数据库实例,启动到 mount 状态,根据控制文件中的数据文件路径和练级日志文件路径,找到并打开数据文件和联机日志,启动到 OPEN 状态。
root用户下,/dm8/scropt/root目录执行:
./dm_service_installer.sh -t dmserver -p DMSER -dm_ini /dm8/data/DMTEST/dm.ini
启动:systemctl start DmServiceDMSER

三、DMSQL
DML(Data Mannipulation Language)数据操纵语言:查询、操纵数据表资料行,包含 SELECT、INSERT、UPDATE、DELETE,MERGE。
默认情况下,DML 不自动提交,需要手工提交(commit)和回滚(rollback);对数据的操作会产生 REDO 和 UNDO;
DDL(Data Definition Language)数据定义语言:建立、修改、删除数据库中数据表对象,包含 CREATE、ALTER、DROP、TRUNCATE、COMMENT。默认情况下,DDL 自动提交。
DCL(Data Control Language)数据控制语言:用于执行权限授予与收回操作,包含 GRANT、REVOKE。
TCL(Transactional Control Language)事物控制语言:维护数据的一致性,包含 COMMIT、ROLLBACK、SAVEPOINT。
DELETE 和 TRUNCATE 的区别:
DELETE:DML 语言,产生 redo 和 undo,删除大量数据会很慢;可以带 where 条件,支持回滚,delete 的数据支持闪回查询、不立即释放空间(DM 中系统定时自动清理回滚页,时长由参数 undo_retention 指定)。
truncate:DDL 语句,不产生 redo 和 undo,只能删除整张表的数据,且立即释放空间,不支持回滚,不支持 where 条件,truncate 表很快(大表也依然很快)。TRUNCATE 可以降低表的水位线。
如:group by和having的用法:
SQL>select a.DEPARTMENT_ID, count() as empnum from dmhr.employee a group by a.DEPARTMENT_ID having count() >=30;
内连接:
SQL>select a.DEPARTMENT_ID, b.DEPARTMENT_NAME, count() as empnum from dmhr.employee a, dmhr.DEPARTMENT b where a.DEPARTMENT_ID = b.DEPARTMENT_ID group by a.DEPARTMENT_ID, b.DEPARTMENT_NAME having count() >=30 order by empnum desc;

四、配置参数文件 dm.ini
DM 数据库参数的类型:
READ ONLY:手动参数,不能通过 SQL 命令或函数修改;只能通过修改
dm.ini 文本文件修改此参数(需要重启数据库才能生效)。
SYS:动态(系统级)参数。数据库运行中可以直接修改,可以即可以修改内存中的值,也可以修改参数文件中的值。可以通过 SQL 命令或系统函数修改。
SESSION:动态(会话级)参数,数据库运行中可以直接修改,可以即可以修改内存中的值,也可以修改参数文件中的值,还可以只修改当前会话的值。可以通过 SQL 命令或函数修改,且可以只针对当前会话生效。
IN FILE:静态参数,不能修改内存中的值,只能修改参数文件中的值,可以通过 SQL 命令或函数修改,但需要重启数据库才能生效。
静态参数在数据库运行期间不能修改内存中的值,动态参数在数据库运行期间可以修改内存中的值(修改后立即生效)。

4.1修改COMPATIBLE_MODE参数
/dm8/bin/disql
查看当前值:
SQL>select para_name,para_value,para_type from v$dm_ini where para_name like ‘COMPATIBLE_MODE’;
修改后,需重启数据库:
SQL>alter system set ‘COMPATIBLE_MODE’ =2 spfile;

4.2修改buffer参数值
查看相关参数内容:
SQL>select * from SYS.“V$PARAMETER” t WHERE name in (‘BUFFER’,‘FAST_POOL_PAGES’,‘RECYCLE’,‘KEEP’);
修改数据缓冲区大小为500M:
SQL>alter system set ‘BUFFER’= 500 spfile;

4.3修改UNDO_RETENTION
查看此参数当前值:
SQL>select name,type,value,sys_value,file_value from v$parameter where name like ‘UNDO_RETENTION’;
修改为300:
SQL>alter system set ‘UNDO_RETENTION’= 300 both;

4.4修改TEMP表空间
查看相关参数:
SQL>select name, value, type from v$parameter t where name like ‘TEMP%’;
修改:
SQL>alter system set ‘TEMP_SIZE’=100 spfile;

五、表空间管理
#表空间是 DM 数据库的最大逻辑存储单元,表中的数据在逻辑上都是存放在表空间中,在物理上存放在表空间对应的物理数据文件。表空间由数据文件组成,表空间采用段、簇、页的方式进行管理。

#用户允许创建的表空间 ID 取值范围为 0~32767,超过 32767 的只允许系统使用,ID由系统自动分配,ID 不能重复使用,即使删除掉已有表空间,也无法重复使用已用 ID 号,也就是说只要创建 32768 次表空间后,用户将无法再创建表空间。
#数据文件的扩展属性:
#AUTOEXTEND OFF|ON [NEXT <文件扩展大小>] [MAXSIZE <文件限制大小>]
创建表空间:
SQL>create tablespace tbs DATAFILE ‘TBS01.DBF’ size 64;
表空间重命名
DM 预定义表空间不支持重命名,自定义表空间支持重命名。
SQL>alter tablespace tbs RENAME TO dmtbs;
#通过下列语句查看表空间信息,表空间 ID,名称,表空间类型:1 DB 类型,2 临时表空间,状态,已使用的簇所占的大小(以页为单位)
SQL>SELECT id, name,type , s t a t u s ,status ,status,used_size FROM VKaTeX parse error: Expected 'EOF', got '#' at position 13: TABLESPACE; #̲查询表空间与数据文件对应关系 …TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID =
df.GROUP_ID;
案例:
SQL>create tablespace “TBSTEST” datafile ‘/dm8/data/DM/TBS/TBSTEST01.DBF’ size 64 autoextend on next 2 maxsize 10240, ‘/dm8/data/DM/TBS/TBSTEST02.DBF’ size 64 autoextend on next 2 maxsize 10240 CACHE = NORMAL;

迁移自定义表空间数据文件
SQL>alter tablespace tbs offline;
SQL>alter TABLESPACE tbs RENAME DATAFILE ‘TBS01.DBF’ TO ‘/dm8/data/DM/TBS/TBS01.DBF’;
SQL>alter TABLESPACE tbs RENAME DATAFILE ‘TBS02.DBF’ TO ‘/dm8/data/DM/TBS/TBS02.DBF’;
SQL>alter tablespace tbs online;
##开启归档的方法:
SQL 开启归档
归档开启:
SQL>alter database mount;
SQL>alter database ARCHIVELOG;
SQL>alter database ADD ARCHIVELOG ‘type=local, dest=/dm8/arch, file_size=64, space_limit=10240’;
SQL>alter database open;
查看归档配置:
SQL>select arch_mode from v d a t a b a s e ; S Q L > s e l e c t ∗ f r o m v database; SQL>select * from v database;SQL>selectfromvdm_arch_ini;
修改归档的配置(修改归档空间上限):
SQL>alter database modify archivelog ‘type=local, dest=/dm8/arch, SPACE_LIMIT=20480’;

六、用户管理
6.1系统口令策略
PWD_POLICY(隐含参数,不在 dm.ini 中)参数指定系统的口令策略,默认为 2;
系统支持的口令策略有:
0 无策略
1 禁止与用户名相同
2 口令长度需大于等于 INI 参数 PWD_MIN_LEN 设置的值
4 至少包含一个大写字母(A-Z)
8 至少包含一个数字(0-9)
16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略 2 和 4,则设置口令策略为 2+4=6 即可。
#常用资源设置项
FAILED_LOGIN_ATTEMPS:将引起一个账户被锁定的连续注册失败的次数
PASSWORD_LOCK_TIME:如果超过 FAILED_LOGIN_ATTEMPS 设置值,一个账户将被锁定的分钟数
PASSWORD_LIFE_TIM:一个口令在其终止前可以使用的天数
PASSWORD_REUSE_TIME:一个口令在可以重新使用前必须经过的天数
PASSWORD_REUSE_MAX:一个口令在可以重新使用前必须改变的次数
FAILED_LOGIN_ATTEMPS:将引起一个账户被锁定的连续注册失败的次数
SESSION_PER_USER:在一个实例中,一个用户可以同时拥有的会话数量
PWD_POLICY 是隐含参数,PWD_POLICY,只能通过函数或 SQL 语句修改。
SQL>select * from v$parameter t where t.name = ‘PWD_POLICY’;
修改系统口令策略:
SQL>alter SYSTEM set ‘PWD_POLICY’ = 15 BOTH;
创建用户:
SQL>create user hr IDENTIFIED by Dameng123;
修改用户资源限制:
SQL>alter user hr limit failed_login_attemps 5,password_lock_time 3;
用户的资源限制查询:
SQL>select * from sysusers;
#用户名可以用双引号括起来,也可以不用,但如果用户名以数字开头,必须用双引号括起来。

6.2权限管理
#用户权限有两类:数据库权限和对象权限。
#DM 中有一个较特殊的数据库权限“CREATE SESSSION”,表示创建会话连接数据库的权限。系统预设的管理员用户都具备此权限,新建用户缺省也具备此权限,管理员可根据实际需要回收指定用户的 CREATE SESSION 权限以限制该用户连接数据库。
赋予数据库权限(系统权限):
SQL> grant create table to hr;
查看当前用户拥有的权限:
SQL>select * from session_privs;
权限的回收:
SQL> revoke create table from hr;
赋予查询对象权限,精确到列
SQL> grant select (employee_id, employee_name) on dmhr.employee to hrtest;
相关数据字典:
SQL>select * from dba_sys_privs t where t.GRANTEE= ‘HR’;
SQL>select * from dba_role_privs t where t.GRANTEE= ‘HR’;
SQL>select * from dba_tab_privs t where t.GRANTEE= ‘HR’;

6.3角色管理
DM 预定义角色有:
DBA:最高权限集合,可以创建数据库结构;
RESOURCE:创建数据库对象;
PUBLIC:不可以创建数据库对象,只能对有权限的数据库对象进行数据操纵;
VTI:系统动态视图的查询权限;SOI:系统表的查询权限;
SVI:基础 V 视图的查询权限角色是权限的集合,角色使权限管理更加方便。

DB_AUDIT_开头的角色是审计相关角色,具有审计相关权限,默认赋给 SYSAUDITOR。
DB_POLICY_开头的角色是安全相关角色,具有强制访问控制等权限,默认赋给 SYSSSO。
SQL>create role r1;
SQL>grant create table to r1;
SQL>grant select on dmhr.department to r1;
SQL>grant r1 to hr;
角色禁用和启用,禁用后角色权限将不在生效。
SQL>sp_set_role(‘R1’,0)

七、模式对象管理
模式对象: 表、视图、约束、索引、序列、触发器、存储过程/函数、包、同义词、类、域。
#模式与用户之间的关系:当系统建立一个用户时,会自动生成一个同名的模式。用户还可以建立其他模式,DM 中用户和模式是一对多的关系,一个用户可以拥有多个模式,一个模式仅能归属于一个用户。

7.1模式定义:模式是一个特定的对象集合,在概念上可将其看作是包含表、视图、索引等若干对象的对象集。
#查看模式
SQL>select * from SYSOBJECTS t where t.“TYPE$” =‘SCH’;

#查看用户
SQL>select * from SYSOBJECTS t where t.“SUBTYPE$” =‘USER’;

#查询模式和用户的对应关系:
SQL>select a.id scheid, a.name schename, b.id userid, b.name username from SYS.SYSOBJECTS a, SYS.SYSOBJECTS b where a.“TYPE$” = ‘SCH’ and a.pid = b.id;

#创建模式
SQL>create schema dmsch authorization test;
#查询库中所有模式
SQL>select name,id,schid,type$ from sysobjects a where a.“TYPE$”=‘SCH’;
#查询当前用户,当前模式
SQL>select user;
SQL>select sys_context(‘USERENV’,‘CURRENT_USER’);
#切换模式
SQL>set schema 模式名;

7.2表管理
表包含:索引组织表、堆表、分区表、HUGE 列存储表、外部表、临时表。
在创建表时,通过指定合适的表空间的优点:
1.提高数据库系统的性能,因为不同的数据库表可能对应不同的数据文件,可减少对相同文件的竞争;
2.减少数据库管理的时间,数据库表分布在不同的表空间中,即使一个表空间损坏,也不影响其他表空间上数据库表的正常访问。
#创建表时,在 STORAGE 子句中,可对表指定存储的表空间。如果没有指定,则该表将创建在用户的默认表空间中。
#存储参数解释:
初始簇数目 INITIAL:指建立表时分配的簇个数,必须为整数,最小值为 1,最大值为 256,缺省为 1;
下次分配簇数目 NEXT:指当表空间不够时,从数据文件中分配的簇个数,必须为整数,最小值为 1,最大值为 256,缺省为 1;
最小保留簇数目 MINEXTENTS:当删除表中的记录后,如果表使用的簇数目小于这个值,就不再释放表空间,必须为整数,最小值为 1,最大值为 256,缺省为 1;
填充比例 FILLFACTOR:指定插入数据时数据页的充满程度,取值范围从 0 到 100。默认值为 0,等价于 100,表示全满填充,未充满的空间可供页内的数据更新时使用。
#创建表:
SQL>create table tt(pid int,name varchar(20),sex bit,logtime datetime) TABLESPACE dmtbs;
#CTAS方式创建表:
SQL>create table t_emp01 as select * from dmhr.employee;
SQL>create table t_emp02 like dmhr.employee;
SQL>create table t_emp03 as select * from dmhr.employee where 1=0;
#使用CREATE table as创建表时,默认不会复制表的约束信息,由参数
CTAB_SEL_WITH_CONS指定:
SQL>select * from SYS.“V$PARAMETER” t where t.name like ‘CTAB_SEL_WITH_CONS%’;
#创建带存储参数的表
SQL>create table tt(id int,name varchar(10),cctime datetime default sysdate) storage(initial 50,next 50,minextents 10,fillfactor 80) tablespace TBS;
#修改表的表空间(DM 会自动重建该表上的索引):
SQL>alter table tt move tablespace main;
#查看表归属
SQL>select OWNER,TABLE_NAME,TABLESPACE_NAME from dba_tables t where t.TABLE_NAME like ‘TT%’;
#查看表结构
SQL>describe dmsch.tt;
SQL>SP_TABLEDEF(‘SYSDBA’,‘TT’);
#查看表的空间使用情况
TABLE_USED_SPACE:已分配给表的页面数;
TABLE_USED_PAGES:表已使用的页面数。
SQL>SELECT TABLE_USED_SPACE(‘SYSDBA’,‘TT’);
SQL>SELECT TABLE_USED_PAGES(‘SYSDBA’,‘TT’);

7.3数据的导入
#在 DISQL 下用 start 或`

SQL> start /dm8/backup/dts/t_department.sql
SQL> `/dm8/backup/dts/t_department.sql

或者 disql 可以直接调用脚本:
[dmdba@aws backup]$ disql hr/‘“Dameng@123”’ ‘`city.sql’

可以关闭回显以提高导入效率:
SQL> set TIMING off;
SQL> set FEEDback off;
SQL> set echo off;

7.4管理约束
约束类型:
NOT NULL:非空约束
UNIQUE:唯一约束
PRIMARY KEY:主键约束 (唯一约束+非空约束)
FOREIGN KEY:外键约束
CHECK:检验约束

#增加非空约束
SQL>alter table tt modify name not null;
#增加唯一约束
SQL>alter table tt add CONSTRAINT uk_tt_email unique (email);
#增加主键约束
SQL>alter table tt ADD CONSTRAINT pk_testpid_pid PRIMARY KEY(pid);
#增加检验约束
SQL>alter table tt add salary number(10,2);
SQL>alter table tt ADD CONSTRAINT ck_tt_salary CHECK(salary>=2100);
##外键约束(外键引用两一张表的主键或者唯一键)
SQL>alter table tt add CONSTRAINT fk_test_id FOREIGN KEY(id) REFERENCES tt(id);
#约束的禁用和启用、删除
SQL>alter table tt disable CONSTRAINT fk_test_id;
SQL>alter table tt enable CONSTRAINT fk_test_id;
SQL>alter table tt drop CONSTRAINT fk_test_id;
相关数据字典:
SQL>select * from dba_constraints t where t.owner=‘TT’;
SQL>select * from DBA_CONS_COLUMNS t where t.owner=‘TT’;

7.5视图管理
普通视图(物化视图除外)中不包含数据,数据来源于基表。视图提供一个查询窗口。
从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据;从数据库系统内部来看,一个视图是由 SELECT 语句组成的查询定义的虚拟表简单视图:单表查询,不包含聚合函数、group by 等。一般可以支持 DML 操作,对视图的DML 操作都会转化为对基表的 DML 操作,DML 操作要满足基表的约束条件。
复杂视图:多表连接,包含聚合函数、group by 等。一般不支持增删改操作。
#创建视图
SQL>create [or replace] view view_name as select * from jichu_table;
#创建复杂视图:
SQL>create or REPLACE view hrtest.v_emp_salary as select a.DEPARTMENT_ID, sum(A.SALARY) SUM_SALARY from dmhr.employee a group by a.DEPARTMENT_ID having sum(A.SALARY) > 100000;
#删除视图
SQL>DROP VIEW [IF EXISTS] [<模式名>.] <视图名> [ RESTRICT | CASCADE ];
##其中 RESTRICT 为缺省值。当设置 dm.ini 中的参数 DROP_CASCADE_VIEW 值为 1 时,如果在该视图上建有其它视图,必须使用 CASCADE 参数才可以删除所有建立在该视图上的视图,否则删除视图的操作不会成功;当设置 dm.ini 中的参数 DROP_CASCADE_VIEW 值为0 时,RESTRICT 和 CASCADE 方式都会成功,且只会删除当前视图,不会删除建立在该视图上的视图;

7.6索引管理
索引:一种数据库对象,通过指针加速查询速度,通过快速定位数据的方法,减少磁盘 I/O。
索引特点:索引与表相互独立,索引占用存储空间(如果一个表越大,其索引也会越来越大),索引相当于一个小表,索引是有序的(按照索引字段排序),在查询时服务器自动使用索引,DML操作时自动维护索引。
索引的优点:提高查询性能、减少排序。
索引的缺点:索引不是越多越好,索引会降低 DML 的效率(DML 操作需要维护索引)。
#创建索引
SQL>create index tt_name on dmsch.tt(name);
#重建索引,对索引的数据进行重组,释放空间,提高访问效率和空间效率。
SQL>SP_REBUILD_INDEX(索引所在的模式名, 索引 ID);
#删除索引
SQL>drop index dmsch.tt_name;
#统计信息的收集:
SQL>dbms_stats.gather_table_stats(‘HRTEST’,‘T_EMP01’);
#统计信息的查看:
SQL>dbms_stats.table_stats_show(‘HRTEST’,‘T_EMP01’);
SQL>dbms_stats.index_stats_show(‘HRTEST’,‘IX_EMP01_EMPLOYEENAME’);

八、备份恢复管理
热备:指数据库启动状态下的备份。
冷备:指数据库关闭状态下的备份。
物理还原是备份的逆过程;恢复是使用归档将数据库恢复到最新状态或指定时间点;或使用备份集中的 redo 信息将数据库恢复至一致性状态。
#备份还原两个重要参数:
SQL>select * from v$parameter t where name in (‘BAK_PATH’, ‘BAK_USE_AP’);
BAK_PATH:DM 默认的备份路径,生成环境不要和源库数据文件放在同一磁盘上。避免磁盘损坏,数据文件和备份文件同时损坏的情况。
BAK_USE_AP:备份还原策略,默认使用 DMAP 辅助进程。

8.1手动配置归档
#打开归档,创建归档配置文件:
vim /dm8/data/DMDB/dm.ini ARCH_INI = 1
vim /dm8/data/DMDB/dmarch.ini 增加如下内容:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 2048
ARCH_HANG_FLAG = 1

8.2联机配置归档
su - dmdba
/dm8/bin/disql
SQL>ALTER DATABASE MOUNT;
#开启归档
SQL>ALTER DATABASE archivelog;
SQL>ALTER DATABASE add archivelog ‘type=local,dest=/dm8/arch,file_size=128,space_limit=10240’;
SQL>ALTER DATABASE OPEN;
#查看当前联机日志
SQL>select CKPT_LSN,CUR_LSN,NEXT_SEQ,N_MAGIC,DB_MAGIC from vKaTeX parse error: Expected 'EOF', got '#' at position 7: rlog; #̲查询归档状态,归档配置 SQL…database;
SQL>select arch_name,arch_type,arch_dest,arch_file_size,arch_space_limit from v$dm_arch_ini;

#联机备份时,关闭已配置的本地归档之后再重新打开,会造成归档文件中部分日志缺失,备份时检查归档文件连续性时将会报错。存在该类操作时,若要避免该错误,备份前需要调用 checkpoint(100)主动刷新检查点。

8.3联机备份还原
#联机方式支持数据库、用户表空间、用户表和归档的备份以及用户表的还原。必须保证系统处于归档模式,否则联机备份不能进行。

8.3.1联机完全备份
su - dmdba
/dm8/bin/disql
SQL>backup database full to “FULL_BACK” backupset ‘/dm8/backup/FULL_BACK’;

8.3.2加密备份
密码设置规则遵行 dm.ini 参数 pwd_policy 指定的口令策略
SQL>backup database backupset ‘/dm8/backup/FULL_BACK001’ identified by “Abcd12345”;

8.3.3设置跟踪日志备份
SQL>backup database backupset ‘/dm8/backup/db_bak_for_trace’ trace level 2;

8.3.4校验备份
select sf_bakset_check(‘disk’,‘/dm8/backup/db_bak_for_trace’);

8.3.5备份表
SQL>backup table dmsch.tt backupset ‘/dm8/backup/table_bak’;

8.3.6表还原
SQL>restore table dmsch.tt from backupset ‘/dm8/backup/table_bak’;

8.4脱机备份
工具 DMRMAN 可以针对整个数据库执行脱机完全备份和增量备份,数据库可以配置归档也可以不配置。

8.4.1关闭数据库服务后,打开 DMRMAN
RMAN>backup database ‘/dm8/data/DMBD/dm.ini’ full backupset ‘/dm8/drm_db_full_bak_01’;

8.4.2增量备份
RMAN>backup database ‘/dm8/data/dmbd/dm.ini’ increment with backupdir ‘/dm8’ backupset ‘/dm8/drm_db_full_bak_02’;

8.4.3校验备份
RMAN>check backupset ‘/dm8/drm_db_full_bak_01’;
8.4.4还原数据库。
RMAN>restore database ‘/dm8/data/DMBD/dm.ini’ from backupset ‘/dm8/drm_db_full_bak_01’;

8.4.5恢复数据库
RMAN>recover database ‘/dm8/data/DMBD/dm.ini’ from backupset ‘/dm8/drm_db_full_bak_01’;

8.5表空间 MAIN 的还原与恢复
RMAN> restore database ‘/dm8/data/DAMENG/dm.ini’ tablespace main from backupset ‘/dm8/backup/full/CONSOLEFULLBAK’;

表空间的恢复系统会自动利用归档恢复到最新状态。
RMAN> recover database ‘/dm8/data/DAMENG/dm.ini’ tablespace main;

8.6删除 system 数据文件后的还原与恢复
RMAN>restore database ‘/dm8/data/DM/dm.ini’ from backupset ‘/dm8/backup/full/ONLINEBAK_02’;

数据库的恢复
RMAN> recover database ‘/dm8/data/DM/dm.ini’ with archivedir ‘/dm8/arch’;

更新数据库魔数
RMAN> recover database ‘/dm8/data/DM/dm.ini’ update db_magic;
#表空间还原时会校验数据库魔数:
SQL>select permanent_magic; --查询数据库永久魔数
SQL>select db_magic from v$rlog; --查询数据库当前魔数

8.7不完全恢复的使用场景:
表误删除(DROP),可以指定归档恢复到删除的前一刻。
RMAN>recover database ‘/dm8/data/DMTEST/dm.ini’ with archivedir ‘/dm8/arch’ until lsn XX;
RMAN>recover database ‘/dm8/data/DMTEST/dm.ini’ with archivedir ‘/dm8/arch’ until time XX;

8.8表空间备份
RMAN>backup tablespace dmtbs;
RMAN>backup tablespace dmtbs INCREMENT with BACKUPDIR ‘/dm8/backup/full/’ to DMTBSINCR_01 backupset ‘/dm8/backup/incr/DMTBSINCR_01’ ;

8.9备份集管理
#查看备份集
SQL>select * from v$backupset;

#备份集相关函数
SQL>select * from v$ifun t where t.name like ‘SF_BAKSET%’;
#添加备份集目录(针对当前会话生效)
SQL>SF_BAKSET_BACKUP_DIR_ADD(‘DISK’,‘/dm8/backup/full/’);
SQL>SF_BAKSET_BACKUP_DIR_ADD(‘DISK’,‘/dm8/backup/incr/’);

8.10 逻辑导出和导入
dexp 逻辑导出、dimp 逻辑导入四个级别:
全库(full=y)
按用户(owner=XXX)
按模式(schemas=XXX)
按表(tables=XX)
#逻辑导出
su - dmdba
cd /dm8/bin
./dexp SYSDBA/Dameng123@localhost:5236 directory=/dm8/backup file=test.dmp
owner=test log=test.log log_write=N nolog=Y
#逻辑导入
./dimp USERID=SYSDBA/Dameng123@localhost:5236 FILE=test.dmp
DIRECTORY=/dm8/backup LOG=db_dimp.log OWNER=test

九、作业管理
DM 的作业系统让重复的数据库任务自动完成,实现日常工作自动化。作业系统大致包含作业、警报、操作员、调度等。
#授权 ADMIN JOB 给用户 TEST
SQL>grant admin job to TEST;
DBA 拥有全部的作业权限;ADMIN JOB 可以添加、配置、调度和删除作业等,但没有作业环境初始化 SP_INIT_JOB_SYS(1)和作业环境销毁 SP_INIT_JOB_SYS(0)的权限。
#创建作业环境,即创建系统表:SYSJOBS、SYSJOBSTEPS、SYSJOBSCHEDULES、SYSMAILINFO、SYSJOBHISTORIES2、SYSSTEPHISTORIES2、SYSALERTHISTORIES、SYSOPERATORS、SYSALERTS 和SYSALERTNOTIFICATIONS,均位于 SYSJOB 模式。
#创建 SYSJOB 模式及系统表
SQL>SP_INIT_JOB_SYS(1);
#删除 SYSJOB 模式及系统表
SQL>SP_INIT_JOB_SYS(0);
#创建操作员
SQL>SP_CREATE_OPERATOR(‘TOM’, 1, ‘tom@qq.com’, ‘127.0.0.1’);
#修改操作员
SQL>SP_ALTER_OPERATOR(‘TOM’, 0, ‘tom@qq.com’, ‘127.0.0.1’);
#删除操作员
SQL>SP_DROP_OPERATOR(‘TOM’);
#创建作业
SQL>SP_CREATE_JOB (作业名称,是否启用,邮件系统启用,操作员,什么情况 email,是否开启网络发送,操作员,什么情况 send,描述信息)
SSQL>SP_CREATE_JOB(‘TEST’, 1, 1, ‘TOM’, 2, 1, ‘TOM’, 2, ‘每一个测试作业’);
#修改作业,作业属性修改后,需要重新配置作业,使修改生效
SQL>SP_ALTER_JOB(‘TEST’, 0, 1, ‘DBA’, 2, 1, ‘DBA’, 2, ‘修改一个作业’);
SQL>SP_JOB_CONFIG_START(‘TEST’);
SQL>SP_JOB_CONFIG_COMMIT(‘TEST’);
#删除作业 TEST。
SQL>SP_DROP_JOB(‘TEST’);
#建议:在配置过程中用户不要做任何的 COMMIT 操作或者不要设置 dm.ini 文件中DDL_AUTO_COMMIT=1。
#开始对作业 TEST 进行配置。
SQL>SP_JOB_CONFIG_START(‘TEST’);
#设置作业在指定集群节点号上执行,可选步骤
SQL>SP_JOB_SET_EP_SEQNOO(‘TEST’,2);
#作业增加步骤,参数较多,详细介绍查看作业系统手册
SQL>SP_ADD_JOB_STEP(‘TEST’, ‘STEP’, 0, ‘insert into dmsch.tt values(1000,“STEP1000”);insert into dmsch.tt values(1001, "STEP 1001‘’);insert into dmsch.tt values(1001, “STEP1001”);’, 0, 1, 1, 1,‘’, 0);
#解释:STEP 指定的是执行多条 SQL 语句,其 COMMAND 参数指定的是向 dmsch.tt 表中插入多条记录,执行成功和失败的下一步动作都是不报告步骤执行结果并结束作业,同时指定了失败后只重试两次,时间间隔为 1 秒钟。
#删除作业步骤
SQL>SP_DROP_JOB_STEP(‘TEST’, ‘STEP1’);
#增加作业调度
SQL>SP_ADD_JOB_SCHEDULE(‘TEST’, ‘SCHEDULE’, 1, 1, 1, 0, 1, CURTIME, ‘23:59:59’, CURDATE, NULL, ‘一个测试调度’);
#解释:为作业 TEST 创建一个新的调度,调度名为 SCHEDULE;ENABLE 为 1,即启用这个调度;调度类型 TYPE 为 1,表示按天的频率来执行;FREQ_INTERVAL 为 1,说明每天都要执行;在这种类型下 FREQ_SUB_INTERVAL 参数就不会检查,随机写 0,FREQ_MINUTE_INTERVAL 指定的是 1,说明每隔一分钟就执行一次;STARTTIME 指定是从当前时间开始,CURTIME 表示系统当前时间;ENDTIME 指定 23:59:59,表示每天都是执行到这个时间为止;DURING_START_DATE 为调度的起始日期,表示系统当前日期;DURING_END_DATE 指定的为NULL,表示这个调度指定的日期范围为从开始执行那刻起,永不停止;DESCRIBE 指定为‘一个测试调度’,这是对这个调度的注释。
#删除作业 TEST 的 SCHEDULE 调度。
SQL>SP_DROP_JOB_SCHEDULE(‘TEST’, ‘SCHEDULE’);
#提交配置。
SQL>SP_JOB_CONFIG_COMMIT(‘TEST’);
#创建警报
SQL>SP_CREATE_ALERT(‘ALERT1’, 1, 0,12, -6602, 1, ‘DDL 警报测试’);
#关联警报
SQL>SP_ALERT_ADD_OPERATOR(‘ALERT1’,‘TOM’,1,1);
#监控作业,可通过表 SYSMAILINFO 查看监控服务器管理员信息
SQL>SP_ADD_MAIL_INFO(‘SYSDBA’,‘SYSDBA’,‘127.0.0.1’,‘tom@qq.com’,‘tom@qq.com’,‘11test’);
#进入 DM 安装目录下的 bin 目录,打开 dmjmon 启动监控服务
[root@aws ~]# su - dmdba
[dmdba@aws ~]$ cd /dm8/dmdbms/bin
./dmjmon userid=SYSDBA/Dameng123@127.0.0.1:5288
#通过表 SYSJOBHISTORIES2 查看作业的执行情况
SQL>select * from sysjob.SYSJOBHISTORIES2;
#通过表 SYSALERTHISTORIES 查看警报发生的历史记录。
SQL>select * from sysjob.SYSALERTHISTORIES;

建议使用 DM 工具 manager 图形化操作,直观方便,较命令行友好。
十、安装 unixODBC
上传 tar 包到/opt
#解压
[root@aws opt]# tar -zvxf unixODBC-2.3.11.tar.gz
[root@aws opt]# cd unixODBC-2.3.11
#安装
[root@aws unixODBC-2.3.11]#./configure
[root@aws unixODBC-2.3.11]#make && make install
#配置
[root@aws unixODBC-2.3.11]# vim /usr/local/etc/odbc.ini
[root@aws unixODBC-2.3.11]# cat /usr/local/etc/odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = 127.0.0.1
UID = SYSDBA
PWD = Qwe123asdzxc
TCP_PORT = 5288
[root@aws unixODBC-2.3.11]#
[root@aws unixODBC-2.3.11]# vim /usr/local/etc/odbcinst.ini
[root@aws unixODBC-2.3.11]# cat /usr/local/etc/odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
DRIVER = /dm8/dmdbms/bin/libdodbc.so
[root@aws unixODBC-2.3.11]# su - dmdba
[dmdba@aws ~]$ isql dm8 -v

考试心得

考试时间为2个小时,分为上下午两场,我选的是下午场,2点-4点
考试时dm会提供一个远程vnc连接主机,用于考试使用。按照考题依次作答,如果有不会的题目可以先空着往下做,不要卡在这里,因为两个小时的时间还是比较紧张的,不要打不完题目。考试时要认真审题,有很多小的细节要注意到,比如建表时要注意字段是不是为空,主键外键建立的是否符合题目要求等,需要执行脚本的时候要先看一边脚本具体写的是什么,做到心中有数。最后祝大家考试通过。

更多内容请查看达梦官方网站:https://eco.dameng.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值