救命啊!数据要怎么恢复? maybe help:http://www.cnoug.org/bin/ut/topic_show.cgi?id=94&h=1&bpg=1&age=0 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 修改NLS_LANG也许那些????就可以出来了。至于恢复嘛,这个说起来就长了。不过还是提醒一下,在恢复数据库前一定要备份一次。不然恢复失败了就只有哭了。 如果你在没有再好的办法了的话!!!注意:前提是你真的没有办法了的话!你这样做!你把oracle中的database这个文件夹备份到其他的地方!!然后把oralce删除!!重新安装oracle!!建立数据库!这里要保证你刚刚建立 数据库和以前的一样!!然后停掉所有的oracle服务!!!把刚刚要你备份的文件拷贝到同样的目录进行覆盖就可以了!当然这个上一最坏的打算了! 用归档模式下的热备份重建数据库下面是根据“Oracle数据库在线自动备份系统”产生的备份文件来重建和恢复Oracle数据库的方法和步骤。一、系统环境本次测试所使用的系统环境如下:1. 硬件环境服务器:Dell PowerEdge 1300 (CPU:PⅢ 550MHz 内存:128MB 硬盘:36GB)2. 软件环境操作系统:UnixWare 7.1数据库: Oracle 8.1.6 for Unix 企业版,SID:ora816Oracle安装路径:/home/oracle备份文件:所有数据库文件、控制文件、初始化文件、数据库备份以来的所有归档日志文件。二、恢复步骤下面根据从用户处带回来的备份数据,在一台新的服务器重建Oracle数据库。其详细步骤如下: 1. 创建数据库恢复使用的环境在新的Dell服务器上,安装与原来的数据库服务器相同的操作系统UnixWare 7.1;然后安装与原数据库相同版本的Oracle 8.1.6 for Unix 企业版。2. 删除新服务器上的Oracle实例启动新数据库服务器上的Oracle,在sqlplus中,查找到数据库文件的路径,并保存在当前路径下的文件file_name.txt中:$ sqlplus system/managerSQL> spool file_name.txtSQL> select file_name from sys.dba_data_files;SQL> spool endSQL>exit关闭新服务器的Oracle,然后根据文件file_name.txt中的路径,删除新装的Oracle实例的所有数据库文件。注:从本步开始所有操作都是用Oracle用户登录操作系统(Unix)后进行。文中所有的黑色粗体5号字符(标题除外)的语句可以直接执行,黑色倾斜粗体5号字符的语句需要修改后执行。3. 恢复数据库文件把备份的所有数据库文件用Ftp上传新的数据库服务器中的相同路径下。如果原来的路径已不存在,可以拷贝到其他路径下,恢复时详细处理方法见步骤7中<2>。4. 恢复初始化参数文件把备份的initSID.ora文件用Ftp上传到新数据库服务器中Oracle实例的initSID.ora文件位置,覆盖之。其位置一般在$ORACLE_HOME/dbs目录下。5. 恢复控制文件把备份的ControlFile.bak文件用Ftp上传到新数据库服务器中Oracle实例的各个镜像路径下,并按初始化参数文件initSID.ora中的该项的位置和名称命名。control_files = ("/home/oracle/app/oracle/oradata/ora816/control01.ctl", "/home/oracle/app/oracle/oradata/ora816/control02.ctl","/home/oracle/app/oracle/oradata/ora816/control03.ctl")其路径如有变动,请在初始化参数文件initSID.ora中修改如上内容的路径和名称,使其实际路径与该参数的路径一致。 6. 恢复归档日志文件把数据库备份后的归档日志用Ftp上传到新数据库服务器的相同路径下。路径如有变动可以根据初始化参数文件initSID.ora中如下位置进行修改,使其实际路径与该参数的路径一致。log_archive_dest_1 = "location=/home/oracle/app/oracle/admin/ora816/arch" 7. 恢复数据库经过以上6个步骤,把所有的备份文件已经上传到了新数据库服务器中。下面开始根据这些文件恢复并启动数据库,先在操作系统的提示符下做如下操作:$svrmgrlSVRMGR>connect internalSVRMGR>startup mount<1> 创建口令文件如果原来的数据库配置了口令文件,并且在mount数据库时报如下错误:ORA-01990: error opening password file '/home/oracle/app/oracle/product/8.1.6/dbs/orapw'可以到/home/oracle/app/oracle/product/8.1.6/dbs/路径下,用以下命令创建口令文件:orapwd其用法如下:Usage: orapwd file=<fname> password=<password> entries=<users> where file - name of password file (mand),(口令文件的命名方式为:orapwSID) password - password for SYS and INTERNAL (mand), entries - maximum number of distinct DBA and OPERs (opt), There are no spaces around the equal-to (=) character.例如: orapwd file=orapwora816 password=manager然后重新执行如下语句mount数据库:SVRMGR>startup mount。<2> 修改数据库文件的路径如果在上述的步骤3中修改了恢复的数据库文件的路径,可以用如下语句对数据库文件重新命名 : alter database rename file 'old_file' to 'new_file';如把原来路径/home/oracle/app/oracle/oradata/ora816下的文件system01.dbf改到了/u21/oracle/app/oracle/oradata/ora816下:SVRMGR>alter database rename file '/home/oracle/app/oracle/oradata/ora816/system01.dbf' to '/u21/oracle/app/oracle/oradata/ora816/system01.dbf';按照上面的方法把所有修改路径的数据库文件重新命名。<3> 根据控制文件和归档日志文件恢复数据库下面开始用控制文件和归档日志文件恢复数据库:SVRMGR>recover database using backup controlfile until cancel;出现如下提示: ORA-00279: change 439047 generated at 07/26/2002 10:42:49 needed for thread 1 ORA-00289: suggestion : /home/oracle/app/oracle/admin/ora816/arch/arch_1_4785.arc ORA-00280: change 439047 for thread 1 is in sequence #4785 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}输入: auto如果有如下提示,则表示成功。Log applied. 意外处理:如果其它提示可能是需要的日志文件不存在,请检查ORA-00289中该文件是否存在。直到出现如下提示:no longer needed for this recovery.<4> 重置日志SVRMGR>alter database open resetlogs;意外处理:如果提示创建日志的路径不存在,请按提示路径创建目录。然后再重置日志。<5> 重启数据库,完成恢复SVRMGR>shutdown immediateSVRMGR>startup ORACLE instance started.Total System Global Area 123437040 bytesFixed Size 69616 bytesVariable Size 106418176 bytesDatabase Buffers 16777216 bytesRedo Buffers 172032 bytesDatabase mounted.Database opened. 数据库正常打开,数据库重建恢复成功。 大家好,问一个字符集转换的问题 各位大侠,帮帮忙 quantum 增加数据的问题 这个序列怎么能插入到表里啊?? 怎样判断本机的客户端版本 Oracle中如何得到某个用户所拥有的全部表名? 请问,关于sequence的问题。 我装了oracle可怎么自己没权限去修改表中的记录? 那里有关于ORACLE8I的SQL语法的教材!! oracle中支持id字段的自增长功能吗? View在是否可以通过odbc连接?
至于恢复嘛,这个说起来就长了。不过还是提醒一下,在恢复数据库前一定要备份一次。
不然恢复失败了就只有哭了。
你这样做!
你把oracle中的database这个文件夹备份到其他的地方!!
然后把oralce删除!!
重新安装oracle!!建立数据库!
这里要保证你刚刚建立 数据库和以前的一样!!
然后停掉所有的oracle服务!!!
把刚刚要你备份的文件拷贝到同样的目录进行覆盖就可以了!当然这个上一最坏的打算了!
一、系统环境
本次测试所使用的系统环境如下:
1. 硬件环境
服务器:Dell PowerEdge 1300 (CPU:PⅢ 550MHz 内存:128MB 硬盘:36GB)
2. 软件环境
操作系统:UnixWare 7.1
数据库: Oracle 8.1.6 for Unix 企业版,SID:ora816
Oracle安装路径:/home/oracle
备份文件:所有数据库文件、控制文件、初始化文件、数据库备份以来的所有归档日志文件。
二、恢复步骤
下面根据从用户处带回来的备份数据,在一台新的服务器重建Oracle数据库。其详细步骤如下:
1. 创建数据库恢复使用的环境
在新的Dell服务器上,安装与原来的数据库服务器相同的操作系统UnixWare 7.1;然后安装与原数据库相同版本的Oracle 8.1.6 for Unix 企业版。
2. 删除新服务器上的Oracle实例
启动新数据库服务器上的Oracle,在sqlplus中,查找到数据库文件的路径,并保存在当前路径下的文件file_name.txt中:
$ sqlplus system/manager
SQL> spool file_name.txt
SQL> select file_name from sys.dba_data_files;
SQL> spool end
SQL>exit
关闭新服务器的Oracle,然后根据文件file_name.txt中的路径,删除新装的Oracle实例的所有数据库文件。
注:从本步开始所有操作都是用Oracle用户登录操作系统(Unix)后进行。文中所有的黑色粗体5号字符(标题除外)的语句可以直接执行,黑色倾斜粗体5号字符的语句需要修改后执行。
3. 恢复数据库文件
把备份的所有数据库文件用Ftp上传新的数据库服务器中的相同路径下。如果原来的路径已不存在,可以拷贝到其他路径下,恢复时详细处理方法见步骤7中<2>。
4. 恢复初始化参数文件
把备份的initSID.ora文件用Ftp上传到新数据库服务器中Oracle实例的initSID.ora文件位置,覆盖之。其位置一般在$ORACLE_HOME/dbs目录下。
5. 恢复控制文件
把备份的ControlFile.bak文件用Ftp上传到新数据库服务器中Oracle实例的各个镜像路径下,并按初始化参数文件initSID.ora中的该项的位置和名称命名。
control_files = ("/home/oracle/app/oracle/oradata/ora816/control01.ctl", "/home/oracle/app/oracle/oradata/ora816/control02.ctl","/home/oracle/app/oracle/oradata/ora816/control03.ctl")
其路径如有变动,请在初始化参数文件initSID.ora中修改如上内容的路径和名称,使其实际路径与该参数的路径一致。
6. 恢复归档日志文件
把数据库备份后的归档日志用Ftp上传到新数据库服务器的相同路径下。路径如有变动可以根据初始化参数文件initSID.ora中如下位置进行修改,使其实际路径与该参数的路径一致。
log_archive_dest_1 = "location=/home/oracle/app/oracle/admin/ora816/arch"
7. 恢复数据库
经过以上6个步骤,把所有的备份文件已经上传到了新数据库服务器中。下面开始根据这些文件恢复并启动数据库,先在操作系统的提示符下做如下操作:
$svrmgrl
SVRMGR>connect internal
SVRMGR>startup mount
<1> 创建口令文件
如果原来的数据库配置了口令文件,并且在mount数据库时报如下错误:
ORA-01990: error opening password file '/home/oracle/app/oracle/product/8.1.6/dbs/orapw'
可以到/home/oracle/app/oracle/product/8.1.6/dbs/路径下,用以下命令创建口令文件:
orapwd
其用法如下:
Usage: orapwd file=<fname> password=<password> entries=<users>
where
file - name of password file (mand),(口令文件的命名方式为:orapwSID)
password - password for SYS and INTERNAL (mand),
entries - maximum number of distinct DBA and OPERs (opt),
There are no spaces around the equal-to (=) character.
例如: orapwd file=orapwora816 password=manager
然后重新执行如下语句mount数据库:
SVRMGR>startup mount。
<2> 修改数据库文件的路径
如果在上述的步骤3中修改了恢复的数据库文件的路径,可以用如下语句对数据库文件重新命名 :
alter database rename file 'old_file' to 'new_file';
如把原来路径/home/oracle/app/oracle/oradata/ora816下的文件system01.dbf改到了/u21/oracle/app/oracle/oradata/ora816下:
SVRMGR>alter database rename file
'/home/oracle/app/oracle/oradata/ora816/system01.dbf'
to '/u21/oracle/app/oracle/oradata/ora816/system01.dbf';
按照上面的方法把所有修改路径的数据库文件重新命名。
<3> 根据控制文件和归档日志文件恢复数据库
下面开始用控制文件和归档日志文件恢复数据库:
SVRMGR>recover database using backup controlfile until cancel;
出现如下提示:
ORA-00279: change 439047 generated at 07/26/2002 10:42:49 needed for thread 1
ORA-00289: suggestion : /home/oracle/app/oracle/admin/ora816/arch/arch_1_4785.arc
ORA-00280: change 439047 for thread 1 is in sequence #4785
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
输入:
auto
如果有如下提示,则表示成功。
Log applied.
意外处理:如果其它提示可能是需要的日志文件不存在,请检查ORA-00289中该文件是否存在。
直到出现如下提示:
no longer needed for this recovery.
<4> 重置日志
SVRMGR>alter database open resetlogs;
意外处理:如果提示创建日志的路径不存在,请按提示路径创建目录。然后再重置日志。
<5> 重启数据库,完成恢复
SVRMGR>shutdown immediate
SVRMGR>startup
ORACLE instance started.
Total System Global Area 123437040 bytes
Fixed Size 69616 bytes
Variable Size 106418176 bytes
Database Buffers 16777216 bytes
Redo Buffers 172032 bytes
Database mounted.
Database opened.
数据库正常打开,数据库重建恢复成功。