日志文件已损坏,如何修复SQLSERVER2000数据库文件

日志文件已损坏,如何修复SQLSERVER2000数据库文件,第1张

具体方法有3种。

方法一:

第一步:

backup

log

database_name

with

no_log

或者

backup

log

database_name

with

truncate_only

--

no_log和truncate_only是在这里是同义的,随便执行哪一句都可以。

第二步:

1.收缩特定数据库的所有数据和日志文件,执行:

dbcc

shrinkdatabase

(database_name,[,target_percent])

--

database_name是要收缩的数据库名称;target_percent是数据库收缩后的数据库文件中所要的剩余可用空间百分比。

2.收缩一次一个特定数据库中的数据或日志文件,执行

dbcc

shrinkfile(file_id,[,target_size])

--

file_id是要收缩的文件的标识

(id)

号,若要获得文件

id,请使用

file_id

函数或在当前数据库中搜索

sysfiles;target_size是用兆字节表示的所要的文件大小(用整数表示)。如果没有指定,dbcc

shrinkfile

将文件大小减少到默认文件大小。两个dbcc都可以带上参数notruncate或truncateonly,具体意思查看联机帮助.

方法二:

第一步:

先备份整个数据库以备不测

第二步:

备份结束后,在query

analyzer中执行如下的语句:

exec

sp_detach_db

yourdbname,true

--卸除这个db在mssql中的注册信息

第三步:

到日志的物理文件所在的目录中去删除该日志文件或者将该日志文件移出该目录

第四步:

在query

analyzer中执行如下的语句:

exec

sp_attach_single_file_db

yourdbname,'

d:\mssql\data\yourdbname_data.mdf

'

--以单文件的方式注册该db,如果成功则mssql将自动为这个db生成一个500k的日志文件。

方法三:

1.

进入企业管理器,选中数据库,比如demo

2.

所有任务->分离数据库

3.

到数据库文件的存放目录,将muonline_log.ldf文件删除,以防万一,你可以拷出去

4.

企业管理器->附加数据库,选muonline,这个时候你会看见日志文件这项是一个叉,不要紧,继续,此时数据库就会提示你该数据库无日志是否创建一个新的,确定就是了。

5.

记得数据库重新附加后用户要重新设置一下。

如果以后,不想要它变大:

sql2000下使用:

在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。

或用sql语句:

alter

database

数据库名

set

recovery

simple

日志损坏后启数据库方法:

SQL>conn / as sysdba

Connected.

SQL>select * from v$log

--当前日志组指定在2号组上

SQL>host cp /home/1.txt /home/app/oracle/oradata/orcl/redo02.log

破坏当前的日志文件,再进行切换

SQL>alter system switch logfile

alter system switch logfile

*

ERROR at line 1:

ORA-03113: end-of-file on communication channel

实例崩溃了.因为lgwr死了,它是核心进程,一个核心进程死亡实例就会崩溃

SQL>conn sys /as sysdba

Enter password:

Connected to an idle instance.

SQL>startup

ORACLE instance started.

Total System Global Area 285212672 bytes

Fixed Size 1218992 bytes

Variable Size 121636432 bytes

Database Buffers 159383552 bytes

Redo Buffers2973696 bytes

Database mounted.

ORA-00316: log 2 of thread 1, type 0 in header is not log file

ORA-00312: online log 2 thread 1: '/home/app/oracle/oradata/orcl/redo02.log'

我们想启动数据库,但是失败了.因为我们现在的文件根本不是一个日志文件.

SQL> alter system set _allow_resetlogs_corruption=true scope=spfile

alter system set _allow_resetlogs_corruption=true scope=spfile

*

ERROR at line 1:

ORA-00911: invalid character

修改参数失败了.

SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile

加上双引号,修改成功

System altered.

SQL>shutdown abort

ORACLE instance shut down.

SQL>startup mount

ORACLE instance started.

重新启动实例使修改的参数生效

Total System Global Area 167772160 bytes

Fixed Size 1247900 bytes

Variable Size 75498852 bytes

Database Buffers 88080384 bytes

Redo Buffers2945024 bytes

Database mounted.

SQL>show parameter allow

NAME TYPE VALUE

------------------------------------ ------------------------------ -----

_allow_resetlogs_corruption booleanTRUE

SQL>alter database open resetlogs

alter database open resetlogs

*

ERROR at line 1:

ORA-01139: RESETLOGS option only valid after an incomplete database recovery

我们想以resetlogs模式打开数据库,让数据库重新建立日志,但失败了.

我们做一个假恢复,欺骗数据库.走个形式,因为我们没有备份,不可能真恢复

SQL>recover database until cancel

ORA-00279: change 819512 generated at 11/04/2011 11:44:11 needed for thread 1

ORA-00289: suggestion :

/home/app/oracle/flash_recovery_area/ORCL/archivelog/2011_11_04/o1_mf_1_7_%u_.ar

c

ORA-00280: change 819512 for thread 1 is in sequence #7

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

cancel

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below

ORA-01194: file 1 needs more recovery to be consistent

ORA-01110: data file 1: '/home/app/oracle/oradata/orcl/system01.dbf'

ORA-01112: media recovery not started

数据库相信了,可以了,但打开的时候又崩溃了.

SQL>alter database open resetlogs

alter database open resetlogs

*

ERROR at line 1:

ORA-01092: ORACLE instance terminated. Disconnection forced

SQL>conn / as sysdba

Connected to an idle instance.

SQL>startup

ORACLE instance started.

Total System Global Area 167772160 bytes

Fixed Size 1247900 bytes

Variable Size 75498852 bytes

Database Buffers 88080384 bytes

Redo Buffers2945024 bytes

Database mounted.

Database opened.

数据库好了!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9623759.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存