注册
DM8实操学习分享
培训园地/ 文章详情 /

DM8实操学习分享

张源凯 2025/10/28 550 0 0

1、 数据库管理系统知识

  • 数据库系统基本概念

数据库是长期存储在计算机内的,有组织的,可共享的,并统一管理大量数据的集合。

  • 数据库分为关系型数据库和非关系型数据库

(1) 关系型数据库:使用关系模型存储数据,使用结构化查询语言管理数据
(2) 非关系型数据库:不使用传统关系模型,而是使用键值对,文档或图形等其他数据模型来存储和管理数据。

  • 表和表之间的数据记录的关系称为表的关联关系。

表的关联关系分为四种:一对一、一对多、多对多、自我引用

  • 关系型数据库的ACID属性是确保数据一致性和可靠性的四个关键特性。

(1) 原子性
一个事务中所有操作要么全部成功完成,要么全部失败回滚。
(2) 一致性
事务执行前后,数据库必须从一个一致状态转换到另一个一致状态。
(3) 隔离性
多个事务并发执行时,每个事务都应该与其他事务隔离,互不干扰。
(4) 持久性
一旦事务提交,其对数据库的更改将是永久性的,即使发送系统故障也不会丢失。

2、 DM8安装
2.1. 收集安装环境
查看系统信息:
cat /proc/version
image.png或者uname -r
image.png查看CPU:
lscpu
image.png
查看内存:
free -m
image.png
查看磁盘空间:
df -h
image.png
查看Glibc、gcc版本
安装DM glibc版本不能低于2.3,linux内核不能低于2.6
ldd --version
image.pnggcc --version
image.png
2.2. 安装DM8
2.2.1. 规划安装用户和用户组
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba
image.png
2.2.2. 规划安装目录
mkdir /dm
chown dmdba:dinstall /dm
2.2.3. 挂载iso镜像文件
mkdir /mnt/dm
mount /opt/dm8_20210818_x86_rh6_64_ent_8.4.2.18_pack14.iso /mnt/dm
image.png
2.2.4. 安装DM数据库
设置图形化界面:
image.png
以图形化界面安装数据库:
image.png
image.png

点击下一步后,选择key,没有key的话直接跳出下一步:
image.png

选择安装的类型:
image.png
安装指式完成数据库安装,安装完成后可以在dm下面看到以下目录及文件:
image.png
2.3. 创建数据库及数据库实例管理
2.3.1. 启动数据库配置助手
在选择是否初始化数据库页面,选择初始化,并选择创建数据库实例。
image.png
2.4. 创建数据库模板
创建数据库模板:
image.png
2.4.1. 选择数据库实例目录
自定义数据库安装路径:
image.png
2.4.2. 输入数据库标识
进行数据库标识的输入:
image.png
2.4.3. 数据库文件所在位置设置
设置数据库的控制文件位置如下:
image.png
设置数据库的数据文件位置如下:
image.png
redo日志文件位置如下:
image.png
初始化日志文件位置如下:
image.png
2.4.4. 数据库初始化参数
根据实际需求进行数据库参数的配置:
image.png

2.4.5. 设置口令以及创建示例库
image.png

2.4.6. 创建实例
点击完成后,创建完数据库后,将弹出来的脚本按提示进行执行:
image.png

执行完成后提示参数修改完成:
以root用户执行提示的脚本重启数据库:
image.png

成功创建实例:
image.png达梦数据库成功安装完成。

3、 DM的体系结构
3.1. 体系结构概览
DM8数据库是由数据库和实例组成的。

  • 数据库:DM数据库指的是磁盘上存放在DM数据库中的数据的集合
  • 实例:实例一般是由一组正在运行的DM后台进程/线程以及一个大型的共享内存组成

3.2. DM存储结构
(1) 逻辑结构:数据库->表空间->段->簇->页
(2) 物理结构:数据文件->操作系统块
(3) 表空间

  • 表空间是DM数据库最大的存储单元,所有数据都存储在表空间中。
  • 表空间采用段、簇、页的方式管理。
  • 一个表空间可以包含一个或多个数据文件。一个数据文件仅能归属一个表空间。
  • DM物理文件包含:配置文件、控制文件、数据文件、联机日志。

