注册
DM8自使用手册和解读
培训园地/ 文章详情 /

DM8自使用手册和解读

Ylimhs. 2023/08/04 1239 0 0

一、 安装DM8(Linux(glibc 2 以上,内核 2.6,kde/gnome 桌面环境,预先安装unixodbc组件 gcc 包))
(注:图形化使用方法如下:
第一步:查询端口号。使用root账号登录考试机器,执行echo $DISPLAY
[root@localhost 桌面]# echo $DISPLAY
查询结果示例
:2.0
第二步:root账号执行命令 xhost +
[root@localhost 桌面]# xhost +
access control disabled, clients can connect from any host
第三步:由root账号切换为dmdba账号
[root@localhost 桌面]# su - dmdba
第四步:设置端口号为第一步查询出来的端口号,即可使用图形化界面
[dmdba@localhost ~]$ export DISPLAY=:2.0

  1. 先确认硬件信息
    Export DISPLAY=系统ip:0.0
    xhost + 设置图形变量

Uname -ra 系统版本
cat /proc/cpuinfo 查看 cpu、
free -m 查看内存
fdisk -l
df -h 查看磁盘
2. 关闭防火墙 和iptables 策略
systemctl status firewalld 查看防火墙状态
systemctl stop firewalld 关闭防火墙
systemctl disable firewalld 永久关闭

iptables -L
iptables -F 查看默认策略
vi /etc/sysconfig/selinux 修改状态为disabled
3. 确认是否有gcc包(glibc)
rpm -ap|grep glibc* 查看相应rpm包
4. 建立安装目录文件夹
mkdir * 新建文件夹
5. 建立数据库和使用用户
groupadd 用户组 建立用户组
useradd -g 用户组 用户名 建立用户在用户组
chown 用户名:用户组 -R 新建文件夹 修改文件夹权限(给新建的用户)
6. 配置新建用户的环境变量 (新建用户中修改)
[lch@localhost ~]$ vi .bash_profile 修改

export DM_HOME=/DM8									

export PATH=$PATH_HOME/bin:$DM_HOME/tool 添加两行

source .bash_profile 生效命令
7. 挂载iso文件,安装(新建用户中安装)
mount -o loop /opt/dm8_setup_rh7_64_ent_8.1.1.88_20200629.iso /mnt 挂载(root)
cd /mnt
./DMInstall.bin ./DMInstall.bin -I 执行安装文件

mount -o remount,size=4G /tmp(如果提示tmp空间不足报错,在root下执行命令,再安装)
8. 初始化实例(新建用户中)
./dbca.sh 执行数据库配置助手
9. 连接数据库
cd /MD8/bin
./disql 实例用户/实例密码 命令行连接数据库
二、 表空间管理
select tablespace_name,status from user_tablespaces; 查询表空间的相关信息

create tablespace "名称" datafile '路径.DBF' size 文件大小 autoextendonnext 1,
'路径.DBF ' size 文件大小 autoextend on next 1CACHE = NORMAL;
--创建表空间(可图形化操作)

  1. 查看到表空间数据文件
    select file_name, file_id, status, tablespace_name, bytes/1024/1024from dba_data_files;
    -查看

alter tablespace "名称" add datafile'路径DBF' size 文件大小 autoextend on; -增加表空间
11. 更换存储位置
1)表空间 offline;
alter tablespace test02 offline;
2)修改表空间存储位置
alter tablespace test02 rename datafile'/dm8/data/DAMENG/TEST02_01.DBF' TO '/dm8/TEST02_01.DBF';
3)表空间 online;
alter tablespace test02 online;
3、修改表空间的缓冲区类型
alter tablespace "TEST02" cache = "KEEP";
12. 临时表空间
Select para_name,para_value from v$dm_ini where para_name like ‘%TEMP%’; -查看临时表空间

临时表空间不足修改 temp_size 的值:
sp_set_para_value(2,'TEMP_SIZE',大小MB);
[dmdba@localhost bin]$ ./DmService实例名 restart -重启服务生效
/dm8/data/DAMENG/TEMP.DBF 文件的大小会一起改变。

(1:动态参数
2:静态参数
DM 的参数类型:
SYS/SESSIOIN:动态参数,同时修改内存和配置文件Read only:在数据库运行时,不能修改
In file:静态参数,修改配置文件,重启实例服务生效。)
13. Roll表空间不足
alter tablespace ROLL resize datafile '/dm8/data/DAMENG/ROLL.DBF' TO 256;
14. 删除表空间,
不能删除已经使用的表空间,即使是该表空间处于脱机状态)

