怎样处理误删sys下的表无法启动数据库? (误删sys下的表无法启动数据库)

在日常操作中,数据表的误删除是难以避免的情况。对于Oracle数据库来说,如果误删除了sys下的表,将会导致数据库无法启动,从而影响到整个应用系统的正常工作。因此,处理误删sys下的表无法启动数据库的问题是十分重要的。

在具体操作中,如果发现了sys下的表被误删后,需要立即采取以下措施进行处理:

1. 快照恢复

可以通过Oracle自带的快照功能来还原表。具体步骤如下:

– 需要在备份时开启快照功能,这需要在RMAN中指定backup backupset … format=/snapshot;

– 然后,需要找到最近的一个快照,通过快照还原表。如果只有一个快照,可以通过以下命令还原:

$ restore table sys.table_name until sequence=;

– 如果存在多个快照,可以通过以下命令查询快照号并还原:

$ list snapshot of database;

$ restore table sys.table_name until snapshot ;

2. 导出表数据

如果没有开启快照功能或快照恢复失败,可以通过表数据的导出和导入来恢复表。具体步骤如下:

– 需要在其他相同版本的数据库上创建同名表(表结构必须完全一致),然后将其导出:

$ exp sys/xx tables=sys.table_name file=sys_table_name.dmp

– 然后,将导出的表数据导入到目标数据库中:

$ imp sys/xx tables=sys.table_name file=sys_table_name.dmp

3. 使用Data Pump

Data Pump是Oracle的一种数据导入导出工具。它可以将表空间、用户和数据表等导出到文件中,然后在另一个数据库中导入。具体步骤如下:

– 需要在目标数据库上创建同名的表,并用Data Pump将源数据库的表导出:

$ expdp sys/xx tables=sys.table_name dumpfile=sys_table_name.dmp

– 然后,将导出的表数据导入到目标数据库中:

$ impdp sys/xx tables=sys.table_name dumpfile=sys_table_name.dmp

除了以上三种方法,还有其他一些方法可用于处理误删sys下的表无法启动数据库的问题,例如Oracle Flashback、Oracle LogMiner等。

相关问题拓展阅读:

数据库被删除怎么恢复

恢复步骤:

1、运行EasyRecovery。

2、选择“DeletedRecovery”。

3、选择数据库文件所在的驱租橡动器,在“File Filter”冲备中输入*.mdf|*.ldf,选择“Next”。

4、在左侧窗口会列出被删除的数据库文件,选择所要恢复的数据库文件,选择“Next”。

5、在“Recover to Local Drive”中选择恢复后的文件存放的路径,要选择与原数据库文件不同的路径,选择“Next”。

6、文件被恢复后,将恢复的文件复制到原数据库文件位置,并在企业管理器通过附加数据库,将恢复的文件恢复到SQL Server中。

注:如果删除的数据库文件所有的存储区域被写过了,就无法恢复了,所以删除与恢复的时间间隔越短越好弊判旁。

sql

server中误删除数据的恢复本来不是件难事,从事务日志恢复即可。但是,这个恢复需要有两个前提条件:

1.

至少有一个误删除之前的数据库完全备份。

2.

数据库的恢复模式(recovery

mode)是“完整(full)”。

针对这两个前提条件,会有三种情况:

情况一、如果这两个前提条件都存在,通过sql语句搭森御只需三步就能恢复(参考文章),无需借助第三方工具。

a)

备份当前数据库的事务日志:backup

log

to

disk=

n’备份文件名’

with

norecovery

b)

恢复一个误删除之前的完全备份:restore

database

from

disk

=

n’完全备份文件名’

with

norecovery,

replace

c)

将数据库恢复至误删除之前的时间点:restore

log

from

disk

=

n’之一步的日志备份文春搜件名’

with

stopat

=

n’误删除之前的时间点’

,

recovery

情况二、如果第1个前提条件不存在,第2个前提条件存在,需要借助第三方工具。

情况三、如果第2个前提条件不存在,无法恢复。所以,一定要将数据库恢复模式设置为“完整(full)”。

我现在面临的是第二种情况,需要找第三方工具。

开始找的是log

explorer

for

sql

server,不支持sql

server

2023。

后来找的是sql

log

rescue,也不知岩支持sql

server

2023。

接着找到的是systools

sql

recovery,支持sql

server

2023,但需要购买,demo版并没有数据恢复功能。

最终在officerecovery.com上找到recovery

for

sql

server,虽然也是商业软件,需要购买,但demo版可以恢复数据,只要数据库文件不超过24gb。幸好朋友的数据库文件不大,用它完成了误删除数据的恢复。

下面分享一下用recovery

for

sql

server进行恢复的操作步骤:

1.

运行recovery

for

sql

server

2.

点击菜单中的

file

>

recover,选择要恢复的数据库的数据文件(.mdf)

3.

next

>

next,进入

recovery

configuration

界面,选择custom(选择了custom才可以选择从日志中恢复误删除的数据)。

4.

next

进入

recovery

options

窗口,选中

search

for

deleted

records,并选择要恢复的数据库的日志文件路径(log

file

path)。

5.

next

并选择目标文件夹(destination

folder),用于存放恢复过程中生成的sql语句与bat文件。

6.

点击start,开始恢复操作(在上一步选择的目标文件夹中生成相应的sql文件与bat文件),然后,出现

sql

server

database

creation

utility

窗口。

7.

next,选择被恢复数据存放的目标数据库。

8.

next,

选择

import

availiable

data

from

both

database

and

log

files

9.

next,

next,

然后就完成数据的恢复!

误删sys下的表无法启动数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于误删sys下的表无法启动数据库,怎样处理误删sys下的表无法启动数据库?,数据库被删除怎么恢复的信息别忘了在本站进行查找喔。


数据运维技术 » 怎样处理误删sys下的表无法启动数据库? (误删sys下的表无法启动数据库)