达梦DCA

达梦数据库DCA认证

一、安装

1、查看tmp大小
df -h /tmp

终端输出

文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/klas-tmp 1.5G 44M 1.5G 3% /tmp

1.5G空间小,可能会导致数据库安装失败

临时增大tmp空间

mount -o remount,size=5G /tmp

永久增大tmp空间,在 option 部分增加 size=15G 字段,来永久增大 tmp 空间。

# /etc/fstab
# <file system>    <mount point>    <type>    <options>                              <dump>    <pass>
tmpfs               /tmp             tmpfs     defaults,size=15G,noatime,mode=1777    0         0
2、建用户(组)
# 创建用户组
groupadd dinstall
# 创建用户
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
# 初始用户无密码 无法登录 设置登录密码
passwd dmdba 

3、确定安装位置
# 将数据库安装至 /dm8
mkdir /dm8
# 赋予dmdba用户权限
chown dmdba:dinstall /dm8
# 查看/dm8文件夹权限
ls -ld /dm8
4、安装数据库

挂载镜像

# 将镜像挂载至 /mnt/dm
mkdir /mnt/dm
# mount挂载 格式:mount 镜像文件 挂载位置
mount /mnt/hgfs/kylinShared/dm8_20220525_x86_rh6_64.iso /mnt/dm

让其他用户接入

# root用户执行一次即可
xhost +
# 查看当前的display
echo $DISPLAY
# 终端输出
:0.0

设置图形化界面

# 查出来是什么就设置什么
su - dmdba
export DISPLAY=:0.0
echo $DISPLAY

未扩大tmp空间,可指定到其他路径下

mkdir /opt/tmp
# 赋权
chown dmdba:dminstall /opt/tmp
# 指定路径
export DM_INSTALL_TMPDIR=/opt/tmp

安装

cd /mnt/dm
# 图形化界面安装指令
./DMInstall.bin

# 命令行安装
./DMInstall.bin -i

终端输出

2022-10-22 15:24:31 
[INFO] 安装达梦数据库...
2022-10-22 15:24:32 
[INFO] 安装 基础 模块...
2022-10-22 15:24:34 
[INFO] 安装 服务器 模块...
2022-10-22 15:24:34 
[INFO] 安装 客户端 模块...
2022-10-22 15:24:35 
[INFO] 安装 驱动 模块...
2022-10-22 15:24:35 
[INFO] 安装 手册 模块...
2022-10-22 15:24:35 
[INFO] 安装 服务 模块...
2022-10-22 15:24:36 
[INFO] 移动日志文件。
2022-10-22 15:24:36 
[INFO] 安装达梦数据库完成。

请以root系统用户执行命令:
/dm8/script/root/root_installer.sh

切换到root用户执行命令

# 新打开一个终端 或者 exit
su - root
# 执行命令
/dm8/script/root/root_installer.sh

二、卸载

1、命令行卸载
# 进入安装路径  /dm8 执行
./uninstall.sh -i

三、创建数据库

1、命令行创建数据库
# dmdba用户进入 安装路径的bin目录下执行命令
./dminit PATH=/dm8/data db_name=DMOA instance_name=DMOASVR port_num=5238 sysdba_pwd=Dameng123

# 终端输出
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2023-05-25
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/data/DMOA/DMOA01.log


 log file path: /dm8/data/DMOA/DMOA02.log

write to dir [/dm8/data/DMOA].
create dm database success. 2022-10-22 15:59:11
2、命令行创建达梦服务
# 使用root用户进入 /dm8/script/root 目录下执行命令
./dm_service_installer.sh -t dmserver -p DMOASVR -dm_ini /dm8/data/DMOA/dm.ini
# 终端输出
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMOASVR.service → /usr/lib/systemd/system/DmServiceDMOASVR.service.
创建服务(DmServiceDMOASVR)完成