Drop tablespace 表名称; -删除表空间

三、 用户管理
15. 创建用户(图形化操作)
create user "TEST" identified by "dameng123"
limit session_per_user 1000, failed_login_attemps 3, password_life_time90, password_lock_time 30, password_grace_time 10
allow_ip "192.168.1.2" default tablespace "TEST" default index tablespace "TEST";
grant "PUBLIC","RESOURCE","SOI","VTI" to "TEST";
grant CREATE TABLE,CREATE VIEW,REFERENCES TABLE,GRANTANYTABLE,CREATE ANY VIEW to "TEST";
grant SELECT,INSERT,DELETE,UPDATE,REFERENCES,SELECT FOR DUMPon"DMHR"."EMPLOYEE" to "TEST";

  1. 用户权限(图形化操作)
    Select grantee,gtanted_role from dba_role_privs where grantee=’用户名’ 查看角色

Select * from dcca_sys_privs where grantee=’用户名’ 查看系统权限

Select * from DBA_TAB_PRIVS where grantee=’用户名’ 查看对象权限

  1. 创建角色(图形化操作)
    create role "KFROLE"; grant "PUBLIC","SOI","SVI","VTI" to "KFROLE"; grant CREATE TABLE,CREATE VIEW to "KFROLE"; grant SELECT("EMPLOYEE_ID"),INSERT("EMPLOYEE_ID"),UPDATE("EMPLOYEE_I D"),REFERENCES("EMPLOYEE_ID") on "DMHR"."EMPLOYEE" to "KFROLE"; grant SELECT("HIRE_DATE"),INSERT("HIRE_DATE"),UPDATE("HIRE_DATE"),REFERENCES("HIRE_DATE") on "DMHR"."EMPLOYEE" to "KFROLE"; grant SELECT("EMPLOYEE_NAME"),INSERT("EMPLOYEE_NAME"),UPDATE("EMPLOYEE_NAME"),REFERENCES("EMPLOYEE_NAME") on"DMHR"."EMPLOYEE" to "KFROLE";

  2. 删除用户和角色
    Drop user 用户名;
    Drop user 用户名 cascade;-----慎重,最好先备份
    Drop role 角色名; --删除角色
    SP_SET_ROLE(‘ROLE1’,1) --角色的禁用和启用 1:启用 0 禁用
    四、 Sql语句(达梦)
    Sql 语句的分类
    DQL:数据查询语句 select ... from ...where 组成的查询块
    DDL:数据定义语句 create table create view create index 等等
    DML:数据操作语句 insert update delete
    DCL:数据控制语句 用于授予或回收访问数据库的权限,控制数据库操作纵事务,对数据库进行监视等。

  3. 简单查询sql语句
    Select * form
    Select 列 from 表的路径
    Select 列 as 别名 from 表的路径
    Select distinct 列 from 表的路径
    Select 列 from 表的路径 where 筛选条件
    Select 列 from 表的路径 where 筛选条件 like 模糊查询
    Select 列 from 表的路径 order by 升序或者降序(desc asc)

Select * from 表的路径; --查询表的所有列

select employee_name,salary,salary+1000 from dmhr.employee; --查询表的名字,工资列,,加上工资的换算。

select employee_name,salary,salary+1000 as lu from dmhr.employee; --查询表的名字,工资列,,加上工资的换算,,设置工资换算别名为lu。

select distinct department_id from dmhr.employee; --查询表的所有部门编号,并去重多出来的。

select department_id,employee_name||'的工资是'||salary as 工资 from dmhr.employee; --查询表的部门,名字,工资列,,连接名字和工资的列,,设置新列的别名为‘工资’。

select * from dmhr.employee where department_id='101'; --查询表中所有列,只筛选 部门为101 的;

select department_id,employee_name,salary from dmhr.employee where salary>=10000
and salary<=20000; --查询表的部门,名字,工资列,筛选工资大于10000小于20000的;
select department_id,employee_name,salary from dmhr.employee where salary=10000
or salary=20000; --查询表的部门,名字,工资列,筛选工资10000或者20000的;
select department_id,employee_name,salary from dmhr.employee where
not salary=30000; --查询表的部门,名字,工资列,筛选工资不是30000的;

select department_id,employee_name,salary from dmhr.employee where salary
in (10000,20000); --查询表的部门,名字,工资列,筛选工资10000或者20000的;

