日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

ORA-03001,GATHER_TABLE_STATS数据库自动收集统计信息报错

發布時間:2025/4/16 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ORA-03001,GATHER_TABLE_STATS数据库自动收集统计信息报错 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.根據Alert報錯信息,查詢Trace日志

/oracle/app/oracle/admin/fgsquery/bdump/fgsquery_j001_11111.trc Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options ORACLE_HOME = /oracle/app/oracle/product/10.2.0/db_1 System name: Linux Node name: pquerydb01 Release: 2.6.18-348.el5 Version: #1 SMP Wed Nov 28 21:22:00 EST 2012 Machine: x86_64 Instance name: fgsquery Redo thread mounted by this instance: 1 Oracle process number: 117 Unix process pid: 11111, image: oracle@pquerydb01 (J001)*** 2018-10-30 22:04:43.786 *** ACTION NAME:(GATHER_STATS_JOB) 2018-10-30 22:04:43.781 *** MODULE NAME:(DBMS_SCHEDULER) 2018-10-30 22:04:43.781 *** SERVICE NAME:(SYS$USERS) 2018-10-30 22:04:43.781 *** SESSION ID:(1172.38268) 2018-10-30 22:04:43.781 ORA-03001: unimplemented feature *** 2018-10-30 22:04:43.786 GATHER_STATS_JOB: GATHER_TABLE_STATS('"LISPRDD"','"LCCONT"','""', ...) ORA-03001: unimplemented feature

數據庫自動收集統計信息也會報錯?
表是否有異常,表相關的索引是否有異常???

2.文檔搜索

由于在生產環境,并未直接手工收集統計信息進行測試 根據報錯,匹配到了一個Mos文檔 ORA-03001: Unimplemented Feature when Running DBMS_STATS.GATHER_INDEX_STATS (文檔 ID 559389.1)

3.問題分析

測試環境進行測試--導入測試對象 impdp \'/ as sysdba\' directory=dump dumpfile=LISPRDD_LCCONT.dmp logfile=LISPRDD_LCCONT.log remap_schema=LISPRDD:hr REMAP_TABLESPACE=LISPRD1:users --收集統計信息,未報錯~ EXEC dbms_stats.gather_table_stats(ownname=>'HR',TABNAME=>'LCCONT',CASCADE=>TRUE,DEGREE=>1,ESTIMATE_PERCENT=>0.01);--根據sqlfile查詢創建索引語句,發現存在兩個特殊的索引,一個為復合索引且第二列為數字類型,復合MOS報錯信息,另一個為函數索引,都列舉出來 impdp \'/ as sysdba\' directory=dump dumpfile=LISPRDD_LCCONT.dmp logfile=LISPRDD_LCCONT.log remap_schema=LISPRDD:hr REMAP_TABLESPACE=LISPRD1:users sqlfile=create_table_index.sql -- new object type path is: SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX -- CONNECT HR CREATE INDEX "HR"."LCCONT_INDEX_VDATE1" ON "HR"."LCCONT" ("VISITDATE", 1)PCTFREE 10 INITRANS 2 MAXTRANS 255STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)TABLESPACE "USERS" PARALLEL 1 ;ALTER INDEX "HR"."LCCONT_INDEX_VDATE1" NOPARALLEL;

--如果vis= null
--visitdate is null -> 全表掃描

CREATE INDEX "HR"."IDX_LCCONT_SUBSTATE" ON "HR"."LCCONT" (SUBSTR("STATE",1,4))
PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" PARALLEL 1 ;

ALTER INDEX "HR"."IDX_LCCONT_SUBSTATE" NOPARALLEL;

4.測試驗證

--insert 測試記錄 禁用所有約束 SQL> select 'alter table '||owner||'.'||TABLE_NAME||' drop constraints '||CONSTRAINT_NAME ||';' from dba_constraints where owner='HR' and TABLE_NAME='LCCONT'; 'ALTERTABLE'||OWNER||'.'||TABLE_NAME||'DROPCONSTRAINTS'||CONSTRAINT_NAME||';' -------------------------------------------------------------------------------- alter table HR.LCCONT drop constraints SYS_C005407; insert into HR.LCCONT(GRPCONTNO,VISITDATE,STATE) values(1,sysdate,1); SQL> EXEC dbms_stats.gather_table_stats(ownname=>'HR',TABNAME=>'LCCONT',CASCADE=>TRUE,DEGREE=>1,ESTIMATE_PERCENT=>0.01); PL/SQL procedure successfully completed. GATHER_INDEX_STATS EXEC DBMS_STATS.gather_index_stats('HR','LCCONT_INDEX_VDATE1'); EXEC DBMS_STATS.gather_index_stats('HR','IDX_LCCONT_SUBSTATE');10205 環境沒有任何問題,MOS 文檔介紹該報錯影響范圍10201-10204,但是往往有時候版本不一定準確,但是本次是準確的,如果有相同服務器版本測試盡量嚴格保持一致 10204環境再次進行測試,無數據,收集統計信息未報錯,存在數據后,收集統計信息報錯
在10204測試環境,重演上述操作,禁用約束
--插入測試數據

