一个控制文件相应的数据文件和重做日志文件恢复数据

一个控制文件相应的数据文件和重做日志文件恢复数据
一个控制文件相应的数据文件和重做日志文件恢复数据

rem 只有相关数据库文件的恢复.

恢复环境:oracle 10.2.0.1.0,windows xp,有一个控制文件,相应的数据文件和重做日志文件

我已经先创建好了一个数据库,sid=shan,下面模拟一下恢复的环境。

sqlplus /nolog

conn /as sysdba

shutdown immediate;(先关闭数据库)

下面移动一下一个数据文件和日志文件的位置

alter database mount;

select file#,name from v$datafile;

select group#,member from v$logfile;

在操作系统里把E:\ORACLE\PRODUCT\10.2.0\ORADATA\SHAN\REDO03.LOG 剪切到'C:\REDO03.LOG'

在操作系统里把E:\ORACLE\PRODUCT\10.2.0\ORADATA\SHAN\USERS01.DBF 剪切到'C:\USERS01.DBF'

alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\SHAN\REDO03.LOG' to 'C:\REDO03.LOG';

alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\SHAN\USERS01.DBF' to 'C:\USERS01.DBF';

alter database open;(正常打开)

shutdown immediate;(关闭数据库),这里将所有的数据文件,控制文件,

在开始菜单里>用dbca删除该数据库.

下面开始恢复

1 windows下设置相关的环境变量,为复制数据库创建所有的必要路径

set ORACLE_SID=shan

set ORACLE_BASE=E:\oracle\product\10.2.0

set ORACLE_HOME=%ORACLE_BASE%\db_1

set ORACLE_DATA=%ORACLE_BASE%\oradata\%ORACLE_SID%

set ORACLE_ADMIN=%ORACLE_BASE%\admin\%ORACLE_SID%

mkdir %ORACLE_ADMIN%

mkdir %ORACLE_ADMIN%\pfile

mkdir %ORACLE_ADMIN%\adump

mkdir %ORACLE_ADMIN%\bdump

mkdir %ORACLE_ADMIN%\cdump

mkdir %ORACLE_ADMIN%\dpdump

mkdir %ORACLE_ADMIN%\udump

mkdir %ORACLE_DATA%

2 创建口令文件

orapwd file=%ORACLE_HOME%\database\PWDshan.ora password=shan entries=4

3 为要恢复的数据库创建一个数据库服务

oradim -new -sid SHAN -intpwd shan

4 从一个相同版本的数据库中取得一个参数文件,这个参数文件在startup nomount时要用用命令create pfile from spfile;在windows下,这个参数文件在%ORACLE_HOME%\database下,文件名:INIT%ORACLE_SID%.ORA

修改这个文件名INIT%ORACLE_SID%.ORA.(例如:INITshan.ORA)

打开这个文件:修改以下几个参数

*.db_name='xx';

*.audit_file_dest='e:\oracle\product\10.2.0/admin/xx/adump'

*.background_dump_dest='e:\oracle\product\10.2.0/admin/xx/bdump'

*.core_dump_dest='e:\oracle\product\10.2.0/admin/xx/cdump'

*.user_dump_dest='e:\oracle\product\10.2.0/admin/xx/udump'

*.control_files='e:\oracle\product\10.2.0/oradata/xx/\control01.ctl','e:\oracle\product\10.2.0/oradat a/xx/\control02.ctl','e:\oracle\product\10.2.0/oradata/xx/\control03.ctl'

将其中的xx换个你要恢复的数据库的sid(你的控制文件只有一份,拷贝同样的三份,替代上面的*.control_files参数里面的control01.ctl,control02.ctl,control03.ctl)

之后把这个修改后的文件放到%ORACLE_HOME%\database下

5 这里因为原来有一个控制文件,所以没有重新创建控制文件,只是又复制了两份,并设置了和参数文件里面*.control_files一样的名字

6 把数据文件和重做日志文件和控制文件都拷贝到%ORACLE_DATA%下面。(注意:这些数据库文件的USERS01.DBF,REDO03.LOG位置是不对的,它们应该是在C:\下)

sqlplus /nolog

conn /as sysdba

startup mount;(启动数据库)

col name for a60;

col member for a60;

select file#,name from v$datafile;(查看数据文件位置)

select group#,member from v$logfile;(查看日志文件位置)

按上面的显示把数据文件和日志文件拷贝到相应的位置。

7 打开数据库

alter database open;

select instance_name,status from v$instance; 显示instance_name为shan,状态为open;

8 ok,全部结束

oracle日志记录

