达梦数据库

一、安装

1、规划安装用户和用户组:

不推荐使用 root 安装,规划单独的用户安装。

[root@KylinDCA03 opt]# groupadd dinstall
[root@KylinDCA03 opt]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
[root@KylinDCA03 opt]# passwd dmdba

更改用户 dmdba 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

2、规划安装目录:

创建安装目录/dm8,并修改安装目录的所属组给 dmdba 用户和该用户所属组

[root@KylinDCA03 opt]# mkdir /dm8
[root@KylinDCA03 opt]# ls -ld /dm8
drwxr-xr-x 2 root root 6 1220 18:50 /dm8
[root@KylinDCA03 opt]# chown dmdba:dinstall /dm8
[root@KylinDCA03 opt]# ls -ld /dm8
drwxr-xr-x 2 dmdba dinstall 6 1220 18:50 /dm8

3、挂载 iso 镜像文件:

[root@KylinDCA03 opt]# mkdir /mnt/dm
[root@KylinDCA03 opt]# mount /opt/dm8_20210818_x86_rh6_64_ent_8.4.2.18_pack14.iso 
/mnt/dm
mount: /mnt/dm: WARNING: source write-protected, mounted read-only.
[root@KylinDCA03 opt]# su - dmdba
[dmdba@KylinDCA03 ~]$ cd /mnt/dm
[dmdba@KylinDCA03 dm]$ ll
总用量 739440
-r-xr-xr-x 1 root root 2784248 823 14:36 'DM8 Install.pdf'
-r-xr-xr-x 1 root root 754402133 823 14:40 DMInstall.bin

4、安装方式:

(1)第一次启动虚拟机,执行下 xhost +

[root@KylinDCA03 桌面]# xhost +
access control disabled, clients can connect from any host

(2)查看 root 用户的 DISPLAY 变量值

[root@KylinDCA03 桌面]# echo $DISPLAY
:0.0

(3)切换 dmdba 用户

[root@KylinDCA03 桌面]# su - dmdba
上一次登录: 一 1220 18:54:09 CST 2021 pts/1 上
(4)设置 dmdba 用户的 DISPLAY 变量值为步骤(1)中的值(仅对当前会话生效)
[dmdba@KylinDCA03 ~]$ export DISPLAY=:0.0
[dmdba@KylinDCA03 ~]$ cd /mnt/dm
[dmdba@KylinDCA03 dm]$ ll
总用量 739440
-r-xr-xr-x 1 root root 2784248 823 14:36 'DM8 Install.pdf'
-r-xr-xr-x 1 root root 754402133 823 14:40 DMInstall.bin
## 2、图形化界面方式安装 DM 数据库
[dmdba@KylinDCA03 dm]$ ./DMInstall.bin

安装时报 tmp 不足的解决方法
如果安装时报错 tmp 不足,可以设置 DM_INSTALL_TMPDIR 变量,指定到别的路径下(存
储空间大于 2G)。
设置参考如下:

[root@localhost opt]# mkdir tmp
[root@localhost opt]# chown dmdba:dinstall /opt/tmp
或
[root@localhost opt]# chmod 777 /opt/tmp
[root@localhost opt]# su - dmdba
上一次登录: 四 630 09:06:43 CST 2022 pts/1[dmdba@localhost ~]$ export DM_INSTALL_TMPDIR=/opt/tmp
[dmdba@localhost ~]$ cd /mnt/dm
[dmdba@localhost dm]$ ll
总用量 927088
-r-xr-xr-x 1 root root 2802237 34 13:39 'DM8 Install.pdf'
-r-xr-xr-x 1 root root 946534466 34 13:44 DMInstall.bin
[dmdba@localhost dm]$ ./DMInstall.bin

(5)设置文件打开数

vim /etc/security/limits.conf

(6)界面提示使用 root 用户执行如下脚本

[root@KylinDCA03 桌面]# /dm8/script/root/root_installer.sh
移动 /dm8/bin/dm_svc.conf 到/etc 目录
修改服务器权限
创建 DmAPService 服务
Created symlink /etc/systemd/system/multi-user.target.wants/DmAPService.service →
/usr/lib/systemd/system/DmAPService.service.
创建服务(DmAPService)完成
启动 DmAPService 服务

5、卸载 DM 数据库

图形化卸载 DM 数据库
DM 安装目录下执行./uninstall.sh 卸载 DM 数据库:

[dmdba@KylinDCA03 dm8]$ ./uninstall.sh

界面提示使用 root 用户执行如下脚本

[root@KylinDCA03 桌面]# /dm8/root_uninstaller.sh
删除 DmAPService 服务
Removed /etc/systemd/system/multi-user.target.wants/DmAPService.service.
删除/etc/dm_svc.conf 文件
命令行方式卸载 DM 数据库
DM 安装目录下执行./uninstall.sh -i 卸载 DM 数据库:
[dmdba@KylinDCA03 dm8]$ ./uninstall.sh -i

二、创建数据库及数据库实例管理

方式1、DM 数据库配置助手图形化界面方式创建数据库

(1)运行 dbca.sh 创建数据库

[dmdba@KylinDCA03 ~]$ cd /dm8/tool
[dmdba@KylinDCA03 tool]$ ./dbca.sh

簇大小、页大小、字符集、大小写敏感、VARCHAR 类型以字符为单位等一旦指定,数据库创建完成将无法更改。页是达梦数据库的最小存储单元,达梦中 varchar 类型长度默认不能大于页大小的一半。
VARCHAR 类型以字符为单位(默认以字节为单位)
以字节为单位:
Varchar(10), gb18030 字符集,一个中文占用两个字节,Varchar(10)只能保存五个中文。
Varchar(10), utf-8 字符集,一个中文占用三个字节,Varchar(10)只能保存三个中文。
以字符为单位:
Varchar(10),不管什么字符集,Varchar(10)都能保存十个中文。

