如何恢复一个只有完好数据文件的Oracle数据库删除如何恢复

查看: 7352|回复: 10
如何从DBF文件恢复数据
论坛徽章:0
菜鸟提问:
同是9I数据库,我从一个服务下拷贝了DBF文件(拷贝了全部ORADATA下的文件),USERS01.DBF,但当时拷贝的时候应该是没有DOWN掉服务
想在另一个服务下恢复这个DBF文件中的数据,可行么?该如何操作,坐等指导。
论坛徽章:8
dul类似工具
论坛徽章:180
odu之类的可以,现在收费了。
copy之前,最好发
你是什么问题,drop 还是truncate了表。
认证徽章论坛徽章:17
本帖最后由 Seven_Ginna 于
10:49 编辑
9I 的?不知道新的服务器下是不是也是9I?反正没搞过这个版本的,
建议可以手动创建一个控制文件,文件中内容指定的数据文件等信息指定到这些数据文件,参数文件中control_files参数指定到参数文件位置,接着试着打开数据库。
我认为如果版本没兼容性问题的话(还是9I,跟原版本一样),就是一个丢失控制文件,并重建控制文件的事儿
不知可行性啊,坐等被批
论坛徽章:2
没听懂你是做恢复还是做数据迁移
论坛徽章:0
两个服务器都是9I,应该没有版本兼容的问题。
具体情况是这样:
某个应用系统是基于ORA9I数据库,安装应用系统之先也需要安装ORA,然后在安装应用系统时会创建一些用户表,以保存业务数据。
用户在使用了应用系统后(自然,在ORA中产生了数据),将数据库服务下的数据库文件(ORADATA下的DBF文件)拷贝了出来;但是用户拷贝文件的时候并没有关闭数据库服务。
他需要将DBF文件中的业务数据读取出来。我可以重新安装数据库服务,也安装了应用系统,即创建了用户表。
最后,我需要的是,把用户拷贝过来的DBF替换这边数据库文件,如何读取数据。
这样可行么?
我直接的简单替换是不行的,需要怎么样处理呢!
或者,我不能通过数据库文件替换的方式读取,那有什么方法可以读取?用DUL之类,对我这个菜鸟是不是太深奥了一点
论坛徽章:180
要全部copy过来。
论坛徽章:0
ORADATA下的文件,有全部靠了过来
还需要其它的文件?
论坛徽章:9
如果单纯的要数据的话,,在源端把数据导出来不行?
认证徽章论坛徽章:41
如果需要,联系我,我给你看看 qq号:
itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号:10 广播电视节目制作经营许可证:编号(京)字第1149号误删Oracle数据文件的恢复方法
环境:在Open的状态,然后rm -rf users.dbf (删除users表空间),最后找回users.dbf文件。
在回复的时候,回复的方法跟数据库的版本关系不大(因为是物理文件),只是跟操作有一定的关系,如:Red hat
&,&Solaris Linux 等等。
下面进行演示:
删除users表空间.
1、我们首先进入Sqlplus,然后执行SQL语句:
select name from v$
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/prod/disk4/system01.dbf
/u01/app/oracle/oradata/prod/disk2/undotbs01.dbf
/u01/app/oracle/oradata/prod/disk5/sysaux01.dbf
/u01/app/oracle/oradata/prod/disk5/bigtbs01.dbf
/u01/app/oracle/oradata/prod/disk5/indx01.dbf
/u01/app/oracle/oradata/prod/disk2/users01.dbf
/u01/app/oracle/oradata/prod/disk3/oltp01.dbf
7 rows selected.
SQL& !rm /u01/app/oracle/oradata/prod/disk2/users01.dbf今天尝试了一下,在Linux下删除一个数据文件,然后进行回复。
&2、此时,users表空间已经被删除了,我们已经无法在users表空间上建立表了。
尝试在users表空间上建立名字为abcd123的表,已经没法建立了。
SQL& create table abcd123 tablespace users as select * from v$
create table abcd123 tablespace users as select * from v$instance
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& *
ERROR at line 1:
ORA-01116: error in opening database file 6
ORA-01110: data file 6: '/u01/app/oracle/oradata/prod/disk2/users01.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
3、确认dbwr进程PID
通过命令,我们可以看到当前数据库实例的dbwr的PID。因为我同一台主机上有两个实例,故有2个。
一个为prod,另一个为oms。
$ ps -ef|grep dbw0|grep -v grep
oracle&& 11872&&&& 1& 0 21:46 ?&&&&&&& 00:00:00 ora_dbw0_prod
oracle&& 11951&&&& 1& 0 21:47 ?&&&&&&& 00:00:01 ora_dbw0_oms
4、因为dbwr会打开所有数据文件的句柄。所以可以进入proc目录进行查找,格式为:
cd /prod/PID/fd
此处,fd为文件描述符。
我们可以清楚的看到&/u01/app/oracle/oradata/prod/disk2/users01.dbf (deleted) 的字样,表示此文件已经被删掉了。
5、进行恢复
通过cp命令,把语句柄拷贝回原来的位置。
cp 24 /u01/app/oracle/oradata/prod/disk2/users01.dbf
此处的24为其给出的编号。
6、进入recovery
执行以下SQL命令:
SQL&& alter database datafile 6
Database altered.
SQL& recover datafile 6;
Media recovery complete.
SQL& alter database datafile 6&&&&&&&&&&&
Database altered.
至此,回复完成!
我们重新尝试在users 表空间上建立一个table
SQL& create table abcd123 tablespace users as select * from v$
Table created.
SQL& select * from abcd123;
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
----------------------------------------------------------------
VERSION&&&&&&&&&& STARTUP_T STATUS&&&&&& PAR&&& THREAD# ARCHIVE LOG_SWITCH_WAIT
----------------- --------- ------------ --- ---------- ------- ---------------
LOGINS&&&& SHU DATABASE_STATUS &&INSTANCE_ROLE&&&&& ACTIVE_ST BLO
---------- --- ----------------- ------------------ --------- ---
&&&&&&&&&&&&& 1 prod
10.2.0.1.0&&&&&&& 16-APR-12 OPEN&&&&&&&& NO&&&&&&&&&& 1 STARTED
ALLOWED&&& NO& ACTIVE&&&&&&&&&&& PRIMARY_INSTANCE&& NORMAL&&& NO
我们可以发现,建立成功了,说明回复成功,如何恢复一个只有完好数据文件的数据库?_Oracle教程_动态网站制作指南
如何恢复一个只有完好数据文件的数据库?
来源:人气:5147
  在没有控制文件备份的情况下,重新创建控制文件也是其中一个选择。本文旨在帮助初学者学习之用,谢谢!!
  如何恢复一个只有完好数据文件的?
  本文欲将此数据文件恢复成数据库TTI,实例名TTI  $_HOME=d:oracleora92
  1、创建相关目录  d:oracleoradatatti --拷贝数据文件到此目录下,假如没有redolog文件,需要手工创建