【例1】 SQL>set time on SQL>create table hr.mydep1 as select * from hr.department; SQL>delete from hr.mydep1 where department_id=10; SQL>flashback table hr.mydep1 to timestamp 2 to timestamp(to_tate(‘2009-05-29 10:00:00’, ’yyyy-mm-dd hh24:mi:ss’)); 【例2】 SQL>create table student (name Varchar2(10), score Number); SQL>insert into student values(‘zs’, 68); SQL>update student set score=98 where name=’zs’; SQL>commit; SQL>select versions_starttime,versions_operation,name,score 2 from student versions between timestamp minvalue and maxvalue; 【例3】 SQL>CONNECT sys /zzuli AS sysdba SQL>select table_name, undo_sql from flashback_transaction_query where rownum<5;

【例1】控制文件备份为二进制文件 下面的语句可以将控制文件备份为一个二进制文件,即复制当前的控制文件: alter database backup controlfile to 'd:\backup_controlfile\control_09-05-25.bkp'; 【例2】控制文件备份为脚本文件 alter database backup controlfile to trace; 【例3】对视图V$CONTROLFlLE_RECORD_SECTION的查询。 select type,record_size,records_total,records_used from v$controlfile_record_section; 【例4】向数据库添加了一个新的重做日志组: alter database add logfile (‘e:\app\administrator\oradata\orcl\redo04.log’, ‘f:\oradata\log\redo04b.log’) Size 10m; 【例5】创建新的日志组,并将新的日志组指定为第4组: alter database add logfile group 4 (‘e:\app\administrator\oradata\orcl\redo004.log’,‘f:\oradata\log\redo004b.log') size 10m; 【例6】为第1组添加了一个新的成员日志文件: alter database add logfile member 'f:\oradata\log\redo01b.log' to group 1; 【例7】为第2组添加一个新成员: alter database add logfile member 'f:\oradata\log\redo02b.log' to

sql server日志文件总结及日志满的处理办法

sql server日志文件总结及日志满的处理办法 交易日志(Transaction logs)是数据库结构中非常重要但又经常被忽略的部分。由于它并不像数据库中的schema那样活跃,因此很少有人关注交易日志。交易日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。对于任何每一个交易过程,交易日志都有非常全面的记录,根据这些记录可以将数据文件恢复成交易前的状态。从交易动作开始,交易日志就处于记录状态,交易过程中对数据库的任何操作都在记录范围,直到用户点击提交或后退后才结束记录。每个数据库都拥有至少一个交易日志以及一个数据文件。 出于性能上的考虑,SQL Server将用户的改动存入缓存中,这些改变会立即写入交易日志,但不会立即写入数据文件。交易日志会通过一个标记点来确定某个交易是否已将缓存中的数据写入数据文件。当SQL Server重启后,它会查看日志中最新的标记点,并将这个标记点后面的交易记录抹去,因为这些交易记录并没有真正的将缓存中的数据写入数据文件。这可以防止那些中断的交易修改数据文件。 维护交易日志 因为很多人经常遗忘交易日志,因此它也会给系统带来一些问题。随着系统的不断运行,日志记录的内容会越来越多,日志文件的体积也会越来越大,最终导致可用磁盘空间不足。除非日常工作中经常对日志进行清理,否则日志文件最终会侵占分区内的全部可用空间。日志的默认配置为不限容量,如果以这种配置工作,它就会不断膨胀,最终也会占据全部可用空间。这两种情况都会导致数据库停止工作。 对交易日志的日常备份工作可以有效的防止日志文件过分消耗磁盘空间。备份过程会将日志中不再需要的部分截除。截除的方法是首先把旧记录标记为非活动状态,然后将新日志覆盖到旧日志的位置上,这样就可以防止交易日志的体积不断膨胀。如果无法对日志进行经常性的备份工作,最好将数据库设置为"简单恢复模式"。在这种模式下,系统会强制交易日志在每次记录标记点时,自动进行截除操作,以新日志覆盖旧日志。 截除过程发生在备份或将旧标记点标为非活动状态时,它使得旧的交易记录可以被覆盖,但这并不会减少交易日志实际占用的磁盘空间。就算不再使用日志,它依然会占据一定的空间。因此在维护时,还需要对交易日志进行压缩。压缩交易日志的方法是删除非活动记录,从而减少日志文件所占用的物理硬盘空间。 通过使用DBCC SHRINKDATABASE语句可以压缩当前数据库的交易日志文件,DBCC SHRINKFILE语句用来压缩指定的交易日志文件,另外也可以在数据库中激活自动压缩操作。当压缩日志时,首先会将旧记录标记为非活动状态,然后将带有非活动标记的记录彻底删除。根据所使用的压缩方式的不同,你可能不会立即看到结果。在理想情况下,压缩工作应该选在系统不是非常繁忙的时段进行,否则有可能影响数据库性能。 恢复数据库 交易记录备份可以用来将数据库恢复到某一指定状态,但交易记录备份本身不足以完成恢复数据库的任务,还需要备份的数据文件参与恢复工作。恢复数据库时,首先进行的是数据文件的恢复工作。在整个数据文件恢复完成前,不要将其设为完成状态,否则交易日志就不会被恢复。当数据文件恢复完成,系统会通过交易日志的备份将数据库恢复成用户希望的

SQL Server 数据库清除日志的方法

SQL Server 数据库清除日志的方法 方法一: 1、打开查询分析器,输入命令 BACKUP LOG database_name WITH NO_LOG 2、再打开企业管理器--右键要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至xxm,这里会给出一个允许收缩到的最小m数,直接输入这个数,确定就可以了。 方法二: 设置检查点,自动截断日志 一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大 1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如用户数据库cwbase1)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存 2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定 3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据 方法三:通过SQL收缩日志 把代码复制到查询分析器里,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可 SET NOCOUNT ON DECLARE @LogicalFileNamesysname, @MaxMinutes INT, @NewSize INT USE tablename -- 要操作的数据库名 SELECT @LogicalFileName = 'tablename_log', -- 日志文件名 @MaxMinutes = 10, -- Limit on time allowed to wrap log. @NewSize = 1 -- 你想设定的日志文件的大小(M) -- Setup / initialize DECLARE @OriginalSizeint SELECT @OriginalSize = size FROM sysfiles WHERE name = @LogicalFileName SELECT 'Original Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB' FROM sysfiles WHERE name = @LogicalFileName CREATE TABLE DummyTrans (DummyColumn char (8000) not null) DECLARE @Counter INT,

