达梦数据库必知必会-DCA篇

一:安装
二:表空间管理
三:重做日志管理
四:用户、模式管理
五:对象管理
六:归档管理
七:备份管理
八:参数管理
九:作业管理
十:ODBC
十一:卸载

一:安装

https://eco.dameng.com/document/dm/zh-cn/pm/install-uninstall.html

https://eco.dameng.com/document/dm/zh-cn/ops/before-installation.html

1.1 安装前配置

安装前环境检查

1.1.1 操作系统内核需要在2.6 以上

cat /etc/os-release

cat /proc/version

uname -a

uname -r

1.1.2 glibc 需要在 2.3 以上

ldd --version

rpm -qa|grep glibc

1.1.3 检查 gcc 是否安装

安装odbc 的时候,需要 gcc 包依赖,没有安装的话需要进行安装

gcc --version

rpm -qa|grep gcc

1.1.4 检查 磁盘容量

至少需要20G ,推荐给 25G 以上

1.1.5 检查 /tmp 空间

如果tmp 容量小于 1G ,使用以下命令扩容

# 使用 root 用户执行

mount -o remount,size=2G /tmp

1.1.6 检查 并关闭 防火墙

systemctl status firewalld.service

systemctl list-unit-files |grep -i firewall

##systemctl stop firewalld.service

##systemctl disable  firewalld.service

1.1.7 检查 并关闭 selinux

cat /etc/selinux/config

###getenforce

###setenforce 0

1.1.6 创建达梦数据库Linux 组和用户

groupadd dinstall

useradd -g dinstall dmdba

### 指定组号和用户号 ###

###grouadd -g 组号 dinstall

###useradd -g 组号 -d /home/dm -u 用户号 dmdba

### useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

 

配置用户密码

passwd dmdba

  1.1.7 创建达梦数据库软件安装根目录, 并授权

mkdir -p /dm8

chown -R dmdba.dinstall /dm8

1.1.8 设置最大可打开文件数

# 查看最大可打开文件数

ulimit -a

临时设置(当前会话生效)

ulimit -n   65536

 

永久设置

/etc/security/ 目录下的 limits.conf 文件下添加如下内容 :

cp /etc/security/limits.conf /etc/security/limits.conf_20221017bak

vi /etc/security/limits.conf

dmdba   soft nofile     65536

dmdba   hard nofile     65536

1.1.9 配置用户环境变量

编辑.bash_profile ,在原文件尾部,添加以下条目

root 用户执行,检查当前 DISPLAY 值,并将结果写入到 dmdba 用户 .bash_profile 文件。

echo $DISPLAY

su - dmdba

vi /home/dmdba/.bash_profile

export DISPLAY=:1 0 .0

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin"

export DM_HOME="/dm8"

export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

 

生效dmdba 用户登陆配置文件

source .bash_profile

1.1.10 装载安装介质

cd /soft/dm/

ls -lrth *.iso

### 安装包名称可能不同 ###

mnt 下创建 dm 目录

mkdir /mnt/dm

挂载镜像 mount / 镜像地址 / 挂载的目标路径

#mount /opt/dm8_20210818_x86_rh6_64_ent_8.4.2.18_pack14.iso /mnt/dm

mount -t iso9660 -o loop dm8_20220720_x86_rh7_64_ent_8.1.2.114_pack11.iso /mnt

1.2 图形化安装

1.2.1 配置图形启动

登录 root 用户,启用图形化界面

echo $DISPLAY

xhost +

su - dmdba

[dmdba@host02 ~]$ cat .bash_profile |grep DIS

export DISPLAY=:10.0

调用安装 GUI 界面

cd /mnt

./DMInstall.bin      

注意:可能会碰到以下问题,提示说 tmp 文件过小,安装前需要检查 /tmp 空间

 

如果之前安装的没有卸载干净,会出现下面提示

也有可能是因为 /etc/dm_svc.conf 文件没有删除导致的

[root@host02 ~]# cat /etc/dm_svc.conf

TIME_ZONE=(480)

[root@host02 ~]# rm -rf /etc/dm_svc.conf

 

默认安装界面是英文的

[dmdba@host02 dm]$ echo $LANG

en_US.UTF-8

[dmdba@host02 dm]$ ./DMInstall.bin

时区可以调整,但是语言无法调整

 

自动将安装文件解压到 /tmp 下,需要保证 /tmp 磁盘剩余空间大于 1.1GB

[root@host02 ~]# du -sh /tmp/DMInstall

1.1G /tmp/DMInstall

1.2.2 安装数据库软件

如果需要中文安装界面,需要先配置 LANG 环境变量

[dmdba@host02 dm]$ echo $LANG

en_US.UTF-8

[dmdba@host02 dm]$ export.UTF-8

[dmdba@host02 dm]$ ./DMInstall.bin

解压安装程序 ...

[root@host02 ~]# cat /dm8/script/root/root_installer.sh

#!/bin/sh

 

#run by root

RUID=`/usr/bin/id|awk -F\( '{print $1}'|awk -F\= '{print $2}'`

if [ ${RUID} != "0" ]

then

  echo " 必须以 root 身份执行此脚本 !"

exit 1

fi

 

echo " 移动 /dm8/bin/dm_svc.conf /etc 目录 "

mv "/dm8/bin/dm_svc.conf" /etc/dm_svc.conf

 

echo " 修改服务器权限 "

chmod 6755 "/dm8/bin/dminit"

chmod 6755 "/dm8/bin/dmserver"

chown 0:0 "/dm8/bin/dmcss"

chmod 6755 "/dm8/bin/dmcss"

 

echo " 创建 DmAPService 服务 "

"/dm8/script/root/dm_service_installer.sh" -s "/dm8/bin/DmAPService"

 

echo " 启动 DmAPService 服务 "

systemctl start DmAPService.service

 

 

[root@host02 ~]# sh /dm8/script/root/root_installer.sh

移动 /dm8/bin/dm_svc.conf /etc 目录

修改服务器权限

创建 DmAPService 服务

Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.

创建服务 (DmAPService) 完成

启动 DmAPService 服务

1.2.3 初始数据库

1.2.4 执行脚本,启动数据库

根据提示执行脚本

mv /dm8/bin/DmServiceCHEN.service /usr/lib/systemd/system/DmServiceCHEN.service
systemctl enable DmServiceCHEN.service
systemctl start DmServiceCHEN.service

1.3 命令行安装

1.3.1 安装数据库软件

cd /mnt

./DMInstall.bin -i

手动输入部分如下:

 

登录root 用户执行脚本

/dm8/script/root/root_installer.sh

1.3.2 初始化 数据库

su - dmdba

dminit help

安装目录、实例名、数据名、端口号、密码、字符集、数据文件等路径、簇大小、页大小、日志文件大小、

dminit path=/dm8/data DB_NAME=CHEN instance_name=CJC port_num=5238 SYSDBA_PWD=Dameng123

1.3.3 注册服务

su - root
cd /dm8/script/root/
./dm_service_installer.sh help
./dm_service_installer.sh -t dmserver -p CJC -dm_ini /dm8/data/CHEN/dm.ini

# 取消注册服务

#./dm_service_uninstaller.sh -n 服务名称

#./dm_service_uninstaller.sh -n DmServiceCJC

1.3.4 启动服务

systemctl list-unit-files |grep DmServiceCJC.service
systemctl status DmServiceCJC.service
systemctl start DmServiceCJC.service

登录数据库

disql SYSDBA/Dameng123:5238

disql SYSDBA/Dameng123@127.0.0.1:5238

 

验证数据库创建成功

查看Linux 后台进程:

ps -ef|grep -i dmserver|grep -v grep  

1.3.5 配置连接字符串

cp /etc/dm_svc.conf /etc/dm_svc.conf_20221023bak
vi /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
CJCDB=(192.168.80.133:5238)  ###新增部分

连接测试:

[dmdba@host02 ~]$ disql SYSDBA/Dameng123@CJCDB

 

服务器[192.168.80.133:5238]: 处于普通打开状态

登录使用时间 : 4.046(ms)

disql V8

SQL>

二:表空间管理

SYSTEM :系统表空间,存放的是数据字典信息,包含表定义、视图定义、用户权限等

ROLL :回滚表空间,存放 undo 信息。 INSERT UPDATE DELETE 都会产生 undo 信息

MAIN :用户默认表空间,创建用户时,没有指定表空间,则使用 MAIN 表空间

TEMP :临时表空间,用于存放临时表数据、索引、大量数据排序等产生的数据

HMAN HUGE 表(列存储表)的默认表空间

2.1 表空间管理 - 图形化操作

2.1.1 打开 manager 管理工具

[dmdba@host02 tool]$ ./manager

2.1.2 查看表空间

2.1.3 创建表空间

对应 DDL 语句

create tablespace "CJCTBS" datafile '/dm8/data/CJC/CJC_TBS_01.dbf' size 32 CACHE = NORMAL;

2.1.4 新增数据文件

添加

对应 DDL