3.2.1. 数据库参数的类型
获取参数可以从v$dm_ini或v$parameter中获取。

  • READ ONLY:手动参数
  • SYS:动态(系统级)参数
  • SEAAION:动态(会话级)参数
  • IN FILE:静态参数

静态参数在数据库运行期间不能修改内存中的值,动态参数在数据库运行期间可以修改内存中的值。
3.2.2. 数据库参数的修改方法
(1)console控制台工具
image.png
(2)直接修改dm.ini配置文件
通过vim编辑dm.ini文件
(3)系统函数修改
SP_SET_PARA_VALUE:修改整型参数。
SP_SET_PARA_DOUBLE_VALUE:修改浮点型参数:比如 UNDO_RETENTION。
SP_SET_PARA_STRING_VALUE:修改字符型参数。
sp_set_para_value(2,’COMPATIBLE_MODE’,2):修改 COMPATIBLE_MODE 使其兼容 Oracle 数据库。
(4)使用SQL语句alter system set命令修改
如果 COMPATIBLE_MODE 设置兼容 Oracle,会影响 date 类型。DM 默认的 date 类型只有年月日,没有时分秒,Oracle 的 date 类型相当于 DM 中 datetime 类型;DM 默认 null 和’’不是一个字符,而在 Oracle 中两者都是
null。
alter system set ‘COMPATIBLE_MODE’=2 spfile;

修改LIST_TABLE(会话级动态参数),如果不指定修改参数范围,默认是memory;
alter system set 'LIST_TABLE' =1 both|memory|spfile;
both: 相当于 memory+ spfile,表示对内存中和参数文件都修改;
memory:修改内存中的值;
spfile:修改参数文件中的值。
对于会话级动态参数,可以只针对当前会话生效:
alter session set ‘LIST_TABLE’=0;
3.2.3.其他
控制文件dm.ctl
DM控制文件dm.ctl为二进制文件,无法直接打开,可以用dmctlcvt工具转换为文本文件
数据文件
数据文件用来存放数据:
select * from v$datafile;
联机日志
用来存放redo重做日志信息,联机日志循环使用。
select * from v$rlogfile;
3.3. DM内存结构
3.3.1. 数据缓冲区

  • 用于缓存数据文件中的数据页。
  • 数据缓冲区采用 LRU算法淘汰。
  • 数据缓冲区的大小影响数据库的读写性能,OLTP 数据缓冲区占内存 40-60%,OLAP
  • 可以稍大;系统应尽量减少物理读,提高逻辑读。
  • 当数据库执行检查点(CHECKPOINT)时会做数据缓冲区的刷盘,检查点将数据缓冲
  • 区中的脏页(被修改的数据页)写入对应数据文件。
  • 从磁盘的数据文件中读取数据—物理读
  • 从内存(数据缓冲区)读取数据—逻辑读

select * from v$bufferpool;
修改数据缓冲区大小为500M:
image.png
3.3.2. 重做日志缓冲区
数据库DML操作会产生REDO和UNDO,REDO就是重做日志,UNDO就是回滚日志。
重做日志缓冲区缓存的是REDO。
以下情况会做重做日志的刷盘:

  • 执行commit
  • 每3秒
  • 日志缓冲区满
  • 执行检查点
  • 正常关闭数据库
  • 执行commit的时候会做重做日志的刷盘,但是不会做数据缓冲区的刷盘。

减少commit次数,可以提高性能。
create table t_test(id int, name varchar(50));
--用时长
XXXXXX
commit;
end loop;
end;

--用时短
begin
XXX
end loop;
commit;
end;

3.3.3. SQL缓冲区
用于缓存sql语句、对应的执行计划、缓存结果集。

  • CACHE_POOL_SIZE:用来存储包信息,执行计划、结果集缓存的一片专用缓存区域。对于SQL类别较多,复杂的系统,建议将该参数调大。
  • USE_PLN_POOL:是否启动计划重用
  • RS_CAN_CACHE:是否启动结果集缓存

