1 版本
1.1 kylin版本
$ lsb_release -a
-- kylin 4.0.2
1.2 达梦数据库license
$ SQL > SELECT * FROM V$LICENSE;
2 达梦数据库命令
2.1 启动数据库
// dmdba 前台命令
$ cd /home/dmdba/dmdbms/bin
$ ./dmserver /home/dmdba/dmdbms/DAMENG/dm.ini
// 启动脚本
dmdba@else-virtual-machine:~$ cat startdb.sh
cd /home/dmdba/dmdbms/bin
nohup ./dmserver /home/dmdba/dmdbms/DAMENG/dm.ini > /dev/null &
// 停止脚本
dmdba@else-virtual-machine:~$ cat stopdb.sh
ps -ef|grep ./dmserver | grep -v grep | awk '{print $2}'|xargs kill -9
2.2 连接数据库并执行命令
// 连接数据库
$ ./disql SYSDBA/SYSDBA@localhost:5236
// 直接执行命令
disql SYSDBA/SYSDBA -E "SELECT TOP 1 * FROM SYSOBJECTS; SELECT TOP 1 * FROM V$CMD_HISTORY"
disql SYSDBA/SYSDBA -C "SET LONG 1000 PAGESIZE 0"
2.3 查看数据库
SQL> select * from v$database;
行号 NAME CREATE_TIME ARCH_MODE LAST_CKPT_TIME STATUS$ ROLE$ MAX_SIZE TOTAL_SIZE DSC_NODES OPEN_COUNT STARTUP_COUNT LAST_STARTUP_TIME
---------- ------ ------------------- --------- ------------------- ----------- ----------- -------------------- -------------------- ----------- ----------- -------------------- -------------------
1 DAMENG 2023-05-15 23:03:26 N 2023-05-16 14:02:24 4 0 0 20992 1 4 4 2023-05-16 12:53:26
已用时间: 3.166(毫秒). 执行号:500.
3 数据库备份
3.1 数据库备份原理
方式 | 备份 |
---|---|
DIsql 工具 | 用于执行联机的数据备份与数据还原,包括数据库备份、归档备份、表空间备份与还原、表备份与还原; |
DMRMAN 工具 | 用于执行脱机的数据备份、还原与恢复,包括脱机的数据库备份、还原与恢复,脱机还原表空间,归档的备份、还原与修复; |
客户端工具 MANAGER | 对应命令行工具 DIsql,用于联机备份还原数据。 |
客户端工具 CONSOLE | 对应命令行工具 DMRMAN,用于脱机备份还原数据。 |
3.2 开启归档日志
//修改数据库为MOUNT状态
ALTER DATABASE MOUNT;
//配置本地归档
ALTER DATABASE ADD ARCHIVELOG 'DEST = /dmdata/dameng/arch_dsc0, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048, ARCH_FLUSH_BUF_SIZE=16,HANG_FLAG=1';
//配置远程归档
ALTER DATABASE ADD ARCHIVELOG 'DEST = DSC1, TYPE = REMOTE, FILE_SIZE = 1024, SPACE_LIMIT = 2048, ARCH_FLUSH_BUF_SIZE=16, INCOMING_PATH = /dmdata/dameng/arch_dsc1';
//开启归档模式
ALTER DATABASE ARCHIVELOG;
//修改数据库为OPEN状态
ALTER DATABASE OPEN;
3.3 脱机创建完全备份(RMAN)
dmdba@else-virtual-machine:~/dmdbms/bin$ pwd
/home/dmdba/dmdbms/bin
dmdba@else-virtual-machine:~/dmdbms/bin$ ./dmrman
dmrman V8
// 脱机完全备份
RMAN> BACKUP DATABASE '/home/dmdba/dmdbms/DAMENG/dm.ini' FULL BACKUPSET '/else/bakup_dm';
--输出结果:
BACKUP DATABASE '/home/dmdba/dmdbms/DAMENG/dm.ini' FULL BACKUPSET '/else/bakup_dm';
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
begin redo pwr log collect, last ckpt lsn: 37027 ...
redo pwr log collect finished
EP[0]'s cur_lsn[37190], file_lsn[37190]
Processing backupset /else/bakup_dm
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
backup successfully!
time used: 00:00:02.423
RMAN> exit
time used: 0.211(ms)
dmdba@else-virtual-machine:~/dmdbms/bin
//检查备份
RMAN> CHECK BACKUPSET '/backup/dmdb';
CHECK BACKUPSET '/backup/dmdb';
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
check backupset successfully.
time used: 33.279(ms)
RMAN>
说明: 1、如果未开启归档,则无法进行备份,会出现以下报错。2、如果已经开启归档,则新建表插入数据出现归档日志即可。
RMAN> BACKUP DATABASE '/home/dmdba/dmdbms/DAMENG/dm.ini' FULL BACKUPSET '/backup/dmdb';
BACKUP DATABASE '/home/dmdba/dmdbms/DAMENG/dm.ini' FULL BACKUPSET '/backup/dmdb';
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
begin redo pwr log collect, last ckpt lsn: 37388 ...
redo pwr log collect finished
EP[0]'s cur_lsn[41361], file_lsn[41361]
[-8216]:归档日志不完整,请使用dmrman工具执行'repair archive log ...'语句修复归档日志
RMAN> RMAN>
3.4 联机完全备份(disql)
SQL> BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/backup/dmdb/online';
操作已执行
已用时间: 856.729(毫秒). 执行号:505.
// 或者
BACKUP DATABASE FULL BACKUPSET '/backup/dmdb/online';
1、名称中不支持特殊字符。
SQL> BACKUP DATABASE BACKUPSET '/backup/dmdb/online/bak_`date +%F`' BACKUPINFO '完全备份';
操作已执行
已用时间: 876.343(毫秒). 执行号:502.
dmdba@else-virtual-machine:/backup/dmdb/online$ ls
bak_`date +%F`
2、两次备份路径不能相同。
SQL> BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/backup/dmdb/online';
操作已执行
已用时间: 856.729(毫秒). 执行号:505.
SQL> BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/backup/dmdb/online';
BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/backup/dmdb/online';
[-8055]:备份目录冲突.
已用时间: 4.006(毫秒). 执行号:0.
SQL> ^C
3.5 数据库表备份
SQL> BACKUP TABLE t1 BACKUPSET '/backup/dmdb/t1_bak_01';
操作已执行
已用时间: 820.100(毫秒). 执行号:600.
dmdba@else-virtual-machine:/backup/dmdb/t1_bak_01$ ls
t1_bak_01.bak t1_bak_01.meta
说明:
- 仅支持对用户的非分区的行存储表和堆表进行备份,不支持对分区表的备份。在非分区表中,也不支持对临时表、物化视图表、物化视图附属表、日志表和特定模式(DBG_PKG/INFORMATION_SCHEMA/INFO_SCHEM/SYSREP/SYSGEO/SYSJOB/SYSCPT/SYS)下的表进行表备份。
- 表的列类型为对象类型的表不支持表备份。
- 表备份不备份表上的注释以及 default 表达式中的函数定义,因此还原时需用户自行确认。
- 不支持在加密库上进行表备份与还原。
- 当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名后加文件编号。
- 表备份时,其所属表空间必须处于联机状态。
- 目前表备份不支持备份到 TAPE 介质上。
3.5 数据库表空间备份
问题
SQL> BACKUP TABLESPACE MAIN BACKUPSET '/backup/tabspace/ts_bak_01';
BACKUP TABLESPACE MAIN BACKUPSET '/backup/tabspace/ts_bak_01';
[-8117]:等待归档刷盘,请稍后重试.
已用时间: 102.618(毫秒). 执行号:0.
4 数据库恢复
4.1 表恢复
SQL> RESTORE TABLE t1 FROM BACKUPSET '/backup/dmdb/t1_bak_01';
操作已执行
已用时间: 9.957(毫秒). 执行号:603.
说明:表必须存在。
4.1 数据库恢复
dmdba@else-virtual-machine:~/dmdbms/bin$ pwd
/home/dmdba/dmdbms/bin
dmdba@else-virtual-machine:~/dmdbms/bin$ ./dmrman
dmrman V8
// 还原数据库
RMAN> RESTORE DATABASE '/home/dmdba/dmdbms/DAMENG/dm.ini' FROM BACKUPSET '/backup/dmdb/online';
RESTORE DATABASE '/home/dmdba/dmdbms/DAMENG/dm.ini' FROM BACKUPSET '/backup/dmdb/online';
file dm.key not found, use default license!
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.398
// 恢复数据库
RMAN> RECOVER DATABASE '/home/dmdba/dmdbms/DAMENG/dm.ini' FROM BACKUPSET '/backup/dmdb/online';
RECOVER DATABASE '/home/dmdba/dmdbms/DAMENG/dm.ini' FROM BACKUPSET '/backup/dmdb/online';
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[50190], file_lsn[50190]
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:02.336
// 更新数据库
RMAN> RECOVER DATABASE '/home/dmdba/dmdbms/DAMENG/dm.ini' UPDATE DB_MAGIC;
RECOVER DATABASE '/home/dmdba/dmdbms/DAMENG/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[52678], file_lsn[52678]
recover successfully!
time used: 00:00:01.032
RMAN> quit
// 启动数据库
cd /home/dmdba/dmdbms/bin
nohup ./dmserver /home/dmdba/dmdbms/DAMENG/dm.ini > /dev/null &
dmdba@else-virtual-machine:~/dmdbms/bin$ ./disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 1.525(ms)
disql V8
SQL> select * from t1;
行号 NO NAME
---------- ----------- --------
1 1 wang
2 2 zhang
3 3 li
4 4 chen
已用时间: 1.710(毫秒). 执行号:500.
5 数据库原理
5.1 数据库状态和模式
DM 数据库包含以下几种状态 | 说明 |
---|---|
配置状态(MOUNT) | 不允许访问数据库对象,只能进行控制文件维护、归档配置、数据库模式修改等操作; |
打开状态(OPEN) | 不能进行控制文件维护、归档配置等操作,可以访问数据库对象,对外提供正常的数据库服务; |
挂起状态(SUSPEND) | 与 OPEN 状态的唯一区别就是,限制磁盘写入功能;一旦修改了数据页,触发 REDO 日志、数据页刷盘,当前用户将被挂起。 |
说明 | OPEN 状态与 MOUNT 和 SUSPEND 能相互转换,但是 MOUNT 和 SUSPEND 之间不能相互转换。 |
DM 数据库包含以下几种模式: | 说明 |
---|---|
普通模式(NORMAL) | 用户可以正常访问数据库,操作没有限制; |
主库模式(PRIMARY) | 用户可以正常访问数据库,所有对数据库对象的修改强制生成 REDO 日志,在归档有效时,发送 REDO 日志到备库; |
备库模式(STANDBY) | 接收主库发送过来的 REDO 日志并重做。数据对用户只读。 |
说明 | 三种模式只能在 MOUNT 状态下设置,模式之间可以相互转换。 |
1、对于新初始化的库,首次启动不允许使用 mount 方式,需要先正常启动并正常退出,然后才允许 mount 方式启动。
2、一般情况下,数据库为 NORMAL 模式,如果不指定 MOUNT 状态启动,则自动启动到 OPEN 状态。
3、在需要对数据库配置时(如配置数据守护、数据复制),服务器需要指定 MOUNT 状态启动。当数据库模式为非 NORMAL
模式(PRIMARY、STANDBY 模式),无论是否指定启动状态,服务器启动时自动启动到 MOUNT 状态。
// 数据库状态
SQL> select status$ from v$instance;
行号 STATUS$
---------- -------
1 OPEN
已用时间: 0.617(毫秒). 执行号:501.
// 数据库模式
SQL> select MODE$ from v$instance;
行号 MODE$
---------- ------
1 NORMAL
已用时间: 0.842(毫秒). 执行号:502.
SQL>
5 操作系统管理
5.1 扩容
1、虚拟机划分磁盘,然后实用fdisk查看并创建、分配分区。
root@else-virtual-machine:~# fdisk -l
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x2d990cf9
设备 启动 Start 末尾 扇区 Size Id 类型
/dev/sda1 * 2048 999423 997376 487M 83 Linux
/dev/sda2 999424 25165823 24166400 11.5G 83 Linux
/dev/sda3 25167870 41940991 16773122 8G 5 扩展
/dev/sda5 25167872 41940991 16773120 8G 82 Linux 交换 / Solaris
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
root@else-virtual-machine:~# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x04879ea3.
命令(输入 m 获取帮助): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
分区号 (1-4, default 1): 1
First sector (2048-41943039, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039):
Created a new partition 1 of type 'Linux' and of size 20 GiB.
命令(输入 m 获取帮助): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
root@else-virtual-machine:~#
2、确认并识别分区,不成功实用partprobe命令重新同步。
root@else-virtual-machine:~# file /dev/sdb1
/dev/sdb1: block special (8/17)
root@else-virtual-machine:~# partprobe
root@else-virtual-machine:~#
3、格式化
root@else-virtual-machine:~# file /dev/sdb1
/dev/sdb1: block special (8/17)
root@else-virtual-machine:~# partprobe
root@else-virtual-machine:~#
4、挂载目录/backup
root@else-virtual-machine:~# mkdir /backup
root@else-virtual-machine:~# id dmdba
uid=12345(dmdba) gid=12349(dinstall) 组=12349(dinstall)
root@else-virtual-machine:~# chown dmdba:dinstall /backup/
root@else-virtual-machine:~# mount /dev/sdb1 /backup
root@else-virtual-machine:~# df -h
文件系统 容量 已用 可用 已用% 挂载点
udev 3.9G 0 3.9G 0% /dev
tmpfs 797M 9.2M 788M 2% /run
/dev/sda2 12G 8.6G 2.1G 81% /
tmpfs 3.9G 192K 3.9G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 464M 76M 361M 18% /boot
tmpfs 797M 20K 797M 1% /run/user/1000
/dev/sdb1 20G 44M 19G 1% /backup
报错
1、出现如下报错:file dm.key not found, use default license!文章来源:https://www.toymoban.com/news/detail-448133.html
dmdba@else-virtual-machine:~/dmdbms/bin$ ./dmserver ../DAMENG/dm.ini
file dm.key not found, use default license!
version info: develop
instance DMSERVER is running.
解决:可能已经启动了一个dm.ini文章来源地址https://www.toymoban.com/news/detail-448133.html
root@else-virtual-machine:/home/dmdba/dmdbms/bin# ps -ef|grep dm.int
dmdba 6708 1853 0 23:10 pts/1 00:00:00 ./dmserver /home/dmdba/dmdbms/DAMENG/dm.ini
到了这里,关于<达梦>《达梦数据库备份归档》的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!