如何通过分离数据库删除k3账套日志文件.

温馨提示:看完本文,如果还没有把握,请勿进行分离数据库的操作。 如何通过分离数据库删除K3账套日志文件 刘学全 2006年6月份,本人在“工作交流”栏目曾经写了一篇《如何收缩数据库日志文件》的文章,即当金蝶K3系统运行几个月后,启动服务器或者备份账套时,会出现“日志文件太大”的提示,如果不清理日志文件,账套不断膨胀,将会出现无法备份账套的情况,文章主要讲解了数据库日志文件太大时,如何进行收缩数据库日志文件的操作,有些财务同仁反映收缩效果不太明显,在此,我再讲解另外一种方法,即如何分离数据库,然后删除K3账套日志文件。分离数据库之前,所有人员必须停止操作,退出K3系统,备份好需要分离数据库的账套。具体的操作步骤如下: 1、首先,在“账套管理”中备份好需要进行收缩操作的账套(如果连账套都不能备份,则必须先找到数据库实体及日志这二个文件,然后复制存放到其他硬盘分区中,以防操作失误,无法恢复账套),并记录被备份需要收缩的“数据库实体”代码。如下图: 1、双击“账套管理”。 2、输入用户名及密码。

选中需要分离数据库的账套,将 “数据库实体”代码用笔记录下来,例如下垄钨业的数据库实体 “AIS20070409111347”。

清除“网络控制”中所有的用户。

如果账套太大,在账套管理中不能备份账套,则必 须先找到需要分离数据库的“数据库实体”文件(注 意:每一个账套有二个文件,少一个文件都不能恢 复账套,例如:AIS20070409111347_Data和 AIS20070409111347_log),找到后,将其复制到其 他地方进行备份,以防万一。 2、在数据库服务器上,按照路径“开始→程序→Microsoft SQL Server →企业管理器”,打开“企业管理器”。如下图: 点击“企业 管理器”。

Oracle数据库归档日志日常管理与建议

Oracle数据库归档日志日常管理与建议 1.简介 近日,项目组偶有发生归档日志占满归档目录空间导致数据库hang住(无响应),导致系统不能正常应用的情况。针对此类问题,笔者从Oracle数据库归档模式、归档模式的优缺点、归档日志日常管理方法等各方面浅析并整理出归档日志日常管理与建议。请各项目组依据实际情况,规范管理归档日志,排查相关隐患,以保证系统的正常高效运营。 另外,对于已开启数据库归档模式的项目组,若数据库管理权限不在我方,可将相关归档管理建议与当地运维部门充分沟通,避免归档的不当管理引起事故。 2.数据库归档模式与归档日志 2.1数据库运行模式简介 Oracle数据库包括归档模式与非归档模式两种运行模式。 一般情况下Oracle数据库的联机重做日志会记录对数据库所做的所有的修改,如创建对象;插入、删除、更新对象;删除对象等,这些操作都会记录在联机重做日志里。Oracle 数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满(假设为1)的时候,就会发生日志切换,这时联机重做日志组2(假设为2)成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,这样反复进行。 如果数据库处于非归档模式,联机日志在切换时就会被丢弃。而在归档模式下,当发生日志切换的时候,被切换的联机日志会被归档。 如当前在使用联机重做日志1,当1被写满时,发生日志切换,开始写联机重做日志2,这时联机重做日志1的内容会被拷贝到一个指定的目录下。这个目录为归档目录,这个过程称之为归档,拷贝的文件叫归档日志。 2.2归档模式优点与归档日志作用 数据库运行在归档模式时,后台进程ARCH会将联机日志的内容拷贝到归档目录生成归档日志。 当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库。因此,开启归档模式及归档日志的益处与作用是非常明显的: 1.可以进行完全、不完全恢复。由于对数据库所做的全部改动都记录在日志文件中, 如果发生硬盘故障等导致数据文件丢失的故障,则可以利用物理备份和归档日志 完全恢复数据库,不会丢失任何数据。 2.可以进行联机热备。所谓联机热备,就是在数据库运行状态下,对数据库进行备 份,备份时用户对数据库的使用基本不受影响(不可避免的会对性能有负面影响)。 3.可以实施Data Guard。可以部署1个或多个备用数据库,从而最大限度地提供灾 难保护手段。