3.3.4. 字典缓冲区
字典缓冲区是存在数据库对象的一片缓冲区,对应 INI 参数 DICT_BUF_SIZE,DM8 里面数据对象其实对应的是系统表上的一些信息,内存中的数据对象是通过将系统表上的信息取出并解析出来得到的,该缓冲区一是避免了频繁向磁盘请求获取系统表信息,二是可以减少系统表信息解析开销。

3.3.5. 主内存池
共享内存池使用内存池方式管理,负责为其他内存池已经达到其目标大小之后的扩展提供内存。

3.3.6. 运行时的内存池
运行时内存池使用时申请,用完即释放。

3.4. DM线程
达梦数据库采用单进程多线程架构,不同的线程可以在单个进程中共享资源,避免了多进程之间通讯的代价。和达梦数据库不同,ORACLE 数据库采用多进程架构,多进程之间通过 SGA进行资源共享。
查看数据库进程:
image.png
查看数据库对应的线程:
image.png
Top命令查看达梦数据库cpu资源占用:
image.png
动态视图:
Select * from v$process; --进程
Select * from v$threads; --线程

  • 监听线程dm_lsnr_thd
    用于在服务器端口上进行循环监听,有来自客户的连接请求,监听线程被唤醒并生成一个会话线程,将申请的任务加入工作线程的任务队列,等待工作线程进行处理。

  • 会话线程dm_sql_thd
    每个会话 session 对应一个会话线程,当数据库连接会话较多时,会话线程会较多。
    会话对应的线程 id 可以在 v$sessions 中查询。
    image.png

  • 工作线程dm_tskwrk_thd、dm_wrkgrp_thd
    DM的核心线程:默认16个线程。

  • IO线程dm_io_thd
    用于读写数据
    需要处理的数据块不在缓冲区中,此时需要将相关数据块读入缓冲区 -物理读
    缓冲区满或系统关闭时,此时需要将部分脏数据块写入磁盘 -写脏块
    检查点到来时,需要将所有脏数据块写入磁盘

  • 日志刷新线程 dm_redolog_thd
    日志的刷盘。主要用于事务提交或检查点时将日志缓冲区中的 REDO 日志写入到日志文件中。

  • 日志归档线程 dm_rsyswrk_thd
    完成 redo 日志的归档。

  • 日志重做线程
    主要用于系统故障恢复,日志重做线程根据 REDO 日志进行并行的故障恢复
    调度线程 dm_sched_thd用于定时调度任务。

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

  • DM默认预定义 SYSTEM、ROLL、MAIN、TEMP 四个表空间。
    (1) SYSTEM
    系统表空间,存放数据字典等信息,SYSTEM 表空间对应的数据文件自动扩展属性不允许关闭。
    (2) ROLL
    回滚表空间,存放回滚页,数据库中的 DML 操作对应都会生成 redo 和 undo, undo 信息放入 ROLL 表空间对应的数据文件中,redo 信息写入重做日志文件,用于保证数据的一致性。相当于 Oracle 的 UNDO 表空间。表的闪回查询依赖回滚表空间。
    (3) MAIN
    用户默认表空间,当创建用户时,如果没有指定用户的默认表空间,则 MAIN 为用户的默认表空间。相当于 Oracle 的 USERS 表空间。
    (4) TEMP
    临时表空间,存放临时表数据、临时结果集等,当大量的数据排序或创建索引等占用临时表空间。DM 中临时表空间大小由参数 TEMP_SIZE 指定。

  • 修改临时表空间大小:
    image.png
    4.1.2.SQL管理表空间

  • 创建表空间:
    image.png

  • 表空间脱机:
    image.png

  • 表空间重命名:
    image.png

  • 删除表空间:
    image.png

  • DM管理工具管理表空间:
    image.png

4.2. 管理数据文件
4.2.1. 修改表空间

  • 修改表空间添加数据文件:
    image.png
  • 修改表空间数据文件的扩展属性:
    image.png
  • 修改表空间数据文件大小:
    image.png

