#SQL命令备份恢复
SQL命令方式的备份恢复操作适用于单机部署。
# 操作示例
1.通过yasql连接数据库,将数据库切换到归档模式。
$ yasql username/password
SQL> ALTER DATABASE ARCHIVELOG;
2.模拟业务场景,在数据库中创建表并插入数据。
CREATE TABLE backuptable (b1 INT,b2 INT);
INSERT INTO backuptable VALUES (2,3);
COMMIT;
3.执行数据全量备份。
BACKUP DATABASE FULL FORMAT '/YashanDB/backup/full_20211212181530';
Caution:
确保“/YashanDB/backup”目录存在且YashanDB安装用户具有读写权限,如果指定的数据备份目录已存在,则会触发 YAS-00318 错误。
4.使用具有DBA权限的用户查询DBA_BACKUP_SET视图,检查备份详情。
SELECT * FROM DBA_BACKUP_SET;
RECID# START_TIME COMPLETION_TIME TYPE INCREMENT_LEVEL INCREMENT_ID# PATH TAG TRUNC_LSN COMPRESS_LEVEL INPUT_BYTES OUTPUT_BYTES RCY_BEGIN_ASN RCY_BEGIN_LFN RCY_END_ASN RCY_END_LFN COMPRESS_ALGO ENCRYPT_ALGO
--------------------- -------------------------------- -------------------------------- ------------- --------------- ------------- ---------------------------------------------------------------- ---------------------------------------------------------------- --------------------- -------------- --------------------- --------------------- ------------- --------------------- ------------ --------------------- ------------- ------------
1 2023-06-19 2023-06-19 FULL 0 0 /YashanDB/backup/full_20211212181530 bak_2023061902151684 53767 NONE 516325376 516325376 8 51469 8 51471 NONE NONE
5.检查生成的备份集物理文件。
$ cd /YashanDB/backup/full_20211212181530
$ ls -rlt
total 307280
-rw-r-----. 1 yashan yashan 28729344 Jun 20 02:49 ctrl_0_0_0.bak
-rw-r-----. 1 yashan yashan 67108864 Jun 20 02:49 data_1_0_0.bak
-rw-r-----. 1 yashan yashan 67108864 Jun 20 02:49 data_0_0_0.bak
-rw-r-----. 1 yashan yashan 8192 Jun 20 02:49 data_3_0_0.bak
-rw-r-----. 1 yashan yashan 8192 Jun 20 02:49 data_4_0_0.bak
-rw-r-----. 1 yashan yashan 67108864 Jun 20 02:49 data_2_0_0.bak
-rw-r-----. 1 yashan yashan 67108864 Jun 20 02:49 data_5_0_0.bak
-rw-r-----. 1 yashan yashan 688128 Jun 20 02:49 arch_0_3_0.bak
drwx------. 2 yashan yashan 6 Jun 20 02:49 bucket_5_0_0.bak
-rw-r-----. 1 yashan yashan 16777216 Jun 20 02:49 backup_profile
-rw-r-----. 1 yashan yashan 4608 Jun 20 02:49 backup_filelist
其中:
- ctrl文件为备份的控制文件。
- data文件为备份的数据文件。
- arch文件为备份的归档文件。
- 当业务中存在LSC表时,bucket_5_0_0.bak/下存放LSC表的可变数据文件。
- backup_profile文件为备份集元数据文件,用于备份集和数据库版本的校验,备份集恢复关键信息等。
- backup_filelist文件用于校验备份集数据的完整性正确性
6.模拟灾难场景,删除数据库文件。
#$YASDB_DATA/dbfiles 为数据库文件路径
$ cd $YASDB_DATA/dbfiles
$ rm -rf ./*
$ ls -rlt
total 0
7.重启数据库到NOMOUNT状态,执行恢复,然后检查新增数据是否恢复。
SHUTDOWN IMMEDIATE;
exit;
$ nohup yasdb nomount &
$ yasql username/password
SQL> RESTORE DATABASE FROM '/YashanDB/backup/full_20211212181530';
RECOVER DATABASE;
ALTER DATABASE OPEN;
SELECT * FROM backuptable;
B1 B2
------------ ------------
2 3