oracle怎么介质恢复,oracle介质恢复命令

Oracle表空间的ORACLE表空间恢复方案

ORACLE表空间错误现象:

成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、成都做网站、外贸网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的东湖网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

在启动数据库时出现ORA-01157,ORA-01110或操作系统级错

误例如ORA-07360,在关闭数据库(使用shutdown normal或shutdown immediate) 时将导致错误ORA-01116,ORA-01110以及操作系统级错误ORA-07368

解决:

以下有两种解决方案:

方案一、用户的表空间可以被轻易地重建

导出的对象是可用的或表空间中的对象可以被轻易地重建等。在这种情况下,最简单的方法是offline并删除该数据文件,删除表空间并重建表空间以及所有的对象。

svrmgrl startup mount

svrmgrl alter database datafile filename offline drop;

svrmgrl alter database open;

svrmgrl drop tablespace tablespace_name including contents;

重建表空间及所有对象。

方案二、用户的表空间不能够被轻易地重建

在大多数情况下,重建表空间是不可能及太辛苦的工作.方法是倒备份及做介质恢复.如果您的系统运行在NOARCHIVELOG模式下,则只有丢失的数据,在online redo log中方可被恢复。

步骤如下:

1)Restore the lost datafile from a backup

2)svrmgrl startup mount

3)svrmgrl select v1.group#,member,sequence#,first_change# from v$log v1,v$logfile v2 where v1.group#=v2.group#;

4)如果数据库运行在NOARCHIVELOG模式下则:svrmgrl select file#,change# from v$recover_file;

如果 CHANGE# 大于最小的FIRST_CHANGE#则数据文件可以被恢复。

如果 CHANGE# 小于最小的FIRST_CHANGE#则数据文件不可恢复。恢复最近一次的全备份或采用方案一。

5)svrmgrl recover datafile filename;

6)确认恢复成功

7)svrmgrl alter database open resetlogs;

只读表空间无需做介质恢复,只要将备份恢复即可。唯一的例外是:

表空间在最后一次备份后被改为read-write 模式

表空间在最后一次备份后被改为read-only 模式

在这种情况下,均需进行介质恢复。 有三种种情况:

1、数据库已经完全关闭(使用shutdown immediate或shutdown命令)

1) 确认数据库完全关闭

2) 修改init.ora文件,注释"rollback-segment"

3) svrmgrl startup restrict mount

4) svrmgrl alter database datafile filename offline drop;

5) svrmgrl alter database open;

基于出现的结果:"statement PRocessed" 转(7);"ORA-00604,ORA-00376,ORA-01110"转(6)

6) svrmgrl shutdown immediate

修改init.ora文件,增加如下一行:_corrupted_rollback_segments = (roll1,...rolln)

svrmgrl startup restrict

7) svrmgrl drop tablespace tablespace_name including contents;

8) 重建表空间及回滚段

9) svrmgrl alter system disable restricted session;

10) 修改init.ora文件

2、数据库未完全关闭(数据库崩溃或使用shutdown abort命令关闭数据库)

1) 恢复备份

2) svrmgrl startup mount

3) svrmgrl select file#,name,status from v$datafile;

svrmgrl alter database datafile filename online;

4) svrmgrl select v1.group#,member,sequence#,first_change# from v$log v1,v$logfile v2 where v1.group#=v2.group#;

5) svrmgrl select file#,change# from v$recover_file; #参见方案2-4

6) svrmgrl recover datafile filename;

7) svrmgrl alter database open;

3、数据库处于打开状态

1) 删除回滚段和表空间

2) 重建表空间和回滚段

Oracle里的介质恢复是什么意思?我是初学者,谢谢你。

介质恢复指当oracle不能使用联机日志文件进行恢复的情况,这需要DBA参与。通常需要取备份文件再结合

应用归档日志文件和联机日志文件进行恢复。

oracle数据库恢复方法

第一种:

首先,备份数据库(X:\oracle\oradata)下的数据文件,重新命名即可(否则装数据库的时候会提示sid已存在)。重新安装数据库,当然数据库的名字就是你要恢复的名字。安装完成后,打开控制面板,停止oracle的服务。把(X:\oracle\oradata)下新生成的文件改名,把原先目录下的文件恢复名字。再重新启动oracle服务和监听。用sys/as dba 登陆数据库,可能会提示权限不够(ora-01031)修改(X:\oracle\ora92\network\admin )文件夹下的sqlnet.ora文件,添加SQLNET.AUTHENTICATION_SERVICES= (NTS),增加权限。登陆进去后,打开table提示不能打开。打开common页,执行命令alert database open;这时再刷新table,发现原先的表可以打开了。恢复成功了。再用原先数据库的普通用户进入。发现一切正常。

第二种:

1、首先,将原来的ORACLE文件夹改名,原来的路径是D:/oracle.我暂时改成D:/oracle_old.找来ORACLE(我用的是ORACLE 9I)安装光盘,将ORACLE安装在原来安装的目录下,这样恢复起来更加方便,主要是注册表的内容不用修改。