4.2.2. 迁移自定义表空间数据文件
自定义的表空间,可以在脱机后迁移数据文件。

alter tablespace tbs offline;
alter TABLESPACE tbs RENAME DATAFILE ‘TBS01.DBF' TO
‘/dm8/data/DM/TBS/TBS01.DBF';
alter TABLESPACE tbs RENAME DATAFILE ‘TBS02.DBF' TO
‘/dm8/data/DM/TBS/TBS02.DBF';
alter tablespace tbs online;

4.3. 管理重做日志文件
重做日志文件包含联机日志文件和归档日志文件
联机重做日志文件:存放redo信息,循环使用,不断覆盖
数据字典:
Select * from v$rlogfile;
Select * from v$rlog;
修改联机日志文件大小
image.png

添加联机日志文件:
image.png

修改联机日志文件路径:
image.png

4.4. 归档管理
联机备份,数据库需要开启归档状态。
查看是否开启归档:
image.png
查看归档配置:
image.png
开启归档的方法:
image.png
修改归档的配置:
image.png
SQL关闭归档:
image.png
DM管理工具图形化界面开启归档:
image.png
image.png

归档日志文件的切换和删除
DM支持手工切换归档
alter SYSTEM ARCHIVE LOG CURRENT;
alter SYSTEM SWITCH LOGFILE;
alter DATABASE ARCHIVELOG CURRENT;

归档文件的删除:
select * from v$ifun t where name like 'SF_ARCHIVELOG_%';
SF_ARCHIVELOG_DELETE_BEFORE_LSN
SF_ARCHIVELOG_DELETE_BEFORE_TIME
--删除10天前的归档日志。
Select SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate-10);

查看归档日志文件:
select * from v$arch_file;

5、 用户管理
5.1. 用户管理
DM 普通版本三权分立,安全版本四权分立。
DM 默认的预定义用户:
SYS:系统内置用户,不允许登录。常用的数据字典表信息在该用户下。
SYSDBA:系统管理员,拥有几乎所有权限(除数据库审计和强制访问控制之外的权限)
SYSAUDITOR:系统审计管理员,具有审计相关权限。
SYSSSO:系统安全管理员,具有强制访问控制等权限;
SYSDBO:安全版本才有的用户,安全对象操作员。
5.1.1.系统口令策略
PWD_POLICY(隐含参数,不在 dm.ini 中)参数指定系统的口令策略。
新版本(2024 年 12 月后的版本)口令策略:
<口令策略>用于设置口令策略,取值 15 或 31。15:禁止与用户名相同、口令长度需大于等于 INI 参数 PWD_MIN_LEN 设置的值、须同时包含大写字母(A~Z)和小写字母(a-z)、至少包含一个数字(0-9);31:除了取值 15 的策略外,还要求至少包含一个标点符号(英文输入法状态下,除“ 和空格外的所有符号)。

修改系统口令策略:
alter SYSTEM set ‘PWD_POLICY’=15 BOTH;

5.1.2. SQL管理用户
创建用户:
image.png
用户锁定和解锁:
image.png
修改用户默认表空间:
image.png
修改用户密码:
alter user hr identified by “Dameng@123”;
删除用户:
drop user if EXISTS hr;
drop user if EXISTS hr CASCADE;

5.1.3. 用户资源限制
用户资源限制设置
alter user hr LIMIT FAILED_LOGIN_ATTEMPS 5,PASSWORD_LOCK_TIME 3;

5.1.4. DM管理工具管理用户
image.png

5.1.5. 权限管理
权限分为系统权限(数据库权限)和对象权限。
赋予数据库权限:
grant create table to hrtest;

赋予对象权限:
grant select on dmhr.employee to hrtest;

权限回收:
revoke create table from hrtest;

赋予查询对象权限,精确到列:
grant select(employee_id,employee_name) on dmhr.employee to hrtest;

5.1.5. 角色管理
create role r1;
grant create table to r1;
grant select on dmhr.department to r1;
grant r1 to hrtest;