(2)界面提示使用 root 用户执行脚本:

[root@KylinDCA03 network-scripts]# mv /dm8/bin/DmServiceDMSERVER.service /usr/lib/systemd/system/DmServiceDMSERVER.service
[root@KylinDCA03 network-scripts]# systemctl enable DmServiceDMSERVER.service
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service →
/usr/lib/systemd/system/DmServiceDMSERVER.service.
[root@KylinDCA03 network-scripts]# systemctl start DmServiceDMSERVER.service

方式2、dminit 命令行创建数据库实例

dminit 创建 DM 数据库
dminit 是 DM 初始化数据库的命令行工具,位于 DM 安装目录 bin 下。

[dmdba@KylinDCA03 bin]$ ./dminit help
关键字                          说明(默认值)
--------------------------------------------
INI_FILE                      初始化文件dm.ini存放的路径
PATH                          初始化数据库存放的路径
CTL_PATH                      控制文件路径
LOG_PATH                      日志文件路径
EXTENT_PATH                   数据文件使用的簇大小(16),可选值:163264,单位:页
PAGE_SIZE                     数据页大小(8),可选值:481632,单位:K
CASE_SENSITIVE                大小敏感(Y),可选值:Y/N1/0
CHARSET/UNICODE_FLAG          字符集(0),可选值:0[GB18030]1[UTF-8]2[EUC-KR]
SEC_PRIV_MODE                 权限管理模式(0),可选值:0[TRADITION]1[BMJ]2[EVAL]
LENGTH_IN_CHAR                VARCHAR类型长度是否以字符为单位(N),可选值:Y/N1/0
SYSDBA_PWD                    设置SYSDBA密码(SYSDBASYSAUDITOR_PWD                设置SYSAUDITOR密码(SYSAUDITORDB_NAME                       数据库名(DBNAMEINSTANCE_NAME                 实例名(DMSERVERPORT_NUM                      监听端口号(5236BUFFER                        系统缓存大小(100),单位M
TIME_ZONE                     设置时区(+08:00[dmdba@KylinDCA03 bin]$ ./dminit path=/dm8/data db_name=DMTEST instance_NAME=DMTESTSVR sysdba_pwd=Dameng123 port_num=5238 PAGE_SIZE=16
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-08-20
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dm8/data/DMTEST/DMTEST01.log
log file path: /dm8/data/DMTEST/DMTEST02.log
write to dir [/dm8/data/DMTEST].
create dm database success. 2021-12-20 19:59:56

dminit 方式创建数据库不会自动注册数据库服务(DM 数据库配置助手方式默认自动注册数
据库服务),所以不能以服务方式启动数据库,如果要以服务方式启动,则需要注册数据库
服务。

两种方式注册数据库服务:

(3.1)DM 数据库配置助手注册数据库服务
执行 dbca.sh 打开 DM 数据库配置助手,选择“注册数据库服务”
界面提示使用 root 用户执行脚本:

[root@KylinDCA03 ~]# systemctl enable DmServiceDMTESTSVR.service
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMTESTSVR.service →
/usr/lib/systemd/system/DmServiceDMTESTSVR.service.
[root@KylinDCA03 ~]# systemctl start DmServiceDMTESTSVR.service
[dmdba@KylinDCA03 bin]$ ./disql sysdba/Dameng123:5238
服务器[LOCALHOST:5238]:处于普通打开状态
登录使用时间 : 12.397(ms)
disql V8
SQL> select name from V$database;
行号 NAME 
---------- ------
1 DMTEST
已用时间: 8.418(毫秒). 执行号:50600.
SQL> select instance_name from v$instance;
行号 INSTANCE_NAME
---------- -------------
1 DMTESTSVR
已用时间: 0.563(毫秒). 执行号:50601.
SQL>

(3.2)root 执行注册服务脚本

[root@KylinDCA04 ~]# cd $DM_HOME/script/root
[root@KylinDCA03 root]# ./dm_service_installer.sh -t dmserver -p DMTESTSVR -dm_ini /dm8/data/DMTEST/dm.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMTESTSVR.service →
/usr/lib/systemd/system/DmServiceDMTESTSVR.service.
创建服务(DmServiceDMTESTSVR)完成

三、连接及操作数据库

1、连接数据库

如果使用客户端工具连接远端数据库服务器,需要开放数据库服务器防火墙对应端口(开放
端口后需 reload):
[root@localhost ~]# firewall-cmd --add-port=5236/tcp --permanent --zone=public
[root@localhost ~]# firewall-cmd --reload
[root@localhost ~]# firewall-cmd --list-ports

也可以关闭数据库服务器的防火墙

[root@localhost dm]# systemctl status firewalld
[root@localhost dm]# systemctl stop firewalld

方式一 DM 管理工具图形化界面连接数据库

[dmdba@KylinDCA03 ~]$ cd $DM_HOME/tool
[dmdba@KylinDCA03 tool]$ ./manager

方式二 disql 命令行方式连接数据库

[dmdba@KylinDCA03 ~]$ cd /dm8/bin
[dmdba@KylinDCA03 bin]$ ./disql sysdba/Dameng123:5236
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 1.829(ms)
disql V8
SQL> select name from V$database;
行号 NAME
---------- ----
1 DM
已用时间: 2.913(毫秒). 执行号:51600.
SQL> select instance_name from v$instance;
26 / 118
行号 INSTANCE_NAME
---------- -------------
1 DMSERVER
已用时间: 0.434(毫秒). 执行号:51601.
SQL> exit
[dmdba@KylinDCA03 bin]$ ./disql sysdba/Dameng123:5238
服务器[LOCALHOST:5238]:处于普通打开状态
登录使用时间 : 12.397(ms)
disql V8
SQL> select name from V$database;
行号 NAME 
---------- ------
1 DMTEST
已用时间: 8.418(毫秒). 执行号:50600.
SQL> select instance_name from v$instance;
行号 INSTANCE_NAME
---------- -------------
1 DMTESTSVR
已用时间: 0.563(毫秒). 执行号:50601.
SQL>

网络配置助手配置连接串

网络配置助手

[dmdba@KylinDCA04 tool]$ ./nca.sh

网络配置助手实际写的是 dm_svc.conf 文件,也可以直接手工编辑该文件。

[dmdba@KylinDCA03 tool]$ cat /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
DM=(127.0.0.1:5236)
DMTEST=(127.0.0.1:5238)

DM 数据库

DM 数据库启动顺序:读取配置参数文件 dm.ini,找到控制文件 dm.ctl,启动后台进程和线程,启动数据库实例,启动到mount 状态,根据控制文件中的数据文件路径和练级日志文件路径,找到并打开数据文件和联机日志,启动到 OPEN 状态。
Oracle 启动顺序:nomount->mount->open
Shutdown:关闭状态
Mount:配置状态,此时可以修改数据库归档配置、主备等模式,不能进行数据文件的读写。此时数据库不能对外正常提供务。
Open:打开状态,此时数据库提供正常的服务。可以读写数据文件。正常访问表,读取数据。
Suspend:只读状态,只能读,不能写(DML 操作一旦 commit,数据库即会被挂起)。
MOUNT 和 OPEN 可以相互转换(与 Oracle 不同)。SUSPEND 和 OPEN 也可以相互转换。
但 MOUNT 和 SUSPEND 之间不能相互转换。

SQL> select status$ from v$instance;
行号 STATUS$
---------- -------
1 OPEN
已用时间: 4.453(毫秒). 执行号:52100.
SQL> alter database mount;
操作已执行
已用时间: 371.497(毫秒). 执行号:0.
SQL> select status$ from v$instance;
行号 STATUS$
---------- -------
1 MOUNT
已用时间: 0.599(毫秒). 执行号:52101.
SQL> alter database open;
29 / 118
操作已执行
已用时间: 333.412(毫秒). 执行号:0.
SQL> select status$ from v$instance;
行号 STATUS$
---------- -------
1 OPEN
已用时间: 0.463(毫秒). 执行号:52102.
SQL> alter database suspend;
操作已执行
已用时间: 102.752(毫秒). 执行号:0.
SQL> select status$ from v$instance;
行号 STATUS$
---------- -------
1 SUSPEND
已用时间: 0.514(毫秒). 执行号:52103.
SQL> exit

MOUNT 状态下,可以配置归档,设置主备模式,修改联机日志文件路径等,MOUNT 状态下不能读写数据(但可以读动态性能视图中的数据,因为动态视图数据来源于控制文件或内存中的,比如 v d a t a f i l e 、 v datafile、v datafilevdatabase 等),MOUNT 状态数据库不能对外提供服务(不能读写数据,业务中断)

[dmdba@localhost ~]$ disql sysdba/SYSDBA@OA
服务器[127.0.0.1:5236]:处于普通打开状态
登录使用时间 : 1.744(ms)
disql V8
SQL> alter database mount;
操作已执行
已用时间: 9.672(毫秒). 执行号:0.
SQL> select * from t_test;
select * from t_test;1 行附近出现错误[-510]:系统处于 MOUNT 状态.
已用时间: 0.587(毫秒). 执行号:0.
SQL> insert into t_test(id) values(4);
insert into t_test(id) values(4);
[-510]:系统处于 MOUNT 状态.
已用时间: 0.403(毫秒). 执行号:0.
SQL> select name, status$ from v$instance;
行号 NAME STATUS$
---------- ---------- -------
1 DMOASERVER MOUNT
已用时间: 3.317(毫秒). 执行号:2700.
SQL> select name, status$ from v$database;
行号 NAME STATUS$
---------- ---- -----------
1 DMOA 3
已用时间: 1.347(毫秒). 执行号:2701.
SQL> select path from v$datafile;
行号 PATH
---------- -------------------------
1 /dm8/data/DMOA/SYSTEM.DBF
2 /dm8/data/DMOA/ROLL.DBF
3 /dm8/data/DMOA/TEMP.DBF
4 /dm8/data/DMOA/MAIN.DBF
5 /dm8/data/DMOA/DMHR.DBF

三、DM 数据库启动方式:

Root 启动:

(1) systemctl 服务方式管理(CentOS6 使用 service 命令)

systemctl start|status|stop|enable|disable DmServiceDMSERVER

(2) DM 服务查看器管理(以 root 方式打开才有启动的权限)

[root@KylinDCA04 tool]# ./dmservice.sh

dmdba 用户启动

两种启动方式,都可以将数据库启动到 mount 状态):
(1) 前台启动方式(dmserver)
如果没有注册数据库服务,只能使用此方式启动。其他的启动方式都需要注册数据库服务。
前台启动方式,界面输入 exit 或者按 CTRL+C 即会关闭数据库;

[dmdba@KylinDCA03 bin]$ ./dmserver /dm8/data/DMTEST/dm.ini
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 4-2-18-21.08.20-146029-10013-ENT startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-08-20
file lsn: 28292
ndct db load finished
ndct fill fast pool finished
iid page's trxid[6012]
NEXT TRX ID = 6013
pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 
cmt_pages, 0 pre_cmt_pages, 0 mgr pages, 0 mgr recs!
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which 
only need to delete mgr recs.
pseg_crash_trx_rollback end
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which 
only need to delete mgr recs.
pseg_crash_trx_rollback end
SYSTEM IS READY.

(2)后台启动方式(DmServiceDMSERVER)

[dmdba@KylinDCA03 ~]$ cd /dm8/bin
[dmdba@KylinDCA03 bin]$ ll Dm*
-rwxr-xr-x 1 dmdba dinstall 13827 1220 19:33 DmAPService
-rwxr-xr-x 1 dmdba dinstall 14850 1220 19:33 DmAuditMonitorService
-rwxr-xr-x 1 dmdba dinstall 13655 1220 19:33 DmInstanceMonitorService
-rwxr-xr-x 1 dmdba dinstall 14110 1220 19:33 DmJobMonitorService
-rwxr-xr-x 1 dmdba dinstall 16117 1220 19:53 DmServiceDMSERVER
-rwxr-xr-x 1 dmdba dinstall 16122 1220 21:56 DmServiceDMTESTSVR
[dmdba@KylinDCA03 bin]$ ./DmServiceDMTESTSVR start
Starting DmServiceDMTESTSVR: [ OK ]
[dmdba@KylinDCA03 bin]$ ./DmServiceDMTESTSVR stop
Stopping DmServiceDMTESTSVR: [ OK ]
[dmdba@KylinDCA03 bin]$ ./DmServiceDMTESTSVR start mount
Starting DmServiceDMTESTSVR: [ OK ]
[dmdba@KylinDCA03 bin]$ ./DmServiceDMTESTSVR status
DmServiceDMTESTSVR (pid 35387) is running.
[dmdba@KylinDCA03 bin]$

四、DM 的客户端工具

DM 管理工具(manager)

图形化管理数据库,联机工具,包含用户管理、角色权限管理、表空间、模式、模式下对象(表、索引、约束、函数、过程、视图等)、数据库物理联机备份、作业管理等功能

[dmdba@KylinDCA03 tool]$ ./manager

DM 控制台工具(console)

DM 控制台工具是一个脱机工具,提供脱机备份还原、修改数据库参数(修改后重启数据库才能生效)等功能。

[dmdba@KylinDCA03 tool]$ ./console

DM 数据迁移工具(dts)

DM 数据迁移工具支持其他数据库迁移到达梦,或者达梦迁移到文件等功能。

[dmdba@KylinDCA03 tool]$ ./dts

DM 性能监视工具(monitor):

可以用来监视数据库的线程、事务会话、表空间占用等信息。

[dmdba@KylinDCA03 tool]$ ./monitor

五、DM体系结构

DM8 数据库是由数据库和实例构成

数据库:

DM 数据库指的是磁盘上存放在 DM 数据库中的数据的集合

实例:

实例一般是由一组正在运行的 DM 后台进程/线程以及一个大型的共享内存组成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uNogaXbz-1671760427917)(/img/dm1.png)]

DM 存储结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-774TIqXY-1671760427918)(/img/dm2.png)]
表空间是 DM 数据库的最大存储单元,所有数据都存储在表空间中。
表空间采用段(segment)、簇(extent)和页(page,对应 block)的方式管理。
一个表空间可以包含一个或多个数据文件。一个数据文件仅能归属于一个表空间。
DM 物理文件包含:配置文件、控制文件、数据文件、联机日志(此四个文件必不可少,缺少一个将无法正常启动)。
配置文件包括(服务配置 dm.ini,守护配置,复制配置,审计配置)
控制文件,数据文件,重做日志文件,备份文件,归档日志文件,跟踪日志文件等
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w1rDmm63-1671760427918)(/img/dm3.png)]

