日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

DBMS_STATS用于收集數據庫運行過程中的統計信息,提供現有統計信息的備份,支持將備份統計項進行還原。可以自定義備份統計信息的時間點,根據需求修改表的統計信息,從而輔助優化器生成期望中的執行計劃。

前提條件

使用dbms_stats需要將參數polar_dbms_stats.use_locked_stats的值設置為ON。 

可以通過以下命令查看該參數的狀態:

SHOW polar_dbms_stats.use_locked_stats;

可以通過以下命令設置該參數:

SET polar_dbms_stats.use_locked_stats = ON;   -- 開啟
SET polar_dbms_stats.use_locked_stats = OFF;  -- 關閉

DBMS_STATS子程序總覽

子程序

說明

GATHER_SCHEMA_STATS Procedure

收集和備份Schema級的統計信息。

GATHER_TABLE_STATS Procedure

收集和備份表級的統計信息。

GATHER_DATABASE_STATS Procedure

收集和備份數據庫級的統計信息。

GATHER_INDEX_STATS Procedure

收集和備份索引的統計信息。

GATHER_COLUMN_STATS Procedure

收集和備份指定列的統計信息。

RESTORE_SCHEMA_STATS Procedure

還原指定Schema的統計信息。

RESTORE_DATABASE_STATS Procedure

還原數據庫的統計信息。

RESTORE_TABLE_STATS Procedure

還原指定表的統計信息。

RESTORE_COLUMN_STATS Procedure

還原指定列的統計信息。

PURGE_STATS Procedure

刪除指定時間點之前的統計信息備份。

SET_TABLE_STATS Procedure

設置指定表的統計信息。

GET_TABLE_STATS Procedure

獲取指定表的統計信息。

SET_INDEX_STATS Procedure

設置索引的統計信息。

GET_INDEX_STATS Procedure

獲取指定索引的統計信息。

GET_COLUMN_STATS Procedure

獲取指定列的統計信息。

LOCK_TABLE_STATS Procedure

鎖定正在使用的表統計信息。

UNLOCK_TABLE_STATS Procedure

解鎖正在使用的表統計信息。

LOCK_SCHEMA_STATS Procedure

鎖定正在使用的Schema的統計信息。

UNLOCK_SCHEMA_STATS Procedure

解鎖正在使用的Schema的統計信息。

LOCK_COLUMN_STATS Procedure

鎖定正在使用的列的統計信息。

UNLOCK_COLUMN_STATS Procedure

解鎖正在使用的列的統計信息。

DELETE_TABLE_STATS Procedure

刪除已有的表統計信息。

DELETE_COLUMN_STATS Procedure

刪除已有的列統計信息。

DELETE_SCHEMA_STATS Procedure

刪除已有的Schema對象統計信息。

DELETE_INDEX_STATS Procedure

刪除已有的索引對象統計信息。

準備測試數據

測試數據僅適用本文中的操作示例。

  1. 創建Schema,名為dbms_stats_schema。

CREATE SCHEMA dbms_stats_schema;
  1. 創建表,名為dbms_stats_test。

CREATE TABLE dbms_stats_schema.dbms_stats_test(id int);
  1. 創建索引。

CREATE INDEX dbms_stats_index on dbms_stats_schema.dbms_stats_test(id);
  1. 插入數據。

INSERT INTO dbms_stats_schema.dbms_stats_test values (generate_series(1,10000));

DBMS_STATS.GATHER_SCHEMA_STATS

該函數用于收集和備份Schema級的統計信息。

語法

DBMS_STATS.GATHER_SCHEMA_STATS (
 ownname VARCHAR2
 );

參數

參數

說明

ownname

待分析的Schema名稱。

示例

收集和備份Schema級的統計信息,示例如下:

CALL DBMS_STATS.GATHER_SCHEMA_STATS('dbms_stats_schema');

查詢統計信息的備份情況,查詢示例如下:

SELECT * FROM polar_dbms_stats.backup_history;

DBMS_STATS.GATHER_TABLE_STATS

該函數用于收集和備份表級的統計信息。

語法

DBMS_STATS.GATHER_TABLE_STATS (
 ownname VARCHAR2, 
 tabname VARCHAR2
 );

參數

參數

說明

ownname

待分析的表所屬的Schema。

