达梦DM单机部署以及日常运维管理

一、DM数据库的卸载和安装

1>DM数据库的安装–linux
1.先关闭防火墙和selinux

[root@localhost ~]# systemctl status firewalld

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# systemctl disable firewalld

[root@localhost ~]# vi /etc/selinux/config
SELINUX=disabled

2.使用ulimit -a查看系统资源限制
安装达梦数据库软件的用户必须有如下系统资源
dmdba soft nofile 65535
dmdba hard nofile 65535
dmdba soft nproc 65535
dmdba hard nproc 65535
dmdba soft stack 8192
dmdba hard stack 8192
达梦数据库安装介质必须要和操作系统匹配
修改操作系统参数限制
data seg size —设置为1048576(即 1GB)以上或 unlimited(无限制),
file size —设置为 unlimited(无限制),此参数过小将导致数据库安装或初始化失败
open files —设置为 65536 以上或 unlimited(无限制)
virtual memory —设置为 1048576(即 1GB)以上或 unlimited(无限制),此参数过小将导致数据库启动失败

在/etc/security/limits.conf最后增加如下记录

dmdba soft nofile 65535
dmdba hard nofile 65535
dmdba soft nproc 65535
dmdba hard nproc 65535
dmdba soft stack 8192
dmdba hard stack 8192

3.创建用户和所属组

[root@localhost ~]# groupadd dinstall

[root@localhost ~]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

4.初始化用户密码

[root@localhost ~]# passwd dmdba

更改用户 dmdba 的密码 。

新的 密码:

无效的密码: 密码少于 8 个字符

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

5.设置环境变量
DM 安装程序在安装时将产生临时文件,临时文件需要 1GB 的存储空间,临时文件目录默认为/tmp,如果/tmp 目录不能保证 1GB 的存储空间,用户可以扩展/tmp 目录存储空间或者通过设置环境变量 DM_INSTALL_TMPDIR 指定安装程序的临时目录。
#以 BASH 为例:

[root@localhost ~]# mkdir -p /mount_point/dir_name

[root@localhost ~]# DM_INSTALL_TMPDIR=/mount_point/dir_name

[root@localhost ~]# export DM_INSTALL_TMPDIR

[root@localhost mnt]# chown -R dmdba:dinstall /mount_point/dir_name

(一定要授权对应目录的权限,不然安装数据库会报错)

以下为未授权导致的安装报错,此步骤可跳过
为未授权导致的安装报错,此步骤可跳过

6.挂载达梦的iso文件
先传输文件,再解压并修改文件名

[root@localhost ~]# cd /mount_point/dir_name

[root@localhost dir_name]# ll

总用量 732380

-rw-r–r-- 1 root root 749955771 8月 17 12:49 dm8_20210712_x86_rh6_64_ent.zip

[root@localhost dir_name]# unzip dm8_20210712_x86_rh6_64_ent.zip

[root@localhost dir_name]# cd dm8_20210712_x86_rh6_64_ent

[root@localhost dm8_20210712_x86_rh6_64_ent]# mv dm8_20210712_x86_rh6_64_ent_8.1.2.38_pack1.iso dm8.iso

使用root挂载,然后将DMInstall.bin文件给dmdba.dinstall的权限(进入mnt目录下,进行授权)

[root@localhost dm8_20210712_x86_rh6_64_ent]# mount dm8.iso -o loop
/mnt

mount: /dev/loop0 写保护,将以只读方式挂载

[root@localhost dm8_20210712_x86_rh6_64_ent]# cd /mnt/

[root@localhost mnt]# chown dmdba.dinstall DMInstall.bin

chown: 正在更改"DMInstall.bin" 的所有者: 只读文件系统

7.命令行安装达梦数据库
切换用户至dmdba下,进行安装(linux系统使用非root账号进行安装,默认使用dmdba,windows系统使用带有administrator超级管理员用户权限)

[root@localhost mnt]# su dmdba

[dmdba@localhost mnt]$ ./DMInstall.bin -i

按照安装说明用root执行此命令,由于使用非 root 系统用户进行安装,所以部分安装步骤没有相应的系统权限,需要用户手动执行相关命令

[root@localhost mnt]# /home/dmdba/dmdbms/script/root/root_installer.sh

移动 /home/dmdba/dmdbms/bin/dm_svc.conf 到/etc目录

修改服务器权限

2>DM数据库的卸载–linux
1.进入 DM 安装目录,执行卸载脚本

[dmdba@localhost ~]$ cd /home/dmdba/dmdbms/

[dmdba@localhost dmdbms]$ ./uninstall.sh -i

在这里插入图片描述

在 Linux(Unix)系统下,使用非 root 用户卸载完成时,终端提示“请以 root 系统用户执行命令”。用户需要手动执行相关命令

[root@localhost dmdbms]# sh /home/dmdba/dmdbms/root_uninstaller.sh(使用root用户执行)

删除/etc/dm_svc.conf文件

在这里插入图片描述

3>DM数据库的安装–windows
1.修改端口和防火墙策略

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

2.双击镜像,点击setup进行安装
在这里插入图片描述

4>DM数据库的卸载–windows
1.找到dmdbms里面的uninstall,双击后进行卸载
在这里插入图片描述

二、初始化数据库实例

1>linux命令行形式

[dmdba@localhost ~]$ cd /home/dmdba/dmdbms/bin

[dmdba@localhost bin]$ ./dminit path=/home/dmdba/dmdata page_size=16 port_num=5237

initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-07-09
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

log file path: /home/dmdba/dmdata/DAMENG/DAMENG01.log

log file path: /home/dmdba/dmdata/DAMENG/DAMENG02.log

write to dir [/home/dmdba/dmdata/DAMENG].
create dm database success. 2021-08-17 14:47:03
Path:指定data的安装目录。
page_size:页大小,默认为8,但一般调整为16,并且初始化完成以后不能修改。
port_num:数据库服务的端口号,默认为5236
CHARSET/UNICODE_FLAG:数据库字符集,0[GB18030],1[UTF-8],2[EUC-KR],默认为0[GB18030],初始化完成以后不能修改。
2>windows图形化界面
在这里插入图片描述

按照正确操作执行,8页改为16页,其他参考运维手册。

三、客户端访问数据库

1>图形化方式访问
点击manger
在这里插入图片描述
在这里插入图片描述

2>命令行形式
1.Windows
进入D盘下的文件夹中,D盘下的一级目录可以使用下面三种进入,必须是在D:>下键入。
另,dir可查看当前文件夹下面有哪些文件。
在这里插入图片描述

说明:
DIsql 的关键字符,DIsql 的要求对连接串的特殊字符需要使用双引号括起来”aaaa/aaaa”, 操作系统的要求需要再在最外加双引号和转义”””aaaa/aaaa”””。例如:用户名为 user01,密码为 aaaa/aaaa,那么连接串要写成:DIsql user01/”””aaaa/aaaa”””。
2.Linux

[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@localhost:5237

服务器[LOCALHOST:5237]:处于普通打开状态
登录使用时间 : 1.775(ms)
disql V8
SQL> quit

四、启停数据库
1>前台启停
1.前台启动
1)命令行形式

[dmdba@localhost bin]$ ./dmserver /home/dmdba/dmdata/DAMENG/dm.ini
(启动的路径就是初始化的路径)

2)图形化方式
在这里插入图片描述

前台启动的特点是启动窗口不能关闭,如果关闭,则数据库服务退出
2.前台停库
Linux和windows一样
直接输入exit即可停止前台启动的数据库服务,如下图所示

在这里插入图片描述

2>后台启停
1.后台启动
1)Linux后台启动
后台启动一般配置有后台启动脚本DmServer,脚本位置一般在…/dmdbms/bin目录下
设置固定路径

[dmdba@localhost bin]$ cp service_template/DmService
dmserverd(拷贝后台启动脚本到bin目录下)

[dmdba@localhost bin]$ vi dmserverd

[dmdba@localhost bin]$ ./dmserverd start

Starting dmserverd: [ OK ]

在这里插入图片描述

2)windows后台启动
Windows后台启动使用DM服务查看器(dmservice)

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

右击达梦数据库服务实例,点击启动即可后台启动达梦数据库服务
2.后台停库
1)Windows后台停库:
如上图右击达梦数据库实例服务,选择停止,即可后台停止数据库服务
2)linux后台停库:
Linux后台停库也是使用DmServer脚本

[dmdba@localhost bin]$ ./dmserverd stop

Stopping dmserverd: [ OK ]

后台启动数据库服务的特点是:数据库服务后台启动,即使启动窗口异常关闭,也不会影响数据库服务的运行
3>开机自启动
1.配置windows开机自启动
Windows一般当数据库初始化完成以后,即注册了数据库自动启动,如果没有注册自动启动,请参考如下步骤
右键->此电脑->管理->服务和应用程序->服务

找到DmServiceDMSERVER,右键点击属性->常规->启动类型,即可设置是否自动启动。
在这里插入图片描述
在这里插入图片描述

2.Linux配置达梦数据库服务自动启动
此处以redhat操作系统为参考
Redhat6
将后台启动脚本放到/etc/init.d/下面
使用root用户运行如下命令
chkconfig DmService on
将后台启动脚本放到/etc/init.d/下面
使用root用户运行如下命令
Redhat7
systemctl enable DmService.service
Centos7:

[root@localhost dmdbms]# cd /etc/init.d/

[root@localhost init.d]# cp /home/dmdba/dmdbms/bin/dmserverd .

[root@localhost init.d]# ll -l dmserverd

-rwxr-xr-x 1 root root 16340 8月 17 18:00 dmserverd

[root@localhost init.d]# chkconfig dmserverd on

[root@localhost init.d]# chkconfig --list

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。

  要列出 systemd 服务,请执行 "systemctl list-unit-files"。
  查看在具体 target 启用的服务请执行
  "systemctl list-dependencies [target]"。