6、 模式对象管理
6.1. 管理模式
6.1.1. 模式与用户之间的关系
(1)模式定义:模式是一个特定的对象集合,在概念上可将其看作是包含表、视图、索引等若
干对象的对象集
(2)模式对象: 表、视图、约束、索引、序列、触发器、存储过程/函数、包、同
义词、类、域
(3)模式与用户之间的关系:
当系统建立一个用户时,会自动生成一个同名的模式
用户还可以建立其他模式,DM 中用户和模式是一对多的关系,一个用户可以拥有多个模
式,一个模式仅能归属于一个用户。Oracle 中用户和模式是一对一的关系。

select * from SYSOBJECTS t where t.”TYPE$”=’SCH’; ---查看模式
image.png
select * from SYSOBJECTS t where t.”SUBTYPE$”=’USER’; ---查看用户
image.png
Select a.id scheid,a.name schema,b.id userid,b.name username
From SYS.SYSOBJECTS a,SYS.SYSOBJECTS b
Where a.”TYPE$”=‘SCH’ and a.pid=b.id; ---查询模式和用户的对应关系

6.1.2. 模式管理
创建模式:
create schema hrtest01 authorization HRTEST;
image.png
create table hrtest01.t_test(id int,name varchar(20));
image.png

查看当前模式和当前用户:
select sys_context(‘USERENV’,’CURRENT_SCHEMA’);
select sys_context(‘USERENV’,’CURRENT_USER’);

切换模式:
set SCHEMA dmhr;

删除模式:
drop schema if exists hrtest01;
drop schema if exists hrtest01 cascade; --级联删除模式下对象

6.2. 管理表
6.2.1. SQL管理表
创建表:
create table hrtest.t_testpid(
pid int,
pname varchar(20),
sex bit,
logtime datetime)
TABLESPACE dmtbs;
image.png
CTAS方式创建表:
create table t_emp01 as select * from dmhr.employee;
create table t_emp02 like dmhr.employee;
create table t_emp03 as select * from dmhr.employee where 1=0;

添加字段:
alter table hrtest.t_testpid add column email varchar(20);
修改字段类型:
alter table hrtest.t_testpid modify email varchar(50);
删除字段:
alter table hrtest.t_testpid drop logtime;
对字段添加默认值:
alter table hrtest.t_testpid add column logtime datetime default sysdate;
重命名表或字段:
alter table t_test rename to t_testoa;
alter table t_testoa rename column id to pid;

修改表的表空间:
alter table hrtest.T_TESTPID move tablespace main;

6.2.2. 数据的导入
disql 下用 start 或反引号“”都可以,也支持@,@@,相对路径等。 Oracle 用@: SQL> start /dm8/backup/dts/t_department.sql SQL> /dm8/backup/dts/t_department.sql
或 SQL> @./dts/t_department.sql

DM 管理工具 SQL 窗口选择第四个按钮“执行脚本”, 会自动使用反引号+文件路径导入数 据(导入后需要手工 commit); /dm8/backup/dts/t_department.sql
image.png

DM管理工具创建表:

6.3. 管理约束
约束类型:
NOT NULL:非空约束
UNIQUE:唯一约束,列值可以为空,但值必须唯一
PRIMARY KEY:主键约束,一张表只能有一个主键。
FOREIGN KEY:外键约束,引用另一张表的主键或者唯一键,表 A 的某一
列引用 B 表某个唯一列,B 称为父表、A 称为子表。
CHECK:检验约束,用于检验列的值需要满足检验条件

6.3.1. SQL管理约束
非空约束:
alter table hrtest.t_testpid modify pname not null;
image.png
唯一约束:
alter table hrtest.t_testpid add constraint uk_testpid_email unique(email);
image.png
主键约束:
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);

重命名约束:
alter table T_EMP rename constraint pk_emp_deptid to ffk_emp_deptid;

约束的禁用和启用、删除
alter table hrtest.t_test disable constraint fk_test_id;
alter table hrtest.t_test enable constraint fk_test_id;
alter table hrtest.t_test drop constraint fk_test_id;

