当前位置:网站首页>DM8 database recovery based on point in time

DM8 database recovery based on point in time

2022-07-04 08:11:00 Song Xiaorong

In the production environment , When we delete important data by mistake , You can use flashback queries to retrieve the original data , But when the table is deleted or the database does not turn on the flashback function , You cannot use flash back to get the original table data ; At this point, we can use point in time recovery based on archived logs ( Incomplete recovery ) To recover data or tables .

Point in time based recovery

01

Backup database

The premise of database failure restoration is to have backup files , Here create an original database backup file , have access to DMRMAN Offline backup files , It can also be an online backup file . Take online backup as an example ( Before online backup , You need to ensure that the database has been opened and configured for archiving ). Use SYSDBA User login database , Execute the following statement to back up the database :

SQL> backup database full backupset 'DMTESTFULL_ONLINE0723';

02

Manufacturing data , Generate archive logs

establish test user , And in test The user creates a table t_table And insert data , This process generates archive logs .

SQL> create user test IDENTIFIED by dameng123 DEFAULT TABLESPACE main;SQL> create table test.t_table as select * from SYSOBJECTS;

03

Analog fault , Delete table

Analog fault , Delete test The user is shown in the following table t_table. And record the system time when deleting the table .

04

Using backup and archive logs will

The database is restored to the specified point in time

t_table Table deleted , To retrieve the data of this table , The database can only be restored to the moment before the table is deleted . The recovery steps are as follows :

① Restore the database with backup files

Execute the following command to stop the database :

[[email protected] bin]$ DmServiceDMTESTSERVER stop

Use steps 1 The backup file of restores the database to the state at the time of backup :

RMAN> restore database '/dm8/data/DMTEST/dm.ini' from backupset 'DMTESTFULL_ONLINE0723';

② Restore the database to a specified point in time using archived logs

Execute the following command , Appoint with archivedir Parameter use archive recovery , And designate until time Parameter restore the database to the time before deleting the table , By step 3 hear , We'll probably be here 2020-07-23 10:48:53 The table data was deleted at the previous time , Restore the database to 2020-07-23 10:48:40 Time for ( The more accurate the time, the better , It cannot be estimated accurately ).

RMAN> recover database '/dm8/data/DMTEST/dm.ini' with archivedir '/dm8/data/DMTEST/arch' until time '2020-07-23 10:48:40';

As can be seen from the screenshot below , Archive recovery is not 100%( Because it is incomplete recovery , Not all archived logs have been completely redone ), Just restore to 93%.

③ Update database magic number

Execute the following command to update the magic number of the database db_magic Information .

RMAN> recover database '/dm8/data/DMTEST/dm.ini' update db_magic;

here , Database recovery complete .

perform DmServiceDMTESTSERVER start Start database , Connect to database query test Under the user t_table Table data , You can see t_test Table restored .

summary :

Use RECOVER Command to restore the database , It can be backup set based recovery , It can also be the recovery of local archived logs . Point in time based recovery is one of the ways to recover using local archived logs .

In addition to the specified point in time , You can also specify LSN Resume .DM Each of them REDO Each log record corresponds to a unique LSN value , Appoint LSN Value later , The database will be accurately restored to produce this LSN The state of the point in time . be based on LSN The recovery of is to use UNTIL LSN The parameter is restored to the specified LSN The state of the point in time .

Based on point in time or LSN All recoveries are incomplete , Restore to the latest state based on archived logs is full recovery .

In the actual production environment , If you just delete a table or data , It is recommended to restore the database to another machine ( Target database ) On , Then copy the archive log of the production environment to restore the target database to the specified point in time , To retrieve table data without affecting the generation environment , Reduce the impact on the generation environment .

原网站

版权声明
本文为[Song Xiaorong]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202141504386934.html