處理鎖住的統計資訊
之前的實驗講到了按照SCHEMA收集統計資訊的時候,不會收集統計資訊鎖住的表。
接下來實驗一下,如果統計資訊鎖住了,如何進行處理。
C:\Users\lenovo>sqlplus s1/s1@abc
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 3月 26 14:17:08 2015
Copyright (c) 1982, 2010, Oracle. All rights reserved.
連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> set linesize 9999 pagesize 9999
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
T1
T2
SQL> create table t3 as select * from user_objects;
表已建立。
SQL> insert into t3 select * from t3;
已建立3行。
SQL> /
已建立6行。
SQL> /
已建立12行。
SQL> /
已建立24行。
SQL> commit;
提交完成。
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
T1
T2
T3
SQL> select table_name,stattype_locked from user_tab_statistics ;
TABLE_NAME STATTYPE_L
------------------------------ ----------
T1
T2
T3
--此時SCHEMA下沒有被鎖住的表,所有的表都可以進行收集。
SQL> exec dbms_stats.gather_schema_stats('S1');
PL/SQL 過程已成功完成。
SQL> select table_name,last_analyzed from user_tables;
TABLE_NAME LAST_ANALYZED
------------------------------ -------------------
T1 2015/03/26 14:23:37
T2 2015/03/26 14:23:37
T3 2015/03/26 14:23:37
--這個時候鎖住T3表的統計資訊
SQL> exec dbms_stats.lock_table_stats('S1','T3');
PL/SQL 過程已成功完成。
SQL> select table_name,stattype_locked from user_tab_statistics ;
TABLE_NAME STATTYPE_L
------------------------------ ----------
T1
T2
T3 ALL
SQL> select table_name,stattype_locked from user_tab_statistics ;
TABLE_NAME STATTYPE_L
------------------------------ ----------
T1
T2
T3 ALL
然後再按照SCHEMA收集統計資訊。
SQL> exec dbms_stats.gather_schema_stats('S1');
PL/SQL 過程已成功完成。
SQL> select table_name,last_analyzed from user_tables;
TABLE_NAME LAST_ANALYZED
------------------------------ -------------------
T1 2015/03/26 14:29:47
T2 2015/03/26 14:29:47
T3 2015/03/26 14:23:37
--發現T3的統計資訊並沒有變化,LAST_ANALYZED還是上次的時間。
--我們把T3表的統計資訊解鎖。
SQL> exec dbms_stats.unlock_table_stats('S1','T3');
PL/SQL 過程已成功完成。
SQL> select table_name,stattype_locked from user_tab_statistics ;
TABLE_NAME STATTYPE_L
------------------------------ ----------
T1
T2
T3
SQL> exec dbms_stats.gather_schema_stats('S1');
PL/SQL 過程已成功完成。
SQL> select table_name,last_analyzed from user_tables;
TABLE_NAME LAST_ANALYZED
------------------------------ -------------------
T1 2015/03/26 14:31:04
T2 2015/03/26 14:31:04
T3 2015/03/26 14:31:04
接下來實驗一下,如果統計資訊鎖住了,如何進行處理。
C:\Users\lenovo>sqlplus s1/s1@abc
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 3月 26 14:17:08 2015
Copyright (c) 1982, 2010, Oracle. All rights reserved.
連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> set linesize 9999 pagesize 9999
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
T1
T2
SQL> create table t3 as select * from user_objects;
表已建立。
SQL> insert into t3 select * from t3;
已建立3行。
SQL> /
已建立6行。
SQL> /
已建立12行。
SQL> /
已建立24行。
SQL> commit;
提交完成。
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
T1
T2
T3
SQL> select table_name,stattype_locked from user_tab_statistics ;
TABLE_NAME STATTYPE_L
------------------------------ ----------
T1
T2
T3
--此時SCHEMA下沒有被鎖住的表,所有的表都可以進行收集。
SQL> exec dbms_stats.gather_schema_stats('S1');
PL/SQL 過程已成功完成。
SQL> select table_name,last_analyzed from user_tables;
TABLE_NAME LAST_ANALYZED
------------------------------ -------------------
T1 2015/03/26 14:23:37
T2 2015/03/26 14:23:37
T3 2015/03/26 14:23:37
--這個時候鎖住T3表的統計資訊
SQL> exec dbms_stats.lock_table_stats('S1','T3');
PL/SQL 過程已成功完成。
SQL> select table_name,stattype_locked from user_tab_statistics ;
TABLE_NAME STATTYPE_L
------------------------------ ----------
T1
T2
T3 ALL
SQL> select table_name,stattype_locked from user_tab_statistics ;
TABLE_NAME STATTYPE_L
------------------------------ ----------
T1
T2
T3 ALL
然後再按照SCHEMA收集統計資訊。
SQL> exec dbms_stats.gather_schema_stats('S1');
PL/SQL 過程已成功完成。
SQL> select table_name,last_analyzed from user_tables;
TABLE_NAME LAST_ANALYZED
------------------------------ -------------------
T1 2015/03/26 14:29:47
T2 2015/03/26 14:29:47
T3 2015/03/26 14:23:37
--發現T3的統計資訊並沒有變化,LAST_ANALYZED還是上次的時間。
--我們把T3表的統計資訊解鎖。
SQL> exec dbms_stats.unlock_table_stats('S1','T3');
PL/SQL 過程已成功完成。
SQL> select table_name,stattype_locked from user_tab_statistics ;
TABLE_NAME STATTYPE_L
------------------------------ ----------
T1
T2
T3
SQL> exec dbms_stats.gather_schema_stats('S1');
PL/SQL 過程已成功完成。
SQL> select table_name,last_analyzed from user_tables;
TABLE_NAME LAST_ANALYZED
------------------------------ -------------------
T1 2015/03/26 14:31:04
T2 2015/03/26 14:31:04
T3 2015/03/26 14:31:04
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26084062/viewspace-1474477/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORA-38029: 物件統計資訊已鎖定處理物件
- oracle使用者鎖住、過期處理方式Oracle
- 資料庫hang住,分析處理資料庫
- Oracle TX鎖的處理Oracle
- ORACLE鎖等待的處理方法Oracle
- 處理Oracle Session中的鎖OracleSession
- Oracle 死鎖處理Oracle
- Oracle死鎖處理Oracle
- SUN E6500雙機hang住處理
- synchronized到底鎖住的是誰?synchronized
- 處理表鎖定的情況
- 對於死鎖的處理流程:
- oracle表鎖住 解鎖辦法Oracle
- win10系統筆記本如何鎖住鍵盤 win10鎖住筆記本鍵盤的方法Win10筆記
- Mysql如何處理死鎖MySql
- MySQL加鎖處理分析MySql
- MySQL 加鎖處理分析MySql
- 【Oracle】死鎖的產生與處理Oracle
- 【STAT】Oracle 表統計資訊被鎖,如何建立索引Oracle索引
- RDSforMySQLInnoDB行鎖等待和鎖等待超時的處理ORMMySql
- 深入理解計算機系統系列(第二章--資訊的表示與處理)計算機
- ORACLE死鎖及處理方式Oracle
- oracle 死鎖查詢處理Oracle
- 作業系統4——處理機排程與死鎖作業系統
- 【統計資訊】Oracle統計資訊Oracle
- 檢視處理Oracle中被鎖物件的SQLOracle物件SQL
- 【統計資訊】Oracle常用的收集統計資訊方式Oracle
- 通過鎖定表的統計資訊來穩定sql的執行計劃SQL
- 探索Kimi智慧助手:如何用超長文字解鎖高效資訊處理新境界
- 刪除oracle表被鎖住Oracle
- CSAPP =2= 資訊的表示和處理APP
- 如何處理執行緒死鎖執行緒
- 關於Oracle死鎖處理方法Oracle
- Oracle死鎖查詢及處理Oracle
- ORACLE表統計資訊與列統計資訊、索引統計資訊Oracle索引
- 深度學習、資訊理論與統計學深度學習
- 資料庫鎖的12連問,抗住!資料庫
- 【故障處理】佇列等待之TX - allocate ITL entry引起的死鎖處理佇列