[20221216]建立修改表統計資訊minmaxtab.sql指令碼.txt
[20221216]建立修改表統計資訊minmaxtab.sql指令碼.txt
--//修改表欄位的最大最小為NULL.
$ cat minmaxtab.sql
set verify off
set termout off
column v_owner new_value v_owner
column v_table new_value v_table
select
upper(CASE
WHEN INSTR('&1','.') > 0 THEN
SUBSTR('&1',INSTR('&1','.')+1)
ELSE
'&1'
END
) v_table,
nvl(upper(CASE WHEN INSTR('&1','.') > 0 THEN
UPPER(SUBSTR('&1',1,INSTR('&1','.')-1))
ELSE
user
END),user) v_owner
from dual;
set termout on
prompt
prompt modify table:&1 column=&2 stats min and max = NULL
prompt input argument list : owner.table_name column_name
prompt
DECLARE
CURSOR c1
IS
SELECT *
FROM all_tab_col_statistics
WHERE owner = upper('&&v_owner')
AND table_name = upper('&&v_table')
AND column_name = upper('&&2')
AND histogram = 'NONE'
AND last_analyzed IS NOT NULL;
v_num_distinct all_tab_col_statistics.num_distinct%TYPE;
z_distcnt NUMBER;
z_density NUMBER;
z_nullcnt NUMBER;
z_srec DBMS_STATS.statrec;
z_avgclen NUMBER;
BEGIN
FOR r IN c1
LOOP
DBMS_STATS.get_column_stats
(
ownname => r.owner
,tabname => r.table_name
,colname => r.column_name
,distcnt => z_distcnt
,density => z_density
,nullcnt => z_nullcnt
,srec => z_srec
,avgclen => z_avgclen
);
DBMS_STATS.delete_column_stats
(
ownname => r.owner
,tabname => r.table_name
,colname => r.column_name
,cascade_parts => TRUE
,no_invalidate => TRUE
,force => TRUE
);
z_srec.minval := NULL;
z_srec.maxval := NULL;
IF r.num_distinct = 1
THEN
v_num_distinct := 1 + 1e-14;
ELSE
v_num_distinct := r.num_distinct;
END IF;
IF r.num_distinct <> 0
THEN
DBMS_STATS.set_column_stats
(
ownname => r.owner
,tabname => r.table_name
,colname => r.column_name
,distcnt => v_num_distinct
,density => 1 / v_num_distinct
,nullcnt => r.num_nulls
,srec => z_srec -- No HIGH_VALUE/LOW_VALUE
,avgclen => r.avg_col_len
,no_invalidate => FALSE
,force => TRUE
);
END IF;
END LOOP;
END;
/
1.環境:
SCOTT@test01p> @ ver1
PORT_STRING VERSION BANNER CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0 12.2.0.1.0 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0
2.測試:
SCOTT@test01p> @ descz scott.empx HIREDATE
eXtended describe of scott.empx
DISPLAY TABLE_NAME OF COLUMN_NAME INFORMATION.
INPUT OWNER.TABLE_NAME <filters>
SAMPLE : @ desczz TABLE_NAME column_name1,column_name2
IF NOT INPUT <filters> ,USE "" or 1=1 or 1.
Sample Distinct Number Number
Owner Table_Name Size LAST_ANALYZED Col# Column Name Null? Type Values Density Nulls HISTOGRAM Buckets Low_value High_value
---------- -------------------- -------------- ------------------- ---- -------------------- ---------- -------------------- ------------ -------------- ---------- --------------- ------- ---------------------------------------- ----------------------------------------
SCOTT EMPX 14 2022-10-10 20:40:34 5 HIREDATE TIMESTAMP(6)(11) 13 .07692307692 0 1 1972-10-22 20:39:27. 2022-10-10 20:35:42.536000000
SCOTT@test01p> @ minmaxtab scott.empx hiredate
modify table:scott.empx column=hiredate stats min and max = NULL
input argument list : owner.table_name column_name
SCOTT@test01p> @ descz scott.empx HIREDATE
eXtended describe of scott.empx
DISPLAY TABLE_NAME OF COLUMN_NAME INFORMATION.
INPUT OWNER.TABLE_NAME <filters>
SAMPLE : @ desczz TABLE_NAME column_name1,column_name2
IF NOT INPUT <filters> ,USE "" or 1=1 or 1.
Sample Distinct Number Number
Owner Table_Name Size LAST_ANALYZED Col# Column Name Null? Type Values Density Nulls HISTOGRAM Buckets Low_value High_value
---------- -------------------- -------------- ------------------- ---- -------------------- ---------- -------------------- ------------ -------------- ---------- --------------- ------- ---------------------------------------- ----------------------------------------
SCOTT EMPX 2023-01-17 22:08:06 5 HIREDATE TIMESTAMP(6)(11) 13 .07692307692 0 1 -- ::. -- ::.
--//已經清空了最大最小值.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2932709/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20221216]建立修改表統計資訊modtab.sql指令碼.txtSQL指令碼
- [20221216]建立修改表欄位統計資訊modcol.sql指令碼.txtSQL指令碼
- 表統計資訊匯出匯入指令碼指令碼
- 通過shell指令碼生成資料統計資訊的報表指令碼
- 透過shell指令碼生成資料統計資訊的報表指令碼
- MySQL對所有表收集統計資訊(Python 2指令碼)MySqlPython指令碼
- Oracle運維指令碼-收集統計資訊Oracle運維指令碼
- [指令碼例項]——統計系統資訊指令碼指令碼
- oracle外部表建立以及收集統計資訊以及臨時表Oracle
- 【TABLE】Oracle表資訊收集指令碼Oracle指令碼
- 【STAT】Oracle 表統計資訊被鎖,如何建立索引Oracle索引
- SQL Server 監控統計阻塞指令碼資訊SQLServer指令碼
- Oracle 11g 統計資訊收集指令碼Oracle指令碼
- 檢視錶的統計資訊SQL指令碼SQL指令碼
- 修改oracle 的統計資訊Oracle
- 修改spcreate.sql指令碼,使本地指令碼建立遠端statspackSQL指令碼
- ORACLE表統計資訊與列統計資訊、索引統計資訊Oracle索引
- 指令碼建立表空間、使用者、表指令碼
- ORACLE表統計資訊與列統計資訊Oracle
- PowerDesigner中通過VBS指令碼修改模型資訊指令碼模型
- 全表複製過程建立指令碼指令碼
- python指令碼批次建立資料表Python指令碼
- 分享檢視統計資訊非常好的指令碼指令碼
- Oracle 判斷 並 手動收集 統計資訊 指令碼Oracle指令碼
- [20190510]快速建立執行指令碼.txt指令碼
- 【SQL】如何獲得表及欄位的說明資訊(comment)的建立指令碼SQL指令碼
- Shell 系統資訊監控指令碼指令碼
- [20221012]修改統計資訊最佳化sql語句.txtSQL
- 10g_crt_gather_table_stats(生成表的統計資訊收集指令碼,關鍵在引數)指令碼
- 9i_crt_gather_table_stats(生成表的統計資訊收集指令碼,關鍵在引數)指令碼
- Oracle 11g 修改表級別的自動收集統計資訊比率Oracle
- 收集統計資訊的SQL指令碼(sosi.sql)--崔華大師SQL指令碼
- Oracle 建立表空間和使用者指令碼Oracle指令碼
- 簡單資料庫及表建立shell指令碼資料庫指令碼
- 如何在linux中建立特定的指令碼註釋資訊Linux指令碼
- 一個很好的指令碼,用來顯示cbo的統計資訊指令碼
- 批量修改資料後應收集統計資訊
- [MYSQL][1]建立,修改,刪除表MySql