数据库的事务日志已满

数据库的事务日志已满。若要查明无法重用日志中的空间的原因 ,请参阅sys.databases 中的log_reuse_wait_desc 列 一般不建议做第4,6两步 第4步不安全,有可能损坏数据库或丢失数据 第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复. 1、清空日志 DBCC SHRINKFILE(库名_log,0) DUMP TRANSACTION 库名WITH NO_LOG 2、截断事务日志: 如果出现“未能在sysfiles 中找到文件库名_log'。 DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。” 则使用这句SQL操作 BACKUP LOG 库名WITH NO_LOG DBCC SHRINKFILE(2,0) 3.收缩数据库文件(如果不压缩,数据库的文件不会减小 企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件 a、选择日志文件--收缩文件至,这里会给出一个允许收缩到的最小M数,确定就可以了 b、选择数据文件--收缩文件至,这里会给出一个允许收缩到的最小M数,,确定就可以了也可以用SQL语句来完成 --收缩数据库 DBCC SHRINKDA TABASE(库名) --收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles DBCC SHRINKFILE(1) 4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)

a.分离数据库: 企业管理器--服务器--数据库--右键--分离数据库 b.在我的电脑中删除LOG文件 c.附加数据库: 企业管理器--服务器--数据库--右键--附加数据库 此法将生成新的LOG,大小只有500多K 或用代码: 下面的示例分离pubs,然后将pubs 中的一个文件附加到当前服务器。a.分离 EXEC sp_detach_db @dbname = '库名' b.删除日志文件 c.再附加 EXEC sp_attach_single_file_db @dbname = '库名', @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\库名.mdf' 5.为了以后能自动收缩,做如下设置: 企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩" --SQL语句设置方式: EXEC sp_dboption '库名','autoshrink','TRUE' 6.如果想以后不让它日志增长得太大 企业管理器--服务器--右键数据库--属性--事务日志 --将文件增长限制为xM(x是你允许的最大数据文件大小) --SQL语句的设置方式: alter database 库名modify file(name=逻辑文件名,maxsize=20)

重做日志文件

重做日志文件(redo log file)对于Oracle数据库至关重要。它们是数据库的事务日志。通常只用于恢复,不过也可以用于以下工作: q 系统崩溃后的实例恢复 q 通过备份恢复数据文件之后恢复介质 q 备用(standby)数据库处理 q 输入到流中,这是一个重做日志挖掘过程,用于实现信息共享(这也是一种奇特的复制) 重做日志文件的主要目的是,万一实例或介质失败,重做日志文件就能派上用场,或者可以作为一种维护备用数据库(standby database)的方法来完成故障恢复。如果数据库所在主机掉电,导致实例失败,Oracle会使用在线重做日志将系统恢复到掉电前的那个时刻。如果包含数据文件的磁盘驱动器出现了永久性故障,Oracle会使用归档重做日志以及在线重做日志,将磁盘驱动器的备份恢复到适当的时间点。另外,如果你“无意地”删除了一个表,或者删掉了一些重要的信息,而且提交了操作,则可以恢复一个备份,并让Oracle使用这些在线和归档重做日志文件将其恢复到意外发生前的那个时刻。 你在Oracle中完成的每个操作几乎都会生成一定的redo信息,并写入在线重做日志文件。向表中插入一行时,插入的最终结果会写入重做日志。删除一行时,则会在重做日志中写入你删除了这一行这一事实。删除一个表时,删除的效果会写入重做日志。从表中删除的数据不会写入;不过,Oracle删除表时执行的递归SQL确实会生成redo。例如,Oracle从SYS.OBJ$表(和其他内部字典对象)中删除一行时,这就会生成redo,另外如果支持不同模式的补充日志(supplemental logging ),还会把具体的DROP TABLE语句写入重做日志流。 有些操作可能会以尽量少生成redo的模式完成。例如,可以使用NOLOGGING属性创建一个索引。这说明,最初创建索引数据的操作不会记入日志,但是Oracle完成的所有递归SQL会写入日志。例如,创建索引后,将向SYS.OBJ$表中插入一行表示索引存在,这个插入会记入日志,以后使用SQL插入、更新和删除等操作完成的修改也会记入日志。但是,最初向磁盘写索引结构的操作不会记入日志。 前面我提到了两种类型的重做日志文件:在线(online)和归档(archived)。下面几节将详细介绍这两类重做日志文件。在第9章中,我们还会结合回滚段来讨论redo,看看它们对开发人员有什么影响。现在,我们只关注这些重做日志文件是什么,它们有什么用途。 3.7.1 在线重做日志 每个Oracle数据库都至少有两个在线重做日志文件组。每个重做日志组都包含一个或多个重做日志成员(redo按成员组来管理)。这些组的单个重做日志文件成员之间实际上形成彼此真正的镜像。这些在线重做日志文件的大小是固定的,并以循环方式使用。Oracle先写日志文件组1,当到达这组文件的最后时,会切换至日志文件组2,从头到尾重写这些文件的内容。日志文件组2填满时,再切换回到日志文件组1(假设只有两个重做日志文件组;如果有3个重做日志文件组,当然会继续写第3个组)。如图3-4所示。 4 日志文件组 图3-

