DM不停機找回丟失表資料

2021-10-09 19:01:53 字數 4672 閱讀 4488

dm不停機找回丟失表資料

一、建立測試表並建立備份

建立表插入資料:

[dmdba@dm001 dmdbms]$ disql test/qweqwe123

行號 file_lsn

1 59775

查詢test表剩餘資料:

sql> select * from test;

行號 id name

1 4 yhn

2 5 tgb

[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

dexp匯出test表資料:

[dmdba@dm001 bin]$ ./dexp sysdba/[email protected]: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

Oracle資料檔案丟失,不停機恢復

歸檔模式 僅供參考 手誤刪除乙個資料檔案,此時資料庫還能正常使用,相關表也能查詢 修改資料 在修復資料檔案的過程中會影響與此表空間相關表的查詢等操作 1.根據資料檔名找到檔案號 2.使資料檔案offline alter database datafile 43 offline 3.進入rman恢復資...

MYSQL分庫分表和不停機更改表結構

在mysql分庫分表中我們一般是基於資料量比較大的時間對mysql資料庫一種優化的做法,下面我簡單的介紹一下mysql分表與分庫的簡單做法。1 分庫分表 很明顯,乙個主表 也就是很重要的表,例如使用者表 無限制的增長勢必嚴重影響效能,分庫與分表是乙個很不錯的解決途徑,也就是效能優化途徑,現在的案例是...

不停機公升級ORACLE資料庫的方法簡介

如果你需要安裝的資料庫伺服器比較多,使用圖形化方式安裝資料庫軟體的速度還是很慢,而且也比較麻煩。oracle 11g 提供了clone安裝的方法。clone安裝的方法就是複製已經安裝好的乙個oracle到另乙個服務上。步驟如下 使用正常方法在伺服器a上安裝好oracle。將a機器上的 oracle ...