前回でスッキリ!したのですが、まだちょっと気になるので、dumpを取得してみます。
やってみてがモットーのブログですしね。
では、やってきます。
SQL> create tablespace test_ext2 datafile 'C:\app\oracle\oradata\orcl\test_ext2_01.dbf' size 81K;
表領域が作成されました。
SQL> select TABLESPACE_NAME,BLOCK_ID,BYTES,BLOCKS from dba_free_space where tablespace_name= 'TEST_EXT2';
TABLESPACE_NAME BLOCK_ID BYTES BLOCKS
--------------------- ---------- ---------- ----------
TEST_EXT2 4 65536 8 -------(1)
SQL> alter user hoge quota unlimited on TEST_EXT2;
ユーザーが変更されました。
SQL> connect hoge/hoge
接続されました。
SQL> create table test_ext2(co1 number) tablespace TEST_EXT2;
表が作成されました。
SQL> connect /as sysdba
接続されました。
SQL> select owner,tablespace_name,table_name,segment_created from dba_tables where table_name= 'TEST_EXT2';
OWNER TABLESPACE_NAME TABLE_NAME SEGMENT_CREATED
---------- --------------- ---------- --------------------
HOGE TEST_EXT2 TEST_EXT2 NO -------(2)
2話目で書きましたが、遅延セグメント作成な状態で、セグメントは作成されていません。
SQL> select tablespace_name,file_id from dba_data_files where tablespace_name='TEST_EXT2';
TABLESPACE_NAME FILE_ID
--------------- ----------
TEST_EXT2 14 -------(3)
(1)よりデータブロックの空きは4ブロック目(含む)から8ブロックなので、
11ブロック目が最期のブロックだと判断します。
ファイル番号14番のデータファイルの1ブロック目から11ブロックまでの
dumpを取得します。
SQL> alter system dump datafile 14 block min 1 block max 11;
システムが変更されました。
diag\<DB_NAME>\<INSTANCE_NAME>\trace配下に出力された
dumpファイルを確認します。
先頭辺り
--------
*** 2012-09-11 11:02:09.047
*** SESSION ID:(9.37) 2012-09-11 11:02:09.047
*** CLIENT ID:() 2012-09-11 11:02:09.047
*** SERVICE NAME:(SYS$USERS) 2012-09-11 11:02:09.047
*** MODULE NAME:(sqlplus.exe) 2012-09-11 11:02:09.047
*** ACTION NAME:() 2012-09-11 11:02:09.047
Start dump data blocks tsn: 12 file#:14 minblk 1 maxblk 11
Block 1 (file header) not dumped:use dump file header command -------(4)
早々に注意されています。1ブロック目はファイルヘッダーブロックだから、
ファイルヘッダーをダンプするコマンド使いなさいと。
まあ、1ブロック目がファイルヘッダーブロックってことは分かりました。
2ブロック目を確認
rdba(相対データ・ブロック・アドレス)という文字列を検索して2ブロック目を探します。
----------------------------
Block dump from disk:
buffer tsn: 12 rdba: 0x03800002 (14/2) -------(5)
scn: 0x0000.00398ff6 seq: 0x03 flg: 0x04 tail: 0x8ff61d03
frmt: 0x02 chkval: 0x75b5 type: 0x1d=KTFB Bitmapped File Space Header -------(6)
(5)がrdbaですね、(file_id/ブロック番号)なので、
14番のデータファイルの2ブロック目ということがわかります。
(6)を見てみると、「Bitmapped File Space Header」とあります。
このブロックが、 ビットマップ・ヘッダ・ブロックと考えてよさそうです。
3ブロック目を確認
----------------------------
Block dump from disk:
buffer tsn: 12 rdba: 0x03800003 (14/3) -------(7)
scn: 0x0000.0039ecd1 seq: 0x01 flg: 0x04 tail: 0xecd11e01
frmt: 0x02 chkval: 0x43ae type: 0x1e=KTFB Bitmapped File Space Bitmap -------(8)
(7)より14番のデータファイルの3ブロック目ということがわかります。
(8)を見てみると、「Bitmapped File Space Bitmap」とあります。
このブロックが、 ビットマップ・ブロックと考えてよさそうです。
4ブロック目を確認
----------------------------
Block dump from disk:
buffer tsn: 12 rdba: 0x00000004 (0/4) -------(9)
scn: 0x0000.00000000 seq: 0x01 flg: 0x05 tail: 0x00000001
frmt: 0x02 chkval: 0xa704 type: 0x00=unknown -------(10)
14/4が見つかりません。ファイルの終わりまで見ると(9)の部分が、(0/11)まであります。
8ブロック。。(10)はunknownになっています。
遅延セグメント作成でセグメントが作成されていないので、
空き領域になっているんですかね。
一先ず、1~3ブロック目までは、技術文書通りだということが分かって、スッキリ!!
次回は、遅延セグメント作成のセグメントに行を追加して、どうなるかを見てみます。
0 件のコメント:
コメントを投稿