SQL> insert into HR.LCCONT(GRPCONTNO,VISITDATE,STATE) select rownum,sysdate-rownum,mod(rownum,3) from dba_objects;

50664 rows created.

SQL> insert into HR.LCCONT(GRPCONTNO,VISITDATE,STATE) values(966,'','abc');

SQL> insert into HR.LCCONT(GRPCONTNO,VISITDATE,STATE) values(889,'','efg');

SQL> commit;

--收集表的統計信息報錯如下 SQL> EXEC DBMS_STATS.gather_index_stats('HR','LCCONT_INDEX_VDATE1'); BEGIN DBMS_STATS.gather_index_stats('HR','LCCONT_INDEX_VDATE1'); END;* ERROR at line 1: ORA-03001: unimplemented feature ORA-06512: at "SYS.DBMS_STATS", line 10872 ORA-06512: at "SYS.DBMS_STATS", line 10896 ORA-06512: at line 1--收集函數索引,無報錯,排除函數索引的問題 SQL> EXEC DBMS_STATS.gather_index_stats('HR','IDX_LCCONT_SUBSTATE'); PL/SQL procedure successfully completed.
--收集復合索引統計信息,報錯相同 SQL
> EXEC dbms_stats.gather_table_stats(ownname=>'HR',TABNAME=>'LCCONT',CASCADE=>TRUE,DEGREE=>1,ESTIMATE_PERCENT=>0.01); BEGIN dbms_stats.gather_table_stats(ownname=>'HR',TABNAME=>'LCCONT',CASCADE=>TRUE,DEGREE=>1,ESTIMATE_PERCENT=>0.01); END;* ERROR at line 1: ORA-03001: unimplemented feature ORA-06512: at "SYS.DBMS_STATS", line 13437 ORA-06512: at "SYS.DBMS_STATS", line 13457 ORA-06512: at line 1--查詢會話進程號 SQL> select spid from v$process where addr=(select paddr from v$session where sid=(select sid from v$mystat group by sid)); SPID ------------ 25471--查詢進程對應的trace文件 ksedmp: internal or fatal error ORA-03001: unimplemented feature Current SQL statement for this session: select /*+ no_parallel_index(t,"LCCONT_INDEX_VDATE1") dbms_stats cursor_sharing_exact use_weak_name_resl dynamic_sampling(0) no_monitoring no_expand index(t,"LCCONT_INDEX_VDATE1")
*/ count(*) as nrw,count(distinct sys_op_lbid(53035,'L',t.rowid)) as nlb,
count(distinct hextoraw(sys_op_descend("VISITDATE")||sys_op_descend(1))) as
ndk,sys_op_countchg(substrb(t.rowid,1,15),1) as clf from "HR"."LCCONT" t where "VISITDATE" is not null or 1 is not null ----- PL/SQL Call Stack -----object line objecthandle number name 0xbe7c11b8 9598 package body SYS.DBMS_STATS 0xbe7c11b8 10157 package body SYS.DBMS_STATS 0xbe7c11b8 10792 package body SYS.DBMS_STATS 0xbe7c11b8 10896 package body SYS.DBMS_STATS 0xb3da0860 1 anonymous block--再次對會話進行追蹤,本次只收集索引的統計信息,報錯相同,無異常 SQL> alter session set events '3001 trace name ERRORSTACK level 3'; Session altered.SQL> EXEC dbms_stats.gather_table_stats(ownname=>'HR',TABNAME=>'LCCONT',CASCADE=>TRUE,DEGREE=>1,ESTIMATE_PERCENT=>0.01); BEGIN dbms_stats.gather_table_stats(ownname=>'HR',TABNAME=>'LCCONT',CASCADE=>TRUE,DEGREE=>1,ESTIMATE_PERCENT=>0.01); END;* ERROR at line 1: ORA-03001: unimplemented feature ORA-06512: at "SYS.DBMS_STATS", line 13437 ORA-06512: at "SYS.DBMS_STATS", line 13457 ORA-06512: at line 1SQL> select spid from v$process where addr=(select paddr from v$session where sid=(select sid from v$mystat group by sid));SPID ------------ 25676