DM 数据库参数的类型:

READ ONLY:手动参数,不能通过 SQL 命令或函数修改;只能通过修改 dm.ini 文本文件修改此参数(需要重启数据库才能生效)。
SYS:动态(系统级)参数。数据库运行中可以直接修改,可以即可以修改内存中的值,也可以修改参数文件中的值。可以通过 SQL 命令或系统函数修改。
SESSION:动态(会话级)参数,数据库运行中可以直接修改,可以即可以修改内存中的值,也可以修改参数文件中的值,还可以只修改当前会话的值。可以通过 SQL 命令或函数修改,且可以只针对当前会话生效。
IN FILE:静态参数,不能修改内存中的值,只能修改参数文件中的值,可以通过 SQL 命令或函数修改,但需要重启数据库才能生效。
静态参数在数据库运行期间不能修改内存中的值,动态参数在数据库运行期间可以修改内存中的值(修改后立即生效)。

运行时的内存池:

特点:使用时申请,用完即释放。包含:虚拟内存池 vm pool、会话池 session pool、
排序区、HASH 区等。
排序区和 HASH 区
排序区:SORT_BUF_SIZE
少量的数据排序,优先在内存中排序,此时占用排序区;
大量的数据排序,内存中放不下,占用临时表空间排序。
如果业务经常有排序,可以适当调大排序区,提高效率。
HASH 区:HJ_BUF_SIZE
HASH 连接、HASH 分区占用哈希区。如果业务 hash 连接较多,可以调大哈希区。