alter tablespace "CJCTBS" add datafile '/dm8/data/CJC/CJC_TBS_02.dbf' size 35 autoextend on next 10 maxsize 1024;


2.1.5 修改表空间名称

2.1.6 修改数据文件属性

修改数据文件大小,关闭自动扩展

查看对应的 DDL 语句。

alter tablespace "CJCTBS" resize datafile 'CJC_TBS_01.dbf' to 50;
alter tablespace "CJCTBS" datafile 'CJC_TBS_01.dbf' autoextend off;

2.1.7修改数据文件名称、路径

对应 DDL 语句

alter tablespace "CJCTBS" offline;
alter tablespace "CJCTBS" rename datafile 'CJC_TBS_01a.dbf' to '/dm8/CJC_TBS_01AAA.dbf';
alter tablespace "CJCTBS" online;

2.1.8 TEMP表空间调整

检查 TEMP 信息

对应 DDL 语句

create tablespace "TEMP" datafile '/dm8/data/CJC/TEMP.DBF' size 10 autoextend on maxsize 16777215 CACHE = RECYCLE;

图形工具不支持修改等操作

alter tablespace TEMP add datafile '/dm8/data/CJC/TEMP_02.dbf' size 50 autoextend on next 1 maxsize 100;
create tablespace "TEMP2" datafile '/dm8/data/CJC/TEMP.2DBF' size 10 autoextend on maxsize 100 CACHE = RECYCLE;

1 行附近出现错误 [-3438]:RECYCLE 为临时表空间专用 CACHE.

已用时间: 75.849( 毫秒 ). 执行号 :0.

2.2 表空间管理 - 命令行操作

命令行 登录

disql SYSDBA/Dameng123:5238

2.2.1 查看表空间名称

select tablespace_name from dba_tablespaces;

查看数据文件路径

SELECT TABLESPACE_NAME,FILE_NAME FROM DBA_DATA_FILES;

2.2.2 创建表空间

单位MB

数据文件大小 最小 页的4096 (32MB) ,最大 ( 页大小 *2^31)-1

create tablespace CJC datafile '/dm8/data/CHEN/CJC_01.dbf' size 32;


  # 创建表空间时必须指定 datafile size 最小值是 page_size 4096 倍, autoextend 指定自增长, maxsize 指定最大值

create tablespace tbs1 datafile '/dm8/data/CHEN/tbs1_01.dbf' size 32 autoextend on next 1 maxsize 100;

# 创建表空间,非自动扩展

create tablespace tbs2 datafile '/dm8/data/CHEN/tbs1_02.dbf' size 32 autoextend off;

  查看数据文件信息

select tablespace_name,file_name,bytes,AUTOEXTENSIBLE,MAXBYTES from dba_data_files;


2.2.3 增加数据文件

alter tablespace CJC add datafile '/dm8/data/CHEN/CJC_02.dbf' size 50 autoextend on next 1 maxsize 100;

2.2.4 修改数据文件路径

alter tablespace cjc offline;
alter tablespace cjc rename datafile '/dm8/data/CHEN/CJC_02.dbf' to '/dm8/CJC_02.dbf';
alter tablespace cjc online;
select tablespace_name,file_name,bytes,AUTOEXTENSIBLE,MAXBYTES from dba_data_files where tablespace_name='CJC';

2.2.5 修改数据文件大小

alter tablespace 表空间名称 resize datafile ' 数据文件路径 ' to 数据文件大小 ;

 

修改表空间开启自动增长,增长步长,最大表空间

alter tablespace 表空间名 datafile ' 数据文件路径 ' autoextend on next 增长步长 maxsize 文件最大值

2.2.6 修改表空间名称

alter tablespace 修改前表空间名 rename to 修改后表空间名 ;

alter tablespace CJCTBSA rename to CJCTBS;

 

2.2.7 删除表空间

drop tablespace CJC;


2.2.8 temp 表空间

查询temp 表空间参数,达梦数据库启动的时候会根据这几个参数来创建或重建 temp 表空间

select name,value,type from v$parameter where name like 'TEMP%';

TEMP_PATH temp 表空间的路径

TEMP_SIZE temp 表空间的初始值,单位为 MB

TEMP_SPACE_LIMIT temp 表空间的空间限制, 0 表示不限制

 

修改temp_size

# 设置 temp 表空间初始值

alter system set 'TEMP_SIZE'=64 spfile;

# 查看更改是否生效

cat /dm8/data/DAMENG/dm.ini |grep TEMP_SIZE

三:重做日志管理

3.1 重做日志管理 - 图形化操作

3.1.1 打开 manager 管理工具

[dmdba@host02 tool]$ ./manager

管理服务器

3.1.2 查看日志文件信息

3.1.2 调整大小

只能改大不能改小

对应 DDL 语句

alter database resize logfile 'CJC01.log' to 300;

3.1.3 修改路径及名称

对应 DDL 语句

alter database rename logfile 'CJC02.log' to '/dm8/CJC02a.log';


修改成 mount

再次修改路径

启动数据库

3.1.4 新增

3.2 重做日志管理 - 命令行操作

3.2.1 查看日志文件信息

select group_id,file_id,path,rlog_size from v$rlogfile;

3.2.2 调整大小

256M 调整都 300M 成功

alter database resize logfile '/dm8/data/CHEN/CHEN01.log' to 300;


### 不支持调小

3.2.3 新增

alter database add logfile '/dm8/data/CHEN/CHEN03.log' size 256;

3.2.4 更改路径 、重命名

alter database mount;
alter database rename logfile '/dm8/data/CHEN/CHEN03.log' to '/dm8/CHEN003.log';
alter database open;


  ### 删除 ( 不支持删除 )

###alter database drop logfile '/dm8/data/CHEN/CHEN02.log';

###alter database delete logfile '/dm8/data/CHEN/CHEN02.log';

四:用户、模式管理

4.1 用户、模式管理 - 图形化操作

4.1.1 打开 manager 管理工具

[dmdba@host02 tool]$ ./manager

4.1.2 查看用户

4.1.3 创建用户

管理用户 --- 新建用户

4.1.4 添加角色权限

4.1.5 添加系统权限

4.1.6 添加对象权限

4.1.7 资源限制

4.1.8 连接限制

查看对应 DDL 语句

create user "CJC" identified by "Dameng123"
limit session_per_user 10, connect_idle_time 3, failed_login_attemps 5, password_life_time 180, password_reuse_max 100, password_lock_time 2, password_grace_time 10, connect_time 100, cpu_per_session 360000, cpu_per_call 8600, read_per_session 300000
allow_ip "192.168.80.131"
allow_datetime "2022-10-22" "00:22:49" to "2023-12-23" "00:22:49"
default tablespace "CJCTBS"
default index tablespace "CJCTBS";
 
grant "PUBLIC","VTI" to "CJC";
 
grant CREATE SCHEMA,CREATE TABLE,CREATE VIEW to "CJC";
 
grant CREATE ROLE to "CJC" with admin option;
 
grant SELECT,INSERT,DELETE,UPDATE,REFERENCES on "DMHR"."CITY" to "CJC";

4.2.9 角色管理

查看角色

创建角色

查看 DDL 语句

create role "CJCR";
grant "RESOURCE" to "CJCR";
grant CREATE USER,ALTER USER,CREATE SCHEMA,CREATE TABLE to "CJCR";

注意:

角色名不能和用户名相同否则会报如下错误。

4.2.10 模式管理

查看模式

创建模式

对应 DDL 语句

CREATE SCHEMA "CHEN" AUTHORIZATION "CJC";

4.2 用户、模式管理 -命令行操作

创建用户, 授权(系统,对象,角色)

创建用户:create user... identified by ... default tablespace ... limit ( 口令管理选项 )

修改用户口令 alter user ... identified by

删除:drop user

授权: grant create table, create index to ...   grant select on dmhr.employee to ...

权限回收: revoke ... from ...

查看已登录会话所有权限: select * from session_privs;

 

用户类型:

SYS :内置用户,不能直接登陆

SYSDBA :系统管理员,拥有 DBA 角色(除了安全、审计其他都管)

SYSAUDITOR :系统审计管理员

SYSSSO :系统安全管理员

SYSDBO :系统安全操作员(达梦安全版才有)

4.2.1 查看用户

select user_id,username,default_tablespace,TEMPORARY_TABLESPACE from dba_users;

4.2.2 创建用户

create user CJC identified by Dameng123  default tablespace CJC;
###create user CJC identified by Dameng123 limit failed_login_attemps 3, password_lock_time 1, password_grace_time 10 default tablespace "CJC" default index tablespace "CJC";

4.2.3用户密码策略

设置密码的时候,需要查询下密码策略是什么

select * from v$parameter where name = 'PWD_POLICY';

如果想调整密码策略

用户口令策略

select * from v$dm_ini where para_name='PWD_POLICY';

修改用户口令策略

alter system set 'PWD_POLICY'= 15 BOTH;

PWD_POLICY 参数意义:

设置系统默认口令策略。

0 : 无策略;

1 : 禁止与用户名相同;

2 : 口令长度不小于 9