2、安装完了之后,系统中又有一个可以使用的ORACLE了。这个时候要做的就是将原来的文件和数据恢复过来。第一步,先关闭ORACLE的所有已经启动的项目,在"服务"里面逐一关闭。然后,将安装目录改名。(例如D:/oracle.改成D:/oracle_new,再将D:/oracle_old改成D:/oracle. )这样理论上说从物理层面恢复了ORACLE了。但是现在还不能启动ORACLE的监听程序和服务程序,还要从逻辑上解决。

3、在dos环境下执行一个删除命令:oradim -delete -sid mm,其中mm为创建oracle时候创建的实例 建议执行这个命令后重新启动机器,重启后就可以建立和原来实例名相同的实例。当然你懒,不重新启动也可以,但是你的实例名就不能和原来的一样了。

4、在dos环境下执行命令 oradim -new -sid mm -startmode a -pfile "D:\oracle\admin\mm\pfile\initmm.ora "创建一个新的实例,其中 "mm"为新数据库的名称。

5、启动服务,先打开数据库,然后可以用以前的用户名和密码登陆进去。 要补充的是,一般的ORACLE数据库的监听程序都是用电脑的名称来识别地址的,而不是127.0.0.1或者localhost.所以,如果我们安装系统的时候用的是不同的电脑名称(比如我原来用的是wm_mm.重新安装后用的是wenming_mm),那么还有一个工作要做,就是修改文件 listener.ora.将里面的相关的东西改过来就可以了。

需要耐心、细心,可能在一步里有一个细小的差别就会出些古怪的错误提示,有时需要根据错误提示采取策略,总之原理是,先装一个一模一样的ORACLE,安装目录、数据库名称都一样,这样保证注册表里不用更改;再覆盖物理文件,最后重新实例化,打开数据库就可以进去了。

注:恢复必须要有以下文件 a、初始化参数文件INIT.ORA b、所有数据文件 .dbf c、所有重做日志文件(联机日志、归档日志)redo d、所有控制文件 crtl e、internal密码文件。

重装系统后,怎么恢复oracle数据库?

任何软件都有可能在有意或无意的情况下被重新安装,如Oracle重装后数据库怎么恢复呢?情况发生在你是无意的情况下!ORACLE数据库恢复的方法我们经常会用到,下面就为您介绍重装系统后ORACLE数据库恢复的方法,希望对您学习ORACLE数据库恢复方面能有所帮助。\x0d\x0a\x0d\x0a我的电脑突然挂了,不得不重装系统,不过我的ORACLE装在了D盘,所有的文件都还在,我相信一定能够恢复,直到搞定工作,我才开始整我的数据库,花了两天时间,终于恢复了,庆祝一下,同时总结一下,希望有遇到同样问题的朋友能够快速搞定此类问题\x0d\x0a\x0d\x0a第一种:\x0d\x0a\x0d\x0a首先,备份数据库(X:\oracle\oradata)下的数据文件,重新命名即可(否则装数据库的时候会提示sid已存在)。重新安装数据\x0d\x0a库,当然数据库的名字就是你要恢复的名字。安装完成后,打开控制面板,停止oracle的服务。把(X:\oracle\oradata)下新生成的文件\x0d\x0a改名,把原先目录下的文件恢复名字。再重新启动oracle服务和监听。用sys/as dba \x0d\x0a登陆数据库,可能会提示权限不够(ora-01031)修改(X:\oracle\ora92\network\admin \x0d\x0a)文件夹下的sqlnet.ora文件,添加SQLNET.AUTHENTICATION_SERVICES= \x0d\x0a(NTS),增加权限。登陆进去后,打开table提示不能打开。打开common页,执行命令alert database \x0d\x0aopen;这时再刷新table,发现原先的表可以打开了。恢复成功了。再用原先数据库的普通用户进入。发现一切正常。至此,大功告成。\x0d\x0a\x0d\x0a第二种:\x0d\x0a\x0d\x0a1、首先,将原来的ORACLE文件夹改名,原来的路径是D:/oracle.我暂时改成D:/oracle_old.找来ORACLE(我用\x0d\x0a的是ORACLE 9I)安装光盘,将ORACLE安装在原来安装的目录下,这样恢复起来更加方便,主要是注册表的内容不用修改。\x0d\x0a\x0d\x0a2、安装完了之后,系统中又有一个可以使用的ORACLE了。这个时候要做的就是将原来的文件和数据恢复过来。第一步,先关闭ORACLE的所\x0d\x0a有已经启动的项目,在"服务"里面逐一关闭。然后,将安装目录改名。我现在用的是D:/oracle.改成D:/oracle_new.再将D:\x0d\x0a/oracle_old改成D:/oracle. \x0d\x0a这样理论上说从物理层面恢复了ORACLE了。但是我们发现,现在还不能启动ORACLE的监听程序和服务程序。我们还要从逻辑上解决。\x0d\x0a\x0d\x0a3、在dos环境下执行一个删除命令:oradim -delete -sid mm,其中mm为创建oracle时候创建的实例 \x0d\x0a建议执行这个命令后重新启动机器,重启后就可以建立和原来实例名相同的实例。当然你懒,不重新启动也可以,但是你的实例名就不能和原来的一样了。\x0d\x0a\x0d\x0a4、在dos环境下执行命令 oradim -new -sid mm -startmode a -pfile "D:\oracle\admin\mm\pfile\initmm.ora "创建一个新的实例,其中 "mm"为新数据库的名称。\x0d\x0a\x0d\x0a5、启动服务,先打开数据库,然后可以用以前的用户名和密码登陆进去。 \x0d\x0a要补充的是,一般的ORACLE数据库的监听程序都是用电脑的名称来识别地址的,而不是127.0.0.1或者localhost.所以,如果我们安装系\x0d\x0a统的时候用的是不同的电脑名称(比如我原来用的是wm_mm.重新安装后用的是wenming_mm),那么我们还有一个工作要做,就是修改文件 \x0d\x0alistener.ora.将里面的相关的东西改过来就可以了。\x0d\x0a\x0d\x0a需要耐心、细心,可能在一步里有一个细小的差别就会出些古怪的错误提示,有时需要根据错误提示采取策略,总之原理是,先装一个一模一样的ORACLE,安装目录、数据库名称都一样,这样保证注册表里不用更改;再覆盖物理文件,最后重新实例化,打开数据库就可以进去了。

