前一陣看完文檔
打算整理總結一下
SQL> create table test_char (char_col char(
表已創建
SQL> insert into test_char values (
已創建
SQL> commit;
提交完成
SQL> select rowid from test_char;
ROWID
AAAB
根據rowid的定義規則
我們根據計算的結果去dump這個block
SQL> ALTER SYSTEM DUMP DATAFILE
系統已更改
打開產生的trace文件
data_block_dump
===============
tsiz:
hsiz:
pbl:
bdba:
flag=
ntab=
nrow=
frre=
fsbo=
fseo=
avsp=
tosp=
block_row_dump:
tab
tl:
col
col
col
end_of_block_dump
End dump data blocks tsn:
觀察dump出來的結果
SQL> select chr(to_number(
CH
a
SQL> SELECT DUMP(CHAR_COL
D_CHAR
Typ=
SQL> SELECT DUMP(VARCHAR_COL
D_VARCHAR
Typ=
SQL> SELECT DUMP(LONG_COL
SELECT DUMP(LONG_COL
*
ERROR 位於第
ORA
由於DUMP不支持LONG類型
下面看一下插入中文的情況
SQL> select name
NAME VALUE$
NLS_CHARACTERSET ZHS
NLS_NCHAR_CHARACTERSET AL
SQL> insert into test_char values (
已創建
SQL> SELECT DUMP(CHAR_COL
D_CHAR
Typ=
Typ=
SQL> SELECT DUMP(VARCHAR_COL
D_VARCHAR
Typ=
Typ=
根據dump結果
下面
SQL> create table test_nchar (nchar_col nchar(
表已創建
SQL> insert into test_nchar values (
已創建
從這裡已經可以看出一些不同了
還是dump一下看看結果吧
SQL> select dump(nchar_col
DUMP(NCHAR_COL
Typ=
SQL> select dump(nvarchar_col
DUMP(NVARCHAR_COL
Typ=
這下就明白了
From:http://tw.wingwit.com/Article/program/Oracle/201311/18368.html