今回はデータファイルの中身の変化について。
暗号化されていない表領域は中身がstrings
コマンドで見られるため
レコードが入っている状態でdeleteやtruncateをするとどのように変化するのかを試してみた。
環境
oracle 12c ( Single Instance )
今回は普通のシングルDBで検証する。
1. 表領域の作成
この時点でデータファイルの中身を見るとDB名と表領域名が書かれていることが分かる。
( データファイルはバイナリだがstrings
コマンドで中身を見ることができる )
2. 表の作成、レコードの挿入
作成した表領域上に表を作成し、レコードを挿入する。
この時点でのデータファイルの中身を確認。
delete前後での差分を確認するためにテキストで保存しておく。
3. レコードの削除
さて、レコードを削除する。
レコード削除完了。ではデータファイルの中身の差分を見る。
4. データファイルの差分の確認
差分は1行のみであった。
このことから、データファイルも何かしらの変更があったことが分かった。
にしてもあまりにも地味だなこれ。。。そして意味不明すぎる。。。
せっかくなのでtruncate(表の切り捨て)もしてみる。
5. truncateの実施
truncateの前後での差分を確認してみる。
表領域の下にこれまた意味不明な記号が追加されている。
まとめ
最近暗号化に興味を持ったためにデータファイルの中身が気になり試してみた。
deleteやtruncateの前後でデータファイルにも何かしらの変更が加えられるのは当然として
これらの操作によってレコードの値は消えるわけではないことも分かった。
こういった点からも暗号化されていない表領域のデータファイルは注意した方が良さそう。