注册
数据库的备份还原
培训园地/ 文章详情 /

数据库的备份还原

l 2022/12/02 1138 0 0

⚫ 脱机备份
DMRMAN 和 Console DM 控制台工具可以脱机备份,脱机备份是数据库关闭状态
下的备份。
DMRMAN 在达梦中是脱机备份工具,只能数据库关闭状态下备份

开机备份会报错

[dmdba@localhost bin]$ ./dmrman
dmrman V8
RMAN> backup database ‘/dm8/data/DAMENG/dm.ini’ to DMFULLBAK01 backupset ‘/dm8/data/DAMENG/bak/DMFULLBAK01’;
backup database ‘/dm8/data/DAMENG/dm.ini’ to DMFULLBAK01 backupset ‘/dm8/data/DAMENG/bak/DMFULLBAK01’;
file dm.key not found, use default license!
[-137]:服务器正在运行或者存在其他进程正在操作同一个库
RMAN> exit

RMAN> backup database ‘/dm8/data/DAMENG/dm.ini’ to DMFULLBAK04
backupset ‘/dm8/backup/full/DMFULLBAK04’;

SQL> shutdown immediate;

[dmdba@localhost bin]$ ./dmrman
dmrman V8
RMAN> backup database ‘/dm8/data/DAMENG/dm.ini’ to DMFULLBAK01 backupset ‘/dm8/data/DAMENG/bak/DMFULLBAK01’;
backup database ‘/dm8/data/DAMENG/dm.ini’ to DMFULLBAK01 backupset ‘/dm8/data/DAMENG/bak/DMFULLBAK01’;
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[62218], file_lsn[62218]
Processing backupset /dm8/data/DAMENG/bak/DMFULLBAK01 [Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
backup successfully!
time used: 00:00:04.605
RMAN> exit

RMAN> show backupset ‘/dm8/data/DAMENG/bak/DMFULLBAK01’;
RMAN> check backupset ‘/dm8/data/DAMENG/bak/DMFULLBAK01’;

这个是删除,慎用
RMAN> remove backupset ‘/dm8/data/DAMENG/bak/DMFULLBAK01’;

⚫ 联机备份与还原数据库
数据库启动状态下的备份,需要开启归档

select * from SYS.“V$PARAMETER” t where t.name =‘BAK_PATH’;

SQL> select * from SYS.“V$PARAMETER” t where t.name =‘BAK_PATH’;

行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION DEFAULT_VALUE ISDEFAULT


1 6 BAK_PATH READ ONLY /dm8/data/DAMENG/bak /dm8/data/DAMENG/bak /dm8/data/DAMENG/bak backup file path NULL 1

已用时间: 23.027(毫秒). 执行号:500.
BAK_PATH 是一个手工参数,修改要重启数据库生效。

达梦只读默认路径下的备份,备份在其它路径读不到,因为它备份不写控制文件

查看备份路径

select * from SYS.“V$PARAMETER” t where t.name =‘BAK_USE_AP’;
select * from SYS.“V$BACKUPSET”;

添加备份路径

SF_BAKSET_BACKUP_DIR_ADD(‘DISK’,‘/dm8/backup/full/’);
SF_BAKSET_BACKUP_DIR_ADD(‘DISK’,‘/dm8/backup/incr/’);

select * from v$ifun t where t.name like ‘%BAKSET%’;
通过这个语句可以查到添加备份集删除备份集的方法

全量备份数据库,比如做一次完整的备份,备份名为“DB_BAK”

[dmdba@localhost bin]$ ./disql sysdba/Dameng123:5239

服务器[LOCALHOST:5239]:处于普通打开状态
登录使用时间 : 4.857(ms)
disql V8
SQL> backup database full to DB_BAK BACKUPSET ‘/backup/DB_BAK’;
操作已执行
已用时间: 00:00:03.846. 执行号:600.

下面是基于全备的增量备份

backup database full to DMFULLBAK01 backupset ‘/dm8/backup/full/DMFULLBAK01’;
backup database INCREMENT to INCK01 backupset ‘/dm8/backup/incr/INCK01’;
backup database INCREMENT with BACKUPDIR ‘/dm8/backup/full/’
to INCK02 backupset ‘/dm8/backup/incr/INCK02’;
backup database INCREMENT CUMULATIVE with BACKUPDIR ‘/dm8/backup/full/’
to INCK03 backupset ‘/dm8/backup/incr/INCK03’;

备份表空间
backup tablespace DMHR to DMTBSBAK backupset ‘/backup/DMHR’;

备份表
backup table DMHR.EMPLOYEE;

备份归档
backup ARCHIVE LOG ALL to ARCHBAK backupset ‘/backup/ARCHBAK’;

数据库还原

库级还原与恢复(还原、恢复、更新数据库魔数)
脱机状态下操作:

⚫数据库级还原

还原前dm.ini 文件和dm.ctl 文件都需要保留

/SJ/data/PROD/ctl_bak路径也要保存

[dmdba@localhost bin]$ ./dmrman
dmrman V8
RMAN> restore database ‘/SJ/data/PROD/dm.ini’ from backupset ‘/backup/DB_BAK’;
restore database ‘/SJ/data/PROD/dm.ini’ from backupset ‘/backup/DB_BAK’;
file dm.key not found, use default license!
Read ini warning, default dm.ctl backup path [/SJ/data/PROD/ctl_bak] does not exist.
Read ini warning, default backup path [/bakup] does not exist.
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.465

RMAN> recover database ‘/SJ/data/PROD/dm.ini’ with archivedir ‘/dm8/arch’;
recover database ‘/SJ/data/PROD/dm.ini’ with archivedir ‘/dm8/arch’;
Read ini warning, default backup path [/bakup] does not exist.
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[45662], file_lsn[45662]
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 448.757(ms)

RMAN> recover database ‘/SJ/data/PROD/dm.ini’ update db_magic;
recover database ‘/SJ/data/PROD/dm.ini’ update db_magic;
Read ini warning, default backup path [/bakup] does not exist.
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[47217], file_lsn[47217]
recover successfully!
time used: 00:00:01.018
RMAN> exit
time used: 0.598(ms)

⚫ 逻辑备份
dexp 逻辑导出,包含四个级别
全库导出、按用户导出、按模式导出、按表导出

dexp 在/dm8/bin目录下

[dmdba@localhost bin]$ ls dexp
dexp
[dmdba@localhost bin]$ ls dimp
dimp

[dmdba@localhost bin]$ ./dexp help
dexp V8
version: 03134283904-20220830-18321-20005 Pack6
格式: ./dexp KEYWORD=value 或 KEYWORD=(value1,value2,…,valueN)

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

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

关键字 说明(默认值)

USERID 用户名/口令 格式:{<username>[/<password>] | /}[@<connect_identifier>][<option>] [<os_auth>]
<connect_identifier> : [<svc_name> | host[:port] | <unixsocket_file>]
<option> : #{<exetend_option>=<value>[,<extend_option>=<value>]…}
–此行外层{}是为了封装参数之用,书写时需要保留
<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 导出数据文件的描述信息,记录在数据文件中
COL_DEFAULT_SEPARATE 是否单独导出列默认值 (Y)
HELP 打印帮助信息

全库导出:在/dm8/bin目录下
./dexp userid=sysdba/Dameng123:5239 file=/backup/full.dmp log=/backup/full.log full=y

按模式导出:
./dexp userid=sysdba/Dameng123:5239 file=/backup/DMHR.dmp log=/backup/DMHR.log schemas=DMHR

./dexp userid=sysdba/Dameng123:5239 file=/backup/DMTEST.dmp log=/backup/DMTEST.log owner=TEST

按用户导入,比如说把上面的DMTEST.dmp导入到HR用户中
create USER HR IDENTIFIED BY Dameng123 default tablespace USERS;
[dmdba@localhost bin]$ ./dimp userid=sysdba/Dameng123:5239 file=/backup/DMTEST.dmp log=/backup/imp_hr.log remap_schema=TEST:HR
dimp V8

本地编码:PG_UTF8, 导入文件编码:PG_GB18030
成功终止导入, 没有出现警告

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服