ORA-38029: object statistics are locked(对象统计信息已锁定)
Oracle含义
由于表(或模式)上的优化器统计信息已锁定,统计信息收集/删除被拒绝。锁定的统计信息受保护,不会被 DBMS_STATS 重新计算。
原因
之前调用过 DBMS_STATS.LOCK_TABLE_STATS 或 LOCK_SCHEMA_STATS(例如为保持统计信息固定),或 Data Pump 导入(尤其是 CONTENT=METADATA_ONLY)无意中使统计信息处于锁定状态。在锁定期间运行 GATHER_TABLE_STATS 会引发此错误。
解决方法
解锁统计信息:EXEC DBMS_STATS.UNLOCK_TABLE_STATS('APP_SCHEMA','MY_TABLE'); 或在模式级别 DBMS_STATS.UNLOCK_SCHEMA_STATS('APP_SCHEMA'); 如果不想解除锁定但仍要收集,使用 FORCE=>TRUE:EXEC DBMS_STATS.GATHER_TABLE_STATS('APP_SCHEMA','MY_TABLE', force=>TRUE); 查看锁定状态:SELECT table_name, stattype_locked FROM dba_tab_statistics WHERE stattype_locked IS NOT NULL;
同一数据库的其他条目
- ORA-00376file N cannot be read at this time(文件 N 当前无法读取)
- ORA-12520TNS:listener could not find available handler for requested type of server(监听程序找不到所请求服务器类型的可用处理程序)
- ORA-28001the password has expired(密码已过期)
- ORA-00845MEMORY_TARGET not supported on this system(此系统不支持 MEMORY_TARGET)
- ORA-27102out of memory(内存不足)
- ORA-04030out of process memory when trying to allocate N bytes(尝试分配 N 字节时进程内存不足)
- ORA-12537TNS:connection closed(TNS:连接已关闭)