`
张洪财
  • 浏览: 278142 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ORA-12012: error on auto execute of job ORA-20000: ORA-20000

阅读更多
Oracle10g中每天晚上10点会进行自动搜集统计信息,数据库准时报下面这个错,已经忍它很久了,虽然对数据库没什么大影响,但是每天查日志看见也很不爽:
Tue Dec 19 22:00:03 2006
Errors in file /oracle/admin/shdt2/bdump/shdt2_j000_8466.trc:
ORA-12012: error on auto execute of job 8898
ORA-20000: ORA-20000: Content of the tablespace specified is not permanent or tablespace name is invalid
ORA-06512: at "SYS.PRVT_ADVISOR", line 1624
ORA-06512: at "SYS.DBMS_ADVISOR", line 186
ORA-06512: at "SYS.DBMS_SPACE", line 1344
ORA-06512: at "SYS.DBMS_SPACE", line 1560
/oracle/admin/shdt2/bdump/shdt2_j000_8466.trc:
*** ACTION NAME:(AUTO_SPACE_ADVISOR_JOB) 2006-12-19 22:00:03.457
*** MODULE NAME:(DBMS_SCHEDULER) 2006-12-19 22:00:03.457
*** SERVICE NAME:(SYS$USERS) 2006-12-19 22:00:03.457
*** CLIENT ID:() 2006-12-19 22:00:03.457
*** SESSION ID:(487.15519) 2006-12-19 22:00:03.457
*** 2006-12-19 22:00:03.457
ORA-12012: error on auto execute of job 8898
ORA-20000: ORA-20000: Content of the tablespace specified is not permanent or tablespace name is invalid
ORA-06512: at "SYS.PRVT_ADVISOR", line 1624
ORA-06512: at "SYS.DBMS_ADVISOR", line 186
ORA-06512: at "SYS.DBMS_SPACE", line 1344
ORA-06512: at "SYS.DBMS_SPACE", line 1560
错误重现:
sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.2.0 - Production on Wed Dec 20 09:03:48 2006
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> exec dbms_space.auto_space_advisor_job_proc;
BEGIN dbms_space.auto_space_advisor_job_proc; END;
*
ERROR at line 1:
ORA-20000: Content of the tablespace specified is not permanent or tablespace
name is invalid
ORA-06512: at "SYS.PRVT_ADVISOR", line 1624
ORA-06512: at "SYS.DBMS_ADVISOR", line 186
ORA-06512: at "SYS.DBMS_SPACE", line 1344
ORA-06512: at "SYS.DBMS_SPACE", line 1560
ORA-06512: at line 1
原因是某个表空间删除以后,数据库还会对它进行统计,这时候就会报错了。DBA_AUTO_SEGADV_CTL表存储的是自动搜集统计信息的对象,把出错的表空间对象从这删除就可以了。先确定是哪个表空间:
SQL> desc DBA_AUTO_SEGADV_CTL
Name Null? Type
----------------------------------------- -------- ----------------------------
AUTO_TASKID NUMBER
TABLESPACE_NAME VARCHAR2(30)
SEGMENT_OWNER VARCHAR2(30)
SEGMENT_NAME VARCHAR2(81)
SEGMENT_TYPE VARCHAR2(18)
PARTITION_NAME VARCHAR2(30)
STATUS VARCHAR2(40)
REASON VARCHAR2(40)
REASON_VALUE NUMBER
CREATION_TIME TIMESTAMP(6)
PROCESSED_TASKID NUMBER
END_TIME TIMESTAMP(6)
SQL> select distinct tablespace_name from DBA_AUTO_SEGADV_CTL;
TABLESPACE_NAME
------------------------------
SYSAUX
NEWHC
NEWHCINDEX
STRMADMIN
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
NEWHC
NEWHCINDEX
SQL> select count(*) from DBA_AUTO_SEGADV_CTL where tablespace_name='STRMADMIN';
COUNT(*)
----------
1

SQL> select segment_owner, segment_name, status from DBA_AUTO_SEGADV_CTL where tablespace_name='STRMADMIN';
SEGMENT_OWNER   SEGMENT_NAME    STATUS
----------------------- ---------------------- ----------------------------------------
                                                          BEING_PROCESSED
SQL> delete DBA_AUTO_SEGADV_CTL where tablespace_name='STRMADMIN';
1 row deleted.
SQL> commit;
Commit complete.
SQL> exec dbms_space.auto_space_advisor_job_proc;
PL/SQL procedure successfully completed.
结果到了晚上又报错,那条记录重新加到DBA_AUTO_SEGADV_CTL中去了,猜想可能是ts$中还保留着STRMADMIN表空间的信息,把ts$中的记录也删除就完全解决了。ts$中记录了从数据库建立以来所有的创建过的表空间信息。
分享到:
评论

相关推荐

    oracle报错大全(珍藏版)

    #### ORA-00029: No Lock on Object 当尝试操作一个没有锁的对象时触发。这可能是因为锁不存在或已被其他用户释放。 #### ORA-00030: Lock ID Not Found 指定的锁ID未找到时触发。这可能是由于锁ID无效或已被删除。...

    oracle错误代码大全

    #### ORA-00022: Error while getting ID of current transaction - **解释**: 在获取当前事务的ID时出错。 - **解决方案**: 确保数据库服务正常运行,检查日志以获取更多信息。 #### ORA-00023: Failed to open ...

    oracle 错误一览表

    #### ORA-00055: DML on a dictionary managed table/view is not supported - **描述**:不支持对字典管理的表/视图进行DML操作。 - **解决方法**:使用本地管理的表空间或禁用字典管理。 #### ORA-00056: '.' not...

    ORACLE ORA

    - **ORA-02225**:表示仅当具有EXECUTE DEBUG权限时才能执行ALTER操作。 - **ORA-02226**:表示在修改段时,最大扩展次数的值无效。 - **ORA-02227**:表示在修改集群时,缺少必要的选项。 - **ORA-02228**:表示在...

    关于CRA-00600:内部代码错误解决

    关于CRA-00600:内部代码错误解决,这一主题主要聚焦于Oracle数据库中一个常见的技术难题——ORA-00600错误的识别与处理。ORA-00600是一种内部错误,通常指向Oracle数据库内核中的某种异常情况,其参数列表如[19004]...

    Oracle错误信息浏览表_2.docx

    4. ORA-02204: 不允许 ALTER, INDEX 和 EXECUTE 用于视图 - 在试图对视图执行非SELECT或ALTER操作时,可能会出现这个错误。 5. ORA-02205: 只有 SELECT 和 ALTER 权限对序列有效 - 序列对象仅允许SELECT和ALTER操作...

    oracle数据库解决死锁

    EXECUTE IMMEDIATE 'ALTER SYSTEM KILL SESSION ''' || p_sid || ',' || p_serial || ''''; RETURN 1; END kill_session; / ``` 4. 使用 Oracle 提供的死锁解决工具:Oracle提供了多种工具来解决死锁问题,例如...

    数据自动导入程序(不同oracle数据库之间的数据交换)

    7. **环境适应性**:描述中提到“源代码需要指定的不同Oracle环境下才能运行”,这意味着代码可能包含特定的数据库配置信息,比如TNSNames.ora文件的引用,该文件定义了Oracle数据库的网络连接信息。因此,部署到...

    cms后台管理

    <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>JeeCmsFront</servlet-name> <url-pattern>*.jhtml</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>...

    ORACLE 错误一览表

    4. ORA-02204: 不允许 ALTER, INDEX 和 EXECUTE 用于视图 这意味着试图对视图执行不被允许的操作,如ALTER、INDEX或EXECUTE。视图只能被SELECT、INSERT、UPDATE或DELETE。 5. ORA-02205: 只有 SELECT 和 ALTER ...

    修改oracel 字符集

    2. **ORA-12712: new character set must be a superset of old character set** - 解决方案:选择一个包含旧字符集的新字符集。 ```sql ALTER DATABASE CHARACTERSET INTERNAL_USE ZHS16GBK; ``` 3. **ORA-...

    ora分析脚本

    Usage: ora [-u user] [-i instance#] <command> [] General -u user/pass use USER/PASS to log in -i instance# append # to ORACLE_SID -sid <sid> set ORACLE_SID to sid -top # limit some large queries ...

    Oracle常用命令集

    5. **更改在线重做日志文件名称(Changing the Name of the Online Redo Logfile)** - 命令: ``` alter database rename file 'c:/oracle/oradata/oradb/redo01.log' to 'c:/oracle/oradata/redo01.log'; `...

    oracle常用命令

    EXECUTE DBMS_LOGMNR_D.BUILD('oradb.ora', 'c:\oracle\oradb\log'); EXECUTE DBMS_LOGMNR.ADD_LOGFILE('c:\oracle\oradata\oradb\redo01.log', DBMS_LOGMNR.NEW); EXECUTE DBMS_LOGMNR.ADD_LOGFILE('c:\oracle\...

    oracle里的常用命令

    5. **changing the name of the online redo logfile(更改在线重做日志文件名)** - 命令示例: - `ALTER DATABASE RENAME FILE 'c:/oracle/oradata/oradb/redo01.log' TO 'c:/oracle/oradata/redo01.log';` - ...

    Oracle删除表、字段之前判断表、字段是否存在

    ORA-00942:表或视图不存在 若在程序中执行该语句则会报异常,这就需要我们在删除表前先判断该表是否存在,若存在则删除. DECLARE num NUMBER; BEGIN SELECT COUNT(1) INTO num FROM USER_TABLES WHERE TABLE_NAME = ...

Global site tag (gtag.js) - Google Analytics