?

5.問題處理

按照MOS的文檔,對該索引刪除后,新建的索引第二列修改為字符格式,本次測試驗證,修改為字符格式后,該索引的使用是否與修改前相同,不會造成性能問題。

此索引的創建意義,在于如果查詢is null,通過索引能夠取得結果SQL> select count(*) from HR.LCCONT;COUNT(*) ----------50667 Execution Plan ---------------------------------------------------------- Plan hash value: 4114441950 -------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Cost (%CPU)| Time | -------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 0 (0)| 00:00:01 | | 1 | SORT AGGREGATE | | 1 | | | | 2 | INDEX FULL SCAN| LCCONT_INDEX_VDATE1 | 1 | 0 (0)| 00:00:01 | -------------------------------------------------------------------------------- --查詢is null 是否走索引 SQL> select count(*) from HR.LCCONT where VISITDATE is null;COUNT(*) ----------2 -------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 8 | 0 (0)| 00:00:01 | | 1 | SORT AGGREGATE | | 1 | 8 | | | |* 2 | INDEX RANGE SCAN| LCCONT_INDEX_VDATE1 | 1 | 8 | 0 (0)| 00:00:01 |-------------------------------------------------------------------------------- SQL> select * from HR.LCCONT where VISITDATE is null -------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost(%CPU)| Time | -------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 36 |0 (0)| 00:00:01 | | 1 | TABLE ACCESS BY INDEX ROWID| LCCONT | 1 | 36 |0 (0)| 00:00:01 | |* 2 | INDEX RANGE SCAN | LCCONT_INDEX_VDATE1 | 1 | |0 (0)| 00:00:01 | -------------------------------------------------------------------------------- Predicate Information (identified by operation id): ---------------------------------------------------2 - access("VISITDATE" IS NULL)SQL>select * from HR.LCCONT where VISITDATE =sysdate; -------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost(%CPU)| Time | -------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 36 |0 (0)| 00:00:01 | | 1 | TABLE ACCESS BY INDEX ROWID| LCCONT | 1 | 36 |0 (0)| 00:00:01 | |* 2 | INDEX RANGE SCAN | LCCONT_INDEX_VDATE1 | 1 | |0 (0)| 00:00:01 | -------------------------------------------------------------------------------- Predicate Information (identified by operation id): ---------------------------------------------------2 - access("VISITDATE"=SYSDATE@!)
*******************************索引修改前,上述SQL均使用了索引***********************************
--對索引進行重建 SQL> drop index hr.LCCONT_INDEX_VDATE1; CREATE INDEX "HR"."LCCONT_INDEX_VDATE1" ON "HR"."LCCONT" ("VISITDATE",'1')PCTFREE 10 INITRANS 2 MAXTRANS 255STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)TABLESPACE "USERS" PARALLEL 1 ; -- 再次收集統計信息: -- SQL> EXEC DBMS_STATS.gather_index_stats('HR','LCCONT_INDEX_VDATE1'); PL/SQL procedure successfully completed. SQL> EXEC dbms_stats.gather_table_stats(ownname=>'HR',TABNAME=>'LCCONT',CASCADE=>TRUE,DEGREE=>1,ESTIMATE_PERCENT=>0.01); PL/SQL procedure successfully completed.
--報錯可以解決


--校驗重建后的索引,是否正常使用

SQL> select count(*) from HR.LCCONT

COUNT(*)
----------
50667

Execution Plan
----------------------------------------------------------
Plan hash value: 2339219198

-------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 34 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | INDEX FAST FULL SCAN| LCCONT_INDEX_VDATE1 | 50550 | 34 (0)| 00:00:01 |
-------------------------------------------------------------------------------------

SQL> select count(*) from HR.LCCONT where VISITDATE is null;

COUNT(*)
----------
2


Execution Plan
----------------------------------------------------------
Plan hash value: 2244137702

-----------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 8 | 1 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | 8 | | |
|* 2 | INDEX RANGE SCAN| LCCONT_INDEX_VDATE1 | 1 | 8 | 1 (0)| 00:00:01 |
-----------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("VISITDATE" IS NULL)

?