6.4. 管理索引
6.4.1. SQL管理索引
创建索引:
create table T_EMP like DMHR.EMPLOYEE;
image.png
Create index ix_emp on T_EMP(EMPLOYEE_NAME);

重建索引:
alter index ix_emp rebuild online;

删除索引:
drop index ix_emp;
6.5. 管理视图
6.5.1. 视图管理
创建视图:
create view hrtest.v_emp as
select a.EMPLOYEE_ID, a.EMPLOYEE_NAME, a.EMAIL, a.PHONE_NUM
from dmhr.employee a where a.DEPARTMENT_ID = 1001;

修改视图:
create or REPLACE view XXX

创建复杂视图:
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;

create or REPLACE view v_empnum
as select t.DEPARTMENT_ID, count() empnum
from t_emp01 t
group by t.DEPARTMENT_ID
having count(
) > 25;

7、 数据库的备份还原
7.1. 备份还原基本概念
(1)按照备份原理划分为物理备份和逻辑备份:
物理备份是拷贝数据文件中有效的数据页。备份效率更高,备份更快。
逻辑备份是导出数据库中逻辑数据等,数据量大时备份还原效率较低。
(2)从备份的完整性划分:物理备份分为完全备份 FULL、增量备份 INCREMENT;
(3)从备份时数据库状态划分:联机备份(热备)和脱机备份(冷备)。
热备:指数据库启动状态下的备份,也叫联机备份。
冷备:指数据库关闭状态下的备份,也叫脱机备份。

7.2. 脱机备份与还原数据库
使用dmrman进行脱机备份
库备份:
backup database ‘/dm/data/DM/dm.ini’;

表空间级的还原与恢复:
restore+recover
restore database ‘/dm/data/DAMENG/dm.ini’ tablespace main from backupset ‘XXX’;
recover database ‘/dm/data/DAMENG/dm.ini’ tablespace main;

库级的还原恢复:
restore + recover + 更新数据库魔数(update db_magic)
restore database '/dm8/data/DM/dm.ini' from backupset
'/dm8/backup/full/ONLINEBAK_02';
recover database '/dm8/data/DM/dm.ini' with archivedir '/dm8/arch';
recover database '/dm8/data/DM/dm.ini' update db_magic;

7.3. 联机备份与还原数据库
联机备份:
backup database FULL to FULLBACK backupset ‘/dm8/backup/FULLBAK’;

表空间备份:
Backup tablespace dmtbs;

表和归档的备份:
backup table dmhr.employee;
backup archivelog all:

7.4. 逻辑备份
全库导出:
[dmdba@KylinDCA03 dexp]$ dexp userid=sysdba/Dameng123:5236
directory=/dm8/backup/dexp file=full.dmp log=full.log full=y
按用户导出:
dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=HRTEST.dmp
log=HRTEST.log owner=HRTEST
按模式导出:
dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=DMHR.dmp
log=DMHR.log schemas=DMHR
按表导出:
dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp
file=EMPLOYEE.dmp log=EMPLOYEE.log tables=DMHR.EMPLOYEE

全库导入:
dimp userid=sysdba/Dameng123:5238 directory=/dm8/backup/dexp file=full.dmp
log=impfull.log full=y
按模式导入(将 A 模式导入到 B 模式,使用 REMAP_SCHEMA 参数):
dimp userid=sysdba/Dameng123:5238 directory=/dm8/backup/dexp file=DMHR.dmp
log=impDMHR.log REMAP_SCHEMA=DMHR:DMTEST
表导入测试:
dimp userid=sysdba/SYSDBA:5238
directory=/dm8/backup/dexp file=t_dept.dmp log=t_dept.log tables=SYSDBA.t_dept
remap_schema=SYSDBA:DMHR

模式映射、表映射(新版本支持 REMAP_TABLE)
将 DMHR.CITY 导入到 DMTEST.T_CITY 中:
[dmdba@localhost dexp]$ dimp userid=dmtest/'"Dameng@123"'
file=/dm8/backup/full.dmp log=/dm8/backup/dexp/dimp.log
remap_schema=DMHR:DMTEST tables=DMHR.CITY
REMAP_TABLE=DMHR.CITY:T_CITY

