ITPub博客

首页 > 数据库 > 国内数据库 > 达梦数据库必知必会-DCA篇

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

原创 国内数据库 作者:chenoracle 时间:2022-10-23 20:46:03 0 删除 编辑
一:安装
二:表空间管理
三:重做日志管理
四:用户、模式管理
五:对象管理
六:归档管理
七:备份管理
八:参数管理
九:作业管理
十: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 <<EOF
START ${eg_dir}/CREATESCHEMA.sql
START ${eg_dir}/REGION.sql
START ${eg_dir}/CITY.sql
START ${eg_dir}/LOCATION.sql
START ${eg_dir}/JOB.sql
START ${eg_dir}/JOB_HISTORY.sql
START ${eg_dir}/DEPARTMENT.sql
START ${eg_dir}/EMPLOYEE.sql
exit
EOF

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

#!/bin/bash
 
eg_dir=$DM_HOME/samples/instance_script/dmhr/UTF-8
 
disql sysdba/SYSDBA:5236 <<EOF
  create tablespace dmhr datafile 'dmhr.dbf' size 128;
  create user dmhr identified by 123456789 default tablespace dmhr; 
  grant dba to dmhr;
  exit;
EOF
 
disql dmhr/123456789:5236 <<EOF
START ${eg_dir}/REGION.sql
START ${eg_dir}/CITY.sql
START ${eg_dir}/LOCATION.sql
START ${eg_dir}/JOB.sql
START ${eg_dir}/JOB_HISTORY.sql
START ${eg_dir}/DEPARTMENT.sql
START ${eg_dir}/EMPLOYEE.sql
exit;
EOF

六:归档管理

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  '<INI 文 件 路 径 >'  [[[FULL][DDL_CLONE]]  |INCREMENT
[CUMULATIVE][WITH BACKUPDIR '<基备份搜索目录>'{,'<基备份搜索目录>'}]|[BASE ON
BACKUPSET '<基备份集目录>']]
[TO <备份名>] [BACKUPSET '<备份集目录>'][DEVICE TYPE <介质类型>[PARMS '<介质参数>']
[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>]
[IDENTIFIED BY <加密密码>[WITH ENCRYPTION<TYPE>][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 <restore_type>[WITH CHECK]
FROM BACKUPSET '<备份集目录>'
[DEVICE TYPE DISK|TAPE[PARMS '<介质参数>']]
[IDENTIFIED BY <密码> [ENCRYPT WITH <加密算法>]]
[WITH BACKUPDIR '<基备份集搜索目录>'{,'<基备份集搜索目录>'}]
[MAPPED FILE '<映射文件>'][TASK THREAD <任务线程数>]
[RENAME TO '<数据库名>'];
<restore_type>::=<type1>|<type2>
<type1>::='<INI 文件路径>'[REUSE DMINI][OVERWRITE]
<type2>::= TO '<system_dbf 所在路径>' [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<TYPE>][ENCRYPT WITH < 加 密 算 法 >]]
[COMPRESSED[LEVEL <压缩级别>]][TRACE FILE '<TRACE 文件名>']
[TRACE LEVEL <TRACE 日志级别>][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<TYPE>][ENCRYPT WITH <加密算法>]]
[COMPRESSED [LEVEL <压缩级别>]]
[TRACE FILE '<trace 文件名>'] [TRACE LEVEL <trace 日志级别>]

以备份 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###

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29785807/viewspace-2919869/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE、OCMU 用户组成员、Oracle 11g OCM、微信公众号"IT小Chen"

注册时间:2014-08-05

  • 博文量
    853
  • 访问量
    2727880