oracle误删除表空间的解决办法(造成ORA-01033
ORA-01033错误解决
用法: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER}]
其中 : : = [/][@] | /
请输入用户名: sys
请输入口令:
ERROR:
ORA-01033: ORACLE initialization or shutdown in progress
其中 : : = [/][@] | /
请输入用户名: sys/sys as sysdba @oradb
SP2-0306: 无效选项。
用法: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER}]
其中 : : = [/][@] | /
请输入用户名: sys/sys as sysdba @oradb
SP2-0306: 无效选项。
用法: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER}]
其中 : : = [/][@] | /
SP2-0157: 在3次尝试之后无法 CONNECT 到 ORACLE, 退出 SQL*Plus
C:\Documents and Settings\Administrator>sqlplus
C:\Documents and Settings\Administrator>sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on 星期四 8月 10 17:28:22 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
oracle误删除表空间文件
近日在搞rman备份恢复的实验,因为在虚拟机建立一个rman表空间,但是发现磁盘空间不够大,所以删除了,导致数据库启动不了了,解决办法如下:
1.误删rman表空间
SQL> ! rm -f /opt/oracle/oradata/rman.dbf;
2.连接oracle并启动
SQL> startup;
3.查询oracle启动状态
SQL> select status from v$instance;
STATUS
------------
MOUNTED
4.执行drop
SQL> alter database datafile '/opt/oracle/oradata/rman.dbf' offline drop; Database altered.
5.从mount状态启动到open状态
SQL> alter database open;
Database altered.
SQL> select status from v$instance;
STATUS
------------
OPEN
6.级联删除表空间
SQL> drop tablespace rman including contents;
Tablespace dropped.
7.查询表空间,数据文件,发现已成功删除
SQL> select tablespace_name,file_name from dba_data_files;
8.删除该表空间的用户,并级联收回权限
SQL> drop user rman cascade;
OK,一切搞定,数据库恢复正常。
ora-01033错误解决方案
ora-01033错误解决方案第一步,运行cmd输入1、sqlplus /NOLOG输入2、SQL>connect sys/change_on_install as sysdba提示:已成功输入3、SQL>shutdown normal提示:数据库已经关闭已经卸载数据库ORACLE 例程已经关闭输入4、SQL>startup mount输入5、SQL>alter database open;CMD窗口提示ORA-00600: 内部错误代码参数:[kcratr_nab_less_than_odr],输入1、SQL> recover database using backup controlfile;ORA-00279: 更改15994306 (在06/08/2012 17:55:05 生成) 对于线程1 是必需的ORA-00289: 建议:D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHI VELOG\2012_06_08\O1_MF_1_846_ %U_.ARCORA-00280: 更改15994306 (用于线程1) 在序列#846 中指定日志: {<RET>=suggested | filename | AUTO | CANCEL}D:\app\Administrator\oradata\orcl\REDO01.LOGORA-00310: 归档日志包含序列844; 要求序列846ORA-00334: 归档日志:################找到本地REDO01.LOG文件路径,在#位置输入文件路径D:\app\Administrator\oradata\orcl\REDO01.LOG回车输入2、SQL> recover database using backup controlfile;ORA-00279: 更改15994306 (在06/08/2012 17:55:05 生成) 对于线程1 是必需的ORA-00289: 建议:D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHI VELOG\2012_06_08\O1_MF_1_846_ %U_.ARCORA-00280: 更改15994306 (用于线程1) 在序列#846 中指定日志: {<RET>=suggested | filename | AUTO | CANCEL}D:\app\Administrator\oradata\orcl\REDO02.LOGORA-00310: 归档日志包含序列844; 要求序列846ORA-00334: 归档日志:################找到本地REDO02.LOG文件路径,在#位置输入文件路径D:\app\Administrator\oradata\orcl\REDO02.LOG回车输入3、SQL> recover database using backup controlfile;ORA-00279: 更改15994306 (在06/08/2012 17:55:05 生成) 对于线程1 是必需的ORA-00289: 建议:D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHI VELOG\2012_06_08\O1_MF_1_846_ %U_.ARCORA-00280: 更改15994306 (用于线程1) 在序列#846 中指定日志: {<RET>=suggested | filename | AUTO | CANCEL}D:\app\Administrator\oradata\orcl\REDO03.LOGORA-00310: 归档日志包含序列844; 要求序列846ORA-00334: 归档日志:################找到本地REDO03.LOG文件路径,在#位置输入文件路径D:\app\Administrator\oradata\orcl\REDO03.LOG回车。
Oracle误删UNDO表空间故障处理
Oracle 误删UNDO表空间故障处理H.sdon操作人员操删除ORACLE UNDO表空间,系统报ORA-01116: error in opening database file 25错误。
解决思路:删除原有UNDO表空间,新建一个UNDOTBS2表空间进行替换。
1、生成init文件Create pfile from spfile记住:在生成新的init文件前应对原有文件做好备份或将init文件生成在不同的目录名称下面2、修改init.ora文件undo_management=MANUALundo_retention=10800undo_tablespace=undotbs01rollback_segments='SYSTEM'3、使用PFILE重新启动数据库Startup pfile=’$ORACLE_HOME/dbs/init[sid].ora此步数据库已经能正常OPEN,但在做数据库操作的时候还会报以下错误SQL> shutdown immediate;ORA-00376: file 2 cannot be read at this timeORA-01110: data file 2: '/oradata/irms/undotbs01.dbf'4、使用以下命令对数据文件进行offline dropalter database datafile '/oradata/irms/undotbs04.dbf' offline drop;alter database datafile '/oradata/irms/undotbs03.dbf' offline drop;alter database datafile '/oradata/irms/undotbs01.dbf' offline drop;alter database datafile '/oradata/irms/undotbs02.dbf' offline drop;5、创建新的UNDO表空间UNDOTBS2create undo tablespace undotbs2datafile '/oradata/irms/undotbs20.dbf' size 500M;6、在init.ora更改默认UNDO表空间,使其启动后默认UNDO表空间为undotbs2,undo_management=AUTO后重新启动7、删除UNDOTBS1表空间,报Drop tablespace undotbs1ORA-01548: 已找到活动回退段'_SYSSMU1$',8、查看回滚段使用情况select segment_name,status,tablespace_name from dba_rollback_segs;SEGMENT_NAME STATUS TABLESPACE_NAME------------------------------ ---------------- ------------------------------SYSTEM ONLINE SYSTEM_SYSSMU1$ NEEDS RECOVERY UNDOTBS1_SYSSMU2$ NEEDS RECOVERY UNDOTBS1_SYSSMU3$ NEEDS RECOVERY UNDOTBS1_SYSSMU4$ NEEDS RECOVERY UNDOTBS1_SYSSMU5$ NEEDS RECOVERY UNDOTBS1_SYSSMU6$ NEEDS RECOVERY UNDOTBS1_SYSSMU7$ NEEDS RECOVERY UNDOTBS1_SYSSMU8$ NEEDS RECOVERY UNDOTBS1_SYSSMU9$ NEEDS RECOVERY UNDOTBS1_SYSSMU10$ NEEDS RECOVERY UNDOTBS1可以看到_SYSSMU1$-_SYSSMU10$状态都为need recovery状态9、关闭数据库,更改init.ora默认UNDO表空间及其它参数undo_management=manualundo_retention=10800undo_tablespace=undotBS2_CORRUPTED_ROLLBACK_SEGMENTS=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$, _SYSSMU10$)10、以新的init.ora启动数据库Startup pfile=’$ORACLE_HOME/dbs/init[sid].ora11、删除UNDOTBS1Drop tablespace undotbs1 including contents查看回滚段状态,UNDOTBS中的信息已经没有SQL> select segment_name,status,tablespace_name from dba_rollback_segs;SEGMENT_NAME STATUS TABLESPACE_NAME------------------------------ ---------------- ------------------------------SYSTEM ONLINE SYSTEMSYSSMU11$ ONLINE UNDOTBS2_SYSSMU12$ ONLINE UNDOTBS2_SYSSMU13$ ONLINE UNDOTBS2_SYSSMU14$ ONLINE UNDOTBS2_SYSSMU15$ ONLINE UNDOTBS2_SYSSMU16$ ONLINE UNDOTBS2_SYSSMU17$ ONLINE UNDOTBS2_SYSSMU18$ ONLINE UNDOTBS2_SYSSMU19$ ONLINE UNDOTBS2_SYSSMU20$ ONLINE UNDOTBS211、将SPFILE中的UNDO_TABLESPACE改成UNDOTBS2后启动正常附言:。
Oracle常见错误及解决方案
O r a c l e常见错误及解决方案问题1:Oracle服务器进入PL/SQL Developer时报ora-01033:oracle initialization or shutdown in progress 错误提示,应用系统无法连接Oracle服务。
解决方法如下:⑴进入CMD,执行set ORACLE_SID=fbms,确保连接到正确的SID;⑵运行sqlplus "/as sysdba"SQL>shutdown immediate停止服务SQL>startup启动服务,观察启动时有无数据文件加载报错,并记住出错数据文件标号SQL>shutdown immediate再次停止服务SQL>startup mountSQL> recover datafile 2恢复出错的数据文件SQL>shutdown immediate再次停止服务SQL>startup启动服务,此次正常。
⑶进入PL/SQL Developer检查,没有再提示错误。
问题2:Oracle密码忘记了怎么办?解决方法有很多种,这里讲述以下三种:⑴打开cmd,输入sqlplus /nolog,回车;输入“conn / as sysdba”;输入“alter user sys identified by 新密码”。
注意:新密码最好以字母开头,否则可能出现错误Ora-00988。
有了这个方法后,只要自己对oracle 服务器有管理员权限,Oracle密码忘记了也不用着急,可以随意修改密码。
⑵在命令行执行如下命令:sqlplus "/@服务名as sysdba"然后在sqlplus中运行以上命令即可修改密码:alter user sys identified by 新密码;alter user system identified by 新密码;⑶运行到C盘根目录输入:SET ORACLE_SID = 你的SID名称输入:sqlplus/nolog输入:connect/as sysdba输入:alert user sys identified by sys输入:alert user system identified by system完成以上5步,则密码更改完成,密码是Oracle数据库的初始密码。
ORA-01033
ORA-01033: ORACLE initialization or shutdown in pr出现了ORA-01033:ORACLE initialization or shutdown in progress原因就是因为我把介质文件给删掉了解决步骤:以DBA(通常有好几个sys或system)用户sqlplus登录请输入用户名: connect system/sys as sysdba如果上面登陆不了可以换作(sqlplus/nologconnect sys/password as sysbda )然后(卸载数据)输入:SQL> shutdown normal会出现:ORA-01109: 数据库未打开已经卸载数据库。
ORACLE 例程已经关闭。
然后(装载数据)输入:SQL> startup mountORACLE 例程已经启动。
数据库装载完毕。
之后:SQL>alter database open;第 1 行出现错误:ORA-01157: 无法标识/锁定数据文件 6 - 请参阅 DBWR 跟踪文件ORA-01110: 数据文件 6:'D:\ORACLE\PRODUCT\10.1.0\ORADATA\RAILWAY\2008_1.DAT'SQL> alter database create datafile 6;数据库已更改。
SQL>alter database open;第 1 行出现错误:ORA-01113: 文件 6 需要介质恢复ORA-01110: 数据文件 6:'D:\ORACLE\PRODUCT\10.1.0\ORADATA\RAILWAY\2008_1.DAT'SQL> alter database datafile 6 offline drop;数据库已更改。
继续SQL>alter database open;如果出现以上错误,继续执行相关操作,上面的6要和create和drop对应。
OracleORA-01033:错误解决办法
OracleORA-01033:错误解决办法转⾃打开PLSQL时出现以上错误。
解决办法:解决步骤第⼀步、sqlplus /NOLOG第⼆步、SQL>connect sys/change_on_install as sysdba提⽰:已成功第三步、SQL>shutdown normal提⽰:数据库已经关闭已经卸载数据库ORACLE 例程已经关闭第四步、SQL>startup mount提⽰:Total System Global Area 5110898688 bytesFixed Size 2806480 bytesVariable Size 1107299632 bytesDatabase Buffers 3992977408 bytesRedo Buffers 7815168 bytes数据库装载完毕。
第五步、SQL>alter database open(这⼀步出错)提⽰:看到这个想起来了,是之前往数据库⾥导⼊DMP⽂件时创建的,当时是在移动硬盘上的,后来硬盘被拿⾛了,所以Oracle找不到这些表空间了。
按照提⽰的数据⽂件编号11,对表空间进⾏drop操作。
第六步、SQL>alter database datafile 8 offline drop第七步、重复第五第六步,直到所有⽆法连接的的表空间都已经drop为⽌(当时创建太多,⼀直drop到40才结束)第⼋步、分三次输⼊shutdown normalstartup mountalter database open;最后、⽆需重启,使⽤原来的⽤户名密码即可登录成功;使⽤SQL Developer也可以连接。
⾄此,问题解决。
Oracle ORA-01033 错误,ORA-12528 错误和ORA-01041错误处理
问题描述:1. 以SYSDBA 身份连接 C:\>sqlplus sys/orcl@orcl as sysdba ,登陆ORCL 库,执行关闭(SHUTDOWN)数据库。
2.然后重新启动(STARTUP)数据库时报错:ORA-12528 :TNS:监听程序:所有适用的例程都不允许建立新的连接ORA-01041:内部错误,hostdef扩展名不存在。
3. 重新用 C:\>sqlplus sys/orcl@orcl as sysdba 登录数据库输入用户和密码后报 ORA-01033:ORACLE initialization or shutdown in progress 的错误。
解决思路:1.首先查看listener状态,在命令行输入lsnrctl status ,结果中显示监听例程ORCL状态为"BLOCKED";2. 以SYSDBA权限登录(注意不指定数据库名),具体步骤:1) 开始 - 运行 -cmd2) 命令行中输入 SQLPLUS SYS/密码 AS SYSDBA3) 输入 SHUTDOWN IMMEDIATE4) 输入 STARTUP再次输入用户和密码登录成功,查看listener状态,结果中显示监听例程ORCL 状态为READY。
问题分析:1、在以 C:\>sqlplus sys/orcl@orcl as sysdba 登陆时,是在库ORCL操作,完成 SHUTDOWN 后,执行STARTUP 时始终是在库ORCL中操作,而这时ORCL 已经关闭了,因此出现错误。
2、重新以 C:\>sqlplus sys/orcl as sysdba 登陆,以空例程登陆时,再STARTUP 时就可以将库ORCL 重新启动。
备注:(1)当有多个数据库实例时,执行shutdown会关闭所有数据库实例,要重新打开,执行startup,而不要指明具体的实例(2)先执行shutdown会关闭所有数据库实例,然后执行startup open orcl,此时执行lsnrctl status ,结果中显示监听例程中其他的数据库实例状态为"BLOCKED";此时通过执行lsnrctl stop和lsnrctl start并不能将这些数据库实例状态从"BLOCKED"变成“Ready”。
ORA-01033错误解决方案
ORA-01033错误解决方案今天在linux测试环境下登录sqlplus,不能正常登录报:ORA-01033错误,捣鼓了半天,参考网上的一些经验,终于解决,把心得总结一下。
一、首先:问题的产生原因,出现这个错误是因为我们用的公共测试环境上的opt/oracle/oradata目录下的文件被误删掉了,之后尝试做了一些文件恢复,还是不起作用。
二、现象:SQL*Plus无法连接,显示以下错误:ORA-01033 : ORACLE initialization or shutdown in progress三、分析:应该是Oracle在启动后,用户登录时是要将方案中原有配置信息装载进入,装载过程中遇到原有文件指定的位置上没有找到,所以就报出错误。
四、解决过程:以DBA用户登录,具体命令是sqlplus /NOLOG>connect sysdba/sysdba as sysdba提示:已成功>shutdown normal(等了半天没有停掉)于是执行>shutdown immediate提示:数据库已经关闭已经卸载数据库ORACLE 例程已经关闭>startup mount提示:ORACLE例程已经启动Total System Global Area 118255568 bytes Fixed Size282576 bytes Variable Size82886080 bytes Database Buffers33554432 bytes Redo Buffers532480 bytes数据库装载完毕>alter database open;提示:第1 行出现错误: ORA-01157: 无法标识/锁定数据文件7 - 请参阅DBWR 跟踪文件ORA-01110: 数据文件7: ''/opt/oracle/db/oradata/ora232/test01.dbf' 这个提示文件部分根据每个人不同情况有点差别。
oracle断电后无法连接,提示ORA-01033解决方法
方法一:客户Oracle服务器进入PL/SQL Developer时报ora-01033:oracle initializationg or shutdown in progress 错误提示,应用系统无法连接Oracle服务。
经远程指导解决问题。
过程如下:1、进入CMD,执行set ORACLE_SID=fbms,确保连接到正确的SID;2、运行sqlplus "/as sysdba"SQL>shutdown immediate 停止服务SQL>startup 启动服务,观察启动时有无数据文件加载报错,并记住出错数据文件标号SQL>shutdown immediate 再次停止服务SQL>startup mountSQL> recover datafile 2 恢复出错的数据文件SQL>shutdown immediate 再次停止服务SQL>startup 启动服务,此次正常。
3、进入PL/SQL Developer检查,没有再提示错误。
方法二:Oracle错误:ORA-01033错误编码:ORA-01033: ORACLE initialization or shutdown in progress故障描述:因为移动了数据库文件([NAME].DMP)/日志文件等文件,导致数据库连接出现ORA-01033错误。
故障分析:网上有一种常见的说法是该类故障通常是由于移动文件而影响了数据库日志文件出现损坏而导致的无法正常进行IO操作而引起的错误。
ORACLE将识别为数据库未装载完成而导致出现如上错误。
故障特征:使用命令行sqlplus或PL/SQL Developer均无法打开数据库。
但是可以使用sys 用户以sysdba的身份登录系统处理步骤:1. 在‘开始’-->‘运行’执行cmd执行set ORACLE_SID=fbms,确保连接到正确的SID2. 输入:sqlplus "/ as sysdba"应提示类似于如下信息:SQL*Plus: Release 9.2.0.1.0 - Production on 星期三5月20 22:07:45 2009Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.连接到:Oracle9i Enterprise Edition Release 9.2.0.1.0 - ProductionWith the Partitioning, OLAP and Oracle Data Mining optionsJServer Release 9.2.0.1.0 - Production3. 输入:shutdown immediate应提示类似于如下信息:ORA-01109: 数据库未打开已经卸载数据库。
数据库出错解决办法
启动错误:01033, 00000, "ORACLE initialization or shutdown in progress"// *Cause: An attempt was made to log on while Oracle is being started up// or shutdown.// *Action: Wait a few minutes. Then retry the operation.解决方法:以sys登录为sysdbasqlplus /NOLOGSQL>connect sys/用户口令as sysdbaSQL>shutdown normalSQL>startup mountSQL>alter database open(很有可能是这个文件被误删了)SQL>shutdown normalSQL>startup重新再登陆SQL>conn sys/sys as sysdbaSQL>select * from v$log;SQL>select * from v$logfile;SQL>alter database clear logfile group 1;(做一个清除动作,让oracle再重新产生一个REDO01文件,判读是否成功,再执行alter database open)SQL>alter database open(这说明REDO03.log也需要做一次clear动作,步骤跟前面一样)SQL>select * from v$logSQL>select * from v$logfileSQL>alter database clear logfile group 3;SQL>alter database open显示成功,问题解决。
总结:这个错误的产生主要是由于一些误删而引起的,一些系统优化工具再系统清理时会删掉一些数据库文件不同的误删解决方案也不相同,这里只是一种误删Log文件情况,还有DBF被误删也是这个错误,解决方案类似。
今天使用Oracle遇到了这个问题ora
今天使用Oracle遇到了这个问题ora-01033:oracle initialization or shutdown in progress,经过分析研究终于解决了,记下来。
首先:问题的产生原因,出现这个错误是因为我将\oracle\product\10.1.0\oradata\oral 下的一个文件删除掉后出现的。
利用sql语句语句创建表空间时弄错了,就一时心急把创建的文件删除了。
结果问题就出来了。
sysdba可以登录,但是在使用中就出现“数据库未打开,仅允许在固定表/视图中查询”,而normal用户无法登录使用,出现ORA-01033: ORACLE initialization or shutdown in progress 的错误。
分析:这个错误的原因应该是Oracle在启动后,用户登录时是要将方案中原有配置信息装载进入,装载过程中配置中有文件未找到,所以就报出错误。
解决过程:C:\Documents and Settings\DHai>sqlplus /nologSQL*Plus: Release 10.1.0.2.0 - Production on 星期一 9月 28 14:35:38 2009 Copyright (c) 1982, 2004, Oracle. All rights reserved.SQL> connect sys/123 as sysdba;已连接。
SQL> shutdown normalORA-01109: 数据库未打开已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;ORACLE 例程已经启动。
Total System Global Area 171966464 bytesFixed Size 787988 bytesVariable Size 145750508 bytesDatabase Buffers 25165824 bytesRedo Buffers 262144 bytes数据库装载完毕。
oracle表空间误删除
Oracle(oracle 9i)遇到了这个问题:登陆时候提示:ora-01033:oracle initialization or shutdown in progress进程ID:0 会话ID:0序列号: 0只有:systeam as sysdba能登录原因:我将建的表空间文件删除掉了(系统的也应该一样吧)(注意表空间不要随意直接删除文件,如果要删除的话用命令)分析:Oracle启动,读配置信息,在读配置的时候找不到文件。
解决方法:1、>>cmd2、>>sqlplus /nolog3、>>connect sys/orcl as sysdba orcl(database)提示:已成功4、>>shutdown normal提示:数据库已经关闭已经卸载数据库ORACLE 例程已经关闭5、>>startup mount提示:ORACLE例程已经启动Total System Global Area 118255568 bytesFixed Size 282576 bytesVariable Size 82886080 bytesDatabase Buffers 33554432 bytesRedo Buffers 532480 bytes数据库装载完毕6、>>alter database open; (反复直到出现下列为止)提示:第1 行出现错误:ORA-01157: 无法标识/锁定数据文件8 - 请参阅DBWR 跟踪文件ORA-01110: 数据文件8: ''''D:\oradata\oradb\yuan.dbf''删除表空间数据文件的位置。
继续输入7、>>alter database datafile 8 offline drop;反复直到出现出现“数据库已更改为止提示:数据库已更改。
ORACLE误删除数据的恢复方法
COUNT(*)
----------
0
SQL>select count(*) from t1 as of scn 10670000;
COUNT(*)
----------
9318
我们看到在SCN=10670000时,数据都在。
4.恢复数据.
SQL>insert into t1 select * from t1 as of scn 10670000;
9318 rows deleted.
SQL>commit;
Commit complete.
SQL>select count(*) from t1;
COUNT(*)
----------
0
3.获得当前SCN
如果能够确切知道删除之前SCN最好,如果不知道,可以进行闪回查询尝试.
Copyright (c) 1982, 2004, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production
有很多原因导致了数据记录的误删,怎样恢复误删的记录呢?先来看看这个概念:
SCN(系统改变号),它的英文全拼为:System Change Number ,它是数据库中非常重要的一个数据结构。
SCN提供了Oracle的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的
注释:Oracle 仅根据 SCN 执行恢复。
9318 rows created.
SQL>commit;
Oracle数据库数据丢失恢复的几种方法总结
Oracle数据库数据丢失恢复的⼏种⽅法总结根据oracle数据库的特点和提供的⼯具,主要⽅法有以下⼏种⽅法:1. 利⽤逻辑备份使⽤import⼯具丢失数据的表2. 利⽤物理备份来通过还原数据⽂件并进⾏不完全恢复3. 利⽤dbms_logmnr包从redo log⽂件中恢复4. 利⽤flashback特性恢复数据前提为了⽅便使⽤⽅法的介绍,上述恢复⽅法都将基于以下场景进⾏:系统管理员在前⼀天晚上11点⽤export对数据库做了全库逻辑备份,然后对所有数据⽂件进⾏了热备份。
第⼆天上午10点,系统管理员在修改表TFUNDASSET的数据时,由于修改语句的条件写错了,导致⼀批记录(⼏千条)的ztm字段被修改成了错误的值,⽽且已经提交。
这个表是资产表,相对⽽⾔数据变化不频繁。
⼀、利⽤逻辑备份使⽤import⼯具恢复丢失的数据export/import是oracle提供的⽤于对数据库进⾏逻辑备份的⼯具。
该⼯具适⽤于备份那些数据量不⼤、业务量不多的数据库系统。
因为如果在前⼀天晚上11点⽤export做了逻辑备份,那么当今天上午10点数据库意外崩溃时,从备份起到数据库崩溃的这段时间⾥的数据修改操作(包括DDL和DML)都会丢失。
如果丢失数据内的表上的数据是相对⽐较稳定,也就是说该表上基本没有DML操作,例如标准代码表、分区表⾥的历史数据,那么采⽤import来导⼊该表可以⽐较完整的恢复数据。
如果该表是经常变化的业务表,那么这些丢失的数据只能根据业务情况从纸质记录恢复,或者其他途径恢复。
▲⽰例如下:这个表是⼀个资产表。
相对来说,今天系统运⾏中修改的数据较少,丢失的数据量可以承受或者可以从别的途径恢复。
那就可以⽤import来恢复。
⽅法⼀:1、把这个表的数据备份到另⼀个表:2、删除该表的记录:3、执⾏下⾯的命令:这个命令中在关键字tables中指定需要导⼊的表名字,ignore=y表⽰忽略表已经存在的错误。
4、导⼊结束后,检查表中的记录,并⽤适当的⽅法恢复当天的修改。
Oracle误删除数据和表的恢复办法
Oracle误删除数据和表的恢复办法在⼯作中我们操作数据库的时候经常会发⽣⼀个不该发⽣的问题:⽤户意外的删除⼀个⾮常重要的表或者是表中的数据⽽且没有备份,需要尽快的恢复,以下就是解决的办法:主要是利⽤Oracle回收站的闪回特性oracle 回收站recyclebin是10g才有的新特性,当我们drop table cube_scope 【purge】时,如果不指定purge时,系统只是将这个表重命名为BIN$开头的名称,并在数据字典中修改了相关数据,表所占⽤的物理空间并没有真正的回收,此时所占⽤的空间还是原来的表空间,当表空间不够⽤时,ORACLE会跟据DROPSCN#⾃动进⾏逐个清理回收站中对像所占⽤的空间,10g默认是打开回收站功能的。
⼀、delete 数据误删除1、删除数据之后表结构没有变化直接使⽤表闪回,表闪回要求⽤户必须要有flash any table权限先确定删除数据的时间(在删除数据之前的时间就⾏,不过最好要具体到删除数据的时间点)alter table 表名 enable row movement //开启⾏移动功能flashback table 表名 to timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')//恢复数据到删除时间点之前的状态Alter table 表名 disable row movement //关闭⾏移动功能(⼀定不能忘记)2、删除数据之后表结构发⽣了变化select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')//找出被删除的数据insert into 表名 (select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')); //把删除的数据重新插回原表,但注意主键不要重复⼆、drop命令删除表由于oracle在删除表时,没有直接清空表所占的块,oracle把这些已删除的表的信息放到了⼀个虚拟容器“回收站”中,⽽只是对该表的数据块做了可以被覆写的标志,所以在块未被重新使⽤前还可以恢复。
ora-01033oracle解决方法
今天使用Oracle遇到了这个问题ora-01033:oracle initialization or shutdown in progress,经过分析研究终于解决了,记下来。
首先:问题的产生原因,出现这个错误是因为我将\oracle\product\10.1.0\oradata\oral下的一个文件删除掉后出现的。
利用sql语句语句创建表空间时弄错了,就一时心急把创建的文件删除了。
结果问题就出来了。
sysdba可以登录,但是在使用中就出现“数据库未打开,仅允许在固定表/视图中查询”,而normal用户无法登录使用,出现ORA-01033: ORACLE initialization or shutdown in progress 的错误。
分析:这个错误的原因应该是Oracle在启动后,用户登录时是要将方案中原有配置信息装载进入,装载过程中配置中有文件未找到,所以就报出错误。
解决过程:C:\Documents and Settings\DHai>sqlplus /nologSQL*Plus: Release 10.1.0.2.0 - Production on 星期一9月28 14:35:38 2009Copyright (c) 1982, 2004, Oracle. All rights reserved.SQL> connect sys/123 as sysdba;已连接。
SQL> shutdown normalORA-01109: 数据库未打开已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;ORACLE 例程已经启动。
Total System Global Area 171966464 bytesFixed Size 787988 bytesVariable Size 145750508 bytesDatabase Buffers 25165824 bytesRedo Buffers 262144 bytes数据库装载完毕。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.SQL>startup mount;
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
数据库已更改
6.SQL>alter database datafile 'E:\WB\MYSPACE.ORA' offline drop;(将误删除的表空间从数据库中卸载)
数据库已更改
7.SQL>alter database open;
数据库已更改
至此,结束了,再登陆后就成功了!
数据库abase clear unarchived logfile group 2 unrecoverable datafile;
数据库已更改
SQL>alter database clear unarchived logfile group 3 unrecoverable datafile;
oracle 9i误删除表空间的解决办法(造成ORA-01033: ORACLE initialization or shutdown in progress ;ORA-01110: 数据库未打开)
依次执行如下命令:
0.开始--运行-- 输入 services.msc进入服务,在里面开启orcaleServiceORCL
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
4.SQL>alter database open;(查看误删除的文件)
alter database open
如果被删除的日志不是当前日志组的成员,比较简单
SQL> alter database clear logfile group 1;
如果你的库是非归档的,或许要用下面的语句
SQL> alter database clear unarchived logfile group 1;
如果是当前日志组损坏,但是数据库是正常关闭的,上面的办法也可以使用
*
ERROR 位于第 1 行:
ORA-01157: 无法标识/锁定数据文件 11 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 11: 'E:\WB\MYSPACE.ORA'
5.SQL>alter database clear unarchived logfile group 1 unrecoverable datafile; (在文件恢复出错时,使用此命令将文件删除)
如果日志组中有活动的事务,那么可能需要利用备份来恢复了,否则只有通过隐含参数强制打开库(不推荐,如果是生产库,最好请求技术支持)
---------------------------------------------------------------
首先,执行下面的语句看看group1是不是current日志组
SQL> select group#,sequence#,archived,status from v$log;
1.开始--运行-- 输入cmd
sqlplus /nolog
SQL>conn system/manage as sysdba;
已连接到空闲例程。
2.SQL>shutdown immediate;
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> alter tablespace 表空间名 online;
*
ERROR 位于第 1 行:
ORA-01157: 无法标识/锁定数据文件 11 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 11: 'E:\WB\MYSPACE.ORA'
可见这是由于C:\ORACLE\ORADATA\ORCL\REDO01.LOG被误删造成的,那么有什么办法可以解决这个问题呢(希望保留用户vm_uer的所有表及其中的数据)?恳请大侠们指点。