4 : 至少包含一个大写字母( A-Z );

8 :至少包含一个数字( 0 9 );

16 :至少包含一个标点符号(英文输入法状态下,除 和空格外的所有符号);

若为其他数字,则表示配置值的和,如 3 1+2, 表示 同时启用第 1 项和第 2 项策略。

 

调整密码错误次数参数,默认输错3 次后锁定账号,并且 1 分钟后自动解锁

select username,account_status,locak_date from dba_users;

# 将密码输错锁定次数改为 5 次,锁定时间为 3 分钟

alter user 
用户名 
limit FAILED_LOGIN_ATTEMPS 5,PASSWORD_LOCK_TIME 3;

手动锁定或解锁账号

# 手动解锁

alter user 用户名 account unlock;

# 手动锁定

alter user 用户名 account lock;

# 查看用户资源限制,例如最大并发数

select * from dba_users a,sysusers b where a.user_id = b.id;


  达梦里创建用户或表空间 数据文件等,加双引号 指大小写 敏感,不加双引号,大小写不敏感。

4.2.4 用户 授权

新增用户不授权,默认具有登陆权限

查看角色名称

select role from dba_roles;

查看用户拥有角色

select GRANTEE,GRANTED_ROLE,DEFAULT_ROLE from dba_role_privs where GRANTEE='CJC';

查看用户有哪些系统权限

select GRANTEE,PRIVILEGE FROM dba_sys_privs where GRANTEE='CJC';

查看用户有哪些对象权限

select GRANTEE,PRIVILEGE FROM dba_tab_privs where GRANTEE='CJC';

列权限

select * from dba_col_privs where grantee = '用户名';

授权

grant "PUBLIC","VTI" to "CJC";

 

角色和权限对应关系

select PRIVILEGE from dba_sys_privs where GRANTEE='RESOURCE';
select PRIVILEGE from dba_sys_privs where GRANTEE='PUBLIC';


  登录用户

disql CJC/Dameng123:5238

 

修改密码

alter user chen identified by "A12345678";

4.2.5 创建角色

角色类型

DBA :系统管理员角色,拥有除审核、安全外的所有权限

RESOURCE :具有在当前用户模式下定义对象的权限,例如 create table

PUBLIC :具有在当前用户模式下数据操作的权限,例如 insert table

SOI :系统表( SYS 为前缀)的访问权限

SVI :系统视图( VSYS 为前缀)的视图权限

VTI :动态视图( V 为 前 缀 , 存 在 于 V 为前缀,存在于 V 为前缀,存在于 Vdynamic_tables 中的视图)的访问权限

 

角色创建

create role r1;

 

给角色授权

grant select any table to r1;

 

将角色授权给用户

grant r1 to cjc;

 

系统权限授权

select distinct PRIVILEGE from dba_sys_privs order by 1;
CREAE TABLE/CREATE TABLESPACE/ALTER DATABASE/ALTER TABLESPACE/CREATE USER/CREATE VIEW/CREATE PROCEDURE/CREATE ROLE/CREATE SCHEMA
GRANT CREATE TABLESPACE TO CJC;


  对象权限授权

select distinct PRIVILEGE from dba_tab_privs order by 1;
ALTER/INSERT/DELETE/UPDATE/EXECUTE/SELECT/REFERENCES/
GRANT DELETE ON SYSDBA.T1 TO CJC;
grant select on 模式名.表名 to 用户名;
grant update on 模式名.表名 to 用户名;
grant delete on 模式名.表名 to 用户名;


  级联授权

GRANT UPDATE ON SYSDBA.T1 TO CJC WITH GRANT OPTION;

 

revoke create table from dmuser; # 回收

grant create view to dmuser with grant option; # 允许 dmuser 有授权权限,回收时需加上 cascade

4.2.6 回收权限

REVOKE CREATE TABLESPACE FROM CJC;
REVOKE DELETE ON SYSDBA.T1 FROM CJC;
REVOKE UPDATE ON SYSDBA.T1 FROM CJC CASCADE;

4.2.7 删除角色

DROP ROLE R1;

4.2.8 模式管理

用户和模式

用户(USER ):用户是用来连接数据库并进行相关操作的。

模式(SCHEMA ):模式是数据库对象的集合,模式是数据库的逻辑结构。

 

创建模式

CREATE SCHEMA CHEN AUTHORIZATION CJC;
/

切换模式

set schema CHEN;

 

查看用户和模式

select a.name as username, b.name as schenma from sysobjects a inner join sysobjects b on a.id = b.pid where b.subtype$ is null order by username desc;

conn cjc/Dameng123:5238

  查看模式名称

select distinct object_name table_schema from all_objects where object_type='SCH';

删除模式

drop schema CHEN;

查询当前用户

select user;

查询当前模式

select sys_context('USERENV','CURRENT_USER');

  动态性能视图

v$dynamic_tables

数据字典

Sysobjects

五:对象管理

5.1 对象管理 - 图形化操作

5.1.1 创建表

CJC 模式下新建表

主键约束

存储

对应 DDL 如下:

create table "CJC"."T1"
(
"NAME" VARCHAR2(50) not null ,
"AGE" INT not null ,
"SAL" CHAR(10) not null 
)
storage(initial 10, next 2, minextents 1, fillfactor 0, on "CJCTBS")
;
 
comment on table "CJC"."T1" is 'TEST TABLE T1';
 
alter table "CJC"."T1" add constraint "PK_T1_NAME" primary key("NAME");

查看

SQL> conn cjc/123456789@192.168.80.131:5238

 

服务器[192.168.80.131:5238]: 处于普通打开状态

登录使用时间 : 6.387(ms)

SQL> desc t1;

 

行号     NAME TYPE$       NULLABLE

---------- ---- ----------- --------

1          NAME VARCHAR(50) N

2          AGE  INTEGER     N

3          SAL  CHAR(10)    N

 

已用时间: 656.920( 毫秒 ). 执行号 :54100.

5.1.2 增加列

对应 DDL 语句

alter table "CJC"."T1" add column("C1" DATE not null );
comment on column "CJC"."T1"."C1" is 'XXX';

5.1.3 约束管理

对应 DDL 语句

alter table "CJC"."T1" modify constraint "C_T1_AGE" to check(AGE =   30 );

5.1.4 视图管理

新建视图

对应 DDL 语句

CREATE VIEW "CJC"."V_T1"
/*视图的列名, 格式为(<列名>{, <列名>}),此处为可选*/
(v_col1, v_col2)
AS
/*<查询说明>*/
SELECT
NAME,
AGE
FROM
CJC.T1
/*插入或删除行是否必须满足<查询说明>所指定的条件, 此处为可选*/
WITH CHECK OPTION;
 
comment on view "CJC"."V_T1" is 'TEST ...';

5.1.5 索引管理

新增索引

对应 DDL 语句

create unique  index "I_T1_NAME" on "CJC"."T1"("NAME") storage(initial 5,next 2,minextents 2,on "CJCTBS");

5.2 对象管理 -命令行操作

5.2.1 创建表

CREATE TABLE CJC.TEST(ID INT,NAME CHAR(10));
create table dmtest.t_testpid(
pid int,
pname varchar(10),
logtime datetime DEFAULT sysdate,
sex bit
) tablespace HRTBS;

从别的表复制

# 只复制表结构(不带约束信息)

create table t_emp03 as select * from dmhr.employee where 1=0;

# 复制表结构 + 表数据

create table t_emp01 as select * from dmhr.employee;

create table t_emp02 like dmhr.employee;

5.2.2 增加列

ALTER TABLE CJC.TEST ADD COLUMN(AGE INT);

5.2.3 修改列

ALTER TABLE CJC.TEST MODIFY NAME CHAR(20);

5.2.4 删除列

ALTER TABLE CJC.TEST DROP COLUMN AGE;

#ALTER TABLE CJC.TEST DROP AGE;

 

约束类型

NOT NULL :非空约束

UNIQUE :唯一约束,可以为空,简写为 UK_ 表名 _ 字段名

PRIMARY KEY :主键约束(唯一约束 + 非空约束),简写为 PK_ 表名 _ 字段名

FOREIGN KEY :外键引用约束,引用的是另一张表(父表)的主键或唯一键。简写为 FK_ 表名 _ 字段名

CHECK :检验约束,用户校验数据的准确性,简写为 CK_ 表名 _ 字段名

  5.2.5 添加约束

ALTER TABLE CJC.TEST ADD CONSTRAINT TEST_UNI UNIQUE(ID);

# 添加主键约束

alter table dmtest.t_testpid add CONSTRAINT pk_testpid_pid PRIMARY key("pid");

# 添加外键约束,注意 REFERENCES 表里的字段必须是主键或者是添加了唯一索引的字段

alter table dmtest.t_testchild add CONSTRAINT fk_testchild_pid FOREIGN key("pid") REFERENCES dmtest.t_testpid("pid");

# 添加校验约束

alter table dmtest.t_testchild add CONSTRAINT ck_testchild_salary CHECK ("salary">=3000);

5.2.6 禁用约束