dmserverd 0:关 1:关 2:开 3:开 4:开 5:开 6:关(0,1,6表示自启动关;2,3,4,5表示自启动开)
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
3.系统参数配置
1)打开/关闭归档
打开归档:
修改dm.ini参数ARCH_INI = 1,即可打开归档 --注:修改dm.ini配置文件,需要重启数据库服务
关闭归档:修改dm.ini参数ARCH_INI = 0,即可关闭归档
注:打开和关闭归档都需要重启数据库

[dmdba@localhost ~]$ cd /home/dmdba/dmdata/DAMENG/ (初始化的路径里面的dm,ini)

[dmdba@localhost DAMENG]$ vi dm.ini

ARCH_INI = 1 #dmarch.ini

1.SQL跟踪日志(用于跟踪慢SQL和应用报错的使用)
将dm.ini中的参数SVR_LOG设置为1,配置sqllog.ini即可打开;
在管理工具或DISQL界面执行:SP_SET_PARA_VALUE(1,’SVR_LOG’,1);

[dmdba@localhost ~]$ cd /home/dmdba/dmdata/DAMENG/ (初始化的路径里面的dm,ini)

[dmdba@localhost DAMENG]$ vi dm.ini

SVR_LOG = 1 #Whether the Sql Log sys Is open or close. 1:open, 0:close, 2:use switch and detail mode. 3:use not switch and simple mode.

[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@localhost:5237

服务器[localhost:5237]:处于普通打开状态

登录使用时间 : 3.624(ms)

disql V8

SQL> SP_SET_PARA_VALUE(1,‘SVR_LOG’,1);

DMSQL 过程已成功完成
已用时间: 14.974(毫秒). 执行号:400.

2.SQL查询优化代价估算
开启ENABLE_MONITOR=1和MONITOR_SQL_EXEC=2即可;
在管理工具或DISQL界面执行:

SP_SET_PARA_VALUE(1,‘ENABLE_MONITOR’,1);

SP_SET_PARA_VALUE(1,‘MONITOR_SQL_EXEC’,1);

[dmdba@localhost ~]$ cd /home/dmdba/dmdata/DAMENG/ (初始化的路径里面的dm,ini)

[dmdba@localhost DAMENG]$ vi dm.ini

ENABLE_MONITOR = 1 #Whether to enable monitor

MONITOR_SQL_EXEC = 2 #Whether to enable monitor sql execute

[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@localhost:5237

SQL>SP_SET_PARA_VALUE(1,‘ENABLE_MONITOR’,1);

DMSQL 过程已成功完成

已用时间: 7.622(毫秒). 执行号:502.

SQL>SP_SET_PARA_VALUE(1,‘MONITOR_SQL_EXEC’,1);

DMSQL 过程已成功完成

已用时间: 4.083(毫秒). 执行号:503.

4>manager客户端的使用
1.对象导航栏
在这里插入图片描述

对象导航栏的作用是提供了各数据库对象的图形化显示及对应对象的用户操作接口
在这里插入图片描述

2.菜单工具栏
主菜单工具栏提供了一些与SQL编辑器相关的按键,如下所示:
在这里插入图片描述

现从左到右一一介绍
新建查询:在当前选定的数据库连接上打开一个新的SQL编辑器
打开脚本文件:打开一个写有SQL脚本的文件,默认文件后缀为.SQL
保存:保存当前编辑器内容到文件
保存所有:保存所有已经打开的编辑器内容到文件
撤销:撤销刚刚对编辑器所做的文字改变
重做:恢复刚刚对编辑器所做的撤销操作
剪切:剪切编辑器中所选中内容到系统剪贴板
复制:复制编辑器中所选中内容到系统剪贴板
粘贴:粘贴剪贴板中的内容
执行:执行选中文本或执行所有
批量执行:批量执行SQL编辑器中的SQL语句
单步执行:每次执行一条SQL语句
执行脚本:打开SQL脚本并执行
停止:停止正在执行中的SQL操作
提交:提交更改到数据库
回滚:回滚到上一个保存点
显示执行计划:显示SQL语句的执行计划(相当于语法explain+SQL)
执行闪回查询:设置闪回查询条件并执行
SQL调试:调试SQL语句
3.sql语句编辑区
编辑sql语句的界面,在sql语句编辑区完成sql的编写,然后选中编写的sql语句,点击菜单栏的图标即可执行sql语句
4.消息区
SQL语句执行结果显示区域,界面如下图所示:
在这里插入图片描述

在这里插入图片描述

5.窗口->选项界面
如果在批量执行sql脚本的过程中需要出错后继续执行,则如下图所示
在这里插入图片描述

勾选“出错后继续执行”,点击确定
如果在编辑sql过程中想要有对象定义提示,则如下图所示
在这里插入图片描述

勾选上”启用对象定义提示”点击确定

五、常用系统视图及查询语句
常用的系统视图:
dba_objects:显示数据库中所有的对象,例如想查询数据库中有没有某个对象
select * from dba_objects where owner=“test” and object_name=“对象名”;
v s e s s i o n s : 显 示 会 话 的 具 体 信 息 , 如 执 行 的 s q l 语 句 、 主 库 名 、 当 前 会 话 状 态 、 用 户 名 等 等 v sessions:显示会话的具体信息,如执行的 sql 语句、主库名、当前会话状态、用户名等等 v sessions:sqlvlock:查看当前数据库中锁的信息
v m e m p o o l : 显 示 所 有 的 内 存 池 信 息 V mem_pool:显示所有的内存池信息 V mempool:Vdeadlock_history:记录死锁的历史信息
V T A B L E S P A C E : 显 示 表 空 间 信 息 , 不 包 括 回 滚 表 空 间 信 息 V TABLESPACE:显示表空间信息,不包括回滚表空间信息 V TABLESPACE:VTRX:显示所有活动事务的信息。通过该视图可以查看所有系统中所有的事务以及相关信息,如锁信息等。

六、查看、创建、删除模式
图形化查看,创建,删除模式:
查看模式:
选中想要查看的模式->右键点击“属性”,如下图所示
在这里插入图片描述
在这里插入图片描述

创建模式
选中模式->右键点击“创建模式”,如下图所示
在这里插入图片描述

删除模式:
选中想要查看的模式->右键点击“删除”,如下图所示
在这里插入图片描述
在这里插入图片描述

点击确定即可删除
Sql语句查看,创建,删除模式:
查看所有模式

select distinct owner from dba_objects;

创建模式:

create schema test authorization sysdba;–创建test模式默认拥有者为sysdba

删除模式:

drop schema test;

图形化、sql语句创建模式;

七、用户管理
1>创建用户
一般创建:

create user “TEST” identified by “000000000”;

注意事项:自定义的用户名不能与现有的用户名或者模式名相同,如果和模式名相同则报” 无效的用户名[TEST]”错误.如果和已存在的用户名相同则报” 对象[TEST]已存在”错误.如图:
在这里插入图片描述

指定默认表空间:
前提:表空间要先创建完成,建议在实际使用中限制上限空间,保证在运行过程中存储空间在可控范围内,毕竟扩容不是短时间可以解决的问题。定期监控表空间的情况,定期进行表空间扩容;

创建用户

create user “xxx” identified by “password” default tablespace “tablespace_name”;

查看所有用户

SQL> select * from dba_users;

2>修改密码
密码复杂度要符合密码策略(PWD_POLICY)要求

alter user “xxx” identified by “password”;

3>锁定/解锁用户
说明:锁定用户和解锁用户需要“ALTER USER”或者DBA权限。

alter user “xxx” account lock; -----锁定
alter user “xxx” account unlock; -----解锁

4>修改用户默认表空间

alter user “xxx” default tablespace “tablespace_name”;

删除用户

drop user “xxx”;

当该用户模式中存在数据时需要指定关键字“cascade”

drop user “xxx” cascade;

5>DM管理工具操作
1、创建用户
用户管理用户新建用户
在这里插入图片描述
输入用户名、密码、表空间等信息,点击确定完成创建。
在这里插入图片描述

2、修改账户
用户管理用户用户名,右键选中用户名,选择修改
在这里插入图片描述

表空间选项中选择TEST表空间:
在这里插入图片描述

3、删除用户
用户->管理用户->用户名,右键选中用户名,选择删除
在这里插入图片描述

当该用户模式下有数据时需要勾选级联删除选项,点击确定即可:
在这里插入图片描述

注意:不能在模式中删除,如:
在这里插入图片描述
在这里插入图片描述

6>用户权限管理
1.系统权限
1)登录权限
当新用户创建好后,如果没有锁定账户,默认情况下这个账户是可以直接登录数据库的。一般用户只需要要授予RESOURCE和PUBLIC两个角色即可。
授予命令:

grant “PUBLIC” to “TEST”;

grant “RESOURCE” to “TEST”;

DM管理工具操作
用户->管理用户->用户名,右键选中用户名,选择修改->所属角色
在这里插入图片描述

查看当前可授权给用户的角色:

select * from SESSION_ROLES

在这里插入图片描述

2、查看用户当前拥有的权限
用户通过USER_SYS_PRIVS视图可以查询到当前拥有的系统权限
在这里插入图片描述

通过USER_ROLE_PRIVS视图库查询到当前用户拥有的角色权限:
在这里插入图片描述

3)查询能够被赋予用户的系统权限
DBA用户可以通过DBA_SYS_PRIVS视图可以查询到哪些系统权限可以赋予用户
在这里插入图片描述

4)授予特定系统权限
当用户确定好需要的系统权限后,可以向管理员申请授予相关权限,如需要修改任何用户的权限:

GRANT CREATE USER TO TEST;

在这里插入图片描述

5)权限转授
如果用户希望新将授予的权限转授给其他用户时需要指定 WITH ADMIN OPTION选项。
GRANT CREATE USER TO TEST WITH ADMIN OPTION;
在这里插入图片描述

DM管理工具操作:
用户->管理用户->用户名,右键选中用户名,选择修改->系统权限
在这里插入图片描述

