当前位置:首页 » 数据仓库 » restore无法启动数据库
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

restore无法启动数据库

发布时间: 2022-10-17 08:26:23

‘壹’ 数据库还原失败。

主要原因应该是数据库备份不完整或者损坏.
最好的数据库物理方法应该是单独保存mdf(主数据库文件)和ldf(事务日志文件)
然后通过企业管理器,右键附加数据库来完成还原.
LZ可以试着去下载sql
Server数据库修复软件来解决,注意版本要匹配

‘贰’ 我还原MSSQL数据库时报错:用户没有 RESTORE 数据库‘XXX’的权限。RESTORE DATABASE 操作异常终止。请问

你要确定下 要还原的数据库备份文件中的数据库,使用的是什么用户,例如使用ABC,那么你需要在你的数据库中创建ABC用户,并赋予管理员权限
然后再进行还原操作

‘叁’ restore 还原数据库 ,使用脱机方法OFFLINE,出现无法打开备份设备的异常

的写入权限。

,对于NTFS分区上的目录而言,可以给账号或组指定如下几种权限: 1.完全控制,具有对文件夹的全部操作能力。 2.修改,能够更改、添加、读取文件。 3.读取,仅能够读文件内容。 4.写入,能够向文件中添加内容。 5.读取及运行,同时包括3和4。 6.列出文件夹目录,能够查看文件夹内容,但不能访问。 7.禁止访问,不具有如何权限。
权限的设定是在我的电脑或者Windows资源管理器中完成的,具体方法如下: 1.右击NTFS分区上的文件夹,在弹出菜单上选择。 2.单击文件夹属性对话框中的选项卡,如右图。 3.选项卡上部的账号和组列表中,列出当前具有访问权限的账号和组。 4.从列表中选择需要指定权限的账号或组,在列表中指定其对该文件夹拥有的访问权限。具体方法是选择欲指定权限对应的或复选框。例如,需要允许某账号读取但不允许写入时,就分别选择和权限所对应的和复选框。将所有权限都选为时,相当于指定了拒绝访问的权限。 5.当需要指定其他账号或组的访问权限时,应先将其加入账号和组列表中,单击账号户和组列表右侧的,打开如左图所示的对话框。 6.在下拉列表框中指定账号和组所在的域或计算机。 7.从列表中选择账号或组名,单击。 8.反复将多个账号或组加入结果列表后,单击返回。

‘肆’ 如何解决sqlserver还原数据库出现提示无法打开备份设备的问题

解决办法:
在备份的硬盘上右击->属性->安全,找到Users,单击它,然后在下面的权限上全部打勾即可。

‘伍’ 在vs2010上使用RESTORE语句数据库还原时,提示数据库正在被访问,无法还原。

重启电脑,关闭浏览器

‘陆’ 如何解决无法打开数据库,恢复操作已将数据标记为suspect

释放磁盘空间并且重新运行恢复操作,按照下面的步骤收缩日志。

sp_resetstatus 关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。

为从根本上解决这样的问题,你可以按下面的操作配置SQLSERVER 2000:
a.如果不需要恢复到指定的时间点,你可以将数据库的恢复模式配置为简单,这样
UPDATE,DELETE,SELECT就不会记录日志,日志就不会增加的很大:

USE MASTER
GO

ALTER DATABASE DB_NAME SET RECOVERY SIMPLE

b.如果你的恢复模式是全部,你一定要配置日志字段收缩:

USE MASTER
GO

sp_dboption 'databasename','trunc. log on chkpt.',true
sp_dboption 'databasename','autoshrink',true

c.通过每日备份将日志收缩:
BACKUP DATABASE DATABASE_NAME TO BACKUP_DEVICES
BACKUP LOG DATABASE_NAME TO LOG_DEVICES
OR
BACKUP LOG DATABASE_NAME with truncate_only

**检查日志的容量:DBCC SQLPERF (LOGSPACE) 这时日志并没有收缩!