ALTER TABLE CJC.TEST DISABLE CONSTRAINT TEST_UNI;

5.2.7 启用约束

ALTER TABLE CJC.TEST ENABLE CONSTRAINT TEST_UNI;

删除约束

ALTER TABLE CJC.TEST DROP CONSTRAINT TEST_UNI;

5.2.8 视图管理

创建视图

CREATE VIEW CJC.V1 AS SELECT * FROM CJC.T1;

修改视图

CREATE OR REPLACE VIEW CJC.V1

AS

SELECT ID FROM CJC.T1;

删除视图

DROP VIEW CJC.V1;

5.2.9 索引管理

创建索引

CREATE INDEX T1_IND ON CJC.T1(ID) TABLESPACE CJC;

重建索引

ALTER INDEX CJC.T1_IND REBUILD;

删除索引

DROP INDEX CJC.T1_IND;

删除表

DROP TABLE CJC.TEST;

 

执行脚本,创建DMHR 用户数据

https://eco.dameng.com/document/dm/zh-cn/sql-dev/index

GBK 字符集请下载 CREATE_DMHR(GBK).sh ,脚本如下所示:

#!/bin/bash
 
eg_dir=$DM_HOME/samples/instance_script/dmhr/GBK
 
disql sysdba/SYSDBA:10236 <

UTF-8 字符集请下载 CREATE_DMHR(UTF-8).sh ,脚本如下所示:

#!/bin/bash
 
eg_dir=$DM_HOME/samples/instance_script/dmhr/UTF-8
 
disql sysdba/SYSDBA:5236 <

六:归档管理

6.1 归档管理 - 图形化操作

管理服务器

6.1.1 数据库改成 配置

6.1.2 配置归档

归档路径,确定

[dmdba@host02 ~]$ mkdir /dm8/arch

对应 DDL 语句

alter database archivelog;
alter database add archivelog 'DEST=/dm8/arch, TYPE=LOCAL, FILE_SIZE=64, SPACE_LIMIT=30720';

6.1.3 数据库改成 打开

6.2 归档管理 - 命令行操作

https://mp.weixin.qq.com/s/6j3-1FBJslwUaWnCwRmGVw

命令行方式

开启归档

https://eco.dameng.com/document/dm/zh-cn/ops/physical-backup.html

6.2.1 创建归档路径

mkdir /dm8/arch

6.2.2 修改数据库为 Mount 状态

alter DATABASE MOUNT;

6.2.3 配置本地归档

ALTER DATABASE ADD ARCHIVELOG 'DEST = /dm8/arch, TYPE = local,FILE_SIZE = 1024, SPACE_LIMIT = 20480';

6.2.4开启归档模式

ALTER DATABASE ARCHIVELOG;

6.2.5 修改数据库为 Open 状态

ALTER DATABASE OPEN;

 

检查,自动生成了 dmarch.ini 文件

[dmdba@host02 DAMENG]$ pwd
/dm8/data/DAMENG
[dmdba@host02 DAMENG]$ ls -l dmarch.ini 
-rw-r--r-- 1 dmdba dinstall 269 Sep 23 23:14 dmarch.ini
cat dmarch.ini

配置项                配置含义

[ARCH_NAME]          REDO 日志归档名
ARCH_TYPE            REDO 日志归档类型,LOCAL 表示本地归档,REMOTE 表示远程
ARCH_DEST            REDO 日志归档目标,LOCAL 对应归档文件存放路径;REMOTE 对应远程目标节点实例名
ARCH_FILE_SIZE       单个 REDO 日志归档文件大小,取值范围(64 MB~2048 MB),缺省 1024 MB,即 1 GB
ARCH_SPACE_LIMIT     REDO 日志归档空间限制,当所有本地归档文件达到限制值时,系统自动删除最老的归档文件。0 表示无空间限制,取值范围(1024 MB~4294967294 MB),缺省为 0
ARCH_INCOMING_PATH仅 REMOTE 归档有效,对应远程归档存放在本节点的实际路径

# 查询归档状态

select arch_mode from v$database;

# 查看归档文件

select * from SYS."V$ARCH_FILE";

# 查询归档配置

select * from v$dm_arch_ini;

6.2.6 关闭归档

alter database mount;

# 关闭归档

alter database noarchivelog;

# 删除归档文件

alter database delete archivelog 'type=local,dest=/dm8/arch';

# 将数据库状态设置为 open

alter database open;

# 查询归档状态

select arch_mode from v$database;

七:备份恢复

7.1 备份恢复 - 图形化操作

https://eco.dameng.com/document/dm/zh-cn/pm/backup-restore-combat.html

 

manager

7.1.1 数据库联机备份

对应 DDL

backup database full to "DB_CJC_FULL_2022_10_22_19_40_34" backupset 'DB_CJC_FULL_2022_10_22_19_40_34' maxsize 200;


[dmdba@host02 DB_CJC_FULL_2022_10_22_19_40_34]$ pwd
/dm8/data/CJC/bak/DB_CJC_FULL_2022_10_22_19_40_34
[dmdba@host02 DB_CJC_FULL_2022_10_22_19_40_34]$ ll -rth
total 17M
-rw-r--r-- 1 dmdba dinstall  17M Oct 22 19:43 DB_CJC_FULL_2022_10_22_19_40_34.bak
-rw-r--r-- 1 dmdba dinstall 6.5K Oct 22 19:43 DB_CJC_FULL_2022_10_22_19_40_34_1.bak
-rw-r--r-- 1 dmdba dinstall  97K Oct 22 19:43 DB_CJC_FULL_2022_10_22_19_40_34.meta

7.1.2 表联机备份

DDL 语句

backup table "CJC"."T1" to "TAB_CJC_T1_2022_10_22_19_46_41" backupset 'TAB_CJC_T1_2022_10_22_19_46_41' backupinfo 'CJC_T1_BAK_TEST' maxsize 100;

7.1.3 表空间备份

对应 DDL 语句:

backup tablespace "CJCTBS" full to "TS_CJCTBS_FULL_2022_10_22_20_01_40" backupset 'TS_CJCTBS_FULL_2022_10_22_20_01_40';


7.1.4 归档联机备份

对应 DDL

backup archivelog all to "ARCH_2022_10_22_20_13_25" backupset 'ARCH_2022_10_22_20_13_25';


对应 DDL

backup archivelog time between '2022-10-22 20:03:17' and '2022-10-23 20:03:17' to "ARCH_2022_10_22_20_03_17" backupset 'ARCH_2022_10_22_20_03_17';

7.1.5 备份管理

选择其中一个备份,右键属性

7.1.6 备份校验

7.1.7 表联机还原

数据还原

库备份和表空间备份不支持联机还原,只有表备份支持联机还原。表还原过程中表空间中其他的表还可以正常操作。

点击表备份集节点右键菜单-> 备份还原,可以打开表备份还原对话框,首页显示的是常规选项页面,如图 3.11 所示:

查看当前数据:

SQL> select * from cjc.t1;

 

行号     NAME AGE         SAL        C1        

---------- ---- ----------- ---------- ----------

1          a    35          20000      2022-10-22

 

已用时间: 3.623( 毫秒 ). 执行号 :1000.

 

删除数据

SQL> truncate table cjc.t1;

操作已执行

已用时间: 46.228( 毫秒 ). 执行号 :1003.

 

表还原

DDL 语句:

restore table "CJC"."T1" struct with index with constraint from backupset '/dm8/data/CJC/bak/TAB_CJC_T1_2022_10_22_19_46_41' device type disk;
 
restore table "CJC"."T1" with index with constraint from backupset '/dm8/data/CJC/bak/TAB_CJC_T1_2022_10_22_19_46_41' device type disk;

检查数据:

SQL> select * from cjc.t1;

 

行号     NAME AGE         SAL        C1        

---------- ---- ----------- ---------- ----------

1          a    35          20000      2022-10-22

 

已用时间: 3.346( 毫秒 ). 执行号 :1300.

7.1.8 数据库脱机还原

通过联机备份,进行脱机还原

console

SQL> truncate table cjc.t1;

操作已执行

已用时间 : 198.234( 毫秒 ). 执行号 :401.

全库脱机还原

先停库

SQL> shutdown immediate;

操作已执行

已用时间: 1.412( 毫秒 ). 执行号 :0.

启动数据库

[root@host02 ~]# systemctl start DmServiceCHEN.service

Job for DmServiceCHEN.service failed because the control process exited with error code. See "systemctl status DmServiceCHEN.service" and "journalctl -xe" for details.

 

查看错误日志

[dmdba@host02 log]$ vi DmServiceCHEN.log

file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 1-1-144-20.11.06-129436-ENT  startup...
Database mode = 0, oguid = 0
License will expire on 2022-11-06
Instance CHEN startup failed, execute 'recover database ... update db_magic' in dmrman.
^[]0;DMSERVER /dm8/data/CJC/dm.ini : 5238 ^G


恢复

更新 DB_Magic

启动数据库

[root@host02 ~]# systemctl start DmServiceCHEN.service