tabname

待分析的表名稱。

示例

收集并備份表級的統計信息,示例如下:

CALL DBMS_STATS.GATHER_TABLE_STATS('dbms_stats_schema', 'dbms_stats_test');

查詢統計信息備份情況,查詢示例如下:

SELECT * FROM polar_dbms_stats.backup_history;

DBMS_STATS.GATHER_DATABASE_STATS

該函數用于收集和備份數據庫級的統計信息。

語法

DBMS_STATS.GATHER_DATABASE_STATS ();

示例

收集并備份數據庫級的統計信息,示例如下:

CALL DBMS_STATS.GATHER_DATABASE_STATS();

查詢統計信息備份情況,查詢示例如下:

SELECT * FROM polar_dbms_stats.backup_history;

DBMS_STATS.GATHER_INDEX_STATS

該函數用于收集和備份索引的統計信息。

語法

DBMS_STATS.GATHER_INDEX_STATS (
 ownname VARCHAR2, 
 indname VARCHAR2
 );

參數

參數

說明

ownname

待分析的索引所屬的Schema。

indname

待分析的索引名稱。

示例

收集并備份索引級的統計信息,示例如下:

CALL DBMS_STATS.GATHER_INDEX_STATS('dbms_stats_schema', 'dbms_stats_index');

查詢統計信息備份情況,查詢示例如下:

SELECT * FROM polar_dbms_stats.backup_history;

DBMS_STATS.GATHER_COLUMN_STATS

該函數用于收集和備份指定列的統計信息。

語法

DBMS_STATS.GATHER_COLUMN_STATS (
 ownname VARCHAR2,
 tablename VARCHAR2,
 attname TEXT
 );

參數

參數

說明

ownname

待分析的列所屬的Schema。

tablename

待分析的列所屬的表。

attname

待分析的列名稱。

示例

收集并備份指定列的統計信息,示例如下:

CALL DBMS_STATS.GATHER_COLUMN_STATS('dbms_stats_schema', 'dbms_stats_test', 'id');

查詢統計信息備份情況,查詢示例如下:

SELECT * FROM polar_dbms_stats.backup_history;

DBMS_STATS.RESTORE_SCHEMA_STATS

該函數用于還原指定Schema的統計信息。

語法

DBMS_STATS.RESTORE_SCHEMA_STATS (
 ownname VARCHAR2, 
 as_of_timestamp TIMESTAMP WITH TIME ZONE
 );

參數

參數

說明

ownname

待還原的Schema名稱。

as_of_timestamp

待還原的時間點。

示例

還原指定Schema的統計信息,示例如下:

SELECT DBMS_STATS.RESTORE_SCHEMA_STATS('dbms_stats_schema',time) FROM polar_dbms_stats.backup_history WHERE unit='s';

查詢還原后的統計信息,示例如下:

SELECT count(*) FROM polar_dbms_stats.relation_stats_locked WHERE relname LIKE 'dbms_stats_schema%';

DBMS_STATS.RESTORE_DATABASE_STATS

該函數用于還原數據庫的統計信息。

語法

DBMS_STATS.RESTORE_DATABASE_STATS (
 as_of_timestamp TIMESTAMP WITH TIME ZONE
 );

參數

參數

說明

as_of_timestamp

待還原的時間點。

示例

還原數據庫統計信息,示例如下:

SELECT DBMS_STATS.RESTORE_DATABASE_STATS(time) FROM polar_dbms_stats.backup_history WHERE unit='d';

查詢還原后的統計信息,示例如下:

SELECT count(*) FROM polar_dbms_stats.relation_stats_locked WHERE relname LIKE 'dbms_stats_schema%';

DBMS_STATS.RESTORE_TABLE_STATS

該函數用于還原指定表的統計信息。

語法

DBMS_STATS.RESTORE_TABLE_STATS (
 ownname VARCHAR2, 
 tabname VARCHAR2, 
 as_of_timestamp TIMESTAMP WITH TIME ZONE
 );

參數

參數

說明

ownname

待還原的表所屬的Schema。

tabname

待還原的表名稱。

as_of_timestamp

待還原的時間點。

示例

還原指定表統計信息,示例如下:

SELECT DBMS_STATS.RESTORE_TABLE_STATS('dbms_stats_schema', 'dbms_stats_test', time) FROM polar_dbms_stats.backup_history WHERE unit='t';

