dbms_stats.gather table stats(ownname => ‘CREDIT APP’,tabname=>‘BUSINESS DUEBILL MSGLIST’, method opt =>‘for all indexed columns’) 统计信息在那查看
时间: 2025-02-09 15:16:50 浏览: 56
这个Oracle Database Management System (DBMS_STATS) 的命令 `gather table stats` 用于收集指定表(CREDIT APP.BUSINESS DUEBILL MSGLIST)的统计信息,特别是针对所有索引列。当这个操作完成后,收集到的统计信息会存储在数据库系统内部,用于优化查询性能。
默认情况下,这些统计信息可以在中国区Oracle的动态性能视图(Dynamic Performance Views)中查看,比如`DBA_TABLE_STATS` 和 `USER_TAB_STATS`,你可以通过查询这两个视图来找到对应表的统计详情。例如:
```sql
SELECT * FROM DBA_TABLE_STATS WHERE TABLE_NAME = 'BUSINESS_DUEBILL_MSGLIST' AND OWNER = 'CREDIT APP';
```
或者对于用户级别的统计信息:
```sql
SELECT * FROM USER_TAB_STATS WHERE TABLE_NAME = 'BUSINESS_DUEBILL_MSGLIST' AND OWNER = 'CREDIT APP';
```
如果你想看到具体的列统计信息,可能会涉及到更详细的视图如 `DBA_COLUMN_STATISTICS` 或 `USER_COLUMN_STATISTICS`。
相关问题
dbms_stats.gather_table_stats(ownname=>'SALES',tabname=>'STORE_INFO_CHECK',ESTIMATE_PERCENT=>100,degree=>12, CASCADE=>true);
这是一个 Oracle 数据库中的 PL/SQL 语句,用于收集表统计信息。具体含义如下:
- ownname:表所属的模式名称。
- tabname:表名称。
- ESTIMATE_PERCENT:用于估算表的大小,以便优化统计信息收集过程。此处设置为 100,表示要收集所有行的统计信息。
- degree:指定并行度,即使用多少个进程来收集统计信息。此处设置为 12,表示使用 12 个进程。
- CASCADE:表示是否对表中的所有索引和列收集统计信息。设置为 true,表示对所有索引和列进行统计信息收集。
需要注意的是,此语句需要在具有足够权限的用户下执行。
CREATE OR REPLACE PROCEDURE ANALYZE_TB AS NC_VER VARCHAR2(100); V_SQL VARCHAR2(300); V_TABLENAME VARCHAR2(50); CURSOR CUR_TABLE_TEMP IS SELECT TABLE_NAME FROM USER_TABLES WHERE TEMPORARY = 'Y'; BEGIN SELECT VERSION INTO NC_VER FROM SM_PRODUCT_VERSION WHERE ROWNUM = 1; IF (NC_VER < '5.0') THEN SYS.DBMS_STATS.GATHER_SCHEMA_STATS(OWNNAME => USER, ESTIMATE_PERCENT => 100, METHOD_OPT => 'FOR ALL INDEXED COLUMNS', CASCADE => FALSE); ELSE SYS.DBMS_STATS.GATHER_SCHEMA_STATS(OWNNAME => USER, ESTIMATE_PERCENT => 100, METHOD_OPT => 'FOR ALL INDEXED COLUMNS', CASCADE => TRUE); END IF; --delete temp table statistics OPEN CUR_TABLE_TEMP; LOOP FETCH CUR_TABLE_TEMP INTO V_TABLENAME; EXIT WHEN CUR_TABLE_TEMP%NOTFOUND; V_SQL := 'ANALYZE TABLE ' || V_TABLENAME || ' DELETE STATISTICS '; EXECUTE IMMEDIATE V_SQL; END LOOP; CLOSE CUR_TABLE_TEMP; EXCEPTION WHEN OTHERS THEN IF CUR_TABLE_TEMP%ISOPEN THEN CLOSE CUR_TABLE_TEMP; END IF; DBMS_OUTPUT.PUT_LINE(SQLERRM); END ANALYZE_TB;
这是一个 PL/SQL 存储过程,它的作用是分析数据库中的表并删除临时表的统计信息。首先,它会从 SM_PRODUCT_VERSION 表中获取版本信息,然后根据版本号调用不同的方法分析表的统计信息。对于版本号小于 5.0 的情况,它会调用 SYS.DBMS_STATS.GATHER_SCHEMA_STATS 进行统计信息分析,并将 CASCADE 参数设置为 FALSE;对于版本号大于等于 5.0 的情况,它会将 CASCADE 参数设置为 TRUE。接着,它会打开一个游标 CUR_TABLE_TEMP,查询数据库中所有临时表的表名,然后使用动态 SQL 语句 ANALYZE TABLE ... DELETE STATISTICS 删除这些表的统计信息。最后,它会捕获并处理可能发生的异常,并输出错误信息。
阅读全文
相关推荐