DM 线程

DM 是单进程多线程对称服务器架构。Oracle 是多进程架构。

监听线程

用于在服务器端口上进行循环监听,有来自客户的连接请求,监听线程被唤醒并生成一个会话线程,将申请的任务加入工作线程的任务队列,等待工作线程进行处理。 会话线程 dm_sql_thd 每个会话 session 对应一个会话线程,会话多时该线程会多,会话对应的线程 id 可以在 v$sessions 中查询。

工作线程

DM 的核心线程;默认 16 个工作线程。

IO 线程

用于读写数据
需要处理的数据块不在缓冲区中,此时需要将相关数据块读入缓冲区 -物理读
缓冲区满或系统关闭时,此时需要将部分脏数据块写入磁盘 -写脏块
检查点到来时,需要将所有脏数据块写入磁盘

日志刷新线程

日志的刷盘。主要用于事务提交或检查点时将日志缓冲区中的 REDO 日志写入到日志文
件中。

日志归档线程

完成 redo 日志的归档。

日志重做线程

主要用于系统故障恢复,日志重做线程根据 REDO 日志进行并行的故障恢复

调度线程

用于定时调度任务。
检查系统级的时间触发器;
清理 SQL 缓存、计划缓存中失效的项,或者超出缓存限制后淘汰不常用的缓存项;
动态缓冲区检查。根据需要动态扩展或动态收缩系统缓冲池;
自动执行检查点;
会话超时检测;
必要时执行数据更新页刷盘;
唤醒等待的工作线程;