2.对象权限
对象权限是指针对具体用户对象的DML权限,包括表或视图及其列的SELECT、INSERT、DELETE、UPDATE、REFERENCES和DUMP权限,序列的查询权限,函数、包、类、存储过程的EXECUTE权限,以及上述权限的转授权限。
1)配置对象权限
1.1、表权限的配置
以SYSDBA用户的TEST表为例:
授予TEST用户查询权限:
grant SELECT on “SYSDBA”.“test” to “TEST”;
授予TEST用户插入权限
grant INSERT on “SYSDBA”.“test” to “TEST”;
授予TEST用户删除权限
grant DELETE on “SYSDBA”.“test” to “TEST”;
授予TEST用户修改权限
grant UPDATE on “SYSDBA”.“test” to “TEST”;
授予TEST用户引用权限
grant REFERENCES on “SYSDBA”.“test” to “TEST”;
授予TEST用户导出权限
grant SELECT FOR DUMP on “SYSDBA”.“test” to “TEST”;
如果需要转授其他用户,则要添加with grant option关键字:

grant SELECT on “SYSDBA”.“att” to “TEST” with grant option;

grant INSERT on “SYSDBA”.“att” to “TEST” with grant option;

grant DELETE on “SYSDBA”.“att” to “TEST” with grant option;

grant UPDATE on “SYSDBA”.“att” to “TEST” with grant option;

grant REFERENCES on “SYSDBA”.“att” to “TEST” with grant option;

grant SELECT FOR DUMP on “SYSDBA”.“att” to “TEST” with grant option;

DM管理工具操作
用户->管理用户->用户名,右键选中用户名,选择修改->对象权限
在这里插入图片描述

查询当前用户作为对象拥有者、授权者或被授权者的数据库对象权限

命令:SELECT * FROM USER_TAB_PRIVS

在这里插入图片描述

2)列权限的配置

将SYSDBA"."test"表的id列的查询权限授予TEST用户:
grant SELECT(“id”) on “SYSDBA”.“test” to “TEST” with grant option;

将SYSDBA"."test"表的id列的插入权限授予TEST用户:
grant INSERT(“id”) on “SYSDBA”.“test” to “TEST” with grant option;

将SYSDBA"."test"表的id列的更新权限授予TEST用户:
grant UPDATE(“id”) on “SYSDBA”.“test” to “TEST” with grant option;

将SYSDBA"."test"表的id列的引用权限授予TEST用户:
grant REFERENCES(“id”) on “SYSDBA”.“test” to “TEST” with grant option;

注意:如果要授予多个列的权限则需要每个列单独处理。
DM管理工具操作:
用户->管理用户->用户名,右键选中用户名,选择修改->对象权限

在这里插入图片描述

7>资源限制

alter user “TEST” limit failed_login_attemps 3;

普通用户的登录失败次数默认是3,设置范围是1-100,或者是无限:

alter user “TEST” limit failed_login_attemps unlimited;

1.DM管理工具设置:
现在5次失败
用户->管理用户->用户名,右键选中用户名,选择修改->资源限制
在这里插入图片描述

无限制:
在这里插入图片描述

2.口令有效期
用户口令的默认有效期是无限制,修改口令有效期的命令如下:

alter user “TEST” limit password_life_time 7;

单位是天,设置范围是1-365;
注:尽量不建议设置口令有效期,避免有效期到影响生产环境正常使用;
设置口令无限制的命令如下:

alter user “TEST” limit password_life_time unlimited;

DM管理工具设置方式:
限制有效期为5天:
用户->管理用户->用户名,右键选中用户名,选择修改->资源限制
在这里插入图片描述

无限制:
在这里插入图片描述

3.口令宽限期
口令宽限期是指账号口令到期后,系统仍然允许改账户登录的时间限制,在这个时间限制内账户登录系统时将会被要求设置新密码,超过这个时间后账户将被永久锁定。企业版中是没有密码到期提示的,只有安全版中才有。
普通账户的口令宽限期默认是10天,修改命令如下:

alter user “TEST” limit password_grace_time 15;

单位是:天,设置范围是1-30
可以设置成无限制:

alter user “TEST” limit password_grace_time unlimited;

DM管理工具设置方式
限制口令宽限期为15天:
用户->管理用户->用户名,右键选中用户名,选择修改->资源限制
在这里插入图片描述

无限制:
在这里插入图片描述

4.会话持续时间
会话持续期是指一个会话连接、访问和操作数据库服务器的时间上限,如果达到时间上线系统将会强制断开会话。
注意:生产系统中一般不设置会话持续期;没有经过测试前一般也不要设置会话最大空闲时间,因为有的应用使用的是长连接,一旦空闲超时应用程序将无法连接数据库.
设置命令:

alter user “TEST” limit connect_time 90;

单位是分钟,设置范围是1-1440
设置为无限制:

alter user “TEST” limit password_grace_time unlimited,

DM管理工具设置方式
限制为90分钟:
用户->管理用户->用户名,右键选中用户名,选择修改->资源限制
在这里插入图片描述

设置为无限制:
在这里插入图片描述

8>常用系统试图及查询语句
查看数据库当前的所有用户

select * from dba_users;

–或者

select * from SYSUSERS;

查询用户拥有的角色

SELECT * FROM USER_ROLE_PRIVS;

查询用户拥有的系统权限

SELECT * FROM USER_SYS_PRIVS;

查询当前用户作为对象拥有者、授权者或被授权者的数据库对象权限

Select * from USER_TAB_PRIVS;

查询当前用户作为所有者、授权者或被授权者所有列对象

SELECT * FROM USER_COL_PRIVS;

查询用户的资源限制

SELECT * FROM SYSUSERS;

查询所有对象被授于的权限

select u.username,a.* from SYS.SYSAUTH$ a,dba_users u where u.user_id=a.GRANTEE#;

八、表空间管理

