#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
pdf-btn 下载文档
copy-btn 复制链接