六、一个 sql 的执行

当客户端发起请求,首先到达监听线程,监听线程创建一个会话线程,将任务加入工作线程队列。
Sql 语法语义权限解析(字典缓冲区,语法语义校验,权限校验):
首先在 sql 缓冲区中查找是否有对应的 sql 语句,如果找到,再查找对应的执行计划,找到执行计划,根据执行计划执行 sql,这个过程称为软解析;如果 sql 缓冲区中没有找到对应 sql 语句,会将该sql 语句加入 sql 缓冲区,并生成对应执行计划,执行计划放入 sql 缓冲区,根据执行计划执行 sql 语句,返回结果集,这个过程称为硬解析)。
从系统性能提升来说,要减少硬解析。查询(读数据,数据缓冲区,如果数据缓冲区中存在数据页,则直接从数据缓冲区中读取数据,称为逻辑读;如果数据缓冲区中不存在该数据页,会话线程调用 IO 线程,IO 线程从磁盘上的数据文件中读取数据页并放入到数据缓冲区,称为物理读。
从系统性能考虑,应减少物理读,提高逻辑读),如果查询涉及 HASH 连接等,会占用 HASH 区,如果涉及到排序,少量的数据排序(内存中能排下的)则占用排序区,HASH 区和排序区以会话池或虚拟池的方式申请。
修改(将数据读入数据缓冲区,此过程同上,在数据缓冲区中修改,修改会产生 redo 和 undo,redo 放在日志缓冲区中,undo 写入回滚段; 修改完成后,执行 commit,日志刷新线程将日志缓冲区中的数据写入联机日志文件;当数据库执行检查点时,IO 线程会将脏页写入磁盘数据文件。

七、表空间管理

管理表空间

表空间是 DM 数据库的最大逻辑存储单元,表中的数据在逻辑上都是存放在表空间中,在物理上存放在表空间对应的物理数据文件。表空间由数据文件组成,表空间采用段、簇、页的方式进行管理。
DM 默认预定义 SYSTEM、ROLL、MAIN、TEMP、HMAIN 五个表空间。
SYSTEM:系统表空间,存放数据字典等信息(表、字段、视图等对象的定义、用户角色权限信息等,部分隐含参数写入SYSTEM 表空间),SYSTEM 表空间自动扩展不允许关闭。
ROLL:回滚表空间,存放回滚页,数据库中的 DML 操作对应都会生成 redo 和 undo,undo 信息放入 ROLL 表空间对应的数据文件中,redo 信息写入联机日志文件,用于保证数据的一致性。
ROLL 回滚段数据包含 Active、unexpired、expired 三种状态。
遇到查询记录过旧的错误(等同于 oracle 的快照过旧的错误)。解决方法:
1、 增大 undo_retention(回滚段的保留时长), 及时、分段提交。扩大 ROLL 表空间。
2、查询时间过长导致,可以考虑优化查询。
MAIN:用户默认表空间,当创建用户时,如果为指定用户的默认表空间,则 MAIN 为用户的默认表空间。相当于 Oracle 的 USERS 表空间。
TEMP:临时表空间,存放临时表数据、临时结果集等,当大量的数据排序或创建索引等占用临时表空间。DM 中临时表空间由参数 TEMP_SIZE 指定。

修改TMP表空间

数据库启动时会按照如下参数重建 TEMP 表空间。

select name, value, type from v$parameter t where name like 'TEMP%';
# TEMP_SIZE:临时表空间初始大小
# TEMP_PATH: 临时表空间路径
# TEMP_SPACE_LIMIT:临时表空间的空间限制,0 表示不限制。

修改临时表空间的初始大小:

# alter system set 'TEMP_SIZE'=100 spfile;

收缩 TEMP 表空间的方法:
1、 重启数据库,TEMP 表空间数据文件会重建。
2、 在线收缩临时表空间使用 SP_TRUNC_TS_FILE 函数。

创建表空间

使用 create tablespace 语句创建表空间:

create tablespace tbs DATAFILE 'TBS01.DBF' size 32;

DM 数据文件大小,最大值不能低于页大小的 4096 倍(如果页大小是 8K,最小值将不
低于 32M),最大值为页大小的 2 的 31 次方-1(如果页大小是 8K,最大值为 16T-1)。

表空间重命名

DM 预定义表空间不支持重命名,自定义表空间支持重命名。

alter tablespace tbs RENAME TO dmtbs;

八、归档管理

归档管理

默认情况下,达梦数据库运行在非归档模式下。
归档是对 REDO 日志的归档。归档的目的是使数据库故障时可以恢复到故障的前一刻(完
全恢复),或者恢复到指定的时间点或指定 LSN(Log Sequence Number)(不完全恢复)。
假如现网每天凌晨 0 点备份;
第二天下午 14:00 数据磁盘损坏,数据库故障。
故障时联机日志中只有 13:30-14:00;此时如果没有开启数据库归档,则数据库无法恢复
到故障前一刻 14:00(缺失凌晨 0 点-13:30 的 redo 信息)。
开归档就可以将凌晨 0 点-14:00 的 redo 信息保存在归档日志文件中,数据库恢复时就可以
利用归档将数据库恢复到最新的状态。
联机备份,数据库需要开启归档状态。
利用归档可以做完全恢复和不完全恢复。

SQL 开启归档

归档开启:
alter database mount;
alter database ARCHIVELOG;
alter database ADD ARCHIVELOG 'type=local, dest=/dm8/arch, file_size=64, 
space_limit=10240';
alter database open;
查看归档配置:
select arch_mode from v$database;
select * from v$dm_arch_ini;
修改归档的配置(修改归档空间上限):
alter database modify archivelog 'type=local, dest=/dm8/arch, SPACE_LIMIT=20480';
SQL 关闭归档
SQL> alter database mount;
操作已执行
已用时间: 438.355(毫秒). 执行号:0.
SQL> alter database noarchivelog;
操作已执行
已用时间: 41.445(毫秒). 执行号:0.
SQL> alter database delete archivelog 'type=local,dest=/dm8/arch';
操作已执行
已用时间: 0.519(毫秒). 执行号:0.
SQL> alter database open;
操作已执行
已用时间: 322.559(毫秒). 执行号:0.
SQL> select arch_mode from v$database;
行号 ARCH_MODE
---------- ---------
1 N
已用时间: 0.654(毫秒). 执行号:714.
SQL> select * from v$dm_arch_ini;
未选定行

修改 dm.ini 和 dmarch.ini 配置文件开启归档

[dmdba@KylinDCA03 DM]$ cat dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments
 ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
 ARCH_TYPE = LOCAL
 ARCH_DEST = /dm8/arch
 ARCH_FILE_SIZE = 64
 ARCH_SPACE_LIMIT = 10240
 ARCH_FLUSH_BUF_SIZE = 0
[dmdba@KylinDCA03 DM]$ cat dm.ini|grep ARCH_INI
 ARCH_INI = 1 #dmarch.ini

归档日志文件的切换和删除

数据库自动完成归档的切换,DM 支持手工切换归档;

alter SYSTEM ARCHIVE LOG CURRENT;
alter SYSTEM SWITCH LOGFILE;
alter DATABASE ARCHIVELOG CURRENT;

归档文件的删除

select * from v$ifun t where name like 'SF_ARCHIVELOG_%';
SF_ARCHIVELOG_DELETE_BEFORE_LSN
SF_ARCHIVELOG_DELETE_BEFORE_TIME
# 删除10天前的归档日志。
Select SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate-10);