d:oracleadminttibdump
d:oracleadmintticdump
d:oracleadmintticreate
d:oracleadminttfile
d:oracleadminttiudump
  2、创建初始化文件(本例的初始化文件D:oracleadminttipfileinit.ora)  可拷贝现有数据库的初始化文件进行修改,主要修改内容如下:
db_name=tti
background_dump_dest=D:oracleadminttibdump
core_dump_dest=D:oracleadmintticdump
timed_statistics=TRUE
user_dump_dest=D:oracleadminttiudump
control_files=("D:oracleoradatattiCONTROL01.CTL", "D:oracleoradatattiCONTROL02.CTL", "D:oracleoradatattiCONTROL03.CTL")
instance_name=tti
dispatchers="(OTOCOL=TCP) (SERVICE=ttiXDB)"
  3、创建实例及密码文件
开始-〉执行-〉cmd
D:&oradim.exe -new -sid tti -startmode m
D:&orapwd.exe file=d:oracleora92databasePWDtti.ora pass=zlw001
  4、添加监听和连接  1)在d:oracleora92networkadminlistener.ora中的SID_LIST_LISTENER下面添加如下内容:
(SID_DESC =
(GLOBAL_DBNAME = tti)
(ORACLE_HOME = D:oracleora92)
(SID_NAME = tti)
  2)在d:oracleora92networkadmintnsnames.ora中添加如下内容:  (这里注重:假如你的d:oracleora92networkadminsqlnet.ora中的参数NAMES.DEFAULT_DOMAIN = ###,则你的tnsnames.ora中下面的title那里也要改为tti.###)
tti = #title
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = MIS011)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = tti)
  5、开始重建控制文件  1)在类似的数据库(比如数据库名称"rman")上执行:  alter database backup   然后在D:oracleadminrmanudump下找到最新的trace文件,以文本方式打开,找到类似下面的一段话:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "rman" NORESETLOGS ARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 226
