Browsing articles in "Oracle"
9月 24, 2011

Oracle復旧大作戦

久しぶり技術日記

仕事での出来事です。
今週頭に検証系の設備ではありますが、Oracleデータベースを破壊してしまいました。

破壊というと大げさに聞こえますね。。。
何をしたかといえば、稼動中のデータベースのデータファイルを削除してしまったのです。

データファイルを削除したのは9/16の金曜日。気づいたのは週明けの9/20火曜日。それまで何事も無く動いていたのでなかなか気づきませんでした。

◆復旧について
Googleで検索をかけると
– recover databaseでもどせる
という書き込みが散見されましたが、元のファイルにアクセスできずに失敗。
リストアするしかないのですが、archivelogがそろっておらず失敗。
※直前にRMANでdelete archivelogを発行してしまっていた。お馬鹿。

結局2年前に取得したDatapumpデータで復旧。
あとは2年分の修正をあとで適用させるだけです。。。

以下を教訓にすることができました。と。
・archivelogはなるべく残す。
・障害/復旧の方法を学ぶ
 →出番が無いのが一番だけどね
・RMANのバックアップデータは必ずしもその時点のデータを取得しているのではない
 →古い(どこまで古いかは不明)archivelogの適用を求められる場合がある

障害起こすといい勉強になるね。
頭フル回転する。
いろいろ考えなきゃいけないことが目の前に立ちふさがるし、その飢え解決しなきゃいけない。

かといって障害だらけもつらいけどさ。

8月 2, 2011

テーブルおよびデータファイルの縮小

久しぶり日記
今回は新しいネタで。

仕事上OracleDBを利用しているため、そのメモを。

◆表(Table)とデータファイルの縮小について
DataBaseを利用していると、データの管理単位として表というものがある。
データを追加していけば表は大きくなり、データを削除していけば表は小さくなる。

Oracleの場合、表内データの検索のためにHWM(High Water Mark:高水準標)をもち、「どこまでデータを書き込んだか」を記録している。このHWMを使い、HWMまで検索をかけると表内すべてのデータを検索できたと判断する。
HWMは一度上昇すると自動では下がらないため、データを削除すると前述のとおり表のデータは小さくなるが、HWMまで検索をかけるため効率が悪くなる。
その効率を改善させる、HWMを下げるためにはテーブルの縮小(再構成)を実施する。

テーブルの縮小を実施するためには下記の条件を満たす必要がある。
・テーブルの行移動が有効になっている
・Oracle10gの場合ASSM(Auto Segment Space Management:自動セグメント領域管理)が有効になっている

→テーブルの行移動を有効にする
 ALTER TABLE <テーブル名> ENABLE ROW MOVEMENT;

テーブルの縮小
 ALTER TABLE <テーブル名> SHRINK SPACE [COMPACT|CASCADE]
 ※COMPACT:セグメントデータの再編成のみ
 ※CASCADE:テーブルに関連付けされたINDEXも縮小

テーブルの縮小でセグメントを解放できたら、データファイルの縮小も考えてみる。

データファイルの縮小
 ALTER DATABASE DATAFILE <データファイル名> RESIZE <変更したいサイズ>

上記コマンドは拡大時にも使用する。
しかし、下記エラーが派生した場合は、縮小したい領域にデータが存在するため、データの移動を考える。(上記テーブルの縮小/再構成)
‘ORA-03297:ファイルにはリクエストしたRESIZE値を超える使用中のデータが含まれています’

テーブルを縮小してデータファイルの縮小を実施しようとしてORA-03297がでてしまったら、どうしたらいいんでしょうかねー

JVN [Japan Vulnerability Notes]

Categoly

Posted dates

2019年12月
« 8月    
1234567
891011121314
15161718192021
22232425262728
293031  

NEC Direct(NECダイレクト)

NEC Direct(NECダイレクト)