针对业务繁忙期间,出现磁盘 IO 不定时繁忙的情况,因为配置了归档的空间上限(归档达
到此上限),生成新的归档日志前删除旧的归档日志文件造成了 IO 的不定时繁忙。
解决方案:配置 JOB 作业,在业务空间期定时清理 N 天之前的归档文件。

九、用户管理

用户类型

DM 默认的预定义用户:
SYS:系统内置用户,不允许登录。
SYSDBA:系统管理员,拥有几乎所有权限(除审计和强制访问控制)
SYSAUDITOR:系统审计管理员,具有审计相关权限。
SYSSSO:系统安全管理员,具有强制访问控制等权限;
SYSDBO:安全版本才有的用户,安全操作员。

系统口令策略

PWD_POLICY(隐含参数,不在 dm.ini 中)参数指定系统的口令策略,默认为 2;
系统支持的口令策略有:
0 无策略
1 禁止与用户名相同
2 口令长度需大于等于 INI 参数 PWD_MIN_LEN 设置的值
4 至少包含一个大写字母(A-Z)
8 至少包含一个数字(0-9)
16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略 2 和 4,则设置口
令策略为 2+4=6 即可。
PWD_POLICY 是隐含参数,PWD_POLICY,只能通过函数或 SQL 语句修改。

select * from v$parameter t where t.name = 'PWD_POLICY';
create user hr IDENTIFIED by dameng123;

修改系统口令策略:

alter SYSTEM set 'PWD_POLICY' = 15 BOTH;

SQL 管理用户

create user hrtest IDENTIFIED by dameng123

用户输入错误多次(默认 3 次),将会被锁定。

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

创建用户

create user hrtest IDENTIFIED by Dameng123 DEFAULT TABLESPACE TBSTEST;

用户锁定和解锁:

alter user hr ACCOUNT UNLOCK;
alter user hr ACCOUNT LOCK;

修改用户的默认表空间:

alter user hr DEFAULT TABLESPACE dmtbs;

修改用户密码:

alter user hrtest IDENTIFIED by "Dameng@123";

删除用户:

drop user if EXISTS hr;
drop user if EXISTS hr CASCADE; --生产环境慎用

用户资源限制

用户资源限制设置(可以直接使用 limit 子句,也可以使用 profile 来管理用户的资源限制):

alter user hr LIMIT FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 3;

DM 支持使用 profile 管理用户资源限制(新版本支持,2021 年 10 月以后的版本)

select * from DBA_PROFILES;
create profile profile1 limit FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 3, 
PASSWORD_LIFE_TIME 180;
alter user hrtest PROFILE profile1;

查询用户使用的profile资源限制文件

select a.pid profileid, b.name profile_name, a.uid userid, c.name user_name
from SYSUSERPROFILES a, SYSOBJECTS b, SYSOBJECTS c
where a.PID = b.id 
and a.UID = c.ID;

密码带有特殊字符的登录处理
达梦中密码带有特殊字符需要双引号括起来,在 linux 系统下可以使用单引号‘转义。

[dmdba@KylinDCA03 ~]$ disql hrtest/'"Dameng@123"'
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 1.589(ms)
disql V8
SQL> conn hrtest/"Dameng@123"

也可以使用右斜杠\转义

[dmdba@localhost ~]$ disql dmoa/\"Dameng@123\"
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.162(ms)
disql V8
SQL> alter user dmoa identified by "Dameng123@#'";
操作已执行
已用时间: 6.184(毫秒). 执行号:1000.
SQL> exit
[dmdba@localhost ~]$ disql dmoa/\"Dameng123@#\'\"
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 1.863(ms)
disql V8
SQL>

十、权限管理

赋予数据库权限(系统权限):

SQL> grant create table to hrtest;
操作已执行
已用时间: 3.431(毫秒). 执行号:1700.

赋予对象权限:

SQL> grant select on dmhr.employee to hrtest;
操作已执行
已用时间: 0.535(毫秒). 执行号:1703.