select department_id,employee_name,salary from dmhr.employee where employee_name
like '马_';
select department_id,employee_name,salary from dmhr.employee where employee name
like '马%'; --查询表的部门,名字,工资列,筛选姓名为 马% 或者 马_ 的;

select employee_id,employee_name,salary from dmhr.employee
order by salary desc,employee_id asc; --查询员工编号,名字,工资列,工资降序排列,员工编号升序

  1. 字符函数

  2. 数值函数

  3. 日期函数

  4. 转换函数

  5. 分组函数
    AVG—平均
    COUNT—计数
    MAX—最大
    MIN—最小
    SUM—总和

select department_id,max(salary) as maxsal,min(salary)as minsal,avg(salary) as avgsal
from dmhr.employee group by department_id;
----查询并求出表中每个部门id的最高工资,最低工资,平均工资。

select department_id,max(salary) as maxsal,min(salary)as minsal,avg(salary) as avgsal
from dmhr.employee group by department_id having avg(salary)>10000;
----查询并求出表中每个部门id的最高工资,最低工资,平均工资,,并增加过滤条件平均工资大于10000………………………. 分组统计中,不能使用 where 进行过滤,只能使用having 来进行过滤.

  1. 多表连接查询
    语法: select (列名) from(一张表) join (另一张表) on (连接条件);

select city_name,street_address from dmhr.location as l join dmhr.city as u
on l.city_id=u.city_id;

  • ------查询城市名称和城市街道,连接另一张表,的条件是*=*。(连接两张表中同一列名,需要as 别名)

select city_name,street_address from dmhr.location as l left join dmhr.city as u
on l.city_id=u.city_id; 左外连接,显示jion 左边表的不满足条件
select city_name,street_address from dmhr.location as l right join dmhr.city as u
on l.city_id=u.city_id; 右外连接,显示jion 右边表的不满足条件
select city_name,street_address from dmhr.location as l full join dmhr.city as u
on l.city_id=u.city_id; 全外连接,显示jion 左右两边表的不满足条件

  1. 子查询
    select employee_name,salary,department_id from dmhr.employee
    where department_id=(select department_id from dmhr.employee where employee_name='马学铭');
    --先查询马学铭的部门id………查询姓名,工资,部门id ,条件是部门id等于先查询的结果。(单行子查询)

select employee_name, salary from dmhr.employee where salary >all
(select salary from dmhr.employee where department_id=103) order by salary desc;

--(IN 等于列表中的任意一个
ANY 将值与子查询返回的任意一个值进行比较
ALL 将值与子查询返回的每个值进行比较>ALL :大于最大值
<all: 小于最小值

any: 大于最小值
<any: 小于最大值)

  1. MERGE 操作(在数据仓库应用中经常使用到)
    insert into 表名(或跟列名) values(插入数据); --插入操作
    update 表名 set 列名 where 加筛选条件
    delete from 表名 where 加筛选条件

insert into test.t1 values( 2,'t1_2');
insert into test.t1 values( 3,'t1_3');
insert into test.t2 values( 2,'t2_2');
insert into test.t2 values( 4,'t2_4');

merge into test.t1 using test.t2 on (test.t1.c1=test.t2.c3) --按照t2往t1插入数据
when MATCHED THEN update set test.t1.c2=test.t2.C4 --如果条件满足,就更新写入
when not MATCHED then INSERT(c1,c2) values (test.t2.c3,test.t2.c4); --如果条件不满足,那就直接写入。

五、 模式对象管理
28. 新建表空间(图形化操作)
例:
表名:STU
学号:ID char(10)
姓名:sname varchar(20) not null
性别: sex char(1)
年龄:age int
电话:tel varchar(15) not null
家庭住址:address varchar(50)
表空间:STU
约束:主键列----学号,非空----姓名和电话表备注:studentinfo

  1. 导入数据

insert into 表名([列名],[列名],......)values (列值,列值,....));
Insert into t1( id,name) values(1,’sssss);
-----插入数据

2.脚本 使用disql工具导入后缀为sql的文件(注:需包含表路径名称,还需要commit)

SQL> Start /dm8/a.sql

3.DTS迁移工具(图形化操作)

  1. 维护表(图形化操作)
    增加列
    SQL> alter table 表名 add column(c1 number(3,1));
    删除列:
    SQL> alter table 表名 drop column c1;

创建非空约束
create table 表名(id int);
alter table表名 alter column id set not null;
create table "TEST"."T5"
( "ID" INT not null
)