验证数据

[dmdba@host02 log]$ disql SYSDBA/Dameng123:5238

 

服务器[LOCALHOST:5238]: 处于普通打开状态

登录使用时间 : 6.138(ms)

disql V8

SQL> select * from cjc.t1;

 

行号     NAME AGE         SAL        C1        

---------- ---- ----------- ---------- ----------

1          a    35          20000      2022-10-22

 

已用时间: 5.034( 毫秒 ). 执行号 :400.

7.1.9 数据库脱机备份

打开 console 工具

新建备份

停库

SQL> shutdown immediate;

操作已执行

已用时间: 0.747( 毫秒 ). 执行号 :0.

备份

7.1.10 脱机还原

通过脱机备份进行脱机还原

恢复

更新

启库验证

[root@host02 ~]# systemctl start DmServiceCHEN.service

 

[dmdba@host02 ~]$ disql SYSDBA/Dameng123:5238

 

服务器[LOCALHOST:5238]: 处于普通打开状态

登录使用时间 : 4.430(ms)

disql V8

SQL> select * from cjc.t1;

 

行号     NAME AGE         SAL        C1        

---------- ---- ----------- ---------- ----------

1          a    35          20000      2022-10-22

 

已用时间: 5.949( 毫秒 ). 执行号 :400.

7.2 备份恢复 - 命令行操作

7.2.1 启用 DMAP 服务

如果选择使用 DMAP 辅助进程,执行备份还原之前就必须启动 DMAP 服务。安装 DM 数据库以后, DMAP 服务会自动启动。

启动 DMAP ,手动启动 DMAP ,有两种途径

一是启动 DM 服务查看器中的 DmAPService

二是手动启动 DMAP 执行码, DMAP 执行码位于 DM 安装目录的 bin 子目录下。

除此之外,Linux 下,还可以调用 bin 目录下的 DmAPService 脚本。

find /dm8 -name DmAPService
/dm8/bin/service_template/DmAPService
 
cd /dm8/bin/service_template/
./DmAPService start
./DmAPService status

7.2.2 脱机备份

启动 DMRMAN

DMRMAN (DM RECOVERY MANEGER) DM 的脱机备份还原管理工具,由它来统一负责库级脱机备份、脱机还原、脱机恢复等相关操作,该工具支持命令行指定参数方式和控制台交互方式执行,降低了用户的操作难度。

备份数据库

DMRMAN 下执行以下命令:

BACKUP  DATABASE  ''  [[[FULL][DDL_CLONE]]  |INCREMENT
[CUMULATIVE][WITH BACKUPDIR '<基备份搜索目录>'{,'<基备份搜索目录>'}]|[BASE ON
BACKUPSET '<基备份集目录>']]
[TO <备份名>] [BACKUPSET '<备份集目录>'][DEVICE TYPE <介质类型>[PARMS '<介质参数>']
[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>]
[IDENTIFIED BY <加密密码>[WITH ENCRYPTION][ENCRYPT WITH <加密算法>]]
[COMPRESSED [LEVEL <压缩级别>]][WITHOUT LOG][TASK THREAD <线程数>]
[PARALLEL [<并行数>][READ SIZE <拆分块大小>]];

7.2.2.1 全库备份

DMRMAN 下执行以下命令:

停库

SQL> shutdown immediate;

备份

BACKUP  DATABASE  '/dm8/data/DAMENG/dm.ini'  FULL  BACKUPSET '/dm8/bak/db_full_bak_01';

7.2.2.2 增量备份

BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/dm8/bak' BACKUPSET '/dm8/bak/rman_db_increment_bak_02';

校验特定的备份集,在 DMRMAN 下执行以下命令:

RMAN> CHECK BACKUPSET '/dm8/bak/rman_db_full_bak_01';

7.2.2.3 备份集删除

RMAN> REMOVE BACKUPSET '/dm8/bak/db_bak_for_remove_01';

7.2.3 脱机还原

RESTORE DATABASE [WITH CHECK]
FROM BACKUPSET '<备份集目录>'
[DEVICE TYPE DISK|TAPE[PARMS '<介质参数>']]
[IDENTIFIED BY <密码> [ENCRYPT WITH <加密算法>]]
[WITH BACKUPDIR '<基备份集搜索目录>'{,'<基备份集搜索目录>'}]
[MAPPED FILE '<映射文件>'][TASK THREAD <任务线程数>]
[RENAME TO '<数据库名>'];
::=|
::=''[REUSE DMINI][OVERWRITE]
::= TO '' [OVERWRITE]

联机备份,脱机还原

RESTORE DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/dm8/bak/db_full_bak_for_restore'

恢复数据库

RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/dm8/bak/db_full_bak_for_restore';

恢复 db_magic

RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC;

恢复完成后,注册服务

/dm8/scripts/root/dm_service_installer.sh -t dmserver -p CJC -dm_ini /dm8/data/DAMENG_FOR_RESTORE/dm.ini

7.2.4 在线备份

7.2.4.1 备份整个数据库

BACKUP DATABASE FULL BACKUPSET '/dm8/bak/db_full_bak_01';

指定备份集路径为 /dm8/bak/db_bak_3_01,执行以下命令:
BACKUP DATABASE BACKUPSET '/dm8/bak/db_bak_3_01';
创建备份集,备份名设置为 WEEKLY_FULL_BAK,执行以下命令:
BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/dm8/bak/db_bak_3_02';
创建备份为备份集添加描述信息为 完全备份,执行以下命令:
BACKUP DATABASE BACKUPSET '/dm8/bak/db_bak_3_04' BACKUPINFO '完全备份';
创建备份限制备份片大小为 300 MB,执行以下命令:
BACKUP DATABASE BACKUPSET '/dm8/bak/db_bak_3_05' MAXPIECESIZE 300;
执行备份压缩,压缩级别设置为 5,执行以下命令:
BACKUP DATABASE BACKUPSET '/dm8/bak/db_bak_3_06' COMPRESSED LEVEL 5;
创建并行备份,指定并行数为 8,执行以下命令:
BACKUP DATABASE BACKUPSET '/dm8/bak/db_bak_3_07' PARALLEL 8;
基于 /dm8/bak 全量备份的 增量备份,执行以下命令:
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/dm8/bak' BACKUPSET '/dm8/bak/db_increment_bak_02';

7.2.4.2 表空间备份

BACKUP TABLESPACE <表空间名> [FULL | INCREMENT [CUMULATIVE]
[WITH BACKUPDIR '<基备份搜索目录>'{,'<基备份搜索目录>'}]
| [BASE ON BACKUPSET '<基备份集目录>']][TO <备份名>]
BACKUPSET ['<备份集路径>'][DEVICE TYPE <介质类型>
[PARMS '<介质参数>']][BACKUPINFO '<备份集描述>']
[MAXPIECESIZE <备份片限制大小>][IDENTIFIED BY < 加 密 密 码 >
[WITH ENCRYPTION][ENCRYPT WITH < 加 密 算 法 >]]
[COMPRESSED[LEVEL <压缩级别>]][TRACE FILE '']
[TRACE LEVEL ][TASK THREAD <线程数>]
[PARALLEL [<并行数>][READ SIZE <拆分块大小>]];

完全备份单个表空间,执行以下命令:
BACKUP TABLESPACE MAIN FULL BACKUPSET '/dm8/bak/ts_full_bak_01';
增量备份指定备份目录,以备份 MAIN 表空间为例,指定 BASE_ON 参数执行增量备份,执行以下命令:
BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR '/dm8/bak'BACKUPSET '/dm8/bak/ts_increment_bak_02';

7.2.4.3 表备份

BACKUP TABLE <表名>
[TO <备份名>]
BACKUPSET ['<备份集路径>'] [DEVICE TYPE <介质类型> [PARMS '<介质参数>']]
[BACKUPINFO '<备份集描述>']
[MAXPIECESIZE <备份片限制大小>]
[IDENTIFIED BY <加密密码>[WITH ENCRYPTION][ENCRYPT WITH <加密算法>]]
[COMPRESSED [LEVEL <压缩级别>]]
[TRACE FILE ''] [TRACE LEVEL ]

以备份 TAB_01 为例,执行以下命令:

BACKUP TABLE CJC.T1 BACKUPSET '/dm8/bak/tab_bak_01';

7.2.5 在线还原

还原表结构
restore table struct from backupset '/dm8/bak/tab_bak_for_res_02';
还原表数据
RESTORE TABLE  FROM BACKUPSET '/dm8/bak/tab_bak_for_res_02';
还原时不创建索引
RESTORE  TABLE    WITHOUT  INDEX  FROM  BACKUPSET '/dm8/bak/tab_bak_for_res_03';
还原时不创建约束
RESTORE  WITHOUT  CONSTRAINT  FROM  BACKUPSET '/dm8/bak/tab_bak_for_res_01';


  7.2.6 将生产库还原到另一个实例

联机备份数据库,保证数据库运行在归档模式及 Open 状态。执行以下命令:

BACKUP DATABASE BACKUPSET '/dm8/bak/db_full_bak_for_restore';

准备目标库。还原目标库可以是已经存在的数据库,也可使用 dminit 工具初始化一个新库。执行以下命令:

dminit path=/dm8/data db_name=DAMENG_FOR_RESTORE

启动 RMAN ,校验备份,校验待还原备份集的合法性。校验备份有两种方式,联机和脱机,此处使用脱机校验。执行以下命令:

CHECK BACKUPSET '/dm8/bak/db_full_bak_for_restore';

还原数据库。启动 DMRMAN ,执行以下命令:

RESTORE DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/dm8/bak/db_full_bak_for_restore'

恢复数据库。启动 DMRMAN ,执行以下命令:

RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/dm8/bak/db_full_bak_for_restore'

恢复 db_magic ,执行以下命令:

RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC;

恢复完成后,注册服务

/dm8/scripts/root/dm_service_installer.sh -t dmserver -p CJC -dm_ini /dm8/data/DAMENG_FOR_RESTORE/dm.ini


  修改 dm.ini 里端口, 5236 改成 5238

su - root
/dm8/script/root/dm_service_installer.sh -t dmserver -p CJC -dm_ini /dm8/data/DAMENG_FOR_RESTORE/dm.ini

启动新实例

systemctl start DmServiceCJC.service

 

7.2.7 还原表空间

需要注意,表空间还原的目标库只能是备份集产生的源库,否则将报错。启动 DMRMAN ,执行以下命令:

RESTORE DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/dm8/bak/db_full_bak_for_restore';

恢复表空间。启动 DMRMAN ,执行以下命令:

RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE TS1;

https://eco.dameng.com/document/dm/zh-cn/ops/restore-specified-time.html

7.2.8 恢复到指定时间点

备份数据库,执行以下命令:

BACKUP DATABASE BACKUPSET '/dm8/bak/db_full_bak_for_time_lsn';

操作步骤同步骤 3 ,此时的时间和 LSN 分别为: 2018-11-16 10:57:20.977265 50861

关闭数据库,打开 RMAN 还原数据库,执行以下语句:(步骤 4 为误操作,因此我们需要将数据库恢复到步骤 3 的状态)

RESTORE DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/dm8/bak/db_full_bak_for_time_lsn';

使用 RECOVER DATABASE...UNTIL TIME 命令恢复到指定的时间,打开 RMAN ,执行以下命令:

RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' WITH
ARCHIVEDIR'/home/dm_arch/arch' UNTIL TIME'2018-11-16 10:56:40.624931';

或者使用 RECOVER DATABASE...UNTIL LSN 命令恢复到指定的时间,执行以下命令:

RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' WITH
ARCHIVEDIR'/home/dm_arch/arch' UNTIL LSN 50857;

恢复 db_magic ,执行以下命令:

RECOVER DATABASE 'D:\dmdbms\data\DAMENG\dm.ini' UPDATE DB_MAGIC;

7.2.9 逻辑备份

https://eco.dameng.com/document/dm/zh-cn/pm/dexp-dimp-function-introduction.html

逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。四种级别所提供的功能:

数据库级(FULL):导出或导入整个数据库中的所有对象。
用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。
模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。
表级(TABLES):导出或导入一个或多个指定的表或表分区。

dexp 逻辑导出

dexp 工具可以对本地或者远程数据库进行数据库级、用户级、模式级和表级的逻辑备份。备份的内容非常灵活,可以选择是否备份索引、数据行和权限,是否忽略各种约束(外键约束、非空约束、唯一约束等),在备份前还可以选择生成日志文件,记录备份的过程以供查看。

dexp 工具名称有两种写法 dexp dexpdp 。两者语法完全相同。唯一的区别在于, dexp 导出的文件必须存放在客户端, dexpdp 导出的文件必须存放在服务器端。

 

使用 dexp 工具

dexp 工具需要从命令行启动。在 cmd 命令行工具中找到 dexp 所在安装目录 /dmdbms/bin ,输入 dexp 和参数后回车。参数在下一节详细介绍。

 

例如,将用户名和密码均为 SYSDBA

IP 地址为 192.168.0.248

端口号为 8888 的数据库采用 FULL 方式完全导出。

/user/data 为数字证书路径。

导出文件名为 db_str.dmp

导出的日志文件名为 db_str.log

导出文件的路径为/mnt/dexp/data

./dexp USERID=SYSDBA/SYSDBA@192.168.0.248:8888##/user/data FILE=db_str.dmp DIRECTORY=/mnt/dexp/data LOG=db_str.log FULL=Y

四种级别的导出方式

针对数据库对象,有FULL OWNER SCHEMAS TABLES 四种导出方式可供选择。一次导出只能指定一种方式。可选参数,缺省为 SCHEMAS

 

FULL

导出数据库的所有对象。

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp


  OWNER

OWNER 方式导出一个或多个用户拥有的所有对象

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log OWNER=USER01DIRECTORY=/mnt/data/dexp

SCHEMAS

SCHEMAS 方式的导出一个或多个模式下的所有对象

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dexp


注意

一般情况下,OWNER SCHEMAS 导入导出是相同的。

但是用户可以包含多个模式,在这种情况下SCHEMAS 的导入导出是 OWNER 导入导出的一个子集。

 

TABLES

TABLES 方式导出和导入一个或多个指定的表或表分区。导出所有数据行、约束、索引等信息。

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dexp


TABLES 导出有关的参数还有 QUERY EXCLUDE INCLUDE ,都是用来设置过滤条件的。

 

表名为小写tabname ,语句中应该写为 "\"tabname\""

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES="\"tabname\""


例如,表名为小写tabname" ,语句中应该写为 "\"tabname\"\"\""

./dexp USERID=SYSDBA/SYSDBA\@192.168.0.248:8888 FILE=db_str.dmp LOG=db_str.log TABLES="\"tabname\"\"\""

FUZZY_MATCH

FUZZY_MATCH 用于指定 TABLES 选项是否支持模糊匹配。可选参数,缺省为 N

 

语法如下:

FUZZY_MATCH=N/Y

N TABLES 选项不支持模糊匹配,指定的表名与数据库中的表名必须精确匹配;

Y TABLES 选项支持模糊匹配,指定的表名与数据库中的表名采用 LIKE 模糊查询匹配。

 

导出OTHER 模式下以 "R" 开头的表

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=OTHER.R% FUZZY_MATCH=Y


 

QUERY

QUERY 用于指定过滤条件来对表数据进行导出。可选参数。

导出 OTHER.READER 表中满足 "WHERE AGE=19" 条件的数据。

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=OTHER.READER QUERY="WHERE AGE=19"


 

PARALLEL

PARALLEL 用于指定导出的过程中所使用的线程数目。可选参数,缺省为单线程。

如果 CPU 核心数为 N 的话,那一般来说 PARALLEL N 或者 N+1 最合适。

设置PARALLEL=2 时则线程数为 2

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp PARALLEL=2


 

TABLE_PARALLEL

TABLE_PARALLEL 用于指定导出每张表所使用的线程数。可选参数,缺省为单线程。如果 CPU 核数为 N 的话,那一般来说 TABLE_PARALLEL N 或者 N+1 最合适。在 MPP 模式下会转换成单线程。

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp TABLE_PARALLEL=3


 

EXCLUDE

EXCLUDE 用来批量设置导出时忽略的对象种类。可选参数。

设置 EXCLUDE=(CONSTRAINTS) ,将当前用户下的 table1 table2 的对象信息导出时不导出约束

./dexp SYSDBA/SYSDBA FILE=/mnt/data/db_str.dmp LOG=db_str.log TABLES=table1,table2 EXCLUDE=/(CONSTRAINTS/)


 

INCLUDE

INCLUDE 用来批量设置导出时包含的对象种类。可选参数。

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=table1 DIRECTORY=/mnt/data/dexp INCLUDE=/(CONSTRAINTS,INDEXES/)

CONSTRAINTS TABLESPACE GRANTS INDEXES TRIGGERS ROWS

这些参数用来指定某类对象是否被导出。类别分别为约束、表空间、权限、索引、触发器和数据。

CONTRAINTS=N :设置不导出约束。可选参数。缺省该参数为 Y ,导出约束。

 

TABLESPACE=Y :设置导出的对象定义中包含表空间。可选参数。缺省该参数为 N ,不包含表空间。

GRANTS=N :设置不导出权限。可选参数。缺省该参数为 Y ,导出权限。

INDEXES=N :设置不导出索引。可选参数。缺省该参数为 Y ,导出索引。

TRIGGERS=N :设置不导出触发器。可选参数。缺省该参数为 Y ,导出触发器。

ROWS=N :设置不导出数据。可选参数。缺省该参数为 Y ,导出数据。

 

例如,设置ROWS=N 不导出表中的数据。

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp NOLOGFILE=Y FULL=Y DIRECTORY=/mnt/data/dexp ROWS=N

注意

此处,对象(CONSTRAINTS GRANTS INDEXES TRIGGERS ROWS )分别单独设置,和 EXCLUDE/INCLUDE 中批量设置功能一样。设置一个即可。 如果单独设置和批量设置同时出现时,那么以最后出现的那个为准。

 

NOLOGFILE

NOLOGFILE 用于设置是否使用日志文件。可选参数。

一旦设置NOLOGFILE=Y 不使用日志文件。此时即使存在 LOG 参数, LOG 参数也为无效。

例如,设置 NOLOGFILE=Y ,不使用日志文件。

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp NOLOGFILE=Y FULL=Y DIRECTORY=/mnt/data/dexp


NOLOG

NOLOG 设置屏幕上是否显示日志信息。可选参数。

 

例如,设置NOLOG=Y 屏幕不显示日志信息。

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp NOLOG=Y FULL=Y DIRECTORY=/mnt/data/dexp


PARFILE

PARFILE 用于将常用的参数设置保存到文件中,然后使用参数文件 PARFILE 进行导出、导入操作。可选参数。

例如,设置PARFILE=/mnt/data/dexp/para.txt

./dexp USERID=SYSDBA/SYSDBA PARFILE=/mnt/data/dexp/para.txt


其中,参数文件/mnt/data/dexp/para.txt 的内容如下:

FILE=db_str.dmp
LOG=db_str.log
TABLES=table1
DIRECTORY=/mnt/data/dexp

FEEDBACK

FEEDBACK 用来指明在导出数据的过程中每间隔多少行打印一次进度信息。可选参数。

当参数缺省时,默认为0 ,只打印导出表的总行数。

例如,将整个数据库导出到文件dexp.dmp 中,并且在导出的过程中每隔 100 行打印一次进度信息。

./dexp SYSDBA/SYSDBA FULL=Y FILE=dexp.dmp DIRECTORY=/mnt/data/dexp FEEDBACK=100


COMPRESS

COMPRESS 指定是否压缩导出文件。可选参数。缺省为不压缩。

COMPRESS=Y/N

 

ENCRYPT ENCRYPT_PASSWORD ENCRYPT_NAME

这三个参数用来设置导出文件加密。可选参数。

 

例如,设置导出文件加密,密钥 abcdefg ,加密算法为 DES_CBC

./dexp SYSDBA/SYSDBA DIRECTORY=/mnt/data/dexp FILE=dk15.dmp LOG=db_str15.log ENCRYPT=Y ENCRYPT_PASSWORD=abcdefg ENCRYPT_NAME=DES_CBC FULL=Y

FILESIZE

FILESIZE 用于指定单个导出文件( FILE )大小或日志文件( LOG )大小的上限。可以按字节 [B] K[B] M[B] G[B] 的方式指定大小。可选参数。

使用 FILESIZE 参数时, FILE (或 LOG )必须使用 %U 对名称进行自动扩展,否则报错。如果不指定 FILE (或 LOG ),那么即使设置了 FILESIZE 也不起作用。 FILE LOG 同时使用 %U 时, FILESIZE 参数只需指定一次。

以下示例表示以FULL 方式导出实例,每个导出文件大小为 128m ,文件名以 data01.dmp 自动扩展,存储位置为 /mnt/data/dexp 目录。

./dexp USERID=SYSDBA/SYSDBA DIRECTORY=/mnt/data/dexp FILE=data%u.dmp LOG=data%u.log FILESIZE=128m FULL=Y

FILENUM

FILENUM 用于指定一个模板导出文件的个数。范围为 1~99 ,默认 99 。可选参数。 FILENUM 需要和 FILESIZE 搭配使用, FILENUM*FILESIZE 要大于等于导出的文件总大小,否则会报错空间不足。

 

DROP

DROP 用于设置导出后是否删除原表。可选参数。

DROP=Y/N

Y: 导出后删除原表,但不级联删除。

N 或缺省参数 : 导出后不删除原表。

 

DESCRIBE

DESCRIBE 用于设置导出数据文件的描述信息,记录在数据文件中。可选参数。

语法如下:

DESCRIBE=' 字符串 '

字符串:设置导出数据文件的描述信息,记录在数据文件中。缺省时,导出的数据文件中没有描述信息

 

HELP

输入dexp HELP 即可查看帮助信息。

例如,使用HELP 查看帮助信息。

./dexp HELP

7.2.10 逻辑还原

https://eco.dameng.com/document/dm/zh-cn/pm/dimp-logical%20import.html

dimp 工具名称有两种写法 dimp dimpdp 。两者语法完全相同。唯一的区别在于, dimp 导入的文件必须存放在客户端, dexpdp 导入的文件必须存放在服务器端。

 

dimp 参数一览表

...

dimp 导入

导入 SYSDBA OTHER PERSON 模式中的数据( SCHEMAS=SYSDBA,OTHER,PERSON ),导入文件就是上一步导出的文件 dexp01.dmp ,导入日志 dimp02.log 放入 /emc_2/data/dimp 目录中。

./dimp SYSDBA/SYSDBA\@192.168.0.248:8888 FILE=/emc_2/data/dexp/dexp01.dmp LOG=dimp02.log DIRECTORY=/emc_2/data/dimp SCHEMAS=SYSDBA,OTHER,PERSON


  八:参数管理

8.1 参数管理 - 图形化操作

使用图形化修改

不修改内存中的值,修改的是配置文件中的值,需要重启后生效

使用图形化修改

cd /dm8/tool

./console

SQL> select name,value,sys_value,file_value,type,description from v$parameter where name like '%SESSIONS%';
 
行号     NAME         VALUE SYS_VALUE FILE_VALUE TYPE    DESCRIPTION                          
---------- ------------ ----- --------- ---------- ------- -------------------------------------
1          MAX_SESSIONS 100   100       150        IN FILE Maximum number of concurrent sessions
 
已用时间: 5.997(毫秒). 执行号:410.

8.2 参数管理 -命令行操作

8.2.1 参数类型

SELECT distinct type from v$parameter;

行号      TYPE     

---------- ---------

1          READ ONLY

2          SYS

3          IN FILE

4          SESSION

 

已用时间 : 152.622( 毫秒 ). 执行号 :401.

 

对应到 Oracle Scope

both :既修改内存中的值,也修改配置文件中的值,重启不重启都一样生效

spfile :只修改配置文件中的值,重启数据库生效

memory :只修改内存中的值,重启数据库后恢复设置前的样子

 

达梦根据参数类型可分为,静态参数和动态参数两种,这两种均支持通过系统函数、 SQL 命令进行修改

静态参数:只能修改配置文件中的值,对内存中的值不进行修改,所以静态参数修改后使其生效的话,需要对数据库进行重启

动态参数:既能修改内存中的值,也能修改配置文件中的值,所以动态参数修改后是立即生效的

READ ONLY
只读参数,不能通过系统函数、SQL命令达到修改参数的目的,只能从dm.ini配置文件中进行修改
SYS
静态参数,可以通过系统函数、SQL命令达到修改参数的目的
IN FILE
动态参数(系统级),可以通过系统函数、SQL命令达到修改参数的目的
SESSION
动态参数(会话级),可以通过系统函数、SQL命令达到修改参数的目的,可针对某个会话进行修改,便于调试(不然要应用到整个线上系统,一旦出错,影响面就广了)

8.2.2参数修改方式

使用 dm.ini 修改

# 直接编辑文件修改即可

vim /dm8/data/ 服务名称 dm.ini

 

SQL 语句修改

# 后面跟的是参数范围

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

 

# 查询兼容参数类型

select name,value,sys_value,file_value,type,description from v$parameter where name = 'COMPATIBLE_MODE';

# 修改兼容参数类型

alter system set 'COMPATIBLE_MODE'=2 spfile;

 

系统函数修改

查看可以使用的系统函数

select name,id from v$ifun t where name like '%SP_SET%_PARA%';

 

查看系统函数的参数类型

select * from v$ifun_arg t where id=584;

 

例子

修改 double 类型的参数值, UNDO_RETENTION 参数

SP_SET_PARA_DOUBLE_VALUE(1,'UNDO_RETENTION',90);

 

数据缓冲区

修改数据缓冲区大小,没有特殊指明的话就是修改 Normal 缓冲区的大小,参数对应的是 BUFFER

Normal 对应参数 BUFFER Fast 对应参数为 FAST_POOL_PAGES Recycle 对应参数为 RECYCLE Keep 对应参数为 KEEP

alter system set 'BUFFER'=2000 spfile;

九:作业管理

9.1 作业管理 - 图形化操作

9.1.1 启动 MANAGER 管理工具

[dmdba@cjc-db-01 ~]$ manager

连接数据库

9.1.2 创建代理环境

SQL> select OWNER,TABLE_NAME from dba_tables where table_name in ('SYSJOBS');

 

LINEID     OWNER  TABLE_NAME

---------- ------ ----------

1          SYSJOB SYSJOBS

 

操作员

SQL> select username from dba_users;

 

LINEID     USERNAME  

---------- ----------

1          SYSAUDITOR

2          SYSSSO

3          DMHR

4          CJC

5          SYSDBA

6          SYS

 

6 rows got

 

创建、修改和删除操作员可以通过以下两种方式来实现。一是通过系统过程来实现;二是通过图形化客户端MANAGER管理工具实现。用户选择其中的一种即可。

9.1.3 新建操作员

显示 创建的语句

可以对操作员进行修改和删除

9.1.4 新建作业

作业步骤

Add 添加

步骤类型

先测试脚本执行的作业

STEP NAME 不能有特殊字符?否则最后提交时报错:

可以用类似这样的 NAME

SQL> select * from cjc.t1;

 

LINEID     ID         

---------- -----------

1          1

 

used time: 2.444(ms). Execute id is 901.

作业调度

每天 15:50 开始执行

查看自动生成的 DDL 语句

call SP_CREATE_JOB('CJC_JOB',1,0,'',0,0,'',0,'TEST 20221019 ...');
 
call SP_JOB_CONFIG_START('CJC_JOB');
 
call SP_ADD_JOB_STEP('CJC_JOB', 'insert into script ...', 0, 'insert into cjc.t1 values(100);', 0, 0, 0, 0, NULL, 0);
 
call SP_ADD_JOB_SCHEDULE('CJC_JOB', 'CJC_SCH', 1, 1, 1, 0, 0, '15:50:00', NULL, '2022-10-19 15:37:25', NULL, '');
 
call SP_JOB_CONFIG_COMMIT('CJC_JOB');


  保存脚本

OK

 

警报

达梦数据库还提供了警报的功能,允许用户定义一些自己想要捕获的动作,如果这些动作发生时,系统就会将对应信息存储到指定的表中,将想要得到的信息存储起来,以便做到实时的监控。

创建、修改和删除警报可以通过以下两种方式来实现。一是通过系统过程来实现;二是通过图形化客户端 MANAGER 管理工具实现。用户选择其中的一种即可。

新增警告

创建警告

通知警告

DDL

call SP_CREATE_ALERT('SCRIPT_ALERT',1,0,6,-1,10,'');
call SP_ALERT_ADD_OPERATOR('SCRIPT_ALERT','TOM',1,1);


  监控作业

监控作业是指把作业的运行情况通过电子邮件发送给作业操作员。邮件成功发送的前提有两个:一是为监控服务配置管理员;二是开启监控服务。

https://eco.dameng.com/document/dm/zh-cn/pm/monitoring-job.html

 

  查看数据

SQL> select * from cjc.t1;

 

LINEID     ID         

---------- -----------

1          1

2          100

 

used time: 2.045(ms). Execute id is 905.

 

作业执行历史

9.2 作业管理 - 命令行操作

https://eco.dameng.com/document/dm/zh-cn/pm/typical-example.html

定时备份 示例

https://eco.dameng.com/document/dm/zh-cn/ops/scheduled-backup.html

创建作业环境

SP_INIT_JOB_SYS(1);

脚本备份

Linux 定时备份脚本

1. 每周六晚上 23 30 定时全库备份

call SP_CREATE_JOB('back_full',1,0,'',0,0,'',0,'back_full');
call SP_JOB_CONFIG_START('back_full');
call SP_ADD_JOB_STEP('back_full', 'back_full', 6, '01000000/opt/dmdbms/data/BAK', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('back_full', 'back_full', 1, 2, 1, 64, 0, '23:30:00', NULL, '2020-03-27 16:35:56', NULL, '');
call SP_JOB_CONFIG_COMMIT('back_full');

2. 每周一、周二、周三、周四、周五、周日晚上 23 30 定时增量备份

call SP_CREATE_JOB('backup_inc',1,0,'',0,0,'',0,'backup_inc');
call SP_JOB_CONFIG_START('backup_inc');
call SP_ADD_JOB_STEP('backup_inc', 'backup_inc', 6, '11000000/opt/dmdbms/data/BAK|/opt/dmdbms/data/BAK', 1, 2, 0, 0, NULL, 0);
--call SP_ADD_JOB_STEP('backup_inc', 'backup_inc', 6, '11000000/opt/dmdbms/data/BAK|/opt/dmdbms/data/BAK', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('backup_inc', 'backup_inc', 1, 2, 1, 63, 0, '23:33:00', NULL, '2020-03-27 22:03:58', NULL, '');
call SP_JOB_CONFIG_COMMIT('backup_inc');

3. 每天 00 00 删除 15 天以前的数据。删除前请先提前将备份文件转移到单独的备份服务器

call SP_CREATE_JOB('JOB_DEL_BAK_TIMELY',1,0,'',0,0,'',0,'JOB_DEL_BAK_TIMELY');
call SP_JOB_CONFIG_START('JOB_DEL_BAK_TIMELY');
call SP_ADD_JOB_STEP('JOB_DEL_BAK_TIMELY', 'JOB_DEL_BAK_TIMELY', 0, 'call SF_BAKSET_BACKUP_DIR_ADD(''DISK'', ''/data/dmdbms/data/BAK'');
CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-15);', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('JOB_DEL_BAK_TIMELY', 'JOB_DEL_BAK_TIMELY', 1, 1, 1, 0, 0, '00:00:00', NULL, '2020-03-27 22:06:13', NULL, '');
call SP_JOB_CONFIG_COMMIT('JOB_DEL_BAK_TIMELY');

十: ODBC

10.2 查看 ODBC 配置文件

odbcinst -j

10.2配置 odbc.ini 文件

cp /etc/odbc.ini /etc/odbc.ini_20221017bak
vi /etc/odbc.ini
[dm8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = cjc-db-01
UID = SYSDBA
PWD = Dameng123
TCP_PORT = 5238

10.3配置 odbcinst.ini

cp /etc/odbcinst.ini /etc/odbcinst.ini_20221017bak
vi /etc/odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
DRIVER = /dm8/bin/libdodbc.so

10.4测试 odbc连接数据库

su - dmdba
isql dm8

10.5 ODBC环境准备

如果没有对应命令,需要提前安装

rpm -qa|grep unixODBC

配置本地 YUM

vi /etc/yum.repos.d/oracle-linux-ol7.repo 
[Oracle_Linux_7]
name=Oracle Linux 7
baseurl=file:///iso
gpgcheck=0
enabled=1

挂载操作系统镜像

mount OracleLinux-R7-U9-Server-x86_64-dvd.iso /iso -o loop
yum -y install unixODBC.x86_64

### 拷贝离线包

###cp /iso/Packages/unixODBC-devel-2.3.1-14.0.1.el7.x86_64.rpm /soft/dm/
###cp /iso/Packages/unixODBC-2.3.1-14.0.1.el7.x86_64.rpm /soft/dm/

安装 ODBC

解压 ODBC ,没有这个 tar 包的话需要上传到这个目录下

tar -zxvf /opt/unixODBC-2.3.0.tar.gz

进入到 odbc 目录进行源码安装

cd unixODBC-2.3.0

./configure

make

make install

十一:卸载

11.1 卸载 - 图形化操作

https://eco.dameng.com/document/dm/zh-cn/pm/install-uninstall.html

[root@host02 ~]# echo $DISPLAY

localhost:10.0

[root@host02 ~]# xhost +

 

[dmdba@host02 ~]$ cd /dm8/

[dmdba@host02 dm8]$ sh uninstall.sh 

[root@host02 ~]# cd /dm8/

[root@host02 dm8]# sh uninstall.sh 

删除文件,用户,组等

 

11.2 卸载 - 命令行操作

卸载 数据库实例 + 软件

11.2.1 停服务

systemctl stop DmServiceCJC.service 
systemctl stop DmServiceDMSERVER.service

11.2.2卸载

su - dmdba
/dm8/uninstall.sh -i
Whether to uninstall DM database(/dm8/)? (y/Y:Yes n/N:No):Y
Whether to deletet the dm_svc.conf file? (y/Y:Yes n/N:No):Y

11.2.3执行脚本

su - root
/dm8/root_uninstaller.sh

[dmdba@cjc-db-01 ~]$ cat /dm8/root_uninstaller.sh
#!/bin/sh
 
#run by root
RUID=`/usr/bin/id|awk -F\( '{print $1}'|awk -F\= '{print $2}'`
if [ ${RUID} != "0" ]
then
 echo "Must run the script by root!"
exit 1
fi
 
echo "Delete DmServiceCJC service"
 
systemctl disable DmServiceCJC.service
rm -f /usr/lib/systemd/system/DmServiceCJC.service
rm -f "/dm8/bin/DmServiceCJC"
rm -f "/dm8/bin/DmServicedameng"
echo "Delete /etc/dm_svc.conf"
rm -f /etc/dm_svc.conf

11.2.4 删除用户、组

userdel -r -f dmdba
groupdel dinstall

11.2.5删除文件

rm -rf /dm8/*

清理残留的服务

systemctl list-unit-files |grep -i dms
DmServicedameng.service                       disabled
 
find / -name DmService*
/usr/lib/systemd/system/DmServicedameng.service
 
rm -f /usr/lib/systemd/system/DmServicedameng.service


###chenjuchao 20221023 20:30###

请使用浏览器的分享功能分享到微信等