查詢還原后的統計信息,示例如下:

SELECT count(*) FROM polar_dbms_stats.relation_stats_locked WHERE relname LIKE 'dbms_stats_schema%';

DBMS_STATS.RESTORE_COLUMN_STATS

該函數用于還原指定列的統計信息。

語法

DBMS_STATS.RESTORE_COLUMN_STATS (
 ownname TEXT,
 tablename TEXT,
 attname TEXT,
 as_of_timestamp timestamp with time zone
 );

參數

參數

說明

ownname

待還原的列所屬的Schema。

tabname

待還原的列所屬的表。

attname

待還原的列名。

as_of_timestamp

待還原的時間點。

示例

還原指定列統計信息,示例如下:

SELECT DBMS_STATS.RESTORE_COLUMN_STATS('dbms_stats_schema', 'dbms_stats_test', 'id', time) FROM polar_dbms_stats.backup_history WHERE unit='c';

查詢還原后的統計信息,示例如下:

SELECT count(*) FROM polar_dbms_stats.relation_stats_locked WHERE relname LIKE 'dbms_stats_schema%';

DBMS_STATS.PURGE_STATS

該函數用于刪除指定時間點之前的統計信息備份。

語法

DBMS_STATS.PURGE_STATS (
 before_timestamp timestamp
 );

參數

參數

說明

before_timestamp

指定的刪除時間點。

示例

刪除指定時間點之前的統計信息備份,示例如下:

SELECT DBMS_STATS.PURGE_STATS(time) FROM polar_dbms_stats.backup_history WHERE unit='c';

DBMS_STATS.SET_TABLE_STATS

該函數用于設置指定表的統計信息。 

說明

在進行set_table_stats前,如果沒有采集相關表的統計信息,需要先執行gather_schema_stats或者gather_table_stats。

語法

DBMS_STATS.SET_TABLE_STATS (
 ownname VARCHAR2, 
 tabname VARCHAR2, 
 numrows NUMBER DEFAULT NULL, 
 numblks NUMBER DEFAULT NULL
 );

參數

參數

說明

ownname

待設置的表所屬的Schema。

tabname

待設置的表名稱。

numrows

(可選參數)設置的表行數。

numblks

(可選參數)設置的表塊數。

示例

設置表的統計信息,示例如下:

CALL DBMS_STATS.SET_TABLE_STATS('dbms_stats_schema', 'dbms_stats_test', 1234, 4321);

DBMS_STATS.GET_TABLE_STATS

該函數用于獲取指定表的統計信息。

語法

DBMS_STATS.GET_TABLE_STATS (
 ownname VARCHAR2, 
 tabname VARCHAR2, 
 numrows OUT NUMBER, 
 numblks OUT NUMBER
 );

參數

參數

說明

ownname

待獲取的表所屬的Schema。

tabname

待獲取的表名稱。

numrows

獲取的表行數。

numblks

獲取的表塊數。

示例

獲取表的統計信息,示例如下:

DECLARE
 numrows integer;
 numblks integer;
BEGIN
 CALL DBMS_STATS.GET_TABLE_STATS('dbms_stats_schema', 'dbms_stats_test', numrows, numblks);
 raise notice '%', numrows;
 raise notice '%', numblks;
END;

DBMS_STATS.SET_INDEX_STATS

該函數用于設置索引的統計信息。

語法

DBMS_STATS.SET_INDEX_STATS (
 ownname VARCHAR2,
 indname VARCHAR2,
 numrows NUMBER DEFAULT NULL, 
 numblks NUMBER DEFAULT NULL
 );

參數

參數

說明

ownname

待設置的索引所屬的Schema。

indname

待設置的索引名稱。

numrows

(可選參數)設置的索引行數。

numblks

(可選參數)設置的索引塊數。

示例

設置索引的統計信息,示例如下:

CALL DBMS_STATS.SET_INDEX_STATS('dbms_stats_schema', 'dbms_stats_index', 2345, 5432);

DBMS_STATS.GET_INDEX_STATS

該函數用于獲取指定索引的統計信息。

語法

DBMS_STATS.GET_INDEX_STATS (
 ownname VARCHAR2, 
 tabname VARCHAR2, 
 numrows OUT NUMBER, 
 numblks OUT NUMBER
 );