d.每天在备份数据库完成之后,重新启动MS SQLSERVER SERVICE.
USE DATABASE_NAME
go
DBCC SHRINKFILE(2,truncateonly)

**检查日志的容量:DBCC SQLPERF (LOGSPACE) 这时日志已经收缩!

e.手动快速收缩日志:
/ *run below script,you will shrink you database log files
immediately, in my experience,you need to run the script for 3 or
4 minutes before stopping it manually */

use databasename
dbcc shrinkfile(2,notruncate)
dbcc shrinkfile(2,truncateonly)
create table t1(char1 char(4000))
go
declare @i int
select @i=0
while(1=1)
begin
while(@i<100)
begin
INSERT INTO T1 VALUES ('A')
SELECT @I=@I+1
END
TRUNCATE table T1
BACKUP LOG youdatabasename with truncate_only
end
GO

‘柒’ 如何解决无法打开数据库,恢复操作已将数据标记为suspect。

5. 释放磁盘空间并且重新运行恢复操作,按照下面的步骤收缩日志。

sp_resetstatus 关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。

为从根本上解决这样的问题,你可以按下面的操作配置SQLSERVER 2000:
a.如果不需要恢复到指定的时间点,你可以将数据库的恢复模式配置为简单,这样
UPDATE,DELETE,SELECT就不会记录日志,日志就不会增加的很大:

USE MASTER
GO

ALTER DATABASE DB_NAME SET RECOVERY SIMPLE

b.如果你的恢复模式是全部,你一定要配置日志字段收缩:

USE MASTER
GO

sp_dboption 'databasename','trunc. log on chkpt.',true
sp_dboption 'databasename','autoshrink',true

c.通过每日备份将日志收缩:
BACKUP DATABASE DATABASE_NAME TO BACKUP_DEVICES
BACKUP LOG DATABASE_NAME TO LOG_DEVICES
OR
BACKUP LOG DATABASE_NAME with truncate_only

**检查日志的容量:DBCC SQLPERF (LOGSPACE) 这时日志并没有收缩!

d.每天在备份数据库完成之后,重新启动MS SQLSERVER SERVICE.
USE DATABASE_NAME
go
DBCC SHRINKFILE(2,truncateonly)

**检查日志的容量:DBCC SQLPERF (LOGSPACE) 这时日志已经收缩!

e.手动快速收缩日志:
/ *run below script,you will shrink you database log files
immediately, in my experience,you need to run the script for 3 or
4 minutes before stopping it manually */

use databasename
dbcc shrinkfile(2,notruncate)
dbcc shrinkfile(2,truncateonly)
create table t1(char1 char(4000))
go
declare @i int
select @i=0
while(1=1)
begin
while(@i<100)
begin
INSERT INTO T1 VALUES ('A')
SELECT @I=@I+1
END
TRUNCATE table T1
BACKUP LOG youdatabasename with truncate_only
end
GO

注意 只有在您的主要支持提供者指导下或有疑难解答建议的做法时,才可以使用
sp_resetstatus。否则,可能会损坏数据库。

由于该过程修改了系统表,系统管理员必须在运行 sp_resetstatus这个过程前,启用系统表更新。要
启 用更新,使用下面的过程:

USE master
GO
sp_configure 'allow updates', 1
GO
RECONFIGURE WITH OVERRIDE
GO
过程创建后,立即禁用系统表更新:

sp_configure 'allow updates', 0
GO
RECONFIGURE WITH OVERRIDE
GO
只有系统管理员才能执行 sp_resetstatus。执行该过程后,立即关闭 SQL Server。

‘捌’ 根据一些经典资料用rman的restore恢复oracle数据库,数据没有任何变化!求救

我觉得原因有两个,一个是没归档当前的日志,另外一个是rman根本就没有执行恢复。
第一个原因:当向表中插入数据后,虽然commit了,但是一些文件依然有可能没有写入到数据文件,而存在了redo中,而redo没有归档的情况下,也是恢复不了的。
第二个原因:你的表空间(假定为users),根本就没有损坏,当你restore时,就不会执行恢复。

