[20221216]建立修改表欄位統計資訊modcol.sql指令碼.txt
[20221216]建立修改表欄位統計資訊modcol.sql指令碼.txt
--//最近經常要修改表欄位統計資訊,需要一個修改表欄位的統計資訊的指令碼,建立如下:
$ cat modcol.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 input argument list : owner.table_name column_name column_stat_attribute value
prompt
prompt column_stat_attribute = density distcnt nullcnt avgclen
prompt
prompt @desc_proc sys dbms_stats set_column_stats
prompt
prompt exec dbms_stats.SET_COLUMN_STATS('&v_owner','&v_table','&2',&3=>&4,NO_INVALIDATE=>false,force=>true);;
prompt
pause press enter to continue ...
exec dbms_stats.SET_COLUMN_STATS('&v_owner','&v_table','&2',&3=>&4,NO_INVALIDATE=>false,force=>true);
prompt
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> @ tab_lh scott empx ''
DISPLAY TABLE_NAME OF COLUMN_NAME INFORMATION.
INPUT OWNER TABLE_NAME COLUMN
SAMPLE : @ TAB_LH TABLE_NAME [COLUMN_NAME]
IF NOT INPUT COLUMN_NAME ,USE "" .
COLUMN_NAME DATA_TYPE DATA_LENGTH N NUM_DISTINCT DENSITY SAMPLE_SIZE Low_value High_value NUM_NULLS NUM_BUCKETS LAST_ANALYZED HISTOGRAM DATA_DEFAULT
----------- ------------- ----------- - ------------ ---------- ----------- ---------- ----------- --------- ----------- ------------------- --------------- --------------------
EMPNO NUMBER 22 Y 14 .071428571 14 7369 7934 0 1 2022-10-10 20:40:34 NONE
ENAME VARCHAR2 10 Y 14 .071428571 14 ADAMS WARD 0 1 2022-10-10 20:40:34 NONE
JOB VARCHAR2 9 Y 5 .2 14 ANALYST SALESMAN 0 1 2022-10-10 20:40:34 NONE
MGR NUMBER 22 Y 6 .166666667 13 7566 7902 1 1 2022-10-10 20:40:34 NONE
HIREDATE TIMESTAMP(6) 11 Y 13 .076923077 14 0 1 2022-10-10 20:40:34 NONE
SAL NUMBER 22 Y 12 .083333333 14 800 5000 0 1 2022-10-10 20:40:34 NONE
COMM NUMBER 22 Y 4 .25 4 0 1400 10 1 2022-10-10 20:40:34 NONE
DEPTNO NUMBER 22 Y 3 .333333333 14 10 30 0 1 2022-10-10 20:40:34 NONE
8 rows selected.
SCOTT@test01p> @ modcol scott.empx comm nullcnt 9
input argument list : owner.table_name column_name column_stat_attribute value
column_stat_attribute = density distcnt nullcnt avgclen
@desc_proc sys dbms_stats set_column_stats
exec dbms_stats.SET_COLUMN_STATS('SCOTT','EMPX','comm',nullcnt=>9,NO_INVALIDATE=>false,force=>true);
press enter to continue ...
PL/SQL procedure successfully completed.
SCOTT@test01p> @ modcol scott.empx comm density 0.251
input argument list : owner.table_name column_name column_stat_attribute value
column_stat_attribute = density distcnt nullcnt avgclen
@desc_proc sys dbms_stats set_column_stats
exec dbms_stats.SET_COLUMN_STATS('SCOTT','EMPX','comm',density=>0.251,NO_INVALIDATE=>false,force=>true);
press enter to continue ...
PL/SQL procedure successfully completed.
SCOTT@test01p> @ tab_lh scott empx comm
DISPLAY TABLE_NAME OF COLUMN_NAME INFORMATION.
INPUT OWNER TABLE_NAME COLUMN
SAMPLE : @ TAB_LH TABLE_NAME [COLUMN_NAME]
IF NOT INPUT COLUMN_NAME ,USE "" .
COLUMN_NAME DATA_TYPE DATA_LENGTH N NUM_DISTINCT DENSITY SAMPLE_SIZE Low_value High_value NUM_NULLS NUM_BUCKETS LAST_ANALYZED HISTOGRAM DATA_DEFAULT
----------- --------- ----------- - ------------ ---------- ----------- --------- -------------------- ----------- ------------------- --------------- --------------------
COMM NUMBER 22 Y 4 .251 4 0 1400 9 1 2023-01-17 21:56:12 NONE
--//ok!!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2932708/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20221216]建立修改表統計資訊minmaxtab.sql指令碼.txtSQL指令碼
- [20221216]建立修改表統計資訊modtab.sql指令碼.txtSQL指令碼
- 【SQL】如何獲得表及欄位的說明資訊(comment)的建立指令碼SQL指令碼
- 表統計資訊匯出匯入指令碼指令碼
- 修改表的欄位型別型別
- mysql 資料庫 表 欄位 編碼修改 方法MySql資料庫
- MySQL如何檢視新增修改表以及欄位註釋資訊MySql
- oracle 修改表欄位的長度Oracle
- postgresql分割槽表修改資料表欄位SQL
- sql2005 獲取表欄位資訊和檢視欄位資訊SQL
- [案例] 字元型欄位統計資訊只對前32位進行統計字元
- mysql修改表欄位學習筆記MySql筆記
- MySQL-建立計算欄位MySql
- 欄位型別檢測指令碼型別指令碼
- laravel sync()同步時修改中間表欄位Laravel
- Sqlserver修改線上表的表欄位型別SQLServer型別
- mysql修改表、欄位、庫的字符集MySql
- 通過shell指令碼生成資料統計資訊的報表指令碼
- 透過shell指令碼生成資料統計資訊的報表指令碼
- 查詢oracle表的資訊(表,欄位,約束,索引)Oracle索引
- MySQL對所有表收集統計資訊(Python 2指令碼)MySqlPython指令碼
- Oracle運維指令碼-收集統計資訊Oracle運維指令碼
- MySQL 分割槽表 partition線上修改分割槽欄位MySql
- SQL Server複製的表中如何修改欄位SQLServer
- Oracle獲取所有表名資訊和獲取指定表名欄位資訊Oracle
- [指令碼例項]——統計系統資訊指令碼指令碼
- oracle外部表建立以及收集統計資訊以及臨時表Oracle
- 【TABLE】Oracle表資訊收集指令碼Oracle指令碼
- 【STAT】Oracle 表統計資訊被鎖,如何建立索引Oracle索引
- SQL Server 監控統計阻塞指令碼資訊SQLServer指令碼
- Oracle 11g 統計資訊收集指令碼Oracle指令碼
- 檢視錶的統計資訊SQL指令碼SQL指令碼
- Oracle-不刪表資料,修改欄位型別Oracle型別
- 【轉】修改表的欄位資料型別的方法資料型別
- sql server 修改欄位名,檢視指定表是否存在SQLServer
- oracle刪除表欄位和oracle表增加欄位Oracle
- sql語句修改欄位型別和增加欄位SQL型別
- mysql建立表的時候對欄位和表新增COMMENTMySql