參數

參數

說明

ownname

待獲取的索引所屬的Schema。

tabname

待獲取的索引名稱。

numrows

獲取的索引行數。

numblks

獲取的索引塊數。

示例

獲取索引的統計信息,示例如下:

DECLARE
 numrows integer;
 numblks integer;
BEGIN
 CALL DBMS_STATS.GET_INDEX_STATS('dbms_stats_schema', 'dbms_stats_index', numrows, numblks);
 raise notice '%', numrows;
 raise notice '%', numblks;
END;

DBMS_STATS.GET_COLUMN_STATS

該函數用于獲取指定列的統計信息。

語法

DBMS_STATS.GET_COLUMN_STATS (
 ownname VARCHAR2, 
 tabname VARCHAR2, 
 colname VARCHAR2, 
 distcnt OUT NUMBER, 
 nullcnt OUT NUMBER, 
 avgclen OUT NUMBER
 );

參數

參數

說明

ownname

待獲取的列所屬的Schema。

tabname

待獲取的列所屬的表。

colname

待獲取的列名稱。

distcnt

獲取的列中不同值的數量。

nullcnt

獲取的列空值數量。

avgclen

獲取的列平均長度。

示例

獲取列的統計信息,示例如下:

DECLARE
 distcnt integer;
 nullcnt integer;
 avgclen integer;
BEGIN
 CALL DBMS_STATS.GET_COLUMN_STATS('dbms_stats_schema', 'dbms_stats_test', 'id', distcnt, nullcnt, avgclen);
 raise notice '%', distcnt;
 raise notice '%', nullcnt;
 raise notice '%', avgclen;
END;

DBMS_STATS.LOCK_TABLE_STATS

該函數用于鎖定正在使用的表統計信息。

語法

DBMS_STATS.LOCK_TABLE_STATS (
 ownname VARCHAR2, 
 tabname VARCHAR2 
 );

參數

參數

說明

ownname

待鎖定的表所屬的Schema。

tabname

待鎖定的表名稱。

示例

鎖定正在使用的表的統計信息,示例如下:

CALL DBMS_STATS.LOCK_TABLE_STATS('dbms_stats_schema', 'dbms_stats_test');

查看鎖定的統計信息,示例如下:

SELECT count(*) FROM polar_dbms_stats.relation_stats_locked WHERE relname = 'dbms_stats_schema.dbms_stats_test';

DBMS_STATS.UNLOCK_TABLE_STATS

該函數用于解鎖正在使用的表統計信息。

語法

DBMS_STATS.UNLOCK_TABLE_STATS (
 ownname VARCHAR2, 
 tabname VARCHAR2 
 );

參數

參數

說明

ownname

待解鎖的表所屬的Schema。

tabname

待解鎖的表名稱。

示例

解鎖正在使用的表的統計信息,示例如下:

CALL DBMS_STATS.UNLOCK_TABLE_STATS('dbms_stats_schema', 'dbms_stats_test');

查看鎖定的統計信息,示例如下:

SELECT count(*) FROM polar_dbms_stats.relation_stats_locked WHERE relname = 'dbms_stats_schema.dbms_stats_test';

DBMS_STATS.LOCK_SCHEMA_STATS

該函數用于鎖定正在使用的Schema的統計信息。

語法

DBMS_STATS.LOCK_SCHEMA_STATS (
 ownname VARCHAR2
 );

參數

參數

說明

ownname

待鎖定的Schema名稱。

示例

鎖定正在使用的Schema的統計信息,示例如下:

CALL DBMS_STATS.LOCK_SCHEMA_STATS('dbms_stats_schema');

查看鎖定的統計信息,示例如下:

SELECT count(*) FROM polar_dbms_stats.relation_stats_locked WHERE relname LIKE 'dbms_stats_schema.%';

DBMS_STATS.UNLOCK_SCHEMA_STATS

該函數用于解鎖正在使用的Schema的統計信息。

語法

DBMS_STATS.UNLOCK_SCHEMA_STATS (
 ownname VARCHAR2
 );

參數

參數

說明

ownname

待解鎖的Schema名稱。

示例

解鎖正在使用的Schema的統計信息,示例如下:

CALL DBMS_STATS.UNLOCK_SCHEMA_STATS('dbms_stats_schema');

查看鎖定的統計信息,示例如下:

SELECT count(*) FROM polar_dbms_stats.relation_stats_locked WHERE relname LIKE 'dbms_stats_schema.%';

DBMS_STATS.LOCK_COLUMN_STATS

該函數用于鎖定正在使用的列的統計信息。

語法

DBMS_STATS.LOCK_COLUMN_STATS (
 ownname VARCHAR2, 
 tabname VARCHAR2, 
 attname VARCHAR2
 );

參數

參數

說明

ownname

待鎖定的列所屬的Schema。

tabname

待鎖定的列所屬的表。

attname

待鎖定的列名稱。

示例

鎖定正在使用的列的統計信息,示例如下:

CALL DBMS_STATS.LOCK_COLUMN_STATS('dbms_stats_schema', 'dbms_stats_test', 'id');

DBMS_STATS.UNLOCK_COLUMN_STATS

該函數用于解鎖正在使用的列的統計信息。

語法

DBMS_STATS.UNLOCK_COLUMN_STATS (
 ownname VARCHAR2, 
 tabname VARCHAR2, 
 attname VARCHAR2
 );

參數

參數

說明

ownname

待解鎖的列所屬的Schema。

tabname

待解鎖的列所屬的表。

attname

待解鎖的列名稱。

示例

解鎖正在使用的列的統計信息,示例如下:

CALL DBMS_STATS.UNLOCK_COLUMN_STATS('dbms_stats_schema', 'dbms_stats_test', 'id');

DBMS_STATS.DELETE_TABLE_STATS

該函數用于刪除已有的表統計信息。

語法

DBMS_STATS.DELETE_TABLE_STATS (
 ownname VARCHAR2, 
 tabname VARCHAR2
 );

參數

參數

說明

ownname

待刪除的表所屬的Schema。

tabname

待刪除的表名稱。

示例

刪除已有的表統計信息,示例如下:

CALL DBMS_STATS.DELETE_TABLE_STATS('dbms_stats_schema', 'dbms_stats_test');

查看刪除后的表統計信息,示例如下:

SELECT count(*) FROM polar_dbms_stats.relation_stats_backup WHERE relname = 'dbms_stats_schema.dbms_stats_test';

DBMS_STATS.DELETE_COLUMN_STATS

該函數用于刪除已有的列統計信息。

語法

DBMS_STATS.DELETE_COLUMN_STATS (
 ownname VARCHAR2, 
 tabname VARCHAR2,
 attname VARCHAR2
 );

參數

參數

說明

ownname

待刪除的列所屬的Schema。

tabname

待刪除的列所屬的表。

attname

待刪除的列名稱。

示例

刪除已有的列統計信息,示例如下:

CALL DBMS_STATS.DELETE_COLUMN_STATS('dbms_stats_schema', 'dbms_stats_test', 'id');

DBMS_STATS.DELETE_SCHEMA_STATS

該函數用于刪除已有的Schema對象統計信息。

語法

DBMS_STATS.DELETE_SCHEMA_STATS (
 ownname VARCHAR2 
 );

參數

參數

說明

ownname

待刪除的Schema名稱。

示例

刪除已有的Schema統計信息,示例如下:

CALL DBMS_STATS.DELETE_SCHEMA_STATS('dbms_stats_schema');

查詢刪除后的統計信息,示例如下:

SELECT count(*) FROM polar_dbms_stats.relation_stats_backup WHERE relname LIKE 'dbms_stats_schema.%';

DBMS_STATS.DELETE_INDEX_STATS

該函數用于刪除已有的索引對象統計信息。

語法

DBMS_STATS.DELETE_INDEX_STATS (
 ownname VARCHAR2,
 indname VARCHAR2 
 );

參數

參數

說明

ownname

待刪除的索引所屬的Schema。

indname

待刪除的索引名稱。

示例

刪除已有的索引統計信息,示例如下:

CALL DBMS_STATS.DELETE_INDEX_STATS('dbms_stats_schema', 'dbms_stats_index');

查詢刪除后的統計信息,示例如下:

SELECT count(*) FROM polar_dbms_stats.relation_stats_backup WHERE relname LIKE 'dbms_stats_schema.%';