GROUP 1 'D:ORACLEORADATARMANREDO01.LOG' SIZE 100M,
GROUP 2 'D:ORACLEORADATARMANREDO02.LOG' SIZE 100M,
GROUP 3 'D:ORACLEORADATARMANREDO03.LOG' SIZE 100M
-- STANDBY LOGFILE
'D:ORACLEORADATARMANSYSTEM01.DBF',
'D:ORACLEORADATARMANUNDOTBS01.DBF',
'D:ORACLEORADATARMANCWMLITE01.DBF',
'D:ORACLEORADATARMANDRSYS01.DBF',
'D:ORACLEORADATARMANEXAMPLE01.DBF',
'D:ORACLEORADATARMANINDX01.DBF',
'D:ORACLEORADATARMANODM01.DBF',
'D:ORACLEORADATARMANTOOLS01.DBF',
'D:ORACLEORADATARMANUSERS01.DBF',
'D:ORACLEORADATARMANXDB01.DBF',
'D:ORACLEORADATARMANTEST.ORA'
CHARACTER SET WE8MSWIN1252
  2)将上面这段话修改为如下:
STARTUP NOMOUNT
CREATE CONTROLFILE set DATABASE "tti" RESETLOGS --注重这里要"set"
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 226
GROUP 1 'D:ORACLEORADATAttiREDO01.LOG' SIZE 100M,
GROUP 2 'D:ORACLEORADATAttiREDO02.LOG' SIZE 100M,
GROUP 3 'D:ORACLEORADATAttiREDO03.LOG' SIZE 100M
-- STANDBY LOGFILE
'D:ORACLEORADATAttiSYSTEM01.DBF',
'D:ORACLEORADATAttiUNDOTBS01.DBF',
'D:ORACLEORADATAttiCWMLITE01.DBF',
'D:ORACLEORADATAttiDRSYS01.DBF',
'D:ORACLEORADATAttiEXAMPLE01.DBF',
'D:ORACLEORADATAttiINDX01.DBF',
'D:ORACLEORADATAttiODM01.DBF',
'D:ORACLEORADATAttiTOOLS01.DBF',
'D:ORACLEORADATAttiUSERS01.DBF',
'D:ORACLEORADATAttiXDB01.DBF',
'D:ORACLEORADATAttiTEST.ORA'
CHARACTER SET WE8MSWIN1252
  3)开始重建控制文件