SQL>?select * from HR.LCCONT where VISITDATE is null

Execution Plan
----------------------------------------------------------
Plan hash value: 3258936949

---------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 38 | 1 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| LCCONT | 1 | 38 | 1 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | LCCONT_INDEX_VDATE1 | 1 | | 1 (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("VISITDATE" IS NULL)

?

SQL> select * from HR.LCCONT where VISITDATE =sysdate;

no rows selected

Execution Plan
----------------------------------------------------------
Plan hash value: 3258936949

---------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 38 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| LCCONT | 1 | 38 | 3 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | LCCONT_INDEX_VDATE1 | 1 | | 2 (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("VISITDATE"=SYSDATE@!)

?

結論:1.對索引drop 后,重建索引,

CREATE INDEX "HR"."LCCONT_INDEX_VDATE1" ON "HR"."LCCONT" ("VISITDATE",'1')
2.重建索引并不會影像sql的執行選擇,從原理上說,此類索引的目的是讓索引能存儲單列的Null值,使得業務Is null能夠使用此索引,至于第二列的數值類型并不關心

?

轉載于:https://www.cnblogs.com/lvcha001/p/10073006.html

總結

以上是生活随笔為你收集整理的ORA-03001,GATHER_TABLE_STATS数据库自动收集统计信息报错的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本天堂在线播放 | 久久国产精品网站 | 黑人巨大精品欧美一区二区蜜桃 | 美国一级片网站 | 国产区欧美区日韩区 | 欧美顶级metart裸体全部自慰 | 91在线看 | 99在线看 | 性折磨bdsm欧美激情另类 | 日韩短视频 | 日产av在线播放 | 老牛影视av牛牛影视av | 精品国产鲁一鲁一区二区张丽 | 亚洲精品久久久中文字幕 | 浪漫樱花动漫在线观看免费 | 国产精品情侣呻吟对白视频 | 日韩欧美视频免费在线观看 | 亚洲熟女综合色一区二区三区 | www.蜜臀av.com| 免费在线观看网址入口 | 日韩av综合网站 | 24小时日本在线www免费的 | 欧美人与禽猛交乱配 | 亚洲人成免费 | 国产乱女淫av麻豆国产 | 亚洲午夜电影网 | 国产人成视频在线观看 | 男女激情网址 | 中文字幕亚洲国产 | 欧美xxxxx精品| 欣赏asian国模裸体pics | 动漫美女露胸网站 | 第一章激情艳妇 | 久久成人激情 | 无码视频一区二区三区 | 久久综合国产精品 | 大胸喷奶水www视频妖精网站 | 久久夜夜操 | 91天堂视频| 少妇脱了内裤让我添 | 涩涩视频免费看 | 夜间福利在线 | 波多野结衣av一区二区全免费观看 | 久久国产一级片 | 久久国产精品一区二区三区 | 污视频在线观看网址 | 亚洲不卡视频在线 | 欧美在线看 | 免费人成又黄又爽又色 | www精品一区二区三区 | 国产亚洲精品成人 | 国产激情视频在线播放 | 日日狠狠久久偷偷四色综合免费 | 亚洲五码在线 | 国产情侣露脸自拍 | av噜噜色| 丁香花激情网 | 欧美日韩一区二区三 | 最新视频 - 88av| 嫩草懂你| 国产卡一卡二在线 | 你懂的在线播放 | 亚洲成在线 | 久久久久久久久久久久久久久久久 | 97超碰碰碰| 天天舔天天 | 国产高清视频网站 | 亚洲精品97久久中文字幕 | 无码人妻丰满熟妇啪啪网站 | 这里只有精品6 | 狠狠撸视频 | 色小姐com | 羞羞涩| www.rihan| 懂色视频在线观看 | 91麻豆影视| 制服丝袜第一页在线观看 | 欧美在线精品一区二区三区 | 国产美女主播在线观看 | 99视频在线播放 | 日韩高清中文字幕 | 美日韩一区二区 | aa片在线观看视频在线播放 | 四虎影城库 | 男女在楼梯上高潮做啪啪 | 五月婷婷,六月丁香 | 四虎影视免费看 | 免费在线观看av的网站 | 麻豆91茄子在线观看 | 精品视频一区二区在线观看 | 大香伊人久久 | 成人在线观看视频网站 | 日本中文字幕一区二区 | 日本成人激情 | 太久av| 国产吞精囗交免费视频网站 | 中文字幕电影av | 国产色av | 国产色网址 |