8、 作业管理
创建代理环境:
image.png
创建作业:
image.png
image.png
image.png

9、 ODBC连接DM数据库
9.1. 解压
image.png
9.2. 配置、编译、安装
image.png
9.3. 配置驱动信息和数据源信息
image.png
image.png
image.png

10、 DCA实战分享
10.1. 数据库安装
1、创建用户、组
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba
2、创建数据库安装目录
mkdir /dm8
chown dmdba:dinstall /dm8
3、修改限制
ulimit -n 65536
vim /etc/security/limits.conf
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 10240
dmdba hard nproc 10240
dmdba soft core unlimited
dmdba hard core unlimited
4、挂载iso文件
cd /opt
mount -o loop /opt/DMXXXXX /mnt
5、图形化安装数据库
su - root
xhost +
echo $DISPLAY
su - dmdba
export DISPLAY=XXX
Xhost +

10.2. 实例创建
cd /dm8/tool
./dbca.sh
按流程进行创建下一步即可

10.3. 参数修改
常用的数据库参数修改方法:
(1)console控制台工具
图形化界面方式修改:
cd /dm8/tool
./console
image.png
(1) 使用SQL语句alter system set命令修改
修改成oracle兼容模式:
alter system set ‘COMPATIBLE_MODE’=2 spfile;
修改数据缓冲区大小为500M:
alter system set ‘BUFFER’=500 spfile;

修改会话级动态参数
alter session set ‘LIST_TABLE’ =0;
修改临时表空间的初始大小:
alter system set 'TEMP_SIZE'=100 spfile;

修改LIST_TABLE(会话级动态参数),如果不指定修改参数范围,默认是memory:
alter system set ‘LIST_TABLE’=1 both|memory|spfile;

10.4. 创建表空间
使用create tablespace语句创建表空间:
create tablespace tbs DATAFILE ‘TBS01.DBF’ SIZE 32;
create tablespace tbs DATAFILE ‘TBS01.DBF’ SIZE 64 autoextend on next 1 maxsize 1024,
‘TBS02.DBF’ SIZE 64 autoextend on next 1 maxsize 1024;

另一种方式可以直接通过图形化界面右击创建表空间

10.5. 创建用户、角色、权限管理
创建用户及权限管理
创建用户:
create user hr identified by Dameng123 defualt tablespace tbatest;
修改用户密码:
alter user sysdba identified by XXX;
赋予数据库权限:
grant create table to hr;
赋予对象权限:
grant select on dmhr.employee to hr;

角色管理
create role r1;
grant create table to r1;
grant select on dmhr.department to r1;
grant r1 to hr;

10.6. 创建表、约束
创建表:
create table hr.test(
pid int,
pname varchar(20),
sex bit,
logtime datatime)
TABLESPACE dmdts;

CTAS方式创建表:
create table temp1 as select * from XXX;
create table temp2 like XXX;

创建表并附主键、外键:
create table “TEST”.”DEPARTMENT”(
“DEPARTMENT_ID” INTEGER NOT NULL,
“EMPLOYEE_NAME” VARCHAR(30),
“LOCATION_ID” INTEGER,
“LOCATION_ADDR” VARCHAR(30),
NOT CLUSTER PRIMARY KEY(“DEPARTMENT_ID”)) STORAGE(ON “TBS”,CLUSTERBTR)

create table “TEST”.”EMPLOYEE”(
“EMPLOYEE_ID” INTEGER NOT NULL,
“EMPLOYEE_NAME” VARCHAR(20),
“EMAIL" VARCHAR(50),
"PHONE_NUM" CHARACTER(20),
"HIRE_DATE" DATE,
"JOB_ID" VARCHAR(10),
"SALARY" INTEGER,
“DEPARTMENT_ID” INTEGER,
NOT CLUSTER primary key(“EMPLOYEE_ID”),
CONSTRAINT KK FOREIGN KEY(“DEPARTMENT_ID”) REFERENCES
“TEST”.”DEPARTMENT”(“DEPARTMENT_ID”))
STORAGE(ON “TBS”,CLUSTERBTR);