D:&sqlplus/nolog
SQL*Plus: Release 9.2.0.1.0 - ProdUCtion on Thu Nov 16 09:08:19 2006
Copyright (c) , Oracle Corporation. All rights reserved.
SQL& conn sys/zlw001@
Connected to an idle instance.
SQL& startup nomount pfile=d:oracleadminttipfileinit.
ORACLE instance started.
Total System Global Area
Fixed Size 453492 bytes
Variable Size
Database Buffers
Redo Buffers 667648 bytes
SQL& CREATE CONTROLFILE set DATABASE "tti" RESETLOGS
2 -- SET STANDBY TO MAXIMIZE PERFORMANCE
3 MAXLOGFILES 50
4 MAXLOGMEMBERS 5
5 MAXDATAFILES 100
6 MAXINSTANCES 1
7 MAXLOGHISTORY 226
9 GROUP 1 'D:ORACLEORADATAttiREDO01.LOG' SIZE 100M,
10 GROUP 2 'D:ORACLEORADATAttiREDO02.LOG' SIZE 100M,
11 GROUP 3 'D:ORACLEORADATAttiREDO03.LOG' SIZE 100M
12 -- STANDBY LOGFILE
13 DATAFILE
14 'D:ORACLEORADATAttiSYSTEM01.DBF',
15 'D:ORACLEORADATAttiUNDOTBS01.DBF',
16 'D:ORACLEORADATAttiCWMLITE01.DBF',
17 'D:ORACLEORADATAttiDRSYS01.DBF',
18 'D:ORACLEORADATAttiEXAMPLE01.DBF',
19 'D:ORACLEORADATAttiINDX01.DBF',
20 'D:ORACLEORADATAttiODM01.DBF',
21 'D:ORACLEORADATAttiTOOLS01.DBF',
22 'D:ORACLEORADATAttiUSERS01.DBF',
23 'D:ORACLEORADATAttiXDB01.DBF',
24 'D:ORACLEORADATAttiTEST.ORA'
25 CHARACTER SET WE8MSWIN1252;
Control file created.
SQL& alter dat
Database altered.
SQL& select instance_name,status from v$
INSTANCE_NAME STATUS
---------------- ------------
SQL& select ts#,name from v$
file# NAME
--------- --------------------------------------------
1 D:ORACLEORADATATTISYSTEM01.DBF
2 D:ORACLEORADATATTIUNDOTBS01.DBF
3 D:ORACLEORADATATTICWMLITE01.DBF
4 D:ORACLEORADATATTIDRSYS01.DBF
5 D:ORACLEORADATATTIEXAMPLE01.DBF
6 D:ORACLEORADATATTIINDX01.DBF
7 D:ORACLEORADATATTIODM01.DBF
8 D:ORACLEORADATATTITOOLS01.DBF
9 D:ORACLEORADATATTIUSERS01.DBF
10 D:ORACLEORADATATTIXDB01.DBF
11 D:ORACLEORADATATTITEST.ORA
11 rows selected.
  至此全部结束!
优质网站模板&&&&&&&&&&&&如何恢复一个只有完好数据文件的Oracle数据库?
正在努力加载播放器,请稍等…
正在努力加载播放器
大小:74.19KB&&所需金币:50
&& & 金币不足怎么办?
下载量:-次 浏览量:122次
贡献时间: 18:30:02
文档标签:
已有-位用户参与评分
同类热门文档
你可能喜欢
看过这篇文档的还看过
阅读:1555&&下载:40
阅读:195&&下载:4
阅读:228&&下载:3
阅读:195&&下载:2
阅读:727&&下载:2
阅读:81&&下载:2
阅读:187&&下载:1
阅读:277&&下载:1
阅读:172&&下载:0
阅读:78&&下载:0
该用户的其他文档
所需财富值:
50文件大小:74.19KB
您当前剩余财富值:&&
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
举报该文档侵犯版权。
例: /help.shtml君,已阅读到文档的结尾了呢~~
广告剩余8秒
文档加载中
oracle数据库还原,如何将dmp文件还原到oralce库oracle
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
oracle数据库还原,如何将dmp文件还原到oralce库
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 复制数据库数据文件 的文章

 

随机推荐