第一篇:MSSql2008数据库恢复过程记录
信息平台采用RoseHA8.5 for SQL Server 2008双机热备的存储解决方案,在应用过程中,由于roseHa的切换界面简易,操作简单,适用于但应用层的管理,有时候双机切换会造成数据丢失甚至数据库损坏。
最常见的是Msdb损坏出现如下错误
通过百度、google搜索无法打开数据库 'msdb'。恢复操作已将该数据库标记为 SUSPECT。有关详细信息,请参阅 SQL Server 错误日志。(Microsoft SQL Server,错误: 926)解决方式
第一种:把其他电脑中中的msdb数据库的mdf和ldf文件拷贝到自己的目录中,但是这种方法的缺点是:造成一部分数据丢失,尤其是代理的相关作业丢失。msdb是系统数据库,里面记录调度警报和作业以及操作员的信息,如果没有用到这些内容,直接用备份恢复就可以的。在单用户模式下,停掉SQL server服务,在另一台机装同版本sqlserver,把msdb覆盖过来。第二种:执行下面的SQL命令(在单用户模式修复数据库)USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名' Go
sp_dboption '置疑的数据库名', 'single user', 'true'
Go
DBCC CHECKDB('置疑的数据库名')
Go
update sysdatabases set status =28 where name='置疑的数据库名' Go
sp_configure 'allow updates', 0 reconfigure with override
Go
sp_dboption '置疑的数据库名', 'single user', 'false'
Go
其中置疑的数据库名就是有问题的数据库 操作后:
经过测试只有结合两种方案来解决。
首先是停止生产运行的sql服务,拷贝启动正常的MSdb库到生产环境中替换损坏的库,启动生产环境Sql服务,运行上述T-Sql修复msdb数据库执行命令。
第三步分别执行下面T-sql 此步骤同样能解决装完SQL Server后修改计算机名不能执行代理作业
use master go select @@servername select serverproperty('servername')如果这两个结果不一致,说明机器改过名字
--要修复此问题
--执行下面的语句,完成后重新启动SQL服务
if serverproperty('servername')<> @@servername begin declare @server sysname set @server = @@servername exec sp_dropserver @server = @server set @server = cast(serverproperty('servername')as sysname)exec sp_addserver @server = @server , @local = 'LOCAL' end 最后重新启动服务
第四步,新建维护计划(备份数据库)测试是否能运行。运行前请检查Sql代理服务是否启动。如果不能运行 执行下面T-sql SELECT [subsystem] ,[subsystem_dll]
FROM[msdb].[dbo].[syssubsystems] GO
查看原来是配置里的指定Dll文件路径不对,一般共享存储无D盘,一般是E盘
执行命令替换D:为E: Update [msdb].[dbo].[syssubsystems] set subsystem_dll=replac(subsystem_dll,’D:’,’E:’);
如果生产环境数据库实例名跟拷贝的msdb数据库实例名不一致 请执行
Update[msdb].[dbo].[syssubsystems]setsubsystem_dll=replace(subsystem_dll,'MSSQLSERVER','XXServer')'MSSQLSERVER'为拷贝msdb的数据库实例名 'XXServer'为生产环境的数据库实例名
重启生产环境Sql服务和代理服务即可。
第二篇:MSSQL 2005 数据库变成可疑状态处理办法
MSSQL 2005 数据库变成可疑状态处理办法
发现黄色页面,日志报错,无法链接,打开SQL一看,数据库变成了“三角惊叹号+数据库名+(可疑)”
1、修改数据库为紧急模式
ALTER DATABASE 数据库名 SET EMERGENCY
2、使数据库变为单用户模式
ALTER DATABASE 数据库名 SET SINGLE_USER
3、修正数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对象不正确。当您指定“REPAIR_ALLOW_DATA_LOSS”作为DBCC CHECKDB命令参数,该程序将检查和修正报告的不正确。但是,这些修正可能会导致一些数据丢失。
DBCC CheckDB(数据库名 , REPAIR_ALLOW_DATA_LOSS)
4、使数据库变回为多用户模式
ALTER DATABASE 数据库名 SET MULTI_USER
第三篇:虚拟主机中MSSQL和Access数据库数据传输简单总结
虚拟主机中MSSQL和Access数据库数据传输简单总结
所谓的数据传输,其实是指SQLServer访问Access间的数据。
由于历史的原因,客户以前的数据很多都是在存入在文本数据库中,如Acess现在系统升级及数据库服务器如SQLServer后,经常需要访问文本数据库中的数据,所以就会产生这样的需求。
要完成标题的需要,在SQLServer中是一件非常简单的事情。
通常的可以有3种方式:
1、BCP
2、分布式查询.分别以查、增、删、改作为简单的例子: 下面,直接以T-SQL的形式表现出来。
一、SQLServer和Access1、查询Access中数据的方法:
select * from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:db2.mdb','select * from serv_user')
或
select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source=“c:DB2.mdb”;User ID=Admin;Password=')...serv_user2、从SQLServer向Access写数据:
insert into OpenRowSet('microsoft.jet.oledb.4.0',';database=c:db2.mdb','select * from Accee表')select * from SQLServer表
或用BCP
master..xp_cmdshell'bcp “serv-htjs.dbo.serv_user” out “c:db3.mdb”-c-q-S“.”-U“sa”-P“sa”' 上面的区别主要是:OpenRowSet需要mdb和表存在,BCP会在不存在的时候生成该mdb3、从Access向SQLServer写数据:有了上面的基础,这个就很简单了
insert into SQLServer表 select * from
OpenRowSet('microsoft.jet.oledb.4.0',';database=c:db2.mdb','select * from Accee表')
或用BCP
master..xp_cmdshell'bcp “serv-htjs.dbo.serv_user” in “c:db3.mdb”-c-q-S“.”-U“sa”-P“sa”'
4、删除Access数据:
delete from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:db2.mdb','select * from serv_user')
where lock=05、修改Access数据:
update OpenRowSet('microsoft.jet.oledb.4.0',';database=c:db2.mdb','select * from serv_user')set lock=1
第四篇:个人所得税备份恢复数据库步骤
1.先找到这三个文件
2.备份这三个文件到桌面或指定盘
●具体操作如下
一、数据备份的方法:
请您右击桌面桌面金税三期个人所得税图标→→属性→→“打开文件位置”(Win7系统)/“查找目标”(XP系统),1、打开Data文件夹,把里面的AppData.db、EPAccount.db复制粘贴到桌面上;
2、左上角“后退”按钮点击一下,打开AppModules→→GRSDS→→Data,把里面的Data.db复制粘贴到桌面上。
3、当前目录下如存在“XX.db-wal”和“XX.db-shm”两个扩展名文件,需同时与“XX.db”一起备份; 例如:Data.db-wal和Data.db-shm,要与Data.db一起复制拷贝、压缩打包。
温馨提醒:请将复制的文件妥善保管,以备后期恢复数据库使用。
二、数据恢复的方法:
步骤一:请先关闭个税软件,右击桌面金税三期个人所得税图标→→“属性”→→“打开文件位置”(Win7系统)/“查找目标”(XP系统)
1、打开“data文件夹”,将之前备份的appdata.db和epaccount.db复制并替换进来;
2、左上角“后退”按钮点击一下,打开“AppModules文件夹”→→“GRSDS文件夹”→→打开“data文件夹”,将之前备份的Data.db复制并替换进来,数据库就恢复好了。
3、恢复操作前,请确认当前目录是否存在“XX.db-wal”和“XX.db-shm”两个扩展名文件,如存在请先删除此文件,然后再进行数据库恢复;
例如:先删除Data.db-wal和Data.db-shm两个文件,再恢复Data.db。
温馨提醒:数据只能覆盖,不能合并;您在恢复数据前,请先确认新软件中没有报税的数据再操作。
第五篇:Oracle数据库备份和恢复论文
摘要:本文从Oracle的体系结构开始,由原理到实践,论述了Oracle数据库备份的方式和策略。包括IMp/EXp,RMAN,OS备份等。
Abstract: Starting from the architecture of ORACLE, this paper discusses the backup method and strategy of database Oracle, including IMp/EXp, pMAN and OS theoretically and practically.关键字:Oracle, 备份, 恢复, RMAN
Keywords: Oracle;Backup;Restoration;RMAN
概述
在大型软件运行系统中,存在着很多备份策略,如RAID技术,CLUSTER技术等等。很多时候,这些系统的备份就能够解决数据库备份的问题。但是,这种备份成本很高。同时,硬件的备份有时根本满足不了现实的需要,如果用户不小心误删了一个表,又想恢复的时候,数据库的备份就变的重要了。
Introduction: In the running system of some big software, there exist many backup strategies such as RAID technology and CLUSTER technology etc.In most cases, these system backup strategies can fulfill the database backup.However the cost is rather high.At the same time, hardware backup sometimes is far from the actual requirement.The database backup becomes very important when a table is deleted by accident and needs to be restored.Oracle的运行方式
Oracle数据库有两种运行方式:一是归档方式(ARCHIVELOG),归档方式的目的是当数据库发生故障时最大限度恢复数据库,可以保证不丢失任何已提交的数据;二是不归档方式(NOARCHIVELOG),只能恢复数据库到最近的回收点(冷备份或是逻辑备份)。根据数据库的高可用性和用户可承受丢失的工作量的多少,对于实时性要求高的数据库,强烈要求采用为归档方式;不归档方式只用在那些开发和调试的数据库等。
如何改变数据库的运行方式,在创建数据库时,作为创建数据库的一部分,就决定了数据库初始的存档方式。一般情况下为NOARCHIVELOG方式。当数据库创建好以后,根据我们的需要把需要运行在归档方式的数据库改成ARCHIVELOG方式。操作如下。
1.关闭数据库,备份已有的数据,改变数据库的运行方式是对数据库的重要改动,所以要对数据库做备份,对可能出现的问题作出保护。
2.修改初试化参数,使能自动存档。
修改(添加)初始化文件init[SID].ora参数:
log_archive_start=true #启动自动归档
log_archive_format=ARC%T%S.arc #归档文件格式
log_archive_dest=/archdir/arch #归档路径
在8i中,可以最多有五个归档路径,并可以归档到其它服务器,如备用数据库(standby database)服务器。
3.启动Instance到Mount状态,即加载数据库但不打开数据库。
$> svrmgrl
SVRMGRL> connect internal
SVRMGRL> startup mount
SVRMGRL> alter database archivelog;// 使数据库运行在归档方式
SVRMGRL> alter database open;
Oracle的备份方案
按照备份的方式,可以分为逻辑备份、冷备份(脱机备份)、热备份(联机备份),其中冷备份与热备份又可以合称为物理备份。按照备份的工具,可以分为EXp/IMp备份、操作系统备份、RMAN、第三方工具备份,如VERITAS等。下面分别介绍Oracle本身提供的几种备份工具和操作。
1.EXp/IMp备份(逻辑备份)
EXp/IMp属于逻辑备份的范畴,逻辑备份是指只备份数据库中的数据但不记录数据物理位置的一种备份。导出为数据库作一个二进制的备份,并且这个备份只能由其姊妹程序imp(import)来读取。具体的使用方法如下。(因为EXp和IMp使用上参数基本相同,所以只以EXp为例。)
EXp的命令格式和参数
格式:KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
例程: EXp SCOTT/TIGER GRANTS=Y TABLES=(EMp,DEpT,MGR)
USERID 必须是命令行中的第一个参数
关键字 说明(默认)关键字 说明(默认)
USERID 用户名/口令 FULL 导出整个文件(N)
BUFFER 数据缓冲区的大小 OWNER 所有者用户名列表
FILE 输出文件(EXpDAT.DMp)TABLES 表名列表
COMpRESS 导入一个范围(Y)RECORDLENGTH IO记录的长度
GRANTS 导出权限(Y)INCTYpE 增量导出类型
INDEXES 导出索引(Y)RECORD 跟踪增量导出(Y)
ROWS 导出数据行(Y)pARFILE 参数文件名
CONSTRAINTS 导出限制(Y)CONSISTENT 交叉表一致性
LOG 屏幕输出的日志文件 STATISTICS 分析对象(ESTIMATE)
DIRECT 直接路径(N)TRIGGERS 导出触发器(Y)
FEEDBACK 显示每 x 行(0)的进度 FILESIZE 各转储文件的最大尺寸
QUERY 选定导出表子集的子句
注:可以通过exp -help命令查看exp的使用方法;imp-help命令查看imp的使用方法.2.操作系统备份(冷备份和热备份)
操作系统备份有两类,冷备份(Cold backup)和热备份(Hot backup)。操作系统备份和上面的逻辑备份有本质的区别,它将拷贝整个的数据文件。
冷备份
在文件级备份开始前数据库必须彻底关闭。关闭操作必须用带有normal、immediate、transaction选项的shutdown来执行。
数据库使用的每个文件都被备份下来,这些文件包括: 所有数据文件、所有控制文件、所有联机重做日志文件和INIT.ORA文件(建议)。
作冷备份一般步骤是:
1)正常关闭要备份的实例(instance);
2)备份整个数据库到一个目录
3)启动数据库
即:
SVRMGRL>connect internal
SVRMGRL >shutdown immediate
SVRMGRL >!cp
or
SVRMGRL >!tar cvf /dbbak/fullbk.tar /u01/oracle/oradata/dbname
SVRMGRL >startup
热备份
热备份是当数据库打开时的操作系统备份。热备份只能用于ARCHIVELOG方式的数据库。热备份没有必要备份联机日志,但必须是归档状态,在实例恢复的时候,可能需要用到归档日志。当前联机日志一定要保护好或是处于镜相状态,当前联机日志的损坏,对于数据库的损坏是巨大的,只能以数据的丢失来进行数据库的恢复工作。对于临时表空间,存放的是临时信息,在热备份是也可以考虑不用备份,如果临时文件发生故障,可以删除该数据文件与表空间,重建一个临时表空间。
热备份备份的内容和冷备份备份的内容一样,操作一般步骤是:
1)备份的表空间通过使用ALTER TABLESpACE …… BEGIN BACKUp使表空间进入热备份方式。
2)用类似冷备份的操作系统命令对组成表空间的数据文件进行拷贝。
3)使用ALTER TABLESpACE …… END BACKUp命令使表空间脱离热备份方式。
4)使用ALTER DATABSE …… BACKUp CONTROLFILE命令备份控制文件。
即:
SVRMGRL>connect internal;
SVRMGRL>alter tablespace User begin backup;
SVRMGRL>!cp /u01/oradata/dbname/user01.ora /dbbak/user01.ora
SVRMGRL>alter tablespace User end backup;
SVRMGRL>alter database backup controlfile to
or
SVRMGRL>alter database backup controlfile to trace;
注意:因为热备份的时候,用户还在操作数据库,所以最好是让每个表空间处于备份状态的时间最短,这样就要求一个表空间一个表空间的备份,不要一起使表空间处于备份状态而同时拷贝数据文件。
3.RMAN
Recovery Manager(RMAN)是一个使DBA能很方便地对数据库执行备份和恢复任务的Oracle应用工具,能够提供DBA对企业数据库备份与恢复操作的集中控制。RMAN只能用于ORACLE8或更高的版本中。它能够备份整个数据库或数据库部件,其中包括表空间、数据文件,控制文件和归档文件。RMAN可以按要求存取和执行备份和恢复。
RMAN支持六种不通的类型的备份,经常用到的有两种:
FULL 数据库全备份,包括所有的数据块。
INCREMENTAL 增量备份,是指只备份在同级别或更低级别上进行的前一次备份之后的作过改动的那些数据块。这其中需要一个0级的增量作为增量的基础,它备份包括全部曾经被数据库使用过的数据块(但不是完全数据库备份)。RMAN共可以支持7级增量。
BACKUp,RESTORE,RECOVER是RMAN最基本的三个命令,分别可以进行数据库的备份,复原以及恢复操作。restore命令用于恢复来自备份集或映像拷贝的数据文件、控制文件或归档重做日志。recovery命令用于进行介质恢复应用重做日志文件。
RMAN的备份信息一般保存在恢复目录中,恢复目录也是一个数据库,只不过这个数据库用来保存备份信息,一个恢复目录可以用来保存多个数据库的备份信息。RMAN也可以在没有恢复目录(NOCATALOG)下运行,这个时候备份信息保存在控制文件。这种情况比较危险,因为一旦控制文件被破坏,将导致所有数据库备份信息的丢失和恢复的失败,而且,没有恢复目录,很多RMAN的命令将不被支持。所以对于重要的数据库,建议创建恢复目录。
创建恢复目录一般有以下步骤。(例子数据库为db)
1)为目录创建一个单独的表空间
SQL>create tablespace tsrman datafile ’/dbbak/rman/rsrman.dbf’ size 50M;
2)创建RMAN用户
SQL>create user rman identified by rman default tablespace rsrman temporary tablespace temp;
3)给RMAN授予权限
SQL>grant connect, resource, recovery_catalog_owner to rman;
4)打开RMAN
$rman
5)连接恢复目录数据库
RMAN>connect catalog rman/rman@db
6)创建恢复目录
RMAN>create catalog tablespace tsrman 在对某个数据库进行备份之前,必须先在恢复目录上注册该数据库,这一过程操作如下(假定目标数据库连接字符串为db100)。
1)连接到恢复目录数据库
$rman rman/rman@db
2)在RMAN中连接到目标数据库(即要进行备份的数据库)
RMAN>connect target sys/change_on_install@db100
3)注册数据库
RMAN>register database;
注册完数据库后,就可以进行数据库的备份了。有完全数据库备份、表空间备份、控制文件备份、和归档日志备份等。操作分别如下。
1)完全数据库备份
要求:ARCHIVELOG模式,在DB OpEN的情况下进行数据库完全备份。
RMAN>run{
allocate channel c1 type=disk;
backup database;
release channel c1;
}
2)表空间备份
要求:ARCHIVELOG模式
RMAN>run{
allocate channel c1 type=disk;
backup tablespace “ts_users” filesperset 3 format ‘aatst_%t%s.%p’;
release channel c1;
}
3)控制文件备份
RMAN>run{
allocate channel c1 type=disk;
backup current controlfile tag=weekly_sat_backup;
release channel c1;
}
在对数据库进行完全备份时,控制文件自动包含其中。也可以在表空间或数据文件的备份中包含一个控制文件。
RMAN>run{
allocate channel c1 type=disk;
backup tablespace “ts_users”
filesperset 3 format ‘aatst_%t%s.%p’;
include current controlfile;
release channel c1;
}
4)归档日志备份
通过查询数据字典表V$ARCHIVED_LOG获取要备份的日志序列号,然后执行命令:
RMAN>run{
allocate channel c1 type=disk;
backup archivelog low logseq 3 high logseq 10 thread 1;
release channel c1;
}
Oracle的备份策略
正确的备份策略不仅能保证数据库服务器的24*7的高性能的运行,还能保证备份与恢复的快速性与可靠性。我们将以RMAN的多级增量备份作为一个备份策略的例子来讨论。采用多级备份就是为了减少每天备份所需要的时间,而又保证系统有良好的恢复性。恢复时间与备份时间要有一个权衡。比如只要进行一个数据库的全备份,然后就只备份归档也可以保证能把数据库恢复到最新的状态,但是这样的恢复时间将是不可容忍的。多级备份也正是为了解决这种问题,结合某些应用的特点,可以采用如下的备份策略:
每个月做一个数据库的全备份(包括所有的数据和只读表空间);
每个星期一做一次零级备份(不包含只读表空间);
每个星期三做一次一级备份;
每天做一次二级备份。
每天做一次恢复目录的热备份。
任何数据库的更改需要重新同步CATALOG目录并重新备份(如添加数据文件)或重新备份(如修改表空间为只读)。
每次备份后都可以备份归档日志或定期备份归档日志。如果可能,可以直接备份到磁带上。
Oracle的恢复
下面的操作约定恢复目录存储在db118中,目标数据库是db100。
1.数据库恢复
1)启动SQL*pLUS,使用正确的init.ora文件,使用NOMOUNT选项启动目标数据库实例。
2)启动RMAN并连接到恢复目录,如下:
$rman catalog rman/rman@db118
恢复管理器: Release 9.2.0.1.0production
Copyright(c)1995, 2002, Oracle Corporation.All rights reserved.连接到恢复目录数据库
RMAN>
3)连接到目标数据库
RMAN>connect target internal/oracle@demo.oracle
连接到目标数据库: db(DBID=1142471523)
4)一旦连接到目标数据库,执行restore命令恢复控制文件
RMAN>run{
2>allocate channel c1 type disk;
3>restore controlfile;
4>}
小结
保证Oracle数据库的安全是系统安全的重要组成部分,必须要设计完善的数据库备份和恢复方案。Oracle提供的各种工具结合起来使用能够使数据库的备份和恢复变得简单。在实际的Oracle数据库的备份和恢复中,会有许多不通的和复杂的情况出现,针对不同的情况,要本着使数据具有最大的可恢复性和恢复时间最短的原则去进行数据库的恢复,这需要大量的实践和经验积累。
参考文献
[1] Oracle8i Backup and Recovery Guide Oracle Document
[2] Oracle8i Recovery Manager User’s Guide and Reference Oracle Document
[3] Oracle9i:A Beginner’s Guide(美)Michael Abbey Michael Corey Ian Abramson 2002.3 机械工业出版社
[4] Oracle8i备份与恢复手册(美)Rama Velpuri Anand Adkoli 蒋蕊 王磊等译 2001.9 机械工业出版社