2008年02月28日

フラッシュバックドロップ!

なんか、プロレスの技みたいですが、違います。

ついに、Oracle10gになってDROPしてしまったテーブルを復活できるようになりました。(フラッシュリカバリの進化形ですね)

間違って「SAMPLE」テーブルをDROPしてしまったとします。

DBA権限を持つユーザ(SYSTEMとか)で以下のSQL実行します。
↓のSQLはOracleの「ゴミ箱」を表示します。(NLSSORT関数のくだりは、大文字/小文字を無視する指定です)
select original_name, type, ts_name, droptime, dropscn, object_name, owner
from dba_recyclebin
where NLSSORT(owner, 'NLS_SORT=BINARY_CI') = NLSSORT('taipei_neko', 'NLS_SORT=BINARY_CI')


original_nametypets_namedroptimedropscnobject_nameowner
SAMPLETABLEUSERS2008-02-23:18:29:03629095BIN$TxcezCXaS4iFz2XLZVvS5Q==$0TAIPEI_NEKO


ゴミ箱に残っています。
では、これを復活します。「TAIPEI_NEKO」ユーザで以下のSQLを実行します。

flashback table sample to before drop

もう一度↓を実行しても、先ほど表示されたSAMPLEテーブルのデータは表示されません。
SAMPLEテーブルは復活しました。
select original_name, type, ts_name, droptime, dropscn, object_name, owner
from dba_recyclebin
where NLSSORT(owner, 'NLS_SORT=BINARY_CI') = NLSSORT('taipei_neko', 'NLS_SORT=BINARY_CI')


ただし、SYSTEM表領域のテーブル、ローカル表領域以外のテーブル、ファイングレイン監査・
仮想プライベートデータベース(VPD)が使用されているテーブルは対象外です。
posted by 台北猫々 at 22:42| Comment(0) | TrackBack(1) | 技術メモ(Oracle)

公開しました(FileUtilクラス)。

新たに公開したのは、↓です。
■FileUtilクラス(C/C++)Windows,Linux共用
ファイル操作の補助的なメソッドを提供します。

/**
* ファイルの存在チェックを行います。
* @param filepath ファイルパス名
* @return 存在している:true していない:false
*/

static bool Exist(const char* filepath)

/**
* ファイルの移動を行います。
* @param src 移動元ファイルパス名
* @param dst 移動先ファイルパス名
* @return 成功:true 失敗:false
*/

static bool Move(const char* src, const char* dst)

/**
* ファイルの削除を行います。
* @param fileName ファイルパス名
* @return 成功:true 失敗:false
*/

static bool Delete(const char* fileName)

/**
* ファイルのコピーを行います。
* @param src コピー元ファイルパス名
* @param dst コピー先ファイルパス名
* @return 成功:true 失敗:false
*/

static bool CopyFile(const char* src, const char* dst)

/**
* 渡されたファイル名の拡張子を変更して返却します。
* @param filepath ファイルパス名(IN/OUT)
* @param new_ext 新拡張子
*/

static void exchangeExt(string& filepath, string new_ext)



公開URLはページの→側にもありますが、
http://winter-tail.sakura.ne.jp
です。


良かったらクリックお願いします→banner_01.gif
posted by 台北猫々 at 21:39| Comment(0) | TrackBack(1) | 日記