oracle 数据文件、表空间、日志文件、控制文件数据库管理

实验四 oracle 数据库管理 一、试验目的 掌握对数据文件、表空间、日志文件、控制文件的常用命令,作为DBA的必要准备。 二、实验内容 2.1 数据文件的管理 (1)在安装完毕之后,在INITsid.ORA参数文件有一个DB_FILES 参数,用于设置当前实例的数据外文件的个数。如: db_files = 80 如果在INITsid.ORA文件没有该参数,则可以用下面查询语句从视图中查到。如: SQL> col name for a20 SQL> col value for a50 SQL> set lin 100 SQL> select name,value from v$parameter where name = 'db_files'; NAME V ALUE -------------------- -------------------------------------------------- db_files 1024 (2)行命令建立表空间: 例1 CREATE TABLESPACE user_stu DA TAFILE 'h:/oracle/oradata/orcl/user_stu.dat' SIZE 20M DEFAULT STORAGE ( INITIAL 10K NEXT 50K MINEXTENTS 1 MAXEXTENTS 99 PCTINCREASE 10 ) ONLINE ; 例2:建立一个新的表空间,具有两个数据文件: CREATE TABLESPACE CRM_TAB DA TAFILE 'h:/oracle/oradata/orcl/crm01.dbf' size 10 MB,'h:/oracle/oradata/orcl/crm02.dbf' size 10 MB; (3)对一个已存在的表空间追加新数据文件: 例1 ALTER TABLESPACE user_stu Add datafile 'H:/oracle/oradata/orcl/user_stu01.dbf' size 30M; 例2 为表空间增加数据文件 ALTER TABLESPACE users ADD DATAFILE 'userora1.dbf ' SIZE 10M ; (4)数据文件更名 ALTER TABLESPACE users

DB2_数据库日志管理

1、load 方法装入数据: export to tempfile of del select * from tablename where not 清理条件; load from tempfile of del modified by delprioritychar replace into tablename nonrecoverable; 说明: 在不相关的数据表export数据时,可以采取并发的形式,以提高效率; tablename指待清理table的名称; modified by delprioritychar防止数据库记录中存在换行符,导致数据无法装入的情况; replace into对现数据库中的内容进行替换,即将现行的数据记录清理,替换为数据文件内容; nonrecoverable无日志方式装入; 2、查找当前的应用: db2 list application grep btpdbs; 3、删除当前正在使用的application: db2 "force application (id1,id2,id3)" id1,id2,id3 是list显示的应用号; 4、查看当前应用号的执行状态: db2 get snapshot for application agentid 299 grep row 5、查看数据库参数: db2 get db cfg for //当前数据库可以省略 6、修改数据库的log数据: db2 update db cfg using <参数名> <参数值> 7、db2stop force的用法: 在进行bind的时候出现如下错误: sql0082can error has occurred which has terminated processing. sql0092nno package was created because of previous errors. sql0091nbinding was ended with "3" errors and "0" warnings. 主要是表文件被加锁,不能继续使用; 在进行stop的时候报错:db2stop 8/03/2005 21:46:530 0 sql1025nthe database manager was not stopped because databases are still active.

MSSQL2000中没有日志文件的数据库恢复方法