管理约束
非空约束:
alter table hr.test modify pname not null;
唯一约束:
alter table hr.test add constraint kk unique(email);
主键约束:
Alter table hr.test add constraint kk PRIMARY KEY(pid);
检验约束:
Alter table hr.test add constraint kk CHECK(salary>=2100);
外键约束:
Alter table hr.test add constraint kk FOREIGN KEY(id) REFERENCES hr_testpid(pid);

10.7. 导入脚本数据
disql下用start或反引号” ”都可以,也支持@,@@,相对路径等。 SQL> start /dm8/backup/dts/t_department.sql SQL>/dm8/backup/dts/t_department.sql

或者直接通过可视化界面./manager进行按钮执行。

10.8. 索引
创建索引:
create index kk ON hr.test(EMPLOYEE_NAME);
索引重建:
alter index kk REBUILD ONLINE;
删除索引:
drop index

10.9. 视图
创建视图:
create or replace view hr.st as
select a.EMPLOYEE_ID,a.EMPLOYEE_NAME,a.EMAIL,a.PHONE_NUM from hr.st a where a.department_id=1001;

create or REPLACE view hrtest.v_emp_salary
as
select a.DEPARTMENT_ID, sum(A.SALARY) as SUM_SALARY
from dmhr.employee a
group by a.DEPARTMENT_ID
having sum(A.SALARY) > 100000;

create VIEW TEST.VIEW_ADDR AS SELECT STUDENT_NAME,STUDENT_ADDR FROM
STUDENTS WHERE STUDENT_ADDR like '%武汉市%';

create VIEW TEST.VIEW_SALARY
AS
SELECT A.DEPARTMENT_ID,A.DEPARTMENT_NAME,SUM(B.SALARY) as SUM_SALARY
FROM TEST.DEPARTMENT A,TEST.EMPLOYEE B
WHERE A.DEPARTMENT_ID=B.DEPARTMENT_ID
GROUP BY A.DEPARTMENT_ID,A.DEPARTMENT_NAME
HAVING SUM(B.SALARY)>80000;

10.10. 开归档
开启归档:
alter database mount;
alter database ARCHIVELOG;
alter database ADD ARCHIVELOG ‘type=local,dest=/dm8/arch,file_size=128’;
alter database open;

修改归档:
alter database modify ARCHIVELOG ‘type=local,dest=/dm8/arch,file_size=128’
关闭归档:
alter database mount;
alter database noarchivelog;

10.11. 物理备份
脱机备份(需要在数据库关闭的情况下):
backup DATABASE ‘/dm8/data/DM/dm.ini' full to “FULL_BACK” BACKUPSET '/dm8/backup/FULL_BACK';

联机备份:
backup DATABASE full to “FULL_BACK” BACKUPSET '/dm8/backup/FULL_BACK';

10.12. 逻辑备份
在bin目录下:
./dexp userid=sysdba/Dameng123:5236 directory=/dm/backup file=test.dmp log=test.log owner=TEST;

10.13. DM作业
可通过可视化界面进行创建。如图:
image.png
image.png

10.14. ODBC配置
ODBC 的安装和配置:
(1)解压
[root@KylinDCA03 opt]# tar -zxvf unixODBC-2.3.0.tar.gz
(2)配置、编译、安装
[root@KylinDCA03 opt]# cd unixODBC-2.3.0/
[root@KylinDCA03 unixODBC-2.3.0]# ./configure
[root@KylinDCA03 unixODBC-2.3.0]# make
[root@KylinDCA03 unixODBC-2.3.0]# make install
[root@KylinDCA03 unixODBC-2.3.0]# cd /usr/local/etc/
[root@KylinDCA03 etc]# vim odbcinst.ini
[root@KylinDCA03 etc]# vim odbc.ini
[root@KylinDCA03 etc]# cat odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so
[root@KylinDCA03 etc]# cat odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = Dameng123
TCP_PORT = 5236

测试连接
su - dmdba
isql dm8 -v

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服