1>预定义表空间
预定义表空间包括:SYSTEM 表空间、ROLL 表空间、MAIN表空间、TEMP 表空间和 HMAIN 表空间。

  1. SYSTEM 表空间存放了有关 DM 数据库的字典信息,用户不能在 SYSTEM 表空间创建表和索引。
  2. ROLL 表空间完全由 DM 数据库自动维护,用户无需干预。该表空间用来存放事务运行过程中执行 DML 操作之前的值,从而为访问该表的其他用户提供表数据的读一致性视图。
  3. MAIN 表空间在初始化库的时候,就会自动创建一个大小为 128M 的数据文件MAIN.DBF。在创建用户时,如果没有指定默认表空间,则系统自动指定 MAIN 表空间为用户默认的表空间。
  4. TEMP 表空间完全由 DM 数据库自动维护。当用户的 SQL 语句需要磁盘空间来完成某个操作时,DM 数据库会从 TEMP 表空间分配临时段。如创建索引、无法在内存中完成的排序操作、SQL 语句中间结果集以及用户创建的临时表等都会使用到 TEMP表空间。
  5. HMAIN 表空间属于 HTS 表空间,完全由 DM 数据库自动维护,用户无需干涉。当用户在创建 HUGE 表时,未指定 HTS 表空间的情况下,充当默认 HTS 表空间。每一个用户都有一个默认的表空间。对于 SYS、SYSSSO、SYSAUDITOR 系统用户,默认的用户表空间是 SYSTEM,SYSDBA 的默认表空间为 MAIN,新创建的用户如果没有指定默认表空间,则系统自动指定 MAIN 表空间为用户默认的表空间。
    注意:创建用户时强烈建议用户要预先创建好专用的表空间,这样便于管理,因为MAIN表空间是系统表空间无法删除,测试中还发现MAIN表空间使用的磁盘空间只会增长不会减小。
    2>自定义表空间
    1、创建表空间
    创建表空间时需要指定表空间名和其拥有的数据文件列表。
    语法:
    CREATE TABLESPACE <表空间名> DATAFILE <数据文件绝对路径>SIZE <初始MB> AUTOEXTEND <ON [ NEXT <每次扩展MB>][< MAXSIZE 最大MB> |OFF>
    创建表空间例子:
    创建名为 TEST 的表空间,并指定该空间上拥有 2 个数据文件,每个数据文件的大小为 64M。

Create tablespace “TEST” datafile ‘C:\dm\dmdbms\data\DAMENG\TEST1.DBF’ size 64, ‘C:\dm\dmdbms\data\DAMENG\TEST2.DBF’ size 64;

说明:新增数据文件的大小(单位 MB),取值范围 4096页大小~2147483647页大小,默认是自动扩展。
DM管理工具创建方式
表空间右键新建表空间
在这里插入图片描述

输入表空间名添加
在这里插入图片描述

文件路径文件大小自动扩充扩充尺寸扩充限制
在这里插入图片描述

2、修改表空间自动扩展属性
SQL语法:
ALTER TABLESPACE <表空间名> DATAFILE <文件路径>{,<文件路径>} autoextend on;
设置自动扩展例子
将TEST表空间的TEST1.DBF文件设置为自动扩展:
Sql语句:

alter tablespace “TEST” datafile ‘C:\dm\dmdbms\data\DAMENG\TEST1.DBF’ autoextend on;

DM管理工具修改
表空间->TEST->右键修改->双击自动扩展对应的位置->选择打开
在这里插入图片描述

3、加数据文件
SQL语法
ALTER TABLESPACE <表空间名> ADD <数据文件子句>
添加数据文件例子
给TEST表空间添加一个64MB的TEST3.DBF数据文件,自动扩展,每次扩展5MB,最大100MB
SQL语句:

alter tablespace “TEST” add datafile ‘C:\dm\dmdbms\data\DAMENG\TEST3.DBF’ size 64 autoextend on next 5 maxsize 100;

DM管理工具添加
表空间->TEST->右键修改->双击对应的位置->填入对应值
在这里插入图片描述

4、修改表空间名称
Sql语句

ALTER TABLESPACE test rename to NEWTEST;

表空间的名称只能通过SQL语句进行修改,DM管理工具无法修改。
在这里插入图片描述

5、offline表空间
如果表空间有未提交事务时,表空间不能修改为 OFFLINE 状态。
注:在生产环境运行过程中不允许OFFLINE表空间,避免出现表空间损坏;一般在主备环境中,都设置ENABLE_OFFLINE_TS=2(是否允许 offline 表空间,2表示禁止备库,其他放开)
SQL语法
ALTER TABLESPACE <表空间名> OFFLINE;
Offline表空间例子
SQL语句修改

ALTER TABLESPACE NEWTEST offline;

DM管理工具修改
在这里插入图片描述

如果要将表空间ONLINE,则sql语句为:
ALTER TABLESPACE NEWTEST online
或者使用管理工具设置即可。
6、删除表空间
SQL语法
drop tablespace <表空间名> ;
删除表空间例子
删除NEWTEST表空间,sql语句方式:

drop tablespace “NEWTEST”;

删除NEWTEST表空间,管理工具方式
表空间->TEST->右键删除->确定
在这里插入图片描述

7、修改数据文件路径
SQL语法
ALTER TABLESPACE <表空间名> RENAME TO <表空间名>;
修改数据文件路径例子
将NEWTEST表空间的TEST1.DBF文件的路径为“C:\dm\dmdbms\data\DAMENG\datafile”,SQL语句修改

alter tablespace “NEWTEST” offline;

alter tablespace “NEWTEST” rename datafile ‘TEST1.DBF’ to ‘C:\dm\dmdbms\data\DAMENG\datafile\TEST1.DBF’;

alter tablespace “NEWTEST” online;

说明:重命名表空间数据文件时,表空间必须处于 OFFLINE 状态,修改成功后再将表空间修改为 ONLINE 状态
DM管理工具修改
表空间->TEST->右键修改-修改具体的路径->确定
在这里插入图片描述

九、数据导出导入
逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,联机方式是指数据库服务器正常运行过程中进行的备份和还原。dexp 和 dimp 是 DM 数据库自带的工具,只要安装了 DM 数据库,就可以在安装目录/dmdbms/bin 中找到。
如何获取帮助
LINUX:
进入到dmdbms\bin目录,输入./dexp.exe help

[dmdba@localhost bin]$ ./dexp help

dexp V8

格式: ./dexp KEYWORD=value 或 KEYWORD=(value1,value2,…,valueN)

例程: ./dexp SYSDBA/SYSDBA GRANTS=Y TABLES=(SYSDBA.TAB1,SYSDBA.TAB2,SYSDBA.TAB3)

USERID 必须是命令行中的第一个参数

关键字              说明(默认值)

USERID 用户名/口令 格式:{[/] | /}[@<connect_identifier>][] [<os_auth>]
<connect_identifier> : [<svc_name> | host[:port] | <unixsocket_file>]
: #{<exetend_option>=[,<extend_option>=]…}
–此行外层{}是为了封装参数之用,书写时需要保留
<os_auth> : AS {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}
FILE 导出文件 (dexp.dmp)
DIRECTORY 导出文件所在目录
FULL 整库导出 (N)
OWNER 以用户方式导出 格式 (user1,user2,…)
SCHEMAS 以模式方式导出 格式 (schema1,schema2,…)
TABLES 以表方式导出 格式 (table1,table2,…)
FUZZY_MATCH TABLES选项是否支持模糊匹配 (N)
QUERY 用于导出表的子集的select 子句
PARALLEL 用于指定导出的过程中所使用的线程数目
TABLE_PARALLEL 用于指定导出的过程中表内的并发线程数目,MPP模式下会转换成单线程
TABLE_POOL 用于指定表的缓冲区个数
EXCLUDE 忽略指定的对象
格式 EXCLUDE=(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS) or
EXCLUDE=TABLES:table1,table2 or
EXCLUDE=SCHEMAS:sch1,sch2
INCLUDE 包含指定的对象
格式 INCLUDE=(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS) or
INCLUDE=TABLES:table1,table2
CONSTRAINTS 导出约束 (Y)
TABLESPACE 导出对象带有表空间 (N)
GRANTS 导出权限 (Y)
INDEXES 导出索引 (Y)
TRIGGERS 导出触发器 (Y)
ROWS 导出数据行 (Y)
LOG 屏幕输出的日志文件
NOLOGFILE 不使用日志文件(N)
NOLOG 屏幕上不显示日志信息(N)
LOG_WRITE 日志信息实时写入文件: 是(Y),否(N)
DUMMY 交互信息处理: 打印§, 所有交互都按YES处理(Y),NO(N)
PARFILE 参数文件名
FEEDBACK 每 x 行显示进度 (0)
COMPRESS 导出数据是否压缩 (N)
ENCRYPT 导出数据是否加密 (N)
ENCRYPT_PASSWORD 导出数据的加密密钥
ENCRYPT_NAME 加密算法的名称
FILESIZE 每个转储文件的最大大小
FILENUM 一个模板可以生成的文件数
DROP 导出后删除原表,但不级联删除 (N)
DESCRIBE 导出数据文件的描述信息,记录在数据文件中
HELP 打印帮助信息

[dmdba@localhost bin]$ ./dimp help

dimp V8

格式: ./dimp KEYWORD=value 或 KEYWORD=(value1,value2,…,vlaueN)

例程: ./dimp SYSDBA/SYSDBA IGNORE=Y ROWS=Y FULL=Y

USERID 必须是命令行中的第一个参数

关键字                 说明(默认值)

USERID 用户名/口令 格式:{[/] | /}[@<connect_identifier>][] [<os_auth>]
<connect_identifier> : [<svc_name> | host[:port] | <unixsocket_file>]
: #{<exetend_option>=[,<extend_option>=]…}
–此行外层{}是为了封装参数之用,书写时需要保留
<os_auth> : AS {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}
FILE 导入文件名称 (dexp.dmp)
DIRECTORY 导入文件所在目录
FULL 整库导入 (N)
OWNER 以用户方式导入 格式 (user1,user2,…)
SCHEMAS 以模式方式导入 格式 (schema1,schema2,…)
TABLES 以表名方式导入 格式(table1,table2,…)
PARALLEL 用于指定导入的过程中所使用的线程数目
TABLE_PARALLEL 用于指定导入的过程中每个表所使用的子线程数目,在FAST_LOAD为Y时有效
IGNORE 忽略创建错误 (N)
TABLE_EXISTS_ACTION 需要的导入表在目标库中存在时采取的操作[SKIP | APPEND | TRUNCATE | REPLACE]
FAST_LOAD 是否使用dmfldr来导数据(N)
FLDR_ORDER 使用dmfldr是否需要严格按顺序来导数据(Y)
COMMIT_ROWS 批量提交的行数(5000)
EXCLUDE 忽略指定的对象 格式
格式 EXCLUDE=(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS)
GRANTS 导入权限 (Y)
CONSTRAINTS 导入约束 (Y)
INDEXES 导入索引 (Y)
TRIGGERS 导入触发器 (Y)
ROWS 导入数据行 (Y)
LOG 指定日志文件
NOLOGFILE 不使用日志文件(N)
NOLOG 屏幕上不显示日志信息(N)
LOG_WRITE 日志信息实时写入文件(N): 是(Y),否(N)
DUMMY 交互信息处理§: 打印§, 所有交互都按YES处理(Y),NO(N)
PARFILE 参数文件名
FEEDBACK 每 x 行显示进度 (0)
COMPILE 编译过程, 程序包和函数… (Y)
INDEXFILE 将表的索引/约束信息写入指定的文件
INDEXFIRST 导入时先建索引(N)
REMAP_SCHEMA 格式(SOURCE_SCHEMA:TARGET_SCHEMA)
将SOURCE_SCHEMA中的数据导入到TARGET_SCHEMA中
ENCRYPT_PASSWORD 数据的加密密钥
ENCRYPT_NAME 加密算法的名称
SHOW/DESCRIBE 打印出指定文件的信息(N)
TASK_THREAD_NUMBER 用于设置dmfldr处理用户数据的线程数目
BUFFER_NODE_SIZE 用于设置dmfldr读入文件缓冲区大小
TASK_SEND_NODE_NUMBER 用于设置dmfldr发送节点个数[16,65535]
LOB_NOT_FAST_LOAD 如果一个表含有大字段,那么不使用dmfldr,因为dmfldr是一行一行提交的
PRIMARY_CONFLICT 主键冲突的处理方式[IGNORE|OVERWRITE|OVERWRITE2],默认报错
TABLE_FIRST 是否先导入表(N):是(Y),否(N)
SHOW_SERVER_INFO 是否打印服务器信息(N):是(Y),否(N)
HELP 打印帮助信息

WINDOWS:
进入到dmdbms\bin目录,输入dexp.exe help

C:>cd dmdbms\bin

  dexp.exe help 		
  dimp.exe help

Unicode编码:国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。

1>一般的常规处理有三条方法:
1.选取源dmp对应的达梦版本执行;
2.确认原始库和目标库的unicode编码一致;
3.确认原始库和目标库的操作系统编码一致;
确保这三者一致就好
修改linux操作系统字符集:
locale -a 查询系统支持的字符集
修改 /etc/sysconfig/i18n 文件,如
LANG=“en_US.UTF-8”,xwindow会显示英文界面,
LANG=“zh_CN.GB18030”,xwindow会显示中文界面。
还有一种方法 cp /etc/sysconfig/i18n $HOME/.i18n
修改 $HOME/.i18n 文件,如
LANG=“en_US.UTF-8”,xwindow会显示英文界面,
LANG=“zh_CN.GB18030”,xwindow会显示中文界面。
这样就可以改变个人的界面语言,而不影响别的用户

Windows:
在Windows平台下查看和修改字符集
一、查看字符集:chcp
二、修改字符集为936 :chcp 936可以得到操作系统的代码页信息,你可以从控制面板的语言选项中,可以查看代码页对应的详细的字符集信息。
备注:Windows下在命令行输入chcp,返回936代表中文,437代表英文,安装的时候要注意,如果是437你选择中文的话,中文将无法正确显示。
3、中文可能出现乱码问题
如果字符集不一致会出现以下报错
[WARNING]the coding of export and import not fit
可能的导致的结果:
1.数据导入程序立即终止,无法导入;
2.数据导入成功但是变成乱码;
3.数据导入成功但是部分字符被截断导致数据不完整。

2>数据导出导入
1.数据导入
关于带有特殊字符的密码:
PWD 密码中带有特殊字符的具体转义处理规则:
登录时,密码中含有/,@.:等特殊字符时,密码需要外加三层双引号("""""")进行转义。下面使用一个例子进行解析。例如:密码为 aaa/aaa,首先,dexp 要求对含有特殊字符的密码内部进行转义(外加一层双引号),写成"aaa/aaa"。其次,要将转义后的内容作为一个整体传给 dexp(外加一层双引号),写成"“aaa/aaa”"。最后,整个内容需要作为一个整体传给操作系统(外加一层双引号),因此写成""“aaa/aaa”""。
例如,使用上面的规则举例,密码为 SYSDBA/,@.:,端口号为 5236 的本地服务器,
USERID 可写成如下所示:
./dimp USERID=SYSDBA/""“SYSDBA/,@.:”""@LOCALHOST:PORT
举例说明:
1)FULL
以FULL方式导入整个数据库。
语法如下:
FULL=Y
例如,设置 FULL=Y,导入整个数据库,导入的数据库文件在/mnt/data/dexp,即将生成的日志文件放在/mnt/data/dimp。

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

