Oracle 无法删除表,错误代码:ORA-00942

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 无法删除表,错误代码:ORA-00942相关的知识,希望对你有一定的参考价值。

语句:delete se_blog where to_date(publish_date,'yyyy-mm-dd')>trunc(sysdate)
表名正确
不是from的问题

参考技术A 错误代码:ORA-00942 表示表或视图不存在,看看是不是表名写错了,还是已经没那个表了 参考技术B delete from se_blog where to_date(publish_date,'yyyy-mm-dd')>trunc(sysdate)
没有写from
参考技术C delete from se_blog where to_date(publish_date,'yyyy-mm-dd')>trunc(sysdate)

少了 from 关键字
参考技术D 不是from的问题
delete se_blog where trunc(publish_date)>trunc(sysdate)
第5个回答  2011-11-23 publish_date是什么数据类型

解决ORA-00257无法删除用户

今日早晨在客户反馈不能登陆系统了,查看oracle日志。发现如下错误ORA-00257: archiver error. Connect internal only, until freed。
该错误是由于归档日志满了,造成的。
查看了下V$FLASH_RECOVERY_AREA_USAGE,看看归档目录使用的情况。果然是归档满了。
SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------ ------------------ ------------------------- ---------------
CONTROLFILE 0 0 0
ONLINELOG 0 0 0
ARCHIVELOG 99.9 0 255
BACKUPPIECE 0 0 0
IMAGECOPY 0 0 0
FLASHBACKLOG 0 0 0
注:可以看出,ARCHIVELOG日志已经达到99.9%了。造成归档满的原因是因为有一个用户在做大量更新操作,由于更新操作产生大量重做日志,
归档日志切换频繁。解决方法是要把大量归档日志清除掉!
有两种方式可以解决该问题。
一使用RMAN清除归档日志。
二修改闪回恢复区的大小DB_RECOVERY_FILE_DEST_SIZE。

第一种使用RMAN清除归档日志。
C:Documents and SettingsAdministrator>rman
RMAN> connect target system/or@devdb
注:system为oracle用户,myoracle为oracle用户密码,orcl为连接的数据库名称SID。
RMAN> crosscheck archivelog all;
RMAN> delete noprompt expired archivelog all;
注:删除过期的归档
这样就把归档文件删除了。再进入sqlplus 查看ARCHIVELOG日志使用率!

第二种方法就是增大闪回恢复区的大小。如下:
SQL>alter system set DB_RECOVERY_FILE_DEST_SIZE=8G;
在归档数据中要制定备份策略。以免造成该问题。
configure retention policy to recovery window of 15 days;
或者在备份时删除日志信息。
DELETE ARCHIVELOG ALL COMPLETED BEFORE ‘SYSDATE-7‘; //删除七天前的归档
DELETE ARCHIVELOG FROM TIME ‘SYSDATE-7‘; //删除七天到现在的归档

以上是关于Oracle 无法删除表,错误代码:ORA-00942的主要内容,如果未能解决你的问题,请参考以下文章

谁能告诉我为啥会收到 SQL*PLUS 无效标识符错误?

oracle 删除表时提示资源正忙

Oracle - 无法删除表

Oracle数据库表空间删除报错误删除不了怎么办?

Oracle 11g 压缩表无法增加删除字段

oracle undo表空间被删除,数据库无法启动,请问如何恢复