DM不停机找回丢失表数据

DM不停机找回丢失表数据
一、创建测试表并创建备份
创建表插入数据:
[dmdba@dm001 dmdbms]$ disql test/qweqwe123

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 14.585(毫秒)
disql V8.1.0.147-Build(2019.03.27-104581)ENT
SQL> create table test(id int,name varchar(20));
操作已执行
已用时间: 35.804(毫秒). 执行号:155.
SQL> insert into test values(1,‘abc’);
影响行数 1

已用时间: 0.381(毫秒). 执行号:156.
SQL> insert into test values(2,‘qwe’);
影响行数 1

已用时间: 0.466(毫秒). 执行号:157.
SQL> insert into test values(3,‘cde’);
影响行数 1

已用时间: 0.450(毫秒). 执行号:158.
SQL> commit ;
操作已执行
已用时间: 26.801(毫秒). 执行号:159.

进行全库备份:
SQL> backup database full to “DB_DAMENG” backupset ‘DB_DAMENG’;
操作已执行
已用时间: 00:00:04.142. 执行号:160.
二、记录当前LSN,删除表中数据,并新增部分数据
查询当前LSN:
SQL> select file_lsn from v$rlog;

行号 FILE_LSN


1 59775

已用时间: 0.585(毫秒). 执行号:161.

TRUNCATE掉表中数据:
SQL> truncate table test;
操作已执行
已用时间: 3.067(毫秒). 执行号:162.

表中新增数据:
已用时间: 3.067(毫秒). 执行号:162.
SQL> insert into test values(4,‘yhn’);
影响行数 1

已用时间: 0.506(毫秒). 执行号:163.
SQL> insert into test values(5,‘tgb’);
影响行数 1

已用时间: 0.455(毫秒). 执行号:164.
SQL> commit;
操作已执行
已用时间: 20.069(毫秒). 执行号:165.

查询test表剩余数据:
SQL> select * from test;

行号 ID NAME


1 4 yhn
2 5 tgb

已用时间: 0.584(毫秒). 执行号:166.

三、利用备份归档恢复一个新的数据库,数据恢复到表数据被删除前
创建一个新数据库,相关参数与源库相同:

[dmdba@dm001 bin]$ ./dminit path=/home/dmdba/data PAGE_SIZE=8 CASE_SENSITIVE=1 CHARSET=1 LENGTH_IN_CHAR=0
initdb V8.1.0.147-Build(2019.03.27-104581)ENT
db version: 0x7000a
file dm.key not found, use default license!
License will expire on 2020-06-10

log file path: /home/dmdba/data/DAMENG/DAMENG01.log

log file path: /home/dmdba/data/DAMENG/DAMENG02.log

write to dir [/home/dmdba/data/DAMENG].
create dm database success.

恢复全备:
RMAN> RESTORE DATABASE ‘/home/dmdba/data/DAMENG/dm.ini’ from backupset ‘/home/dmdba/dmdbms/data/DAMENG/bak/DB_DAMENG’;
RESTORE DATABASE ‘/home/dmdba/data/DAMENG/dm.ini’ from backupset ‘/home/dmdba/dmdbms/data/DAMENG/bak/DB_DAMENG’;
RESTORE DATABASE CHECK…
total 0 packages processed…
RESTORE DATABASE,dbf collect…
RESTORE DATABASE,dbf refresh …
RESTORE BACKUPSET [/home/dmdba/dmdbms/data/DAMENG/bak/DB_DAMENG] START…
total 5 packages processed…
total 9 packages processed…
RESTORE DATABASE,UPDATE ctl file…
RESTORE DATABASE,REBUILD key file…
RESTORE DATABASE,CHECK db info…
RESTORE DATABASE,UPDATE db info…
total 9 packages processed…
total 9 packages processed!
CMD END.CODE:[0]
restore successfully.
time used: 28756.644(ms)

利用归档将数据库恢复到表数据被删除前:
RMAN> RECOVER DATABASE ‘/home/dmdba/data/DAMENG/dm.ini’ with archivedir ‘/home/dmdba/dmdbms/arch’ until lsn 59775;
RECOVER DATABASE ‘/home/dmdba/data/DAMENG/dm.ini’ with archivedir ‘/home/dmdba/dmdbms/arch’ until lsn 59775;
EP[0] max_lsn: 59733
Recover from archive log finished, time used:0.135s.
EP[0]'s begin_lsn[59775] >= end_lsn[59772]
recover successfully!
time used: 327.245(ms)

更新db_magic
RMAN> RECOVER DATABASE ‘/home/dmdba/data/DAMENG/dm.ini’ update db_magic;
RECOVER DATABASE ‘/home/dmdba/data/DAMENG/dm.ini’ update db_magic;
EP[0] max_lsn: 59775
EP[0]'s begin_lsn[59775] >= end_lsn[59772]
recover successfully!
time used: 950.976(ms)
四、启动恢复完成的数据库,逻辑导出所需表数据
启动数据库:
[dmdba@dm001 bin]$ ./dmserver /home/dmdba/data/DAMENG/dm.ini
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8.1.0.147-Build(2019.03.27-104581)ENT startup…
License will expire on 2020-06-10
ckpt lsn: 59775
ndct db load finished
ndct fill fast pool finished
iid page’s trxid[4907]
NEXT TRX ID = 4908
pseg_collect_items, collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages
pseg_process_collect_items end, 0 active trx, 0 active pages, 0 committed trx, 0 committed pages
total 0 active crash trx, pseg_crash_trx_rollback begin …
pseg_crash_trx_rollback end
purg2_crash_cmt_trx end, total 0 page purged
set EP[0]'s pseg state to inactive
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback begin …
pseg_crash_trx_rollback end
SYSTEM IS READY.

查询当前数据库中test表数据:
SQL> select * from test.test;

行号 ID NAME


1 1 abc
2 2 qwe
3 3 cde

已用时间: 5.448(毫秒). 执行号:54.

Dexp导出test表数据:
[dmdba@dm001 bin]$ ./dexp SYSDBA/qweqwe123@192.168.3.88:5237 DIRECTORY=/home/dmdba/ FILE=test.dmp TABLES=TEST.TEST ROWS=y
dexp V8.1.0.147-Build(2019.03.27-104581)ENT

----- [2020-05-27 17:45:02]导出表:TEST -----

导出模式下的对象权限…

表TEST导出结束,共导出 3 行数据

整个导出过程共花费 0.088 s

成功终止导出, 没有出现警告

五、导入test表被删除的数据
源库中导入新库中导出的test表数据:
[dmdba@dm001 bin]$ ./dimp SYSDBA/qweqwe123 DIRECTORY=/home/dmdba/ FILE=test.dmp TABLES=TEST.TEST ROWS=y ignore=y
dimp V8.1.0.147-Build(2019.03.27-104581)ENT

----- [2020-05-27 17:53:10]导入表:TEST -----

导入表 TEST 的数据:3 行被处理

整个导入过程共花费 0.041 s

成功终止导入, 没有出现警告

查询test表数据:

SQL> select * from test;

行号 ID NAME


1 4 yhn
2 5 tgb
3 1 abc
4 2 qwe
5 3 cde

已用时间: 0.179(毫秒). 执行号:205.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值