下面是我做的测试:
SQL> insert into test values(2);
已创建 1 行。

SQL> insert into test values(1);
已创建 1 行。

SQL> insert into test values(3);
已创建 1 行。

SQL> commit;
提交完成。

SQL> select * from test;

PID
----------
3
1
2

SQL> alter database switch logfile;
系统已更改。
SQL> alter database switch logfile;
系统已更改。

RMAN> run{
2> allocate channel d1 type disk;
3> backup tag 'tsuser' format 'd:\backup\qqqqqq_%U'
4> tablespace users;
5> release channel d1;
6> }

分配的通道: d1
通道 d1: sid=15 devtype=DISK

启动 backup 于 29-5月 -08
通道 d1: 正在启动 full 数据文件备份集
通道 d1: 正在指定备份集中的数据文件
输入数据文件 fno=00009 name=D:\ORACLE\ORADATA\ORCL\USERS01.DBF
通道 d1: 正在启动段 1 于 29-5月 -08
通道 d1: 已完成段 1 于 29-5月 -08
段 handle=D:\BACKUP\QQQQQQ_0IJHJDV0_1_1 comment=NONE
通道 d1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 29-5月 -08

启动 Control File and SPFILE Autobackup 于 29-5月 -08
段 handle=D:\ORACLE\ORA92\DATABASE\C-1182576868-20080529-05 comment=NONE
完成 Control File and SPFILE Autobackup 于 29-5月 -08

释放的通道: d1

RMAN>

然后再在表中插入记录

SQL> insert into test values(4);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from test;

PID
----------
3
1
2
4

SQL> alter system switch logfile;

系统已更改。

SQL> alter system switch logfile;

系统已更改。

然后关闭数据库模拟文件丢失
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

SQL> host del D:\oracle\oradata\orcl\users01.dbf

启动数据库,会报错
SQL> startup
ORACLE 例程已经启动。

Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 9 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 9: 'D:\ORACLE\ORADATA\ORCL\USERS01.DBF'

这时把datafile 9 脱机,然后打开数据库

SQL> alter database datafile 9 offline;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL>

恢复表空间
RMAN> run{
2> allocate channel d1 type disk;
3> restore datafile 9;
4> recover datafile 9;
5> sql 'alter database datafile 9 online';
6> release channel d1 ;
7> }

分配的通道: d1
通道 d1: sid=15 devtype=DISK

启动 restore 于 29-5月 -08

通道 d1: 正在开始恢复数据文件备份集
通道 d1: 正在指定从备份集恢复的数据文件
正将数据文件00009恢复到D:\ORACLE\ORADATA\ORCL\USERS01.DBF
通道 d1: 已恢复备份段 1
段 handle=D:\BACKUP\QQQQQQ_0IJHJDV0_1_1 tag=TSUSER params=NULL
通道 d1: 恢复完成
完成 restore 于 29-5月 -08

启动 recover 于 29-5月 -08

正在开始介质的恢复
完成介质的恢复

完成 recover 于 29-5月 -08

sql 语句: alter database datafile 9 online

释放的通道: d1

RMAN>

然后检查数据完整性

SQL> select * from test;

PID
----------
3
1
2
4

SQL>

‘玖’ 用友软件输出帐套的时候显示无法打开数据库 该数据库正处于还原操作中途

这个是数据库的问题,也只是其中一个账套出现了问题,其他的账套应该没有问题的,需要到数据库中检查下为什么是还原状态,修复这个数据库到正常状态,就可以了

‘拾’ restore database 报错误

你要确定下 要还原的数据库备份文件中的数据库,使用的是什么用户,例如使用ABC,那么你需要在你的数据库中创建ABC用户,并赋予管理员权限
然后再进行还原操作
求采纳为满意回答。