如何恢复Oracle表空间

用户的表空间不能够被轻易地重建

在大多数情况下,重建表空间是不可能及太辛苦的工作.方法是倒备份及做介

质恢复.如果您的系统运行在noarchivelog模式下,则只有丢失的数据

在online

redo

log中方可被恢复。

步骤如下:

1)restore

the

lost

datafile

from

a

backup

2)svrmgrl;

startup

mount

3)svrmgrl;

select

v1.group#,member,sequence#,first_change#

;

from

v$log

v1,v$logfile

v2

;

where

v1.group#=v2.group#;

4)如果数据库运行在noarchivelog模式下则:

svrmgrl;

select

file#,change#

from

v$recover_file;

如果

change#

大于最小的first_change#则数据文件可以被恢复。

如果

change#

小于最小的first_change#则数据文件不可恢复。

恢复最近一

次的全备份或采用方案一.

5)svrmgrl;

recover

datafile

filename;

6)确认恢复成功

7)svrmgrl;

alter

database

open

resetlogs;

3.只读表空间无需做介质恢复,只要将备份恢复即可.唯一的例外是:

表空间在最后一次备份后被改为read-write

模式

表空间在最后一次备份后被改为read-only

模式

在这种情况下,均需进行介质恢复

关于Oracle表空间移动后需要介质恢复的问题!

问题已经解决了,都是在网上找的!

把这过程中遇到的问及解决办法和大家分享一下!

首先出现问题的过程如上所说!然后我试图找到恢复介质的办法!

网上有朋友说是数据库为非归档模式造成的,要将其改为归档模式:

1.cmd;

2.sqlplus/nolog;

4.connect/as sysdba;

这时报了一个错:协议适配器错误

造成此问题的原因可能有三个:(此方法网上有)

a.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动oraclehome92TNSlistener服务。

b.database instance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务面板,启动oracleserviceXXXX,XXXX就是你的database SID

c.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0将该环境变量ORACLE_SID设置为XXXX,XXXX就是你的database SID.或者右几我的电脑,属性--高级--环境变量---系统变量--新建,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID.或者进入sqlplus前,在command line下输set oracle_sid=XXXX,XXXX就是你的database SID

此时“协议适配器错误 ”应该就能解决了!

5.若数据库是打开的,首先关闭卸载数据库。shotdown;

这时可能出现长时间等待,可以把Oracle服务重新启动一下再重复上面的步骤即可!

6.以mount模式打开数据库:STARTUP MOUNT;

7.查询当前归档模式:ARCHIVE LOG LIST;

如果数据库日志模式为非存档模式则更改归档模式为ARCHIVELOG:ALTER DATABASE ARCHIVELOG;

再查询一下:ARCHIVE LOG LIST=》数据库日志模式 存档模式

如果要更改为非归档模式:ALTER DATABASE NOARCHIVELOG;

8.再打开数据库: ALTER DATABASE OPEN;

归档模式更改完毕!

9.第九步也是最关键的一步:恢复介质

recover datafile '新的数据文件路径';

10. alter tablespace xxxx online; SQL》表空间已更改。


当前文章:oracle怎么介质恢复,oracle介质恢复命令
网站地址:http://cdiso.cn/article/dsdgdii.html

其他资讯