oracle 锁定、对比统计信息
2014-05-29 14:25
337 查看
转载▼
锁定schema统计
execute dbms_statS.unlock_schema_stats(ownname=>'SCOTT');
查看表锁定情况
SQL> select owner,table_name,STATTYPE_LOCKED from dba_tab_statistics where owner='SCOTT';
OWNER TABLE_NAME STATTYPE_L
------------------------------ ------------------------------ ----------
SCOTT BIN$ywjNKrPMSEygN6Kvb2yz7Q==$0
SCOTT BONUS ALL
SCOTT DEPT ALL
SCOTT EMP ALL
SCOTT SALGRADE ALL
SCOTT T ALL
解锁
SQL> execute dbms_statS.unlock_schema_stats(ownname=>'SCOTT');
SQL> select owner,table_name,STATTYPE_LOCKED from dba_tab_statistics where owner='SCOTT';
OWNER TABLE_NAME STATTYPE_L
------------------------------ ------------------------------ ----------
SCOTT BIN$ywjNKrPMSEygN6Kvb2yz7Q==$0
SCOTT BONUS
SCOTT DEPT
SCOTT EMP
SCOTT SALGRADE
SCOTT T
锁定表统计
execute dbms_stats.lock_table_stats(ownname=>'SCOTT',tabname=>'T');
收集统计信息将报错
execute dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'T');
SQL> execute dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'T');
BEGIN dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'T'); END;
*
第 1 行出现错误:
ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: 在 "SYS.DBMS_STATS", line 20337
ORA-06512: 在 "SYS.DBMS_STATS", line 20360
ORA-06512: 在 line 1
可以添加force强制覆盖
execute dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'T',force=>true);
SQL> create index iid_idx on t(iid) compute statistics;
create index iid_idx on t(iid) compute statistics
*
第 1 行出现错误:
ORA-38029: 对象统计信息已锁定
默认没有搜集统计信息,有点疑惑
SQL> create index iid_idx on t(iid) ;
execute dbms_statS.unlock_TABLE_stats(ownname=>'SCOTT',TABNAME=>'T');
比较对象统计信息。
SELECT *
FROM table(dbms_stats.diff_table_stats_in_pending(
ownname => 'SCOTT',
tabname => 'T',
time_stamp => NULL,
pctthreshold => 10));
SELECT *
FROM table(dbms_stats.diff_table_stats_in_pending(
ownname => 'SCOTT',
tabname => 'T',
time_stamp => NULL,
pctthreshold => 0));
SELECT *
FROM table(dbms_stats.diff_table_stats_in_stattab(
ownname => 'SCOTT',
tabname => 'T',
stattab1 => 'MYSTATS',
statid1 => 'SET1',
stattab1own => 'SCOTT',
pctthreshold => 0));
SELECT *
FROM table(dbms_stats.diff_table_stats_in_history(
ownname => 'SCOTT',
tabname => 'T',
time1 => systimestamp - to_dsinterval('0 00:00:15'),
time2 => NULL,
pctthreshold => 0));
转载▼
锁定schema统计
execute dbms_statS.unlock_schema_stats(ownname=>'SCOTT');
查看表锁定情况
SQL> select owner,table_name,STATTYPE_LOCKED from dba_tab_statistics where owner='SCOTT';
OWNER TABLE_NAME STATTYPE_L
------------------------------ ------------------------------ ----------
SCOTT BIN$ywjNKrPMSEygN6Kvb2yz7Q==$0
SCOTT BONUS ALL
SCOTT DEPT ALL
SCOTT EMP ALL
SCOTT SALGRADE ALL
SCOTT T ALL
解锁
SQL> execute dbms_statS.unlock_schema_stats(ownname=>'SCOTT');
SQL> select owner,table_name,STATTYPE_LOCKED from dba_tab_statistics where owner='SCOTT';
OWNER TABLE_NAME STATTYPE_L
------------------------------ ------------------------------ ----------
SCOTT BIN$ywjNKrPMSEygN6Kvb2yz7Q==$0
SCOTT BONUS
SCOTT DEPT
SCOTT EMP
SCOTT SALGRADE
SCOTT T
锁定表统计
execute dbms_stats.lock_table_stats(ownname=>'SCOTT',tabname=>'T');
收集统计信息将报错
execute dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'T');
SQL> execute dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'T');
BEGIN dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'T'); END;
*
第 1 行出现错误:
ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: 在 "SYS.DBMS_STATS", line 20337
ORA-06512: 在 "SYS.DBMS_STATS", line 20360
ORA-06512: 在 line 1
可以添加force强制覆盖
execute dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'T',force=>true);
SQL> create index iid_idx on t(iid) compute statistics;
create index iid_idx on t(iid) compute statistics
*
第 1 行出现错误:
ORA-38029: 对象统计信息已锁定
默认没有搜集统计信息,有点疑惑
SQL> create index iid_idx on t(iid) ;
execute dbms_statS.unlock_TABLE_stats(ownname=>'SCOTT',TABNAME=>'T');
比较对象统计信息。
SELECT *
FROM table(dbms_stats.diff_table_stats_in_pending(
ownname => 'SCOTT',
tabname => 'T',
time_stamp => NULL,
pctthreshold => 10));
SELECT *
FROM table(dbms_stats.diff_table_stats_in_pending(
ownname => 'SCOTT',
tabname => 'T',
time_stamp => NULL,
pctthreshold => 0));
SELECT *
FROM table(dbms_stats.diff_table_stats_in_stattab(
ownname => 'SCOTT',
tabname => 'T',
stattab1 => 'MYSTATS',
statid1 => 'SET1',
stattab1own => 'SCOTT',
pctthreshold => 0));
SELECT *
FROM table(dbms_stats.diff_table_stats_in_history(
ownname => 'SCOTT',
tabname => 'T',
time1 => systimestamp - to_dsinterval('0 00:00:15'),
time2 => NULL,
pctthreshold => 0));
相关文章推荐
- Oracle 锁定临时表统计信息及锁住后是否能用动态采集的hint
- ORACLE性能调整--统计信息的迁移(Oracle- 性能调优)
- Oracle 统计信息备份/表分析
- oracle 统计信息
- Oracle 判断 并 手动收集 统计信息 脚本
- Oracle 判断 并 手动收集 统计信息 脚本
- ORACLE性能调整--统计信息的迁移
- Oracle 判断 并 手动收集 统计信息 脚本
- oracle 10g如何关闭和打开自动收集统计信息
- 收集oracle统计信息
- Oracle 判断 并 手动收集 统计信息 脚本
- Oracle 9i和10g在create index和rebuild index的统计信息的区别
- Oracle 10g 统计信息自动收集功能(automatic statistics gathering)学习总结
- Oracle Statistic 统计信息 小结
- Oracle的SYSTEM统计信息
- ORACLE性能调整--统计信息的迁移
- Oracle统计信息的导出、导入
- oracle统计信息收集
- 收集oracle统计信息
- Oracle 判断 并 手动收集 统计信息 脚本