SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for 11月 22nd, 2009

DBCC PAGE で確認するページ情報

without comments

ページの情報を確認するための DBCC コマンドとして、[DBCC PAGE] があります。

このコマンドですが、非公開 DBCC コマンドですのでヘルプを確認するためには以下のコマンドを実行します。

– ヘルプの確認 –

DBCC TRACEON(2588)
DBCC HELP(‘PAGE’)
DBCC TRACEOFF(2588)

?

– ヘルプの内容 –

dbcc PAGE ( {’dbname’ | dbid}, filenum, pagenum [, printopt={0|1|2|3} ])

?

プリントオプションの設定は以下のなります。

  • 0 : ページヘッダのみ表示
  • 1 : ページヘッダ + データ部を表示
  • 2 : ページヘッダ + データ部を 16 進数のダンプで表示
  • 3 : 各行を個別に出力

DBCC PAGE でページ情報を出力するためには、トレースフラグ 3604 を有効にする必要があります。

試しに DCM のページ情報を出力してみたいと思います。

– ページ情報の取得 –

DBCC TRACEON(3604)
DBCC PAGE (N’WORK’, 1, 6, 1)
DBCC TRACEOFF(3604)

?

– 実行結果 –

PAGE: (1:6)

BUFFER:

BUF @0x00000000AAFD2A00

bpage = 0x00000000AA4A8000?????????? bhash = 0x0000000000000000?????????? bpageno = (1:6)
bdbid = 5??????????????????????????? breferences = 0????????????????????? bUse1 = 33908
bstat = 0x2c00009??????????????????? blog = 0x9a212159??????????????????? bnext = 0x0000000000000000

PAGE HEADER:

Page @0x00000000AA4A8000

m_pageId = (1:6)???????????????????? m_headerVersion = 1????????????????? m_type = 16
m_typeFlagBits = 0x0???????????????? m_level = 0????????????????????????? m_flagBits = 0x200
m_objId (AllocUnitId.idObj) = 99???? m_indexId (AllocUnitId.idInd) = 0??? Metadata: AllocUnitId = 6488064
Metadata: PartitionId = 0??????????? Metadata: IndexId = 0??????????????? Metadata: ObjectId = 99
m_prevPage = (0:0)?????????????????? m_nextPage = (0:0)?????????????????? pminlen = 90
m_slotCnt = 2??????????????????????? m_freeCnt = 6??????????????????????? m_freeData = 8182
m_reservedCnt = 0??????????????????? m_lsn = (15522:2954:10)????????????? m_xactReserved = 0
m_xdesId = (0:0)???????????????????? m_ghostRecCnt = 0??????????????????? m_tornBits = -1654911162

Allocation Status

GAM (1:2) = ALLOCATED??????????????? SGAM (1:3) = NOT ALLOCATED?????????? PFS (1:1) = 0x44 ALLOCATED 100_PCT_FULL
DIFF (1:6) = CHANGED???????????????? ML (1:7) = NOT MIN_LOGGED???????????

DATA:

Slot 0, Offset 0x60, Length 94, DumpStyle BYTE

Record Type = PRIMARY_RECORD???????? Record Attributes =????????????????? Record Size = 94

Memory Dump @0x000000000B2EA060

0000000000000000:?? 00005e00 00000000 00000000 00000000 †..^………….
0000000000000010:?? 00000000 00000000 00000000 00000000 †…………….
0000000000000020:?? 00000000 00000000 00000000 00000000 †…………….
0000000000000030:?? 00000000 00000000 00000000 00000000 †…………….
0000000000000040:?? 00000000 00000000 00000000 00000000 †…………….
0000000000000050:?? 00000000 00000000 00000000 0000††††††…………..??

Slot 1, Offset 0xbe, Length 7992, DumpStyle BYTE

Record Type = PRIMARY_RECORD???????? Record Attributes =????????????????? Record Size = 7992

Memory Dump @0x000000000B2EA0BE

0000000000000000:?? 0000381f ffffffff ffffffff ffffffff †..8………….
0000000000000010:?? ffffffff ffffffff ffffffff ffffffff †…………….
0000000000000020:?? ffffffff ffffffff ffffffff ffffffff †…………….
~ 省略 ~
0000000000001F10:?? ffffffff ffffffff ffffffff ffffffff †…………….
0000000000001F20:?? ffffffff ffffffff ffffffff ffffffff †…………….
0000000000001F30:?? ffffffff ffffffff †††††††††††††††††††……..
????????

?

[m_type = 16] となっていますので、このページは DCM です。

通常運用でページ情報を確認することはないと思いますが、差分バックアップや一括ログ操作の動作を確認するときには、
ページ情報を確認すると理解しやすくなります。
バックアップに関してはどこかのタイミングで投稿したいと思っていますので、その際に DCM / BCM についても
記載していきたいと思っています。

Written by Masayuki.Ozawa

11月 22nd, 2009 at 7:32 am

Posted in SQL Server