[20180613]縮短欄位長度.txt
[20180613]縮短欄位長度.txt
--//最近遇到的一個問題,就是修改欄位長度.理論講增加欄位長度沒有什麼問題,而縮短我記憶裡好像不行的,
--//即使當前記錄滿足縮短欄位長度需求.
--//透過例子說明:
1.環境:
SCOTT@book> @ ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
create table tx( id number,vc varchar2(100));
insert into tx select rownum,dbms_random.string('U',20) from dual connect by level<=10;
commit;
2.測試:
SCOTT@book> alter table tx modify vc varchar2(19);
alter table tx modify vc varchar2(19)
*
ERROR at line 1:
ORA-01441: cannot decrease column length because some value is too big
--//太短不行.
SCOTT@book> alter table tx modify vc varchar2(20);
Table altered.
SCOTT@book> @ &r/desc tx
Name Null? Type
------------------------------- -------- ----------------------------
1 ID NUMBER
2 VC VARCHAR2(20)
--//OK沒有任何問題,看來我以前的記憶存在問題.還是以前遇到的版本有這個問題.
--//但是實際上這樣很慢的,它必須加TM鎖,進入資料塊檢查,才能完成修改操作.
3.做一個跟蹤看看:
SCOTT@book> @ &r/10046on 12
Session altered.
SCOTT@book> alter table tx modify vc varchar2(120);
Table altered.
SCOTT@book> alter table tx modify vc varchar2(20);
Table altered.
SCOTT@book> @ &r/10046off
Session altered.
--//執行tkprof後檢查:
SQL ID: 9raphb4ba5mc7 Plan Hash: 0
LOCK TABLE "TX" IN EXCLUSIVE MODE NOWAIT
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 2 0.00 0.00 0 1 0 0
Execute 2 0.00 0.00 0 0 0 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.00 0.00 0 1 0 0
--//上鎖2次.
SQL ID: 0nuddc4bgbuvs Plan Hash: 0
alter table tx modify vc
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 2 0.00 0.00 0 2 0 0
Execute 2 0.01 0.01 0 80 4 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.01 0.01 0 82 4 0
--//sql語句後面的看不到.
SQL ID: fkjk2s4bvknkk Plan Hash: 40191160
select /*+ first_rows */ 1
from
"SCOTT"."TX" where LENGTHB("VC") > 20
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 1 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 1 0.00 0.00 0 7 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 3 0.00 0.00 0 8 0 0
--//很明顯在執行alter table tx modify vc varchar2(20);時要掃描表TX一次.
--//而alter table tx modify vc varchar2(120);沒有類似的操作.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2156083/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20210423]建立檢視以及欄位長度.txt
- oracle 修改表欄位的長度Oracle
- [20190810]如何索引一個超長欄位.txt索引
- Oracle 修改欄位型別和長度Oracle型別
- MySQL的欄位數量以及長度限制MySql
- ORANCLE 資料已存在,修改欄位型別長度型別
- 欄位長度前後端是否都需要做限制?後端
- mysql的varchar欄位最大長度真的是65535嗎?MySql
- [20231020]增加欄位的問題.txt
- [20181020]lob欄位的索引段.txt索引
- DDL操作導致欄位長度變更修復方案
- OGG複製同步,提示欄位長度不夠ORA-01704
- MySQL中修改一個資料庫下包含有某個相同欄位的所有表的欄位長度MySql資料庫
- [BUG反饋]username欄位的長度設定有點小問題。
- [20181031]lob欄位與布隆過濾.txt
- mysql變長型別欄位varchar值更新變長或變短底層檔案儲存原理MySql型別
- [20210208]lob欄位與查詢的問題.txt
- [20190227]簡單探究tab$的bojb#欄位.txt
- [20181022]lob欄位的lobid來之那裡.txt
- MySQL 5.6使用pt-online-schema-change線上修改大表欄位長度MySql
- Python如何統一縮排長度?Python
- python縮排長度統一嗎?Python
- [20201109]11.2.0.4增加欄位與預設值問題.txt
- 美創科技運維日記|Oracle欄位長度引起的思考length()和lengthb()運維Oracle
- pydantic 欄位欄位校驗
- [20180408]那些函式索引適合欄位的查詢.txt函式索引
- [20210421]12c以上版本增加欄位與預設值.txt
- [20190312]檢視v$datafile欄位OFFLINE_CHANGE#, ONLINE_CHANGE#.txt
- fastadmin 新增欄位記圖片欄位AST
- 網址縮短 短網址連結縮短生成器的試用推薦
- 按位長度進行字串的分割輸出,長度不足補0字串
- [20200211]檢視v$db_object_cache的CHILD_LATCH欄位.txtObject
- [20201224]order by欄位順序與查詢條件為NULL.txtNull
- MySQL VARCHAR型別欄位到底可以定義多長MySql型別
- [BUG反饋]模型管理 > 欄位管理看不見任何欄位。這表明顯有欄位、!模型
- [20221216]建立修改表欄位統計資訊modcol.sql指令碼.txtSQL指令碼
- -206 錯誤. 在表中找不到對應的資料欄位txt
- [2020528]寫sql語句不要忘記給欄位加上表別名.txtSQL