MSSQL2000 中没有日志文件的数据库恢复方法 由于种种原因, 我们如果当时仅仅备份了 mdf 文件,那么恢复起来就是一件 很麻烦的事情了。 如果您的 mdf 文件是当前数据库产生的,那么很侥幸,也许你使用 sp_attach_db 或者 sp_attach_single_file_db 可以恢复数据库,但是会出现类 似下面的提示信息 ########################################################## 设备激活错误。 物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' 可能有误。 已创建名为 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF' 的新日志文件。 ########################################################## 但是,如果您的数据库文件是从其他计算机上复制过来的,那么很不幸,也 许上述办法就行不通了。你也许会得到类似下面的错误信息 ########################################################## 服务器: 消息 1813,级别 16,状态 2,行 1 未能打开新数据库 'test'。CREATE DATABASE 将终止。 设备激活错误。物理文件名 'd:\test_log.LDF' 可能有误。 ########################################################## 当出现以上问题时,恢复的办法如下: A.我们使用默认方式建立一个供恢复使用的数据库(数据库名应该与要恢复 的数据库相同,如 test)。可以在 SQL Server Enterprise Manager 里面建立。 B.停掉数据库服务器。 C.将刚才生成的数据库的日志文件 test_log.ldf 删除,用要恢复的数据库 mdf 文件覆盖刚才生成的数据库数据文件 test_data.mdf。 D.启动数据库服务器。此时会看到数据库 test 的状态为“置疑”。这时候 不能对此数据库进行任何操作。 E.设置数据库允许直接操作系统表。此操 作可以在 SQL Server Enterprise Manager 里面选择数据库服务器,按右键,选 择“属性”, 在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。 也可以使用如下语句来实现。

数据库分离与附加操作流程

数据库分离与附加操作流程

RYAccountsDB,RYEducateDB,RYGameMatchDB,RYGameScoreDB,RYNativeWebDB,RYPlatformDB,RYPlatformManagerDB,RYRecordDB,RYTreasureDB 分离与附加 概念: 1.后的数据库文件可以复制到任何需要该文件的系统上。比如在A机器上创建的数据库, 可以复制到B电脑上。分离后,在数据库列表将看不到该数据库,不能再被SqlServer管理和使用。但该数据库的文件(.MDF)和对应的日志文件(.LDF)完好无损。分离成功后,我们就可以把该数据库文件(.MDF)和对应的日志文件(.LDF)拷贝到其它磁盘中作为备份保存。 2、附加数据库就是将一个备份磁盘中的数据库文件(.MDF)和对应的日志文件(.LDF)拷贝到需要的计算机,并将其添加到某个SQL Server 数据库服务器中,由该服务器来管理和使这个数据库。 一.附加数据库(以RYAccountsDB数据库为例) 步骤一,在数据库操作界面,数据库右键,点击附加,选择需要附加的数据库文件式为:据库

名.mdf, 点击附加,弹出如下图界面

点击添加,弹出如下界面,该界面可以选择要附加的数据库文件。默认打开的是安装SqlSever 生成的DaTa文件夹(C:\Program Files\Microsoft SQLServer\MSSQL10_50.SQLEXPRESS\MSSQL\DAT A)图: 如果所建立的数据库没有保存在默认路径下,可以把这里的盘符文件夹折叠起来,再选择自己存放的数据库文件,如下图 步骤二: 选择要附加的数据库文件路径,默认打开的是主数据文件(以.mdf结尾的文件),切换文件类型到*所有文件,可以看到当前文件夹下的所有以.mdf和.ldf或者.ndf结尾的文件,这些都是

Oracle 改变重做日志位置或名称

Oracle 改变重做日志位置或名称 在所有后台进程中,LGWR进程活动最为频繁,它需要不断地将事务变化由重做日志缓冲区写入重做日志中。在数据库文件、控制文件和重做日志这3种文件中,重做日志的I/O操作最频繁。为了提高I/O性能,应将重做日志分布到I/O操作相对较少、速度最快的磁盘设备上。规划重做日志时,应将同一个日志组的不同日志成员尽可能地分布到不同磁盘上,以防止磁盘损坏而导致所有日志成员丢失。例如,假设在初始阶段,日志组二中的日志成员被放在同一块磁盘上,但是后来出于完全和性能方法的考虑,DBA为服务器新增加了一块磁盘,并且将日志组二中的一个日志成员移动到新磁盘上,此时就需要改变该日志成员的存放位置。 下面修改重做日志文件的名称和位置的具体操作步骤如下: (1)关闭数据库。 SQL> connect /as sysdba SQL> shutdown (2)复制或移动日志成员到目标位置。当闭数据库后,DBA就可以使用操作系统命令复制或移动日志成员到新位置。例如,修改原日志文件的名称。 (3)重新启动数据库实例,加载数据库,但是不打开数据库。 SQL> startup mount; (4)使用带RENAME FILE子句的ALTER DATABASE语句重新设置重做日志文件的路径和名称。 SQL> alter database rename file 2 'd:\app\Administrator\oradata\orcl\redo03.log', 3 'd:\app\Administrator\oradata\orcl\redo02.log', 4 'd:\app\Administrator\oradata\orcl\redo01.log' 5 to 6 'd:\app\Administrator\oradata\orcl\redo03a.log', 7 'd:\app\Administrator\oradata\orcl\redo02a.log', 8 'd:\app\Administrator\oradata\orcl\redo01a.log'; 数据库已更改。 (5)打开数据库 SQL> alter database open; (6)备份控制文件 重新启动数据库后,对联机重做日志文件的修改将生效。通过查询数据字典V$LOGFILE 可以获知数据库现在所使用的重做日志文件。

