Author: mac
-
处理在oracle中的数据库块损坏
每个oracle 数据块完全是二进制写入。在oracle数据块被使用之前,oracle检查它可能的块损坏。如果数据块的格式没有遵循原来格式,这种情况被认为是块损坏。这篇文章就是讨论oracle dba如何处理块损坏。 数据块损坏的检查在缓存中和其他更高层次的oracle模式执行。在缓存模式被检查的信息如下: : 块种类 :块的对应物 : 块版本 :块队列数字 :数据块地址 :块的校验和 在缓存模式下,如果块的格式不一致,则块被认为介质损坏,然而在更高层次的oracle模式下的数据块格式不一致被认为是软件损坏。 在损坏的块中的信息或多或少会丢失;你将不得不使用一些数据恢复或者输出来重建它。Oracle有几种工具——例如PRM-DUL (parnassusdata.com) ,你可以使用它提取坏块中的数据出来,但是很明显使用这些工具将会是很贵的。你必须要衡量使用这些工具并且重建丢失的信息的花费(而且不保证百分百成功)。 当oracle遇到块损坏时,你经常看见错误的信息例如ORA-1578或者ORA-600。你可以使用几种工具去确定数据库是否损坏,也可以搞清楚损坏的类型和内容。 分析表 通过分析表结构和它的关联对象,你可以执行表详细胡数据块检查去辩证是否块损坏; Analyze table table_name validate structure cascade; 数据块在缓存或者更高级别模式中被检查。索引块也被检查并且在表数据和索引行关系之间的一对一也被证实。 使用DB_VERIFY Oracle提供DB_VERIFY去验证数据文件即使当数据文件脱机或则数据库不可用。DB_VERIFY是一个外部的命令行去证实数据文件和脱机下物理结构的完整性。 使用oracle校验和工具 Oracle提供一些悄可以用来证实损坏数据的校验和工具 校验和工具能够设置在init.ora 文件中的参数和事件 通过设置db_block_checksum来在下一次所有数据块更新的次数。数据库写入器进行计算校验和的任务。当数据块的校验和被写进磁盘上时,校验和被存储在它的缓存头部。 在校验和形成后,块总是会使用校验和即使参数后来修改了。 设置log_block_checksum引起重做日志文件块被计算的校验和 对于在参数文件中每个的事件甚至10210,10211,10212和10225通过添加下面的行 Event =’event_number trace name errorstack forever, level 10’ …
-
【12c新特性】12cR1 ROWID IO Batching特性
在介绍12cR1的这个优化器特性之前,我们先来看如下的例子: SQL> create table sample nologging tablespace users as select rownum t1 from dual connect by level<=900000; Table created. SQL> alter table sample add t2 number; Table altered. update sample set t2=dbms_random.value(1,999999); 900000 rows updated. SQL> commit; Commit complete. SQL> create index ind_t1 on sample(t1) nologging tablespace users; Index created. SQL> create index ind_t2…
-
Oracle 没有备份如何恢复UNDO撤销表空间
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复! 诗檀软件专业数据库修复团队 服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected] 今天的文章是关于从丢失的UNDO数据文件中恢复数据库(如果没有可用的备份)。理想情况下,我们为PROD和PRE-PROD环境保存数据库的备份。然而,大多数机构并没有为低环境(开发,测试)数据库保留备份,因为这些数据库中的数据不很重要,比不上维持一个备份所产生的额外费用。 当没有可用备份时,我们讨论从丢失的UNDO数据文件恢复数据库的两种情形。I will discuss two scenarios related to recovering a database from a UNDO datafile loss when there is no backup available. 情形1:数据库关机,处于维护的一致状态。维修后,不知何故UNDO数据文件失踪或者被损坏。我们需要恢复数据库,并使它处于功能状态。 情形 2: 数据库崩溃,处于不一致状态。启动时,发现UNDO数据文件丢失或损坏。 当数据库处于一致状态 一直以来,该数据库处于一致状态,我们不需要用UNDO 或 REDO数据(因为没有必要实例恢复)来打开数据库。我可以装入数据库(我无法打开数据库,因为在尝试访问UNDO数据文件时DBWR会出错),改变UNDO管理为手动(回到SYSTEM表空间 ROLLBACK 段的原状),在MOUNT状态下删除UNDO数据文件(就是丢失),然后打开数据库。一旦用MANUAL ROLLBACK 段打开数据库,我们就可以用简单的“CREATE UNDO TABLESPACE” 命令创建一个新的UNDO表空间,并将其分配到数据库中,可以恢复到AUTO UNDO 管理。 这里,我只是模拟UNDO数据文件丢失,同时数据库处于一致状态。我们来看一下数据库中当前的数据文件列表。 —// —// list of datafiles //— —// sys@LABDB> select name from v$datafile; NAME…
-
Oracle RMAN- 重启的恢复和块介质恢复
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复! 诗檀软件专业数据库修复团队 服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected] 重新启动的恢复 重新启动的恢复允许重新启动出错的恢复。 Oracle9i中的RMAN引入优化的恢复进程。恢复文件时,RMAN会检查数据库数据文件的文件头。如果该文件不需要恢复,RMAN将不会恢复。此功能允许重新启动恢复操作。 BMR是什么? Oracle9i为恢复过程引入了块介质恢复(BMR)的概念。引进BMR有利于在块级不确定情况下进行数据库恢复,降低了数据库MTTR,并提高了数据库可用性。在本节中,我们将着眼于BMR的详细信息,以及如何执行BMR。 假设你收到如下Oracle错误信息: ORA-01578: ORACLE data block corrupted (file # 19, block # 44) ORA-01110: data file 19: ‘d:\oracle\oradata\data\mydb_maintbs_01.dbf’ 通常情况下,这意味着数据文件19号很可能需要从上次备份中恢复。这意味着,数据文件19包含的所有对象在恢复期间都不可用。 大多数情况下,对于RMAN和Oracle9i,采用BMR,你可以从数据库备份恢复损坏的数据块。有了BMR,您可以从RMAN备份还原个别数据块,并将这些块恢复到故障点。在块恢复过程中,Oracle将继续允许访问所有没有被损坏的块 。 注:BMR仅适用于完全恢复。不完全恢复会使得数据库处于不一致的状态。 执行 BMR 恢复 要执行BMR恢复,使用RMAN命令BLOCKRECOVER。你可以选择使用数据文件关键字来恢复特定的数据文件和块,或者如果知道数据块地址(DBA),可以使用表空间关键词在表空间级进行恢复。这里有三个数据块恢复的例子: BLOCKRECOVER DATAFILE 19 BLOCK 44; BLOCKRECOVER DATAFILE 19 BLOCK 44,66,127; BLOCKRECOVER DATAFILE 19 BLOCK 44 DATAFILE…
-
恢复已关闭的Oracle数据库
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复! 诗檀软件专业数据库修复团队 服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected] 按照以下步骤执行关闭的数据库恢复: 确保数据库已关闭。 如果可能,更正介质问题。 恢复由于介质故障受损的那些数据文件的最新备份。 没有必要恢复任何未损坏的数据文件或任何联机redo日志文件。如果硬件问题已修复,受损的数据文件就可以恢复到原来的位置,那就这样做。如果硬件问题仍然存在,将数据文件还原到另一个位置。在该进程后期需要将该位置记录在控制文件。 启动SQL*Plus,作为 SYS连接到 Oracle 。 启动实例并安装,但不要打开数据库。 如果在步骤3中将丢失的文件恢复到另外的位置,这些文件的新位置一定记录在控制文件中。请按照以下3个步骤重新定位数据文件: 确保包含数据文件的表空间在线。 确保新的、完全指定的文件名与旧文件名不同。 使用SQL命令ALTER TABLESPACE与RENAME DATAFILE选项,以便在数据库中更改文件名。 查询V$DATAFILE 视图,并确保你要恢复的所有数据文件都在线。如果数据文件处于离线,使用DATAFILE ONLINE选项发布ALTER DATABASE命令。 例如: ALTER DATABASE DATAFILE ‘users01.dbf’ ONLINE; 要启动关闭的数据库恢复,使用RECOVER命令。 Oracle现在要应用归档redo日志文件和联机redo日志文件启动前滚。如果AUTORECOVERY设置为ON,该日志文件的应用是自动的。如果没有设置为ON,系统会提示您应用每个日志文件。 恢复完成后,用ALTER DATABASE OPEN命令打开数据库。
-
Oracle 恢复过程-表空间数据文件丢失
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复! 诗檀软件专业数据库修复团队 服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected] 从 /oracle1 或 /oracle2恢复丢失的单个表空间数据文件。 以oracle操作系统用户身份登录。 如果使用数据文件的表空间联机,使用下列SQL*PLUS命令使之脱机: CONNECT SYS AS SYSDBA ALTER TABLESPACE [name] OFFLINE 其中[name]是表空间名,比如 DEV 或 PROD. 更正该问题,或为这些文件找到新的位置。 请系统管理员将丢失的数据文件最新副本从最新的Oracle备份磁带恢复到选定的位置。 如果该文件必须重新安置,使用以下命令在数据库中更改其名称以反映其变化: ALTER DATABASE RENAME FILE ‘old’ TO ‘new’ 其中 ‘old’ 和 ‘new’ 是完全路径文件名,单引号引起来。 从SQL*PLUS语句中执行RECOVER命令,使用TABLESPACE选项,如下所示 : RECOVER TABLESPACE [name] 其中[name] 是表空间名。 Oracle将提示所需的存档文件的名称,从最旧的文件开始。所需的日志都允许Oracle访问。 一旦所有日志都被应用到有效的表空间,系统会做出如下响应: Media recovery complete. 从SQL*PLUS发出以下命令使表空间联机:…
-
恢复带有丢失redo在线重做日志的ORACLE数据库
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复! 诗檀软件专业数据库修复团队 服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected] 背景 我遇到一个情况,需要从一个旧的在线备份恢复(由于RMAN “KEEP” 命令的问题) ,缺少保持恢复一致性所需要的归档重做日志备份/文件,客户不关心备份时改变的数据,他们感兴趣的是在线备份开始之前检查一些很旧的数据。 使用时间轴可视化方案(不按比例): |——-|——————|———|——————| t0 t1 t2 t3 t4 数据添加 …
-
Oracle中表丢失被drop的恢复过程
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复! 诗檀软件专业数据库修复团队 服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected] 恢复一个删除的表: 从用户那里确认表,最后一个条目删除,修改的时间或删除的位置。 作为oracle操作系统用户登录,在该系统上获得一系列完全输出文件和增量输出文件,从最后一次更新但是在文件删除之前,如果已进行一次完全输出,使用步骤4中的文件。 从出口增量的列表中,确定在文件最后一次修改的数据之后但是在文件被删除之前的数据的输出,如果对数据的修改和删除是一样的,选择表删除之前最新的输出文件,如果系统上没有文件,让系统管理员从最后一个系统备份复原输出目录(例子中的/oracle3/ORTEST1/admin/exports)的内容,然后再次检查输出文件,如果输出文件仍旧不可用,使用上一次尝试中之前的系统备份重复恢复请求,如果需要的输出文件不在可用的备份上,不能导入表,使用Oracle 数据库和归档日志文件可以恢复它,如果表未被修改,它不会在任何增量输出中,必须从一个完全的输出文件导入。 一旦输出被定位,使用下列命令设置默认目录到输出文件: cd /oracle3/ORTEST1/admin/exports 从系统提示符下使用以下导入命令来恢复表: imp SYSTEM/password FROMUSER=user TOUSER=user TABLES=(table_name )FILE=export_file_name Where: Password是数据库管理员用户的系统密码 user 是表拥有者的用户名 table_name 是将要导入的表的名称 export file name 是输出文件的名称 这将导入表,因为它是在导出文件的创建日期上,从输出发生开始添加数据或从表中移动数据,你必须再次输入数据,这可能会导致参照完整性丢失,因此你可能需要禁用任何参照完整性限制直到数据完全恢复。
-
ORACLE RMAN – 恢复数据库
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复! 诗檀软件专业数据库修复团队 服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected] 本节我们会回顾使用RMAN恢复数据库的例子,我们将讨论从冷备份中对整个数据库恢复,然后讨论从热备份中对表空间恢复的例子。 恢复冷备份 在这个例子中,我们假设备份到NOARCHIVELOG 的数据库由于多媒体故障丢失,这要求对数据库进行完全恢复,下面的例子是这种类型恢复的示例,首先,恢复了控制文件,然后复原了数据库数据文件,最后,使用ALTER DATABASE OPEN RESETLOGS命令打开数据库,这种恢复示例假设数据库处于NOMOUNT状态,确保了实例启动和运行,为节省空间,已经移动一些从RMAN的导出,只留下重要的细节 。 RMAN> run { allocate channel t1 type disk; restore controlfile to ‘/ora05/oracle/data/testo82/control01.ctl’; restore controlfile to ‘/ora05/oracle/data/testo82/control02.ctl’; restore controlfile to ‘/ora05/oracle/data/testo82/control03.ctl’; sql “alter database mount”; restore database; sql “alter database open resetlogs”; } RMAN-03022: compiling command: allocate RMAN-03023:…
-
【12c新特性】12cR1中新加入的Statistic
【12c新特性】12cR1中新加入的Statistic select A.* from v$sysstat A where A.name not in (select B.name from v$sysstat@db_11gR2 B); STATISTIC# NAME CLASS VALUE STAT_ID CON_ID 52 physical read partial requests 8 0 286702467 0 54 physical write requests optimized 8 0 2483607112 0 55 physical write request redirties 8 0 4146911311 0 56 physical write total bytes…