这可能是部分刚接手的运维人员 或者代维人员所要遇到的问题, 一个老的数据库只剩下DBF文件了,要如何恢复其中的数据?
其实这个问题 分成好多种情况,请自行对号入座:
1)数据库所有的DBF文件都在,没有缺失,也没有损坏
这个情况是最简单的 自己建一个参数文件INITORA,并基于这些DBF文件去创建控制文件,然后尝试打开数据库即可。如果说数据文件都是干净的CLEAN的,那么直接可以打开。如果数据文件是DIRTY的,这里由于没有REDO LOG了,所以需要以隐藏参数等方式打开数据库。
2) 数据库DBF有少量缺失,缺失主要是非SYSTEM01DBF的数据文件,没有损坏
这种情况在 1)的基础上将缺失的数据文件OFFLINE DROP掉就好了,因为对应的数据文件都没了,那么丢了对应数据文件上的数据也很正常
3) 数据库DBF有少量缺失,缺失主要是非SYSTEM01DBF的数据文件,非SYSTEM01dbf的数据文件有少量损坏
这种情况在 2)的基础上打开数据库问题并不大,但打开数据库后 由于其他表空间数据文件上有少量损坏,所以具体访问用户数据时可能出现ORA-1578、ORA-8103、ORA-1410、ORA-00600等错误,还是比较容易克服的
4) 数据库DBF有少量缺失,缺失主要是非SYSTEM01DBF的数据文件,SYTEM01DBF有损坏
这种情况下打开数据库就不容易了,可能需要用到BBED技术去修改SYSTEM01DBF,以便才能打开数据库
5) 只有部分DBF,其中还缺失了SYSTEM01DBF
这种情况不要指望能打开数据库,只能使用PRM-DUL之类的软件 来直接抽取数据
以上情况1)~4) 只要SYSTEM01DBF还在或者损坏的不是太严重,那么都可以由专业技术人员去打开数据库后导出数据,但是在情况5)下只能使用DUL类工具去抽取数据了。
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
回复有问题,你是dmp恢复的吧,这样的话要求数据库名字,数据库文件存放的路径都要和原来的一样。你要恢复这个数据库,先建立数据库名字,和数据库表空间,表空间位置,错误里已经提示出来了。然后就是数据库导入命令指定建立的这个数据库。
删除表后,可以采用如下 *** 作:
在 user_recyclebin中找到最近 *** 作过的表名称,然后用闪回(只能用于10G及以上版本)。
FLASH BACK TABLE TABLE_NAME TO BEFORE DROP;
如果是删了或修改里面的数据,可以先建立一个快表将删除修改之前状态的数据找回到这个表中:
CREATE TABLE QUICK_TABLE AS
SELECT FROM TABLE_NAME AS OF TIMESTAMP SYSTEM-1/24 (一小时前的),减去的时间可以自己定。如楼上F_253那位老兄的写法就不错,能自由定制时间
首先,undo表空间满是正常的,oracle自然会重用或者扩展它,一般不用管它。
然后,现在要解决的话,需要先把undo tablespace设置成手动,启动数据库,创建新的undo tablespace。把新的设置成默认的。
假设你的库现在是mounted状态
1 创建PFILE(如果已有就是更新)
SQL>create pfile from spfile;
2 关闭数据库
SQL>shutdown immediate
3 在你的$ORACLE_HOME/dbs目录下面找个叫做
init<数据库>ora的文件,把其中有undo_management=AUTO的一行改成
undo_management=MANUAL
如果没有就在文件末尾填一行
4 以sysdba身份连接数据库
SQL>connect "/ as sysdba"
用刚才改过的文件启动数据库
SQL> startup pfile=<刚才的文件全路径和名字>
这步是最关键的,如果成功,后面就没问题了
5 drop掉原来的表空间
SQL> drop tablespace <原来的undo表空间名字> including contents;
6 创建新的undo表空间
SQL> create UNDO tablespace undotbs2 datafile '/u01/app/oracle/oradata/orcl/undotbs02dbf' size 100M autoextend on;
7 关闭数据库,
SQL>shutdown immediate
在开始那个init文件里设置UNDO_MANAGEMENT=AUTO
和 UNDO_TABLESPACE=UNDOTBS2
8 再做一次第四步
9 更新spfile
SQL>create spfile from pfile;
10 关闭数据库,正常重新启动
SQL>shutdown immediate
SQL>startup
11 去网上教你删undo那个地方骂它。非常想当然的做法。没有任何理由这么做
12 让你的工程师去学oracle 培训
以上步骤的中的第5步可能会出问题。我不确认。。。 但是即使第5步不成功,问题应该也不大
一种方法是重装数据库后用IMP来导入原来的数据,但使用这种方法的前提是你有以前数据的备份,并且这种方法还有许多不足的地方,如备份过旧,可能会丢失许多数据、导入数据太长等。
一般情况下我们可以采用重用原来的数据库的方法来恢复。在讲步骤前先说说这种方法的原理。
数 据库与实例对应,当数据库服务启动后,我们可以用SQLPLUS "/AS SYSDBA"方法连接到一个空闲的例程,当执行startup启动数据库时,首先会在%ORACLE_HOME%/database下找当前SID对应 的参数文件(PFILE或者SPFILE)和密码文件,然后启动例程;接着根据参数文件记录的信息找到控制文件,读取控制文件的信息,这就是mount数 据库了;最终根据控制文件的信息打开数据库。这个过程相当于对数据库着了一次冷备份的恢复。
下面的具体步骤:(我们假设原库的所有相关文件都存在)1、安装数据库软件只需安装同版本的数据库软件即可,不需要创建数据库。最好安装在和原来数据库同样的%ORACLE_HOME%下,省得还要修改参数文件路径等。(直接覆盖原来的oracle即可)再次强调,只安装软件,不创建数据库,否则将数据库软件安装在同样的目录下旧的部分数据文件会被覆盖,这样数据库也不能被恢复了。
2、新建一个实例在cmd窗口执行oradim -new -sid xinhai注意,这个SID名称最好与你以前的SID一样,否则在启动的数据需要指明pfile,并且需要重建密码文件,比较麻烦。(当然,如果你就不想用原来的SID也可以,把参数文件、密码文件的名称都改成与新SID对应的名称)。
3、启动数据库做完以上两步,就可以启动数据库了。用net start 检查oracle服务是否已经启动,如果oracle服务没有启动,则在cmd下运行如下命令:net start oracleservicexinhai然后设定必要的环境变量,在cmd窗口运行set ORACLE_SID=xinhai
接着连接数据库sqlplus "/as sysdba"startup
如果正常的话,数据库应该就能起来了
4、启动监听lsnrctl start
5、后续工作经过以上几步后,基本上就可以使用oracle了,但是使用起来有点不方便,如每次在cmd中启动数据库都需要先SET ORACLE_SID、在本机连接数据库也都需要加上@TNSNAME等。我们可以修改注册表,添加ORACLE_SID的信息,避免这些麻烦。
在注册表的HKEY_LOCAL_MACHINESOFTWAREORACLE下新建字符串值,名称为ORACLE_SID,值为xinhai。也可以将以下内容保持成一个后缀名为reg的文件(文件名随便起),然后双击,即可将信息导入到注册表中。
Windows Registry Editor Version 500
[HKEY_LOCAL_MACHINESOFTWAREORACLE]"ORACLE_SID"="xinhai"
注意,以上步骤都是在%ORACLE_HOME%、%ORACLE_SID%都与原库一样的情况下讨论的,虽然%ORACLE_HOME%和%ORACLE_SID%可以与原库不一样,但为了减少麻烦和出错的几率,建议不要改变则两个值。
6、如果系统启动时 还不能启动oracle就增加以下
编辑一个oracle_startupbat文档 内容为:
set sid=xinhailsnrctl start>>e:/oracle_startuploglogsqlplus /nolog @e:oracle_startupsqltxt>>e:/ oracle_startuploglog
在e盘下增加文档oracle_startuploglog,内容为:
connect / as sysdba;startup nomount;alter database mount;alter database open;quit
然后把oracle_startupbat放到系统启动项里面,这样每次启动系统时oracle就自动启动了。
以上就是关于如何从完好的oracle数据文件恢复oracle数据库要实际能 *** 作的,我只有dbf文件 20个g全部的内容,包括:如何从完好的oracle数据文件恢复oracle数据库要实际能 *** 作的,我只有dbf文件 20个g、oracle数据库恢复,提示ORA-01110: 数据文件 35: ''、oracle数据库数据删除后如何恢复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)