Oracle 使用RMAN备份数据库文件和归档日志

Oracle 使用RMAN 备份数据库文件和归档日志 当数据库打开时,可以使用RMAN BACKUP 命令备份如下对象: ● 数据库 ● 表空间 ● 数据文件 ● 归档重做日志 ● 控制文件 ● 备份集 在使用BACKUP 命令备份数据文件时,可以为其设置参数,定义备份段的文件名,文件数和每个输入文件的通道。 1.备份数据库 如果备份操作是在数据库被安全关闭之后进行的,那么对整个数据库的备份是一致的;与之相对应,如果数据库是在打开状态下对整个数据库进行的备份,则该备份是非一致的。非一致性备份整个数据库的操作步骤如下: (1)启动RMAN 并连接到目标数据库,输入BACKUP DATABASE 命令备份数据库。在BACKUP 命令中可以指定FORMA T 参数,为RMAN 生成的每个备份片段指定一个惟一的名称,以及存储的位置。 C:\>rman target system/admin nocatalog RMAN> backup database format 'f:\oracle_backup\ora11g_%Y_%M_%D_%U.bak' maxsetsize=2G; 还可以为BACKUP 命令指定TAG 参数,为备份片段定义备份标签。例如: RMAN>backup database tag='weekly_backup'; (2)如果建立的是非一致性备份,那么必须在完成备份后对当前的联机重做日志进行归档,因为在使用备份恢复数据库需要使用当前重做日志中的重做记录。 RMAN>sql'alter system archive log current'; (3)在RMAN 中执行LIST BACKUP OF DA TABASE 命令,查看建立的备份集与备份片段的信息。 RMAN> list backup of database; 如果需要对整个数据库进行一致性备份,则首先需要关闭数据库,并启动数据库到MOUNT 状态。例如: RMAN>shutdown immediate RMAN>startup mount RMAN>backup database format='f:\oracle_backup\%d_%s.bak'; RMAN>alter database open; 如果想要对某个表空间以外的整个数据库进行备份,则可以使用用如下一组命令: //设定在备份数据库的时候排除USER01; RMAN>configure exclude for tablespace user01; 注 意 BACKUP 命令只能对数据文件、归档重做日志文件和控制文件进行备份,如果要对其他重要的数据文件进行备份,则可以在操作系统中对其进行物理备份。

几种清除MSSQL日志方法

方法一、 1 / 4

2 / 4 方法二、

MS SQL清除日志的命令 如何清除sql server 日志? 设置数据库为简单模式,自动收缩 1.打开查询分析器,输入命令 backup log databasename with no_log 2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M 数,直接输入这个数,确定就可以了。 dbcc shrinkfile (databasename_log,truncateonly) 方法三、 1: 删除LOG 第1步:分离数据库企业管理器->服务器->数据库->右键->分离数据库 第2步:删除LOG文件 第3布:附加数据库企业管理器->服务器->数据库->右键->附加数据库 此法生成新的LOG,大小只有500多K 再将此数据库设置自动收缩 方法四、 EXEC sp_detach_db @dbname = 'pubs' EXEC sp_attach_single_file_db @dbname = 'pubs', @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf' 方法五、 Use Database_Name Backup Log Database_Name With No_log dbcc shrinkfile (Database_Name_Log,truncateonly) Go 方法六、 直接在查询分析那里执行backup log databasename with no_log 然后回到企业管理器把数据库收缩一下(可能需另外设置属性) 3 / 4

Oracle丢失归档日志文件的数据库恢复方法

