ORA-00942: table or view does not exist
产生原因:
这是由于装载的表或视图不存在,多半是CATEXP.SQL还没有运行,无法执行Export视图,如果CATEXP.SQL已经运行,则可能是版本错误。
解决方法:
因为Import和Export共享的一些视图是通过运行CATEXP.SQL来装载的(它们具有相同的视图),并不生成单独的CATEXP.SQL,因而造成视图与Export代码不同步,较难保持彼此之间的兼容,用户就必须建立自己的Export应用,从而避免ORA-00942的错误。
上述错误均为我们在使用回滚段时比较常见的问题,ORA-01598指明当前使用的回滚段的状态为“not online”,不能使用,将它改为“online”状态即可使用;ORA-01636指明当前回滚段已经为“online”状态,可以直接使用,不用再集合它。
ORA-1636 signalled during: alter rollback segment rb00 online
我们在做统计时还可能遇到下述问题:一个rollback segment的状态为”Needs Recovery”的现象,这是由于ORACLE回退一个事物表中的没有提交的事物时失败所造成的。通常原因为一个datafile或者tablespace是在offline的状态或者一个undo的目标被破坏或者rollback segment被破坏。解决的办法是将所有的tablespace和datafile都置为online状态,如果不能解决则做下面的工作:
1>.在initsid.ora中加入event=”10015 trace name context forever lever 10”;
2>.shutdown数据库然后重启;
3>.在$ORACLE_HOME/rdbms/log下,找到startup时生成的trace file;
4>.在trace文件中,找到下列信息“error recovery tx(#,#) object #”;
5>.根据object#(与sys.dba_objects表中的object_id相同)在sys.dba_objects表中查出该object的名字;
6>.将该object drop掉;
7>.在init.ora文件中将该rollback segment放回rollback_segments参数中,删除event;8>.shutdown数据库然后重启。此时”Needs Recovery”的问题应该是完全解决了,否则就是rollback segment被破坏了。
ORA-01688: unable to extend table name.name partition NAME by NUM in tablespace NAME
产生原因:
指定的tablespace空间已经被占用满,无法扩展。
解决方法:
使用“ALTER TABLESPACE ADD DATAFILE”命令增加文件系统文件和原始分区,或者增加INITIAL的大小(如:alter tablespace CDRS101 default storage(next 500M pctincrease 1))应该能够解决,否则就是有人使用你的表空间上创建了一个比较大的数据文件导致你的表空间不够用。
一个报错例子如下:
ORA-1688: unable to extend table RMMCDR.LOCAL_CDR partition LOCAL_CDR101 by 460800 in
tablespace CDRS101