查看当前用户拥有的权限:

select * from session_privs;

权限的回收:

SQL> revoke select on dmhr.employee from hrtest;
## 操作已执行
已用时间: 1.792(毫秒). 执行号:1704.
SQL> revoke create table from hrtest;
## 操作已执行
已用时间: 1.704(毫秒). 执行号:1705
## 赋予查询对象权限,精确到列
SQL> grant select (employee_id, employee_name) on dmhr.employee to hrtest;
## 操作已执行
已用时间: 2.175(毫秒). 执行号:1706.

相关数据字典:

select * from dba_sys_privs t where t.GRANTEE= 'HRTEST';
select * from dba_role_privs t where t.GRANTEE= 'HRTEST';
select * from dba_tab_privs t where t.GRANTEE= 'HRTEST';
DM 默 认 不 能 授 予 用 户 在 其 他 模 式 下 数 据 定 义 ( DDL ) 的 权 限 , 由 参 数
ENABLE_DDL_ANY_PRIV 指定,默认为 0。
grant select any table to hrtest;
select * from v$parameter t where name like '%ENABLE_DDL_ANY_PRIV%';
alter SYSTEM set 'ENABLE_DDL_ANY_PRIV' = 1 both; --开启后可正常赋予权限
grant create any table to hrtest;
grant create any index to hrtest;

十一、角色管理

角色类型