Oracle丢失归档日志文件的数据库恢复方法 丢失归档日志文件的数据库恢复方法,从一个不能正常打开的数据库(由于一个/多个数据库文件与其他文件不一致)中提取数据。场景:一个磁盘损坏了并且丢失了一个数据库文件。从一周前的热备转储数据文件,不幸的是丢失了几个归档日志文件。但是有问题的数据文件包含了最重要的表,如何能够挽救数据呢? 每个DBA都知道这是有问题的,一定会丢失数据,因为某些事务丢失了,问题是会丢失多少数据?Oracle 使用硬线路位置并且由于存在完整性约束问题,因此不允许正常打开数据。但是如果使用非常规的方法让Oracle删除其硬线路属性,那么应该能够提取尽可能多的数据。而通常这会比损失全部数据要好很多。 详细过程通常如果仅仅丢失了堆表的索引,或者某些能够很容易重建的数据,那么最好的方法应该是删除表空间并重建这些对象然后重新输入。但是如果丢失的数据文件包含了重要数据并且很难恢复,而且只有前一次的备份却又丢失了某些归档日志,那么用户可能希望能够尽可能多的从有问题的表空间恢复数据并且删除和重建表空间。 主要的步骤如下: 1. 对当前拥有的数据进行一个冷备; 2. 转储丢失的数据库文件备份并应用可以应用的日志; 3. 设置未文档化的初始化参数,其允许你在当前状态打开数据库; 4. 执行exp并提取全部可以从有问题的表空间提取的数据; 5. 从先前的冷备转储数据库; 6. 使毁坏的数据文件offline; 7. 执行exp并提取第4步没有提取的额外数据; 8. 在一次从冷备转储; 9. 删除有问题的表空间; 10. 重建有问题的表空间; 11. 使用第四步和第七步提取的数据重建数据; 使用案例描述:ORDTAB表空间的一个数据文件ordtab03.dbf毁坏,其包含很多ORDERS表的分区,数据文件热备于July 4,2004,July 4—至今的某些归档日志丢失。 第一步:备份数据库第一步的任务是冷备当前拥有的任何数据文件,在线重做日志,和控制文件。如果丢失了一个/多个数据文件但是数据库仍然是open的,那么对每个剩余的数据文件进行热备并确保备份期间/之后的归档被安全保存。

数据库日志管理

一数据库日志文件管理 SQL SERVER日志清除的两种方法 在使用过程中大家经常碰到数据库日志非常大的情况,在这里介绍了两种处理方法...... 方法一: 一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大。 1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选 择你的数据库名称-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择"简单",然后按确定保存。 2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定。 3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据 方法二: 如果日志文件过于庞大,使用数据库收缩已经不能解决问题,可以考虑使用以下的方法。 对数据库进行分离,分离后将日志文件改名,然后重新附加数据库,此时会提示没有正确的日志文件,不要管,在附加过程中会重新生成日志文件。 完成后,在数据库属性中重新设置日志文件的大小,可设置为5G,这样就把原来的日志清除掉了。 注意:该方法在使用过程中,可能对数据库分离时间点上的数据有影响,因此,如果出现问题,请重新恢复该部分数据。或者在停止业务一段时间后再进行操作。 在SQL Server 2000企业管理器里面收缩数据库日志 操作环境:Windows 2000 Server 简体中文版+ sp4、SQL Server 2000标准版+sp4 任务描述: 在企业管理器里面收缩数据库日志 以下为操作截屏:

Oracle大型数据库 实验五 重做日志文件、表空间管理操作

集美大学计算机工程学院实验报告 课程名称:大型数据库技术班级:计算12实验成绩: 指导教师:杨艳华姓名: 实验项目名称:重做日志文件、表空间管理操作学号:20上机实践日期:2014.12实验项目编号:实验五组号:上机实践时间:2学时 一、实验目的 1、理解重做日志文件的基本概念; 2、掌握重做日志文件组及其成员的添加、移动、删除等操作; 3、掌握归档重做日志的设置; 4、理解表空间的基本概念和分类; 5、掌握永久表空间的创建和管理操作; 6、掌握还原表空间的管理。 二、实验要求 1、完成重做日志文件组及其成员文件的管理操作; 2、完成归档重做日志的设置; 3、完成永久表空间和临时表空间的管理操作; 4、完成还原表空间的管理。 三、实验内容 (1)查看数据库当前重做日志文件组及成员的设置情况,然后,为数据库添加一组重做日志,组内包含两个成员文件,分别为redo4a.log和redo4b.log,大小分别为5MB。

(2)为上面新添加的那组重做添加一个日志成员,命名为“redo4c-姓名简拼.log”,实现重做日志的多路存储。 (3)把数据库从非归档模式修改为归档模式,之后创造条件让数据库立即归档,并检查归档是否成功 (4)创建永久表空间 ?创建一个表空间名为“TB+学号后三位+姓名简拼” ?空间的大小为50M ?表空间包括两个数据文件:表空间名_01.dbf(30M)和表空间名_02.dbf(20M),大 小均不能自动扩展 ?数据文件均存放在Oracle的安装根目录下 ?区的分配方式为统一大小,192K ?段管理采用自动方式

(5)改变上述永久表空间的可用性 ?先将表空间脱机 ?再进行联机 (6)创建一个4K的非标准块表空间,命名为“tbf+学号后三位+姓名简拼”,数据文件存储在”\oradata\orcl\姓名简拼”目录下,大小为(学号后三位*2)M。 (7)创建一个临时表空间 ?名为“TTB+学号后三位+姓名简拼” ?包含一个数据文件:表空间名_01.dbf,大小为(学号后三位*2)M,存储 在”\oradata\orcl\姓名简拼”目录下,文件的大小可以自动扩 展。 ?将该临时表空间设置为数据库的默认临时表空间 ?再将该临时表空间设置为scott用户的默认临时表空间 ?查询相关的数据字典验证上面的设置。

相关文档
最新文档