创建唯一约束
create table 表名(id int, name varchar(20)

创建主键约束
create table 表名(id int primary key);
create table表名(id int);
alter table表名 add CONSTRAINT t9_pri primary key(id);

主键有且只有一个,唯一约束可以有多列。
主键列不允许有空值,唯一约束可以有多个null
主键列可以作为外键,唯一约束不能
创建主键约束时,可以创建聚集索引和非聚集索引,而唯一约束产生聚集索引。

创建外键约束
create table表名 (sid int PRIMARY key ,pid int);
create table 表名(id int PRIMARY key , sid int FOREIGNkeyREFERENCES 表名(sid));

对列加备注
Comment on column 表名.id is ‘注释’

查看表的列信息和约束
select table_name,column_name,comments fromdba_col_commentswhere table_name='T12';

select constraint_name, constraint_type, table_name fromSYS.DBA_CONSTRAINTS where table_name='T12';

启用/禁用/删除约束
alter table test.t12 disable constraint CONS134218854;
alter table test.t12 enable constraint CONS134218854;
alter table test.t12 drop constraint CONS134218854;

删除表
drop table test.t12;
DELETE
TRUNCATE

  1. 视图(简单视图可图形化)
    简单视图(对单表做查询,不包含集函数的sql)
    create view(视图名称) as select (列名) from(表名) where();
    create view testv1 as select employee_id,employee_name from dmhr.employee ;
    select * from testv1;

复杂视图(关联两张表以上的或是包含集函数的sql)
Create view test v2 as
Select department_name,a.avg1 from
(select department_id,avg(e.salary) as avg1 from dmhr.employee e
Group by department_id having avg(salary)>10000) a join dmhr. Department d
on a.department_id=d. department_id

  1. 索引
    1.、构建表
    create table test.emp as select * from dmhr.employee;
    2、 创建索引表空间
    create tablespace 索引名 datafile '存储路径' size 32;、
    --新建表空间(根—图形可以)
  2. 创建索引
    create index 模式 表名 on 模式.表名(列明) tablespace 索引名;
    --新建索引(图形可以,选存储)
    4.索引维护
    Alter index test.ind_emp rebuild;
    Alter index test.ind_emp rebuild online;
  3. 删除索引
    Drop index test.ind_emp;

六、 备份还原
33. 物理备份
冷备(脱机备份):dmap 服务是打开的,数据库实例是关闭的。

  1. 控制台工具(图形化操作)
    [dmdba@localhost bin]$ ./DmServiceDMSERVER stop
    Stopping DmServiceDMSERVER:
    [ OK ]
    ------关闭实例服务,只能进行冷备

注:选择新目录
2) 增量备份(图形化操作)
注:选择新目录,选择最近一次全量备份

达梦归档介绍:
106
本地归档(单机):
远程归档:DMDSC 集群
实时归档:实时数据守护
3) 如何使用归档:(图形化操作)
新建归档:管理工具-服务器管理—系统管理变为配置模式-转换-归档配置-归档模式-+-归档目标-路径,文件夹--系统管理变为打开模式-转换。

删除归档:右键-删除
4) 管理工具热备份(图形化操作)

直接右键新建即可
右键删除即可

  1. 逻辑备份(逻辑导入导出)
    右键(表、模式、用户)导入导出即可

  2. 作业(定时任务)

  1. 创建代理环境(图形右键)
  2. 新建作业,(备份)写路径,写时间,确定就行
  1. DM8开发
    1.1linux 环境中配置 ODBC(以 root 来配置)1、检查 gcc 包
    [root@localhost ~]# rpm -aq|grep gcc
    2、解压安装包
    [root@localhost opt]# tar -xzvf unixODBC-2.3.0.tar.gz
    3、配置 ODBC
    [root@localhost unixODBC-2.3.0]# ./configure --enable-gui=no
    4、编译安装 ODBC
    [root@localhost unixODBC-2.3.0]# make && make install
    5、查看 odbc 版本
    [root@localhost unixODBC-2.3.0]# odbc_config --version
    2.3.0
    6、查看 odbc 配置文件路径
    [root@localhost unixODBC-2.3.0]# odbcinst -j
    unixODBC 2.3.0
    DRIVERS............: /usr/local/etc/odbcinst.ini
    SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
    FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
    USER DATA SOURCES..: /root/.odbc.ini
    SQLULEN Size.......: 8
    SQLLEN Size........: 8
    SQLSETPOSIROW Size.: 8
    7、配置 odbc.ini 和 odbcinst.ini

8.测试连接

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服