首先构建出测试环境,用户test_bak用户下共2张测试表T1和T2,分别插入3条测试数据并提交。以下两节分别模拟用户误删表中的记录和误删整张表的情况。
gSQL> create user test_bak identified by test_bak;
gSQL> grant all privileges to test_bak;
gSQL> commit;
gSQL> connect test_bak test_bak
gSQL> select username from user_users;
USERNAME
--------
TEST_BAK
1 row selected.
gSQL> CREATE TABLE t1 ( C1 INT, C2 DATE, C3 VARCHAR(50) );
gSQL> INSERT INTO t1 VALUES (1, sysdate, 'T1 LOGIC BACKUP TEST');
gSQL> INSERT INTO t1 VALUES (2, sysdate, 'T1 LOGIC BACKUP TEST');
gSQL> INSERT INTO t1 VALUES (3, sysdate, 'T1 LOGIC BACKUP TEST');
gSQL> COMMIT;
gSQL> CREATE TABLE t2 ( C1 INT, C2 DATE, C3 VARCHAR(50) );
gSQL> INSERT INTO t2 VALUES (4, sysdate, 'T2 LOGIC BACKUP TEST');
gSQL> INSERT INTO t2 VALUES (5, sysdate, 'T2 LOGIC BACKUP TEST');
gSQL> INSERT INTO t2 VALUES (6, sysdate, 'T2 LOGIC BACKUP TEST');
gSQL> COMMIT;
Step 1:备份用户元信息
[sunje@gs01 backup]$ pwd
/home/sunje/backup
[sunje@gs01 backup]$ sh 01_Sundb_object.sh test_bak test_bak
[TABLE&INDEX] TEST_BAK.T1 success
[TABLE&INDEX] TEST_BAK.T2 success
[sunje@gs01 backup]$ ls
01_Sundb_object.sh 02_Sundb_data.sh DDL_OBJECT_test_bak_20200210_111147
Step 2:备份表中数据
[sunje@gs01 backup]$ pwd
/home/sunje/backup
[sunje@gs01 backup]$ sh 02_Sundb_data.sh test_bak test_bak
[sunje@gs01 backup]$ ls
01_Sundb_object.sh 02_Sundb_data.sh DDL_OBJECT_test_bak_20200210_111147 gloader_20200210
[sunje@gs01 backup]$ cd gloader_20200210/sh/
[sunje@gs01 sh]$ sh export.sh
Copyright © 2010 SUNJESOFT Inc. All rights reserved.
Release Venus.3.2.5 revision(28401)
COMPLETED IN EXPORTING TABLE: TEST_BAK.T1, 3 RECORDS
Copyright © 2010 SUNJESOFT Inc. All rights reserved.
Release Venus.3.2.5 revision(28401)
COMPLETED IN EXPORTING TABLE: TEST_BAK.T2, 3 RECORDS
Step 3:模拟误删数据(表结构还存在)
删除数据前先查看T1和T2表中的数据,确认当前状态。
[sunje@gs01 backup]$ gs
gSQL> connect test_bak test_bak
gSQL> select * from t1;
C1 C2 C3
-- ---------- --------------------
1 2020-02-03 T1 LOGIC BACKUP TEST
2 2020-02-03 T1 LOGIC BACKUP TEST
3 2020-02-03 T1 LOGIC BACKUP TEST
3 rows selected.
gSQL> select * from t2;
C1 C2 C3
-- ---------- --------------------
4 2020-02-03 T2 LOGIC BACKUP TEST
5 2020-02-03 T2 LOGIC BACKUP TEST
6 2020-02-03 T2 LOGIC BACKUP TEST
3 rows selected.
对T1和T2表执行truncate操作并提交,模拟误删数据。
gSQL> truncate table t1;
Table truncated.
gSQL> commit;
Commit complete.
gSQL> truncate table t2;
Table truncated.
gSQL> commit;
Commit complete.
再次查看两张表的内容,都已经变成空表状态。
gSQL> select * from t1;
no rows selected.
gSQL> select * from t2;
no rows selected.
Step 4:导入数据
目前只是数据丢失,表结构还存在,因此将备份的数据导入即可完成恢复,无需导入用户元信息(表结构)。
[sunje@gs01 backup]$ pwd
/home/sunje/backup
[sunje@gs01 backup]$ ls
01_Sundb_object.sh 02_Sundb_data.sh DDL_OBJECT_test_bak_20200210_111147 gloader_20200210
[sunje@gs01 backup]$ cd gloader_20200210/sh/
[sunje@gs01 sh]$ sh import.sh
Copyright © 2010 SUNJESOFT Inc. All rights reserved.
Release Venus.3.2.5 revision(28401)
COMPLETED IN IMPORTING TABLE: TEST_BAK.T1, TOTAL 3 RECORDS, SUCCEEDED 3 RECORDS
Copyright © 2010 SUNJESOFT Inc. All rights reserved.
Release Venus.3.2.5 revision(28401)
COMPLETED IN IMPORTING TABLE: TEST_BAK.T2, TOTAL 3 RECORDS, SUCCEEDED 3 RECORDS
Step 5:验证数据
[sunje@gs01 sh]$ gs
gSQL> connect test_bak test_bak
gSQL> select * from t1;
C1 C2 C3
-- ---------- --------------------
1 2020-02-03 T1 LOGIC BACKUP TEST
2 2020-02-03 T1 LOGIC BACKUP TEST
3 2020-02-03 T1 LOGIC BACKUP TEST
3 rows selected.
gSQL> select * from t2;
C1 C2 C3
-- ---------- --------------------
4 2020-02-03 T2 LOGIC BACKUP TEST
5 2020-02-03 T2 LOGIC BACKUP TEST
6 2020-02-03 T2 LOGIC BACKUP TEST
3 rows selected.
T1及T2表丢失的数据已找回,每张表各3条数据,恢复完成。
最后修改时间:2023-07-17 14:35:55
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