2)OWNER
以OWNER方式导入一个或多个用户拥有的所有对象。
语法如下:
OWNER=<用户名>{,<用户名>}
例如,设置 OWNER=USER01,导入用户 USER01 所拥有的对象全部导出。导入的数据库文件在/mnt/data/dexp,即将生成的日志文件放在/mnt/data/dimp。

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

3)SCHEMAS
以SCHEMAS方式的导入一个或多个模式下的所有对象。
语法如下:
SCHEMAS=<模式名>{,<模式名>}
例如,设置 SCHEMAS=USER01,导入模式 USER01 模式下的所有对象。导入的数据库文件在/mnt/data/dexp,即将生成的日志文件放在/mnt/data/dimp。

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

说明:一般情况下,OWNER 与SCHEMAS 导入导出是相同的 。但是用户可以包含多个模式,在这种情况下 SCHEMAS 的导入导出是OWNER 导入导出的一个子集。
4)TABLES
以TABLES方式导入一个或多个指定的表或表分区。导入所有数据行、约束、索引等信息。
语法如下:
TABLES=<表名>{,<表名>}
例如,设置 TABLES=table1,table2,导入 table1,table2 两张表的所有数据和信息。导入的数据库文件在/mnt/data/dexp,即将生成的日志文件放在/mnt/data/dimp。

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

和 TABLES 导入有关的参数还有 EXCLUDE,用来指定导入时过滤掉某类对象。

2.数据导出
数据导出案例
针对数据库对象,有 FULL、OWNER、SCHEMAS、TABLES 四种导出方式可供选择一次导出只能指定一种方式。
1)FULL
以FULL方式导出整个数据库。
语法如下:
FULL=Y
例如,设置 FULL=Y,导出整个数据库,导出数据库文件和日志文件放在路径/mnt/data/dexp 下。

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

[dmdba@localhost bin]$ ./dexp USERID=SYSDBA/SYSDBA:5237 FILE=full.dmp LOG=full.log FULL=Y DIRECTORY=/backup/dexp

(因为默认的端口是5236,而自己设置的端口是5237所以要带上端口号,不然会报错)
在这里插入图片描述

带上端口后不会报错了,但是如果是其他IP进行导出的话,需要加上IP

[dmdba@localhost bin]$ ./dexp USERID=SYSDBA/SYSDBA@IP:5237 FILE=full.dmp LOG=full.log FULL=Y DIRECTORY=/backup/dexp

在这里插入图片描述

2)OWNER
以OWNER方式导出一个或多个用户拥有的所有对象。
语法如下:
OWNER=<用户名>{,<用户名>}
例如,设置 OWNER=USER01,导出用户 USER01 所拥有的对象全部导出。

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

[dmdba@localhost bin]$ ./dexp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=full04.dmp LOG=full04.log OWNER=test DIRECTORY=/backup/dexp

3)SCHEMAS
以SCHEMAS方式的导出一个或多个模式下的所有对象。
语法如下:
SCHEMAS=<模式名>{,<模式名>}
例如,设置 SCHEMAS=USER01,导出模式 USER01 模式下的所有对象。

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

[dmdba@localhost bin]$ ./dexp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=full05.dmp LOG=full05.log SCHEMAS=test DIRECTORY=/backup/dexp

导出对比:
owner导出和schemas导出的区别:一个用户可以有多个模式,一般是一个用户一个模式,导出来的数据是一样的。
4)TABLES
以TABLES方式导出和导入一个或多个指定的表或表分区。导出所有数据行、约束、索引
等信息。语法如下:
TABLES=<表名>{,<表名>}
例如,设置 TABLES=table1,table2,导出 table1,table2 两张表的所有数据和信息。

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

和 TABLES 导出有关的参数还有 QUERY、EXCLUDE 和 INCLUDE,都是用来设置过滤条件的。
常用参数:
OWNER:用户名列表,导出一个或多个用户所拥有的所有对象。
SCHEMAS:模式列表,导出一个或多个模式下的所有对象。
QUERY:用于指定对导出表的数据进行过滤的条件。
EXCLUDE:

  1. 导出内容中忽略指定的对象。对象有 CONSTRAINTS、INDEXES、ROWS、TRIGGERS 和 GRANTS。
    比如:EXCLUDE= (CONSTRAINTS,INDEXES)
  2. 忽略指定的表,使用 TABLES:INFO 格式,如果使用 表级导出方式导出,则使用 TABLES:INFO 格式的 EXCLUDE 无效。例如:EXCLUDE= TABLES: table1,table2
  3. 忽略指定的模式,使用 SCHEMAS:INFO 格式,如果使用表级,模式级导出方式导出,则使用 SCHEMAS:INFO可选DM8_dexp 和 dimp 使用手册 。
    4 格式的 EXCLUDE 无效。例如:EXCLUDE=SCHEMAS:SCH1,SCH2 。
    INCLUDE:导出内容中包含指定的对象 例如:INCLUDE=(CONSTRAINTS,INDEXES) 或者 INCLUDE=TABLES:table1,table2。

十、数据库备份还原
脱机和联机的概念,全库还原是要停机;
脱机:指数据库处于关闭的状态。
联机:指数据库处于运行状态、并正常提供数据库服务的状态。
全库还原:根据库备份集中记录的文件信息重新创建数据库文件,并将数据页重新拷贝到目标数据库的过程。
DM7 既可以将一个已存在的数据库作为还原目标库,也可以指定一个路径作为还原目标库的目录。
库还原的主要步骤包括:清理目标库环境;重建数据库文件;拷贝数据页;重建联机日志文件;修改配置参数等。所以全库还原需要停机处理。
1>脱机备份(冷备:数据库关闭状态)
数据库处于关闭状态时进行的备份操作,被称为脱机备份。脱机需要拷贝数据库中所有数据文件的有效数据页。一般是拷贝数据库所有的数据目录中的文件即可,可以直接使用系统命令拷贝,也可以通过DRMAN方式。
1.使用系统命令拷贝方式备份
1)步骤1:停止数据库服务
停止数据库服务,检查数据库已经停止。

[dmdba@localhost bin]$ ./dmserverd stop

Stopping dmserverd: [ OK ]

2)步骤2:拷贝数据文件
拷贝数据文件目录到备份目录。

[root@localhost ~]# mkdir /dmbak (创建备份目录)

[root@localhost ~]# chown -R dmdba:dinstall /dmbak

[root@localhost ~]# sudo su - dmdba

上一次登录:三 8月 18 14:03:48 CST 2021pts/0 上

(DAMENG为数据文件,需要拷贝此文件到另一个备份目录里面去)

[root@localhost init.d]# mkdir /dmbak(创建备份目录)

[root@localhost init.d]# chown -R dmdba:dinstall /dmbak

[dmdba@localhost dmdata]$ cp -a DAMENG /dmbak/TEST(拷贝数据文件到备份目录并重命名)

数据库归档设置

1.配置 dm.ini,打开 ARCH_INI 参数

ARCH_INI = 1 #打开归档配置

2.配置 dmarch.ini

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /dm/data/DAMENG/arch #本地归档文件存放路径

ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~2147483647M

[dmdba@localhost bin]$ vi /home/dmdba/dmdata/DAMENG/dmarch.ini
(指定dmarch.ini的路径和dm.ini同一个路径)

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /home/dmdba/dmdata/DAMENG/arch

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 102400

3)步骤3:拷贝归档
如果数据库开启了归档,把最近的归档也拷贝的备份目录。

[dmdba@localhost bin]$ cd /home/dmdba/dmdata/DAMENG/

[dmdba@localhost DAMENG]$ cp -a arch/ /dmbak/

2.使用DMRAN方式备份
先进入达梦工具DMRMAN

[dmdba@localhost ~]$ cd /home/dmdba/dmdbms/bin

[dmdba@localhost bin]$ ./dmrman

dmrman V8

RMAN>BACKUP DATABASE ‘/home/dmdba/dmdata/DAMENG/dm.ini’ full backupset ‘/dmbak/testfull’;

(在这一步报错了)
在这里插入图片描述

要启动管道服务,只要使用dmrman备份就需要启动该服务,不然就会报错

[dmdba@localhost bin]$ cp service_template/DmAPService ./

[dmdba@localhost bin]$ vi DmAPService

[dmdba@localhost bin]$ ./DmAPService start

Starting DmAPService: [ OK ]

在这里插入图片描述

启动该服务后,重新使用dmrman备份就不会报错
在这里插入图片描述

1)步骤1:检查dmap服务已经启动
在这里插入图片描述

2)步骤2:停止数据
在这里插入图片描述

3)步骤3:启动DMRMAN进行备份
在这里插入图片描述

3.使用控制台备份
用工具dbca新建一个实例
在这里插入图片描述

然后在管理工具里面添加实例

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

在这里插入图片描述

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

指定INI文件路径、备份集名、备份集目录
在这里插入图片描述