# 查看服务状态
systemctl status DmServiceDMOASVR.service
# 终端输出
● DmServiceDMOASVR.service - DM Instance Service(DmServiceDMOASVR).
   Loaded: loaded (/usr/lib/systemd/system/DmServiceDMOASVR.service; enabled; v>
   Active: inactive (dead)

# 启动服务
systemctl start DmServiceDMOASVR.service

# 查看达梦服务
ps -ef|grep dmserver
# 终端输出
dmdba       7523       1  0 15:48 ?        00:00:02 /dm8/bin/dmserver path=/dm8/data/DAMENG/dm.ini -noconsole
dmdba       7890       1  2 16:11 ?        00:00:01 /dm8/bin/dmserver path=/dm8/data/DMOA/dm.ini -noconsole
root        7986    6855  0 16:12 pts/1    00:00:00 grep dmserver

3、查看达梦服务进程
ps -ef|grep dmserver
# 终端输出
dmdba       7523       1  0 15:48 ?        00:00:02 /dm8/bin/dmserver path=/dm8/data/DAMENG/dm.ini -noconsole
root        7639    6855  0 15:53 pts/1    00:00:00 grep dmserver

四、客户端管理工具

1、图形化界面
# 进入/dm8/tool 执行命令
./manager
# 打开图形化界面即可操作
2、disql
# dmdba用户进入 /dm8/bin 目录下执行命令
./disql
# 如果使用默认用户名密码 直接回车就可连上
# 终端输出
[dmdba@localhost bin]$ ./disql
disql V8
用户名:
密码:

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.831(ms)
SQL>select * from v$database;

行号     NAME   CREATE_TIME         ARCH_MODE LAST_CKPT_TIME     
---------- ------ ------------------- --------- -------------------
           STATUS$     ROLE$       MAX_SIZE             TOTAL_SIZE          
           ----------- ----------- -------------------- --------------------
           DSC_NODES   OPEN_COUNT  STARTUP_COUNT        LAST_STARTUP_TIME  
           ----------- ----------- -------------------- -------------------
1          DAMENG 2022-10-22 15:47:39 N         2022-10-22 16:27:41
           4           0           0                    37376
           1           1           1                    2022-10-22 15:48:43


已用时间: 4.861(毫秒). 执行号:56400.

# 连接5238
SQL> conn sysdba/Dameng123:5238

服务器[LOCALHOST:5238]:处于普通打开状态
登录使用时间 : 1.936(ms)
SQL>select name from v$database;     

行号     NAME
---------- ----
1          DMOA

已用时间: 1.356(毫秒). 执行号:55401.
3、tool目录下的disql

/dm8/tool 目录下的disqli调用的是bin目录下的disql nolog

# 查看tool下的disql
cat /dm8/tool/disql
# 终端输出
#!/bin/sh

PRG="$0"
PRGDIR=`dirname "$PRG"`

cd "$PRGDIR/.."
DM_HOME=`pwd`
cd "$DM_HOME/bin"

"$DM_HOME/bin/disql" /nolog[root@localhost root]#
4、连接服务器
# 以本机ip为例
[dmdba@localhost bin]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:47:ca:31 brd ff:ff:ff:ff:ff:ff
    inet 192.168.26.128/24 brd 192.168.26.255 scope global dynamic noprefixroute ens33
       valid_lft 1531sec preferred_lft 1531sec
    inet6 fe80::3ecc:96e:46a5:14a4/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

# bin目录下执行 命令
./disql sysdba/Dameng123@192.168.26.128:5238

服务器[192.168.26.128:5238]:处于普通打开状态
登录使用时间 : 1.687(ms)
disql V8
SQL> 

五、网络配置助手(连接串)

1、配置连接
# tool 目录下执行命令 使用图形化界面配置 注意DISPLAY
./nca.sh 

在这里插入图片描述
在这里插入图片描述

2、disql连接库
[dmdba@localhost bin]$ ./disql sysdba/Dameng123@DMOA

服务器[192.168.26.128:5238]:处于普通打开状态
登录使用时间 : 1.119(ms)
disql V8
SQL> select name from v$database;

行号     NAME
---------- ----
1          DMOA

已用时间: 1.043(毫秒). 执行号:55600.
SQL>
3、客户端工具使用
[dmdba@localhost tool]$ ./manager

在这里插入图片描述

4、网络配置助手操作本质
[dmdba@localhost tool]$ cat /etc/dm_svc.conf 
TIME_ZONE=(480)
LANGUAGE=(cn)
DM=(127.0.0.1:5236)
DMOA=(192.168.26.128:5238)
[dmdba@localhost tool]$ 

六、数据库状态

1、数据库状态

SHUTDOWN

MOUNT

OPEN

SUSPEND

SHUTDOWN

# 关闭数据库
shutdown immediate;
# 关闭数据库重启
SQL> shutdown immediate;
exit
DmServiceDMSERVER start
2、修改参数
# 修改参数
# both:表示对内存中和参数文件都修改;
# memory:修改内存中的值;
# spfile:修改参数文件中的值。

alter system set '参数名称' = 参数值 both|memory|spfile;

3、查进程、线程
ps -ef|grep dmserver;
ps -T -p 96396;

在这里插入图片描述

4、关闭会话
sp_close_session
5、修改数据缓冲区大小
# 修改数据缓冲区大小为500M
alter system set 'BUFFER'= 500 spfile;

七、表空间

1、创建表空间
create tablespace dmtbs DATAFILE 'DMTBS01.DBF' SIZE 32;
# 页大小默认是8K 表空间大小不能低于 32M
select page*4096/1024/1024;
create tablespace TBS datafile '/dm8/data/DAMENG/TBS01.DBF' size 64 autoextend on next 1 maxsize 1024,'/dm8/data/DAMENG/TBS02.DBF' size 64 autoextend on next 1 maxsize 1024;

查看表空间

select * from dba_tablespaces;
select * from dba_data_files;

表空间脱机

# 脱机则无法读写
alter tablespace dmtest offline;
# 
alter tablespace dmtest online;
2、修改表空间
# 修改名称
alter tablespace dmtest rename to dmtbs;
# 修改大小
alter tablespace dmtest resize DATAFILE '/dm8/data/TBS/DMTEST01.DBF' TO 128;
#增加数据文件
alter tablespace dmtbs add datafile '/dm8/data/TBS/DMTEST03.DBF' size 32 autoextend on 4 maxsize 10240;
# 关闭自动扩展
alter tablespace dmtest DATAFILE '/dm8/data/TBS/DMTEST01.DBF' AUTOEXTEND off;
# 表空间文件迁移
alter tablespace dmtbs rename datafile '/dm8/data/TBS/DMTEST01.DBF' to '/dm8/data/DMOA/DMTEST01.DBF';
3、创建表指定表空间
# 创建表指定表空间 并引用dmhr.EMPLOYEE数据
create table t_tmp TABLESPACE DMTBS as select * from dmhr.EMPLOYEE;
4、查看表占用大小
select t.SEGMENT_NAME, t.SEGEMENT_TYPE, t.TABLESPACE_NAME from USER_SEGMENTS t;
5、表空间不够
alter tablespace dmtbs add DATAFILE 'DMTEST02.DBF' size 32;
6、迁移数据文件
alter tablespace offline;
alter tablespace dmtbs RENAME DATAFILE 'DMTBS01.DBF' to '/dm8/data/TBS/DMTBS01.DBF';
7、temp表空间大小修改
alter system set 'TEMP_SIZE' = 100 spfile;

八、归档

1、开启归档
# 查询是否开启归档
select arch_mode from SYS."V$DATABASE"
alter database mount;
alter database ARCHIVELOG;
alter database ADD ARCHIVELOG 'type=local, dest=/dm8/arch, file_size=64, 
space_limit=10240';
alter database open;
2、关闭归档
alter database mount;
alter database noarchivelog;
alter database delete archivelog 'type=local,dest=/dm8/arch';
alter database open;

九、用户

1、创建用户
create user dmtest IDENTIFIED by Dameng123 DEFAULT TABLESPACE DMTBS;
2、用户权限
# 查看用户权限
select * from session_privs;
3、设置用户口令策略
PWD_POLICY(隐含参数,不在 dm.ini 中)参数指定系统的口令策略,默认为 2;
系统支持的口令策略有:
- 0 无策略
- 1 禁止与用户名相同
- 2 口令长度需大于等于 INI 参数 PWD_MIN_LEN 设置的值
- 4 至少包含一个大写字母(A-Z)
- 8 至少包含一个数字(0-9)
- 16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
# 修改口令策略
alter SYSTEM set 'PWD_POLICY' = 15 BOTH;
4、设置密码有效期
alter user dmtest LIMIT PASSWORD_LIFE_TIME 180;
# 资源限制
create profile profile1 LIMIT PASSWORD_LIFE_TIME 180,FAILED_LOGIN_ATTEMPS 5,PASSWORD_LOCK_TIME 3;
5、用户使用资源限制
# 用户使用
# 创建用户
create user hrtest IDENTIFIED by "Dameng@123" PASSWORD_POLICY 31 DEFAULT TABLESPACE DMTBS DEFAULT INDEX TABLESPACE DMTBSIDX;
#用户使用资源限制
alter user hrtest PROFILE PROFILE1;
6、解锁用户
alter user HRTEST ACCOUNT unlock;
# 登录
[dmdba@localhost ~]$ ./disql hrtest/'"Dameng@123"'

十、授权

1、授予权限
# 授予创建表的权限
grant create table to hrtest
# 授予查询employee表的权限
grant select on dmhr.employee to hrtest;
# 授予查询所有表的权限
grant select any table to hrtest;
2、查看权限
select * from session_privs;
3、权限转授
# 系统权限转授
grant create any table to dmtest;
# 执行上述权限转授需要打开转授开关 只修改系统中的参数
alter system set 'ENABLE_DDL_ANY_PRIV'=0 MEMORY
# 开启后即可进行转授

# 授权并可转授 系统权限
grant create table to dmtest with ADMIN OPTION;
#一般权限
grant select on dmhr.department to dmtest with GRANT OPTION;

4、回收权限

# 权限回收
revoke create table from hrtest;
# 级联回收 
# 例: 授权a用户并可转授,a转授给b,b转授给c 权限回收
revoke create table from hrtest CASCADE;

十一、角色

1、创建角色
# 创建角色
create role r1;
create role r2;
2、角色授权
# 角色授权
grant create table to r1;
grant select on dmhr.department to r1;

grant CREATE TABLE,CREATE VIEW,CREATE INDEX to r2;
# 将角色赋予用户
grant r1 to hrtest;

# 级联回收角色权限
revoke select on dmhr.employee from r2 CASCADE;
3、角色开关
# 开启关闭角色
sp_set_role('R1',0);

十二、模式对象管理

1、查看模式
# 查看模式
select * from SYSOBJECTS t where t."TYPE$" ='SCH';
# 查看用户
select * from SYSOBJECTS t where t."SUBTYPE$" ='USER';
# 查询模式和用户的对应关系:
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;
2、创建模式
# 创建模式并指定归属于那个用户
create schema hrtest01 AUTHORIZATION HRTEST;
# 查看当前用户
select user;
3、切换模式
# 仅当前用户生效
set SCHEMA dmhr;
4、删除模式
drop SCHEMA IF EXISTS HRTEST01;
# 级联删除模式下对象
drop SCHEMA IF EXISTS HRTEST01 CASCADE;
5、索引组织表 列变动
# 增加列
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 t_test rename to t_testoa;
alter table t_testoa rename column id to pid;
# 删除表 结构数据索引会全被删除
drop table 表名;

十三、约束

1、创建表添加约束
# 如果存在删除
drop table if exists dmtest.t_testpid
# 创建表指定主键
create table t_testpid(pid int primary key,panme varchar(20)unique,sex bit) tablespace dmtest;

# 创建第二个表
drop table if exists dmtest.t_testchild
create table t_testchild(childid int,childanme varchar(30),salary int not null,createtime datetime default sysdate) tablespace dmtest;

# 添加列
alter table dmtest.t_testchild add COLUMN pid int;
alter table dmtestm.t_testchild add CONSTRAINT pk_testchild FOREIGN KEY(pid) REFERENCES dmtest.t_testpid(pid);

# 添加check约束
alter table dmtest.t_testchild add CONSTRAINT ck_testchild_salary CHECK(salary >= 2200)
insert into dmtest.t_testchild(childid,childname,salary)
values(1,'aaa',100);
# 插入数据 null可以 如果是数字就报错 因为testpid不存在
insert into dmtest.t_testchild(childid,childname,salary,pid)
values(1,'aaa',10000,null);

外键的值一定是引用父表的值,新增的值必须在父表中存在,如果要修改父表的值,子表中存在引用则会报错。

2、查询表
# 查询小写表名
select “id","name" from "t_test";

# 创建表并应用数据 如果只表结果加上where 1=0;
create table dmtest.t_emp as select * from dmhr.employee;
create table dmtest.t_dept like select * from dmhr.department;

在这里插入图片描述

3、导入数据

# 终端登录 后面不要加分号
./disql dmtest/'"Dameng123"'
start /dm8/backup/t_emp.sql
# 或者
`/dm8/backup/t_emp.sql

# 关闭命令执行log方便查看出错信息
set echo off;
set feddback off;
set time off;
set timing off;
# 查看属性
help set;

# 删除前800行
delete from t_emp where rownum <=800;

grant vti to dmtest;

# 清空表数据
truncate table t_emp;

十四、视图和索引

1、创建视图
grant create view to dmtest;

# 格式
create or replace view 模式名.视图名称 as select * from 表名 where 条件

十五、备份与还原

1、查看备份参数
# BAK_PATH:DM 默认的备份路径  BAK_USE_AP:备份还原策略:使用什么方式备份
select * from v$parameter t where name in ('BAK_PATH', 'BAK_USE_AP');
# 查看达梦ap服务  默认使用dmap服务备份
ps -ef|grep dmap
# 终端输出
dmdba       1661       1  0 09:38 ?        00:00:00 /dm8/bin/dmap
root       12074    6177  0 14:06 pts/0    00:00:00 grep dmap

# 查看DmAP服务状态
[root@localhost bin]# ./DmAPService status;
DmAPService (pid 1661) is running.
2、联机备份
# 刚开归档做备份报错归档不连续 解决办法 手动执行检查点
checkpoint(100);

#备份
backup database;

# 查看备份信息
select * from v$backupset;

# 增量备份指定备份文件名称 备份位置
backup database increment to incrbak01 backupset '/dm8/backup/incr/incrbak01';

# 查询不到备份信息
# 因为默认查询 默认备份目录下的备份文件
select * from v$backupset;

# 查看相关函数
select * from v$ifun t where name like '%BAKSET%'

# 添加备份位置 只针对当前会话生效
SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/incr/incrbak01');
SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/full');
# 再次查询即可查到相关备份信息

# 指定基础备份集
backup database increment BASE on backupset '/dm8/backup/incr/incrbak01' to incrbak02 backupset '/dm8/backup/incr/incrbak02';

# 累积增量备份
backup database increment cumulative to incrbak03 backupset '/dm8/backup/incr/incrbak03';

# 表空间备份
backup tablespace dmtbs to DMTBSFULLBAK backupset '/dm8/backup/full/DMTBSFULLBAK';

# 表备份
backup TABLE DMHR.EMPLOYEE to T_EMPBAK BACKUPSET '/dm8/backup/full/T_EMPBAK';

# 归档备份
backup ARCHIVE LOG ALL to ARCHLOGFULLBAK BACKUPSET '/dm8/backup/full/ARCHLOGFULLBAK';
3、脱机备份

使用图形化界面 console控制台

[dmdba@localhost bin]$ ./dmrman
backup database '/dm8/data/DAMENG/dm.ini' to FULLBAK02 backupset '/dm8/backup/full/FULLBAK02';

# 查看备份集
RMAN> check backupset '/dm8/backup/full/DMTBSFULLBAK'

# 删除备份集
RMAN> remove backupset '/dm8/backup/incr/incrbak02'
4、表空间还原
# 只能脱机状态还原
RMAN> restore database '/dm8/data/DAMENG/dm.ini' tablespace dmtbs from backupset '/dm8/backup/full/DMTBSFULLBAK'

# 达梦默认应用归档恢复到最新
RMAN> recover database '/dm8/data/DAMENG/dm.ini' tablespace dmtbs
等同于
recover database '/dm8/data/DAMENG/dm.ini' tablespace dmtbs with archivedir '/dm8/arch';
5、全库的恢复
库还原可以跨库
# 还原
RMAN> restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup/incr/incrbak01'

restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup/FULL_BACK'
# 恢复  脱机备份可以省略
recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch';
# 更新db_magic
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;

# 建议恢复之后做一次全量的备份

十六、逻辑导入导出

1、导出
# 全库导出
mkdir /dm8/backup/dexp
dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=full.dmp log=full.log full=y

# 按用户导出
dexp userid=sysdba/Dameng123:5237 directory=/dm8/backup file=test.dmp log=test.log owner=TEST

十七、作业

1、查看作业
select * from SYSJOB.SYSJOBS;

十八、ODBC配置

1、安装
# 解压ODBC包
 tar -zxvf /opt/unixODBC-2.3.0.tar.gz

# 进入ODBC目录安装
cd unixODBC-2.3.0
# 安装步骤:配置、编译、安装
./configure
make
make install

# 查看 驱动位置
odbcinst -j
2、配置
# 修改配置文件
cd /usr/local/etc/
vim odbcinst.ini

[DM8 ODBC DRIVER]# 驱动
Drscription = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so

vim odbc.ini

[DM8] # 按考试要求修改
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER # 驱动
SERVER = localhost
UID = DMTEST
PWD = Dameng123
TCP_PORT = 5238
3、测试
su - dmdba
isql dm8 -v
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值