角色是权限的集合,角色使权限管理更加方便。
DBA:具有几乎所有权限(除审计和强制访问控制之外),默认赋给 SYSDBA 用户。
PUBLIC:具有对当前模式下对象的 DML 数据操作权限。
RESOURCE:具有在当前模式下对象定义权限(创建表、索引、视图等);
SOI:具有查询 sys 开头系统表的权限;
VTI:具有查询 v 开头的动态视图权限(动态视图记录在 v 开头的动态视图权限(动态视图记录在 v 开头的动态视图权限(动态视图记录在vdynamic_tables,如果没有此权限,DM 管理工具上会报没有查询 v$视图权限)
DB_AUDIT_开头的角色是审计相关角色,具有审计相关权限,默认赋给 SYSAUDITOR。
DB_POLICY_开头的角色是安全相关角色,具有强制访问控制等权限,默认赋给 SYSSSO。

select * from dba_roles;
create role r1;
grant create table to r1;
grant select on dmhr.department to r1;
grant r1 to hrtest;
sp_set_role('R1',0) --角色禁用和启用,禁用后角色权限将不在生效。

赋予对象权限增加 with grant option 说明权限可以转授,回收时要增加 cascade 关键字级联
回收权限,否则报错:

revoke select on dmhr.employee from r2 CASCADE;

十二、数据库的备份还原

备份还原基本概念

备份包含物理备份和逻辑备份。
物理备份是拷贝有效的数据页。逻辑备份是导出数据库中逻辑数据。
物理备份分为完全备份、增量备份;联机备份(热备)和脱机备份(冷备)。
完全备份是指一个备份包含指定数据库或表空间的所有数据;
增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件;
增量备份包含差异增量备份和累积增量备份,默认是差异增量备份。
差异增量备份的基础备份集可以是全量备份,也可以是增量备份;
累计增量备份的基备份集只能是全量备份。
热备:指数据库启动状态下的备份
冷备:指数据库关闭状态下的备份。
备份级别:全库备份、表空间级备份、表级备份、归档备份。
物理还原是备份的逆过程;
恢复是使用归档将数据库恢复到最新状态或指定时间点;或使用备份集中的 redo 信息将数据库恢复至一致性状态。

备份、还原与恢复的关系

备份还原两个重要参数:

select * from v$parameter t where name in ('BAK_PATH', 'BAK_USE_AP');

BAK_PATH:DM 默认的备份路径,生成环境不要和源库数据文件放在同一磁盘上。避免磁
盘损坏,数据文件和备份文件同时损坏的情况。
BAK_USE_AP:备份还原策略,默认使用 DMAP 辅助进程。

查看 AP 服务是否启动:

[dmdba@KylinDCA04 bak]$ ps -ef|grep dmap
dmdba 86474 1 0 414 ? 00:00:01 /dm8/bin/dmap

如果 AP 服务没有启动,则备份报错:
[执行语句1]:

backup database;
执行失败(语句1)
-7170: bakres 连接 DMAP 失败

脱机备份与还原数据库

脱机备份(数据库关闭状态下的备份)
一、使用 dmrman 工具可以脱机备份
库备份(冷备)

RMAN> backup database '/dm8/data/DM/dm.ini';
backup database '/dm8/data/DM/dm.ini';
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[46292], file_lsn[46292]
Processing backupset /dm8/data/DM/bak/DB_DM_FULL_20211222_152753_249786
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
backup successfully!
time used: 00:00:01.255

表空间的还原和恢复

测试删除普通表空间数据文件,演示普通表空间的还原于恢复。
DM8 表空间的还原与恢复需要在脱机状态下操作.
制造测试数据,然后删除表空间数据文件:

[dmdba@KylinDCA04 ~]$ DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ OK ]
[dmdba@KylinDCA04 ~]$ disql sysdba/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 28.250(ms)
disql V8
SQL> select count(*) from t_dept;
行号 COUNT(*)
---------- --------------------
1 46
已用时间: 1.278(毫秒). 执行号:501.
SQL> insert into t_dept select * from dmhr.department;
99 / 118
影响行数 47
已用时间: 1.972(毫秒). 执行号:502.
SQL> commit;
操作已执行
已用时间: 1.313(毫秒). 执行号:503.
SQL> select count(*) from t_dept;
行号 COUNT(*)
---------- --------------------
1 93
已用时间: 0.318(毫秒). 执行号:504.
SQL> insert into t_dept select * from dmhr.department;
影响行数 47
已用时间: 1.972(毫秒). 执行号:502.
SQL> commit;
操作已执行
已用时间: 1.313(毫秒). 执行号:503.
SQL> select count(*) from t_dept;
行号 COUNT(*)
---------- --------------------
1 140
SQL> select table_name, tablespace_name,owner from dba_tables t where t.table_name='T_DEPT';
行号 TABLE_NAME TABLESPACE_NAME OWNER
---------- ---------- --------------- ------
1 T_DEPT MAIN SYSDBA
已用时间: 103.392(毫秒). 执行号:600.
SQL> host rm MAIN.DBF
表空间 MAIN 的还原与恢复演示:
[dmdba@KylinDCA04 full]$ dmrman
dmrman V8
RMAN> restore database '/dm8/data/DAMENG/dm.ini' tablespace main from backupset 
'/dm8/backup/full/CONSOLEFULLBAK';
restore database '/dm8/data/DAMENG/dm.ini' tablespace main from backupset 
'/dm8/backup/full/CONSOLEFULLBAK';
file dm.key not found, use default license!
100 / 118
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[1507247], file_lsn[1507247]
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.595
表空间的恢复系统会自动利用归档恢复到最新状态。
RMAN> recover database '/dm8/data/DAMENG/dm.ini' tablespace main;
recover database '/dm8/data/DAMENG/dm.ini' tablespace main;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[1507247], file_lsn[1507247]
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully.
time used: 464.414(ms)

全库的还原与恢复
测试场景:删除 system 数据文件
使用全量备份集或增量备份集进行还原和恢复步骤相同。
假如 a(全量)->b1(增量)-> b2(增量)
-> c1(增量)
如果全量备份丢失,基于其增量的备份也将无法正常使用

(1)数据库的还原

RMAN> restore database '/dm8/data/DM/dm.ini' from backupset 
'/dm8/backup/full/ONLINEBAK_02';
restore database '/dm8/data/DM/dm.ini' from backupset '/dm8/backup/full/ONLINEBAK_02';
[Percent:0.00%][Speed:0.00M/s][Cost:00:00:01][Remaining:00:00:00]Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.330

(2)数据库的恢复

RMAN> recover database '/dm8/data/DM/dm.ini' with archivedir '/dm8/arch';
recover database '/dm8/data/DM/dm.ini' with archivedir '/dm8/arch';
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[46002], file_lsn[46002]
EP:0 total 4 pkgs applied, percent: 11%
EP:0 total 8 pkgs applied, percent: 22%
EP:0 total 12 pkgs applied, percent: 34%
EP:0 total 16 pkgs applied, percent: 45%
EP:0 total 20 pkgs applied, percent: 57%
EP:0 total 24 pkgs applied, percent: 68%
EP:0 total 28 pkgs applied, percent: 80%
102 / 118
EP:0 total 32 pkgs applied, percent: 91%
EP:0 total 35 pkgs applied, percent: 100%
recover successfully!
time used: 294.062(ms)

(3)更新数据库魔数

RMAN> recover database '/dm8/data/DM/dm.ini' update db_magic;
recover database '/dm8/data/DM/dm.ini' update db_magic;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[46292], file_lsn[46292]
recover successfully!
time used: 00:00:01.009
不完全恢复的使用场景:
表误删除(DROP),可以指定归档恢复到删除的前一刻。
recover database '/dm8/data/DMTEST/dm.ini' with archivedir '/dm8/arch' until lsn XX;
recover database '/dm8/data/DMTEST/dm.ini' with archivedir '/dm8/arch' until time XX;
show 查看备份集
RMAN> show backupset '/dm8/data/DAMENG/bak_full';
remove 删除备份集
RMAN> remove backupset '/dm8/data/DAMENG/bak_increment';
check 检查备份集
RMAN> check backupset '/dm8/data/DAMENG/bak_full';

联机备份与还原数据库

联机备份:数据库是启动状态,联机备份要求数据库打开归档。
备份时 AP 服务需要为启动状态。
SQL 备份数据库
备份数据库

backup database; --全量备份
backup database increment; --增量备份
backup database full to ONLINEBAK_01 backupset
'/dm8/backup/full/ONLINEBAK_01';
backup database increment BASE ON BACKUPSET 
'/dm8/backup/full/ONLINEBAK_01' to ONLINEBAKINCR_01 
backupset '/dm8/backup/incr/ONLINEBAK_01' ;
backup database increment with BACKUPDIR '/dm8/backup/full/' to
ONLINEBAKINCR_02 backupset '/dm8/backup/incr/ONLINEBAK_02' ;
备份集管理
--查看备份集
select * from v$backupset;
--备份集相关函数
select * from v$ifun t where t.name like 'SF_BAKSET%';
SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/full/');
SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/incr/');
--校验备份集
select SF_BAKSET_CHECK('DISK','/dm8/backup/incr/ONLINEBAK_02');
--查看各个增量备份集的基础备份集:
select t.BACKUP_NAME, t.BACKUP_PATH, LEVEL, t.type,
 SYS_CONNECT_BY_PATH(t.BACKUP_NAME, '/') BACKUP_BASECONNECT,
 CONNECT_BY_ISLEAF ISLEAF
 from (select a.BACKUP_NAME, a.BACKUP_PATH, a.BASE_NAME, a.TYPE
 from V$BACKUPSET a) t 
connect by t.BASE_NAME = PRIOR t.BACKUP_NAME 
start with t.type = 0;
表空间备份
backup tablespace dmtbs;
backup tablespace dmtbs INCREMENT with BACKUPDIR '/dm8/backup/full/' to
DMTBSINCR_01 backupset '/dm8/backup/incr/DMTBSINCR_01' ;
表和归档的备份
backup table dmhr.employee; --表的备份
backup archivelog all; --归档备份
库级、表空间的还原和恢复不支持联机恢复,只支持脱机还原恢复。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值