4.脱机备份还原
脱机还原的方式要根据脱机备份的方式进行对应操作恢复。
1)使用系统命令还原方式
使用系统命令备份数据文件方式备份的还原方式。
1.1、步骤1:覆盖原来的目录或文件
确定数据库已经停止后将备份文件按照原来的目录路径拷贝的原来的目录下,覆盖原来的目录或者文件
(前提------因目录十脱机备份里面拷贝的路径为/dmbak,需要把备份里面的目录拷贝到原来的数据文件里面进行恢复)

[dmdba@localhost dmdata]$ ll /dmbak/

总用量 0

drwxr-xr-x 7 dmdba dinstall 321 8月 19 11:24 TEST

[dmdba@localhost dmdata]$ cp -a /dmbak/TEST/* /home/dmdba/dmdata/DAMENG/

1.2、步骤2:启动数据库
确定权限正确后可以直接启动数据库

[dmdba@localhost dmdata]$ cd /home/dmdba/dmdbms/bin

[dmdba@localhost bin]$ ./dmserverd start

Starting dmserverd: [ OK ]

可以使用之前的启动脚本启动,也可以重新创建启动脚本
注意:dm.ini文件中配置的目录一定要存在且权限正确;如果源库配置了归档,归档文件也要安装源库的路径存放;如果希望恢复到其他目录,则需要修改dm.ini文件中的目录,使用dmctlcvt命令将dm.ctl控制文件转换成文本文件,修改表空间的文件路径后再转换成控制文件。
2)使用DMRMAN恢复方式
使用DMRMAN备份的备份文件进行恢复方式。
1.1、步骤1:确认dmap服务和数据库的状态
确定dmap服务已经启动,数据库已经停止, dm.ini和dm.ctl(这两个文件可以是从别的库拷贝过来修改的,但是最后是源库的)参数文件存在。
在这里插入图片描述

1.2、步骤2:启动DMRMAN进行还原恢复
还原命令:

[dmdba@localhost bin]$ ./dmapservice start(先开启管道服务)

Starting dmapservice: [ OK ]

[dmdba@localhost bin]$ cd /home/dmdba/dmdbms/bin

[dmdba@localhost bin]$ ./dmrman

dmrman V8

RMAN> RESTORE DATABASE ‘/home/dmdba/dmdata/DAMENG/dm.ini’ FROM BACKUPSET ‘/dmbak/testfull’;

恢复命令:

RMAN> recover database ‘/home/dmdba/dmdata/DAMENG/dm.ini’ from BACKUPSET ‘/dmbak/testfull’;

(不更新db_magic就会报错)

RMAN> recover database ‘/home/dmdba/dmdata/DAMENG/dm.ini’ update db_magic(此步骤很重要)

1.3、步骤3:启动数据库

[dmdba@localhost bin]$ ./dmserverd start

Starting dmserverd: [ OK ]

在这里插入图片描述

图上下对比,没有添加db_magic就会报错,添加后启动成功
在这里插入图片描述

3)使用控制台备份的备份文件恢复方式
步骤1:

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

2>联机备份
数据库处于运行状态、并正常提供数据库服务情况下进行的备份操作,我们称为联机备份。DM7 备份与还原前后发布了两个版本:V1.0和 V2.0。因为不同版本策略不同,所以备份文件在各版本间不能混用。
1.备份V1.0和V2.0区别
备份V1.0:
备份还原 V1.0 指 DM7 早期的备份还原,不是基于备份集组织的备份。V1.0 版本使用dmbackup 工具执行脱机备份,使用 dmrestore 工具执行脱机还原。
备份V2.0:
引入备份片、元数据文件、备份集等概念,提供第三方备份(TAPE 类型)接口,支持RAC 备份。使用 DMRMAN 工具进行脱机备份还原。V2.0 的备份还原实现策略有两种:dmap 插件方式和无插件方式。用户可通过 DM.INI参数 bak_use_ap 来选择(dmrman 使用参数 use_ap),bak_use_ap 取值 1、2。默认为 1。
1:DMAP 插件方式,可支持第三方备份(指定 DEVICE TYPE 为 TAPE)。DMAP 插件执行,改造了备份还原任务子系统,允许指定并行度,大幅提升了备份还原的效率,特别是加密、压缩的处理效率。如果选择使用 DMAP 插件,执行备份还原之前就必须启动 DMAP 服务。安装 DM7 数据库以后,DMAP 服务会自动启动。如果需要手动启动,有两种途径,一是启动 DM 服务查看器中的 DmAPService。二是通过手动启动 DMAP 执行码实现,DMAP 执行码位于 DM7 安装目录的 bin 子目录下。除此之外,LINUX 下,还可以调用 bin 目录下的 DmAPService 脚本。
2:无插件方式,不依赖 DMAP,由主进程(dmserver、dmrman)自身执行备份还原,但不支持第三方备份(指定 DEVICE TYPE 为 TAPE)。
区别:备份1.0采用dmbackup工具执行脱机备份,而备份2.0使用DMRMAN工具,采用dmap插件方式和无插件方式。
2.备份1.0
备份介绍,如何校验备份文件有效性:
联机备份时,可能存在一些处于活动状态的事务正在执行,为确保备份数据的一致性,需要将备份期间产生的 REDO 日志一起备份。因此,只能在配置本地归档、并开启本地归档的数据库上执行联机备份。V1.0 版本备份还原均指物理备份与物理还原,包括数据库和表空间的备份与还原。
备份文件有效性验证
备份文件的有效性可以通过以下SQL语句进行校验:
SELECT SF_BAK_FILE_CHECK(‘备份文件的绝对路径’);
执行结果是1说明备份文件有效,如果是0则备份文件无效(版本比较老的DM7有效的备份文件执行结果也可能是0)。
1)全量备份
介绍全量备份,全量备份的基本原理
完全备份生成的备份文件包含了指定库(或者表空间)的全部有效数据页。DM7 的物理备份一般包括数据备份和日志备份两部分,数据备份是拷贝数据页内容,日志备份则是拷贝备份过程中产生的 REDO 日志。因为DM7的在线重做日志(REDO LOG)每次被修改以后,都会自动生成一个新的日志序列值 LSN(Log SequenceNumber),所以联机全量备份以开始备份时间点的检查点LSN+1作为START_LSN,备份进程线程会拷贝START_LSN之前的全部有效数据页,当拷贝结束后此时的归档日志的LSN作为END_LSN,如果 START_LSN 大于 END_LSN + 1,说明备份过程中产生了新的数据,备份线程则会将START_LSN和END_LSN之间的归档日志一起拷贝,完成一次联机全量备份。
在这里插入图片描述

备份语法:
BACKUP DATABASE [FULL |INCREMENT WITH BACKUPDIR ‘<备份目录>’ TO <备份名> [BAKFILE ‘<备份路径>’] [COMPRESSED [LEVEL <压缩级别>]]
全量备份例子
步骤1:检查数据库已经开启归档

SELECT * FROM V$ARCHIVED_LOG;

步骤2:使用备份语句进行备份

SQL> BACKUP DATABASE FULL TO full_bak BAKFILE ‘/dmbak/testfull02’;

步骤3:检查备份文件有效性

SQL> SELECT SF_BAKSET_CHECK(‘DISK’,’/dmbak/testfull02’);

执行结果是1说明备份文件有效,如果是0则备份文件无效(版本比较老的DM7有效的备份文件执行结果也可能是0)。
2)增量备份
介绍增量备份,全库备份命令:
增量备份是在某个特定备份集基础上,收集数据库新修改的数据页进行备份,可以有效减少备份集的空间占用、提高备份速度。这个特定的、已经存在的备份集称为增量备份的基备份,根据对基备份的要求不同,DM 的增量备份分为以下两种:

  1. 差异增量备份
    差异增量备份的基备份既可以是一个完全备份集,也可以是一个增量备份集。利用增量备份进行还原操作时,要求其基备份必须是完整的;如果差异增量备份的基备份本身也是一个增量备份,那么同样要求其基备份是完整的;任何一个增量备份,最终都是以一个完全备份作为其基备份。因此,完全备份是增量备份的基础。
  2. 累积增量备份累积增量备份的基备份只能是完全备份集,而不能是增量备份集。
    备份原理和全量备份一样,之前有效数据页的拷贝范围是从上次全量备份的结束点开始,如图所示:
    在这里插入图片描述

差异增量备份例子
步骤1:确认已存在至少一个有效的全量备份
步骤2:使用SQL语句备份,备份目录可以是全量备份目录也可以是增量备份目录

SQL> BACKUP DATABASE INCREMENT WITH BACKUPDIR ‘/dmbak/testfull02’ BAKFILE ‘/dmbak/testfull02/database_test02.bak’;

步骤2:检查备份文件有效性

SQL> SELECT SF_BAKSET_CHECK(‘DISK’,’/dmbak/testfull02/database_test02.bak’);

累积增量备份
步骤1:确认已存在至少一个有效的全量备份
步骤2:使用SQL语句备份,备份目录是全量备份目录

SQL> BACKUP DATABASE INCREMENT CUMULATIVE WITH BACKUPDIR ‘/dmbak/testbackup/bak/testfull03’ BAKFILE ‘/dmbak/bak’;

(因之前的目录路径有所改变,重新创建了一个全备,步骤:SQL> BACKUP DATABASE FULL TO full_bak BAKFILE ‘/dmbak/testbackup/bak/testfull03’;)
—全量备份和增量备份的路径不要设置一样。

步骤2:检查备份文件有效性

SQL> SELECT SF_BAKSET_CHECK(‘DISK’,’/dmbak/bak’);

3.备份2.0
备份V2.0引入备份片、元数据文件、备份集等概念,提供第三方备份(TAPE 类型)接口,支持RAC 备份。使用 DMRMAN 工具进行脱机备份还原。V2.0 的备份还原实现策略有两种:dmap 插件方式和无插件方式。用户可通过 DM.INI参数 bak_use_ap 来选择(dmrman 使用参数 use_ap),bak_use_ap 取值 1、2。默认为 1。
1:DMAP 插件方式,可支持第三方备份(指定 DEVICE TYPE 为 TAPE)。DMAP 插件执行,改造了备份还原任务子系统,允许指定并行度,大幅提升了备份还原的效率,特别是加密、压缩的处理效率。如果选择使用 DMAP 插件,执行备份还原之前就必须启动 DMAP 服务。安装 DM7 数据库以后,DMAP 服务会自动启动。如果需要手动启动,有两种途径,一是启动 DM 服务查看器中的 DmAPService。二是通过手动启动 DMAP 执行码实现,DMAP 执行码位于 DM7 安装目录的 bin 子目录下。除此之外,LINUX 下,还可以调用 bin 目录下的 DmAPService 脚本。
2:无插件方式,不依赖 DMAP,由主进程(dmserver、dmrman)自身执行备份还原,但不支持第三方备份(指定 DEVICE TYPE 为 TAPE)。
备份集用来存放备份过程中产生的备份数据及备份信息。一个备份集对应了一次完整的备份。一般情况下,一个备份集就是一个目录,备份集包含一个或多个备份片文件,以及一个备份元数据文件。
备份片:备份片用来存储备份数据的文件。备份时,目标数据文件内容或归档日志内容经过处理后,都会存放到各自的备份片文件中。备份片文件后缀为.bak,用来存放备份数据,备份集中存放数据页的文件称为数据备份片,存放 REDO 日志的备份片称为日志备份片。备份片的大小可以在备份时通过 MAXPIECESIZE 指定,一个备份集中可能生成多个备份片。
元数据:元数据文件用来存放备份信息,元数据文件的后缀为.meta。通过元数据文件,可以了解整个备份集信息。元数据文件中包含的备份信息包括:
 备份集本身相关的信息,如是否联机备份,备份的范围,备份的加密信息,以及备份的压缩信息等;
 备份源库的建库参数信息,如 RAC 的节点数,是否大小写敏感,PAGE_CHECK 属性等;
 数据文件信息,如备份了哪些数据文件,文件大小,以及文件相关的表空间信息等;
 备份片的信息,如包含哪些备份片文件、备份片大小等信息;
 备 份 库 的 dm.ini 参 数 信 息 和 密 钥 文 件 ( dm_service.private 或 者dm_external.config,若指定 usbkey 加密,则不备份)。
备份集的校验方式—>使用SF_BAKSET_CHECK存储过程对备份集进行校验。

1)全量备份
介绍全量备份,全量备份的基本原理
备份2.0的全量备份的原理和备份1.0的一样,这里就不重复描述。
用户可通过设置DM的INI参数BAK_POLICY选择备份策略。BAK_POLICY可取值0、1 或 2,默认为 0,具体介绍: 0:表示同时支持 V1.0 和 V2.0 版本
这里的同时支持表示用户如果使用 V1.0 的语法或者工具,则 DM 服务器按照 V1.0 的策略执行;若用户使用 V2.0 的语法或者工具,则 DM 服务器按照 V2.0 执行。但是 V1.0与 V2.0 不能混用,若使用 V1.0 生成的备份不能使用 V2.0 进行还原,也不能在 V1.0 的基备份上使用 V2.0 进行增量备份,反之亦然,这些操作都会报错。
1:表示只支持 v1.0 版本
2:表示只支持 v2.0 版本
语法
BACKUP DATABASE FULL TO <备份名> BACKUPSET <备份集路径>
全量备份举例
1.步骤1:检查数据库已经开启归档
SQL> SELECT * FROM V$ARCHIVED_LOG;

SELECT * FROM V$ARCHIVED_LOG;

步骤2:使用备份语句进行备份

SQL> BACKUP DATABASE BACKUPSET ‘db_bak_01’;

说明:如果不指定备份集目录,则默认目录是在数据目录的bak目录下。

可以使用下列存储过程进行目录管理:
SF_BAKSET_BACKUP_DIR_ADD:添加备份目录
SF_BAKSET_BACKUP_DIR_REMOVE:指定删除内存中的备份目录。
步骤3:校验备份集

SQL> SELECT SF_BAKSET_CHECK(‘DISK’,’/home/dmdba/dmdata/DAMENG/bak/db_bak_01’);

2)增量备份
介绍增量备份
备份2.0的增量备份的原理和备份1.0的一样,这里就不重复描述。
差异增量备份举例
步骤1:确认已存在至少一个有效的全量备份
步骤2:使用SQL语句备份,集备份目录可以是全量备份目录也可以是增量备份目录

SQL> BACKUP DATABASE INCREMENT WITH BACKUPDIR ‘/dmbak/testbackup/bak/testfull04’ BACKUPSET ‘/dmbak/testbackup/bak/testfull04/database_test04.bak’;

步骤3:校验备份文件

SQL> SELECT SF_BAKSET_CHECK(‘DISK’,’/dmbak/testbackup/bak/testfull04/database_test04.bak’);

累积增量备份举例
步骤1:确认已存在至少一个有效的全量备份
步骤2:使用SQL语句备份,集备份目录必须是全量备份目录

SQL> BACKUP DATABASE INCREMENT CUMULATIVE WITH BACKUPDIR ‘/dmbak/testbackup/bak/testfull05’ BACKUPSET ‘/dmbak/testbackup/bak/testfull05/database_test05.bak’;

步骤3:校验备份文件

SQL> SELECT SF_BAKSET_CHECK(‘DISK’,’/dmbak/testbackup/bak/testfull05/database_test05.bak’);

3>数据库还原和恢复
1.rman工具
联机备份2.0产生的备份文件如果要进行还原需要使用DRMAN进行恢复。
1、如果备份之后没有新的归档产生或者只需要恢复到备份时间点,还原方式可以参照10.1.2目录的使用“DMRMAN备份的备份文件进行恢复方式”进行恢复。
2、如果有新的归档产生但是有没有进行备份
步骤1:确定dmap服务已经启动,数据库已经停止, dm.ini和dm.ctl(这两个文件可以是从别的库拷贝过来修改的,但是最后是源库的)参数文件存在

步骤2:启动DMRMAN进行还原恢复

RMAN> RESTORE DATABASE ‘/home/dmdba/dmdata/DAMENG/dm.ini’ FROM BACKUPSET ‘/dmbak/testfull’;

RMAN> RECOVER DATABASE ‘/home/dmdba/dmdata/DAMENG/dm.ini’ WITH ARCHIVEDIR ‘/home/dmdba/dmdata/DAMENG/arch’;

步骤3:启动数据库
按照下面的方法更新db_magic

RMAN> recover database ‘/home/dmdba/dmdata/DAMENG/dm.ini’ update db_magic

然后再重启
在这里插入图片描述

restore 是还原,文件级的恢复。就是物理文件还原。
recover 是恢复,数据级的恢复。逻辑上恢复,比如应用归档日志、重做日志,全部同步,保持一致。
白话:用restore先把备份文件拷贝到数据库目录下进行替换,再用recover经过一些处理,数据库就恢复正常了。
1、restore 命令:用于还原已经备份的数据文件。
(1)、restore database 还原所有的数据文件。
(2)、restore tablespace 还原特定表空间的数据文件。
(3)、restore datafile 还原特定的数据文件。
(4)、restore controlfile 还原控制文件。
(5)、restore archivelog 还原归档日志文件。
2、recover 命令:当数据库需要应用归档日志文件恢复数据文件时,使用recover命令。使用该命令数据库系统会自动应用归档的日志文件。
(1)、recover database 恢复所有的数据文件。
(2)、recover tablespace 恢复特定表空间的数据文件。
(3)、recover datafile 恢复特定的数据文件。

restore 只是用备份来还原,recover是用archivelog或者online log

举例说明:
假设我时间点A,做了个备份,时间点B数据库挂了
restore database ;// 这个操作利用时间点A做的备份来还原,返回到时间点A
recover database ;//这个操作利用archivelog and online log做recover,从时间点A,推进到时间点B

restore 是轉儲 也是還原被損壞文件(RMAN經常用)
recover 是恢復 通過redo log & archive log恢復

restore 是还原,文件级的恢复
recovery是恢复,数据级的恢复

十一、定时作业管理
1>代理环境初始化
图形化界面操作,命令行操作;SYSJOB模式,底下有几个重要的表介绍一下;
1、代理环境概述
要进行 DM7 的作业管理,需要先创建作业环境,即创建一些系统表来存储作业相关的对象、历史记录等信息。这些系统表有 SYSJOBS、SYSJOBSTEPS、SYSJOBSCHEDULES、SYSMAILINFO、SYSJOBHISTORIES2、SYSSTEPHISTORIES2、SYSALERTHISTORIES、SYSOPERATORS、SYSALERTS、SYSALERTNOTIFICATIONS 共十张,均位于 SYSJOB 模式下。
⑴SYSJOBS
SYSJOBS 表存储用户定义的作业信息。每一个作业对应此表中的一条记录。每一条记录
都有一个自增 ID,用来唯一表示这个作业,同时这个作业还具有一个聚集关键字 NAME,这意味着作业不可以同名。
⑵SYSJOBSTEPS
SYSJOBSTEPS 存储作业包括的所有步骤信息。每一行存储了某个作业的某个步骤的所有属性。这个表的聚集关键字为 JOBID 和步骤名,意味着在一个指定的作业下,不能有两个同名的步骤。
⑶SYSJOBSCHEDULES
一个作业可以有多个调度,调度用来指定一个作业的执行情况,可以指定作业的执行方式及时间范围。SYSJOBSCHEDULES 表存储作业的调度信息,聚集关键字为 JOBID 及调度名,意味着对于一个指定的作业,不能具有同名的调度。
⑷SYSJOBHISTORIES
SYSJOBHISTORIES 存储作业步骤的执行情况的日志。每当一个作业执行开始时都会向这个表中插入一条作业执行开始的记录,其 STATUS 为“JOB START”;作业完成时也会插入一条作业执行完成的记录,其 STATUS 为“JOB END”;每一个步骤执行开始时都会插入一条步骤开始执行的记录,其 STATUS 为“JOB STEP START”;如果为重试执行开始则为“JOB STEP RERTY START”;每一个步骤执行完成或者重试完成都会插入一条相应状态的记录。
⑸SYSJOBHISTORIES2
SYSJOBHISTORIES2 存储作业的执行情况的日志。当一个作业执行完成后,会向这个表中插入一条作业执行情况的记录。这个表中的所有记录都是由作业在运行过程中系统自动插入的,不是由用户来操作的。
⑹SYSSTEPHISTORIES2
SYSSTEPHISTORIES2 存储作业步骤的执行情况的日志。每当一个作业步骤执行完成时都会向这个表中插入一条作业步骤执行情况的记录。如果为重试步骤,RETRY_ATTEMPTS会记录重试的次数。
⑺SYSOPERATORS
SYSOPERATORS 存储作业管理系统中所有已定义操作员的信息,以 NAME 为聚集索引,意味着不能具有同名的操作员。
⑻SYSALERTS
SYSALERTS 存储作业管理系统中所有已定义的警报信息,聚集索引为 NAME,意味着不能定义同名的警报。
⑼SYSALERTNOTIFICATIONS
SYSALERTNOTIFICATIONS 存储警报需要通知的操作员的信息,即警报和操作员的关联信息。以 ALERTNAME 和 OPERID 为聚集关键字的,所以对于一个指定的警报和指定的操作员,它们只能有一个关联关系。
⑽SYSALERTHISTORIES
SYSALERTHISTORIES 存储警报发生的历史记录的日志。每个警报发生时都会向这个表中插入相应的记录,然后 DMJMON 服务再通过扫描这个表把信息取出来通过邮件或者网络发送的方式通知关联的操作员,这个表中的所有信息都是在发生警报时,由系统自动向这个表中插入的。
⑾SYSMAILINFO
SYSMAILINFO 存储作业管理系统管理员的信息。每一个作业管理系统管理员对应这个表中的一条记录,登录用户名是唯一的,因为这个表是以第一列 LOGIN_NAME 为聚集关键字的。此处的 LOGIN_NAME 必须是 DM 数据库的登录用户名称。
2、图形化界面初始化代理环境
在DM管理工具中选择代理右键创建代理环境
在这里插入图片描述

提示创建成功
在这里插入图片描述

3、命令行方式创建代理环境

SP_INIT_JOB_SYS(1);

2>作业配置
怎么做定时作业,定时作业步骤,调度;图形化界面,命令行;
1、图形界面创建定时作业
当代理环境创建好后就可以创建代理作业了,下面是图形界面创建代理作业的方式。
步骤1:代理作业右键新建作业
在这里插入图片描述

步骤2:常规填入唯一的作业名,勾选启用
在这里插入图片描述

步骤3:作业步骤添加
在这里插入图片描述

步骤4:填写步骤名称选择步骤类型根据界面填写相应的内容确定
在这里插入图片描述

步骤5:作业调度新建
在这里插入图片描述

步骤6:填写调度名称调度类型类别持续时间确定
在这里插入图片描述

步骤7:点击确定作业创建完成,可以点击DDL查看创建语句。
在这里插入图片描述
在这里插入图片描述

2、命令行配置
使用SQL语句创建的当时比较麻烦,可以先在图形界面中操作,然后获取DDL在命令行中执行。具体语法可以参照《DM7作业系统使用手册.pdf》。

call SP_CREATE_JOB(‘fullbak’,1,0,’’,0,0,’’,0,’’);

call SP_JOB_CONFIG_START(‘fullbak’);

call SP_ADD_JOB_STEP(‘fullbak’, ‘fullbak_step1’, 5, ‘01000/app/dmdbms/data/DAMENG/bak’, 1, 2, 0, 0, NULL, 0);

call SP_ADD_JOB_SCHEDULE(‘fullbak’, ‘diaodu1’, 1, 2, 1, 1, 0, ‘22:57:26’, NULL, ‘2019-12-11 22:57:26’, NULL, ‘’);

call SP_JOB_CONFIG_COMMIT(‘fullbak’);

3>定时备份的例子
–初始化代理环境

Call SP_INIT_JOB_SYS(1);

call SP_CREATE_JOB(‘fullbak’,1,0,’’,0,0,’’,0,’’);

call SP_JOB_CONFIG_START(‘fullbak’);

call SP_ADD_JOB_STEP(‘fullbak’, ‘fullstep1’, 5, ‘01000/dbdata/dmbak’, 1, 2, 0, 0, NULL, 0);

call SP_ADD_JOB_SCHEDULE(‘fullbak’, ‘diaodu1’, 1, 2, 1, 64, 0, ‘00:30:39’, NULL, ‘2018-08-09 11:59:39’, NULL, ‘’);

call SP_JOB_CONFIG_COMMIT(‘fullbak’);

call SP_CREATE_JOB(‘increbak’,1,0,’’,0,0,’’,0,’’);

call SP_JOB_CONFIG_START(‘increbak’);

call SP_ADD_JOB_STEP(‘increbak’, ‘increstep1’, 5, ‘11000/dbdata/dmbak|/dbdata/dmbak’, 1, 2, 0, 0, NULL, 0);

call SP_ADD_JOB_SCHEDULE(‘increbak’, ‘diaodu2’, 1, 1, 1, 0, 0, ‘21:00:15’, NULL, ‘2018-08-09 12:01:15’, NULL, ‘’);

call SP_JOB_CONFIG_COMMIT(‘increbak’);

4>备份文件定时删除的例子
create or replace function SF_DEL_DB_BAK_EXPIRED(
DBNAME varchar(128),
BAKDIR varchar(256),
PARALLEL_DIR varchar(256),
EXPIRED_DAY int )
return INT as

DECLARE
V_CNT INT;
V_I INT;
V_PATH VARCHAR(256);
V_TIME INT;
V_FLAG INT;
V_NUM INT;

TYPE T_REC IS
RECORD (
ID INT,
NAME VARCHAR(128),
TIME VARCHAR(128),
PATH VARCHAR(256));
TYPE T_REC_ARR
IS
ARRAY T_REC[];
BAK_INFO T_REC_ARR;

begin
V_NUM=0;
/初始化备份链表/
SF_BAK_LST_INIT();
SF_BAK_LST_SET_N_PATH(1);
SF_BAK_LST_SET_PATH(0, BAKDIR);
SF_BAK_LST_SET_PARALLEL_DIR(PARALLEL_DIR);
SF_BAK_LST_COLLECT(DBNAME, ‘’, 1);
V_CNT = SF_GET_BAK_LST_NUM(DBNAME);
/判断某库是否存在备份/
IF V_CNT > 0 THEN
BAK_INFO = NEW T_REC[V_CNT];
PRINT V_CNT;
ELSE RETURN -1;
END IF;
/指向第一个备份/
SF_BAK_LST_GET_FIRST();
/指向某一个备份,获取其中某些信息存入数组BAK_INFO/
FOR V_I IN 1…V_CNT
LOOP
V_PATH=SF_BAK_GET_CUR_PATH();
IF V_PATH IS NOT NULL THEN
BAK_INFO[V_I].ID =V_I;
BAK_INFO[V_I].NAME = SF_BAK_GET_NAME(V_PATH);
BAK_INFO[V_I].TIME = SF_BAK_GET_TIME(V_PATH);
BAK_INFO[V_I].PATH = V_PATH;
END IF;
/移向下一个备份/
SF_BAK_LST_GET_NEXT();
END LOOP;
/用游标隐式打开从ARRAY BAK_INFO取这些值/
FOR R IN (SELECT * FROM ARRAY BAK_INFO)
LOOP
IF DAYS_BETWEEN(CURDATE(),R.TIME) >= EXPIRED_DAY THEN
V_FLAG = SF_DEL_BAK(DBNAME,’’,R.NAME,1);
END IF;

IF V_FLAG=0 THEN
V_NUM=V_NUM+1;
END IF;
END LOOP;
/有一个失败,全部失败/
IF V_NUM >= 1 THEN
RETURN 0;
ELSE RETURN 1;
END IF;
/销毁备份链表/
SF_BAK_LST_DEINIT();
end;

call SP_CREATE_JOB(‘deletebakfiles’,1,0,’’,0,0,’’,0,’’);
call SP_JOB_CONFIG_START(‘deletebakfiles’);
call SP_ADD_JOB_STEP(‘deletebakfiles’, ‘deletestep1’, 0, ‘Call “SF_DEL_DB_BAK_EXPIRED”(’‘GXSD’’,’’/dbdata/dmbak’’,’’’’,30);’, 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE(‘deletebakfiles’, ‘DIODU3’, 1, 2, 1, 1, 0, ‘02:00:18’, NULL, ‘2018-08-09 12:03:18’, NULL, ‘’);
call SP_JOB_CONFIG_COMMIT(‘deletebakfiles’);

十二、日常运维
1>生成AWR数据库运行报告。
1.启用AWR包

SQL> call SP_INIT_AWR_SYS(1);

2.查询AWR快照:

SQL> SELECT SF_CHECK_AWR_SYS;(SF_CHECK_AWR_SYS结果为1,表示已创建)

3.设置快照间隔
使用DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL过程设置快照生成时间间隔。
时间间隔单位为分钟,有效值范围为[10, 525600]。

SQL> CALL DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(10);

4.手动创建快照/等待自动生成
在两个时间点分别手动创建快照,或者等待系统自动生成:
10:00时创建第一快照:

SQL> call DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();

30分钟后再创建一个,10:30,

SQL> call DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();

5.查询AWR快照:

SQL> SELECT * FROM SYS.WRM$_SNAPSHOT;

6.创建AWR报告
语法:SYS.AWR_REPORT_HTML(快照ID1,快照ID2,‘AWR报告存放路径’,‘AWR报告名称.HTLM’);
用户可以根据需要生成HTML或TXT格式的报表方便浏览。
用下面的语句生成的报表,只能在disql命令行中查看:

SQL> SELECT * FROM TABLE (DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(1,2));

而要生成文件,需要调用sys.awr_report_html过程。

SQL> CALL SYS.AWR_REPORT_HTML(1,2,’/dm8/’,‘AWR1.HTML’);

7.关闭AWR包:

SQL> CALL DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(0);

–由于AWR报告主要用于分析一定周期内的数据库运行情况,在使用完后建议选择关闭;

更多资讯请上达梦技术社区了解:https://eco.dameng.com

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值