質問: flashback tableで必要な権限 ocalemasterにむけて勉強中です。 oracle11.2をoraclelinux5にインストールして以下を行いました。 1.ユーザー「test」を作成。権限はconnectロールのみ。 2.sqlplusにtestでログイン(sqlplus test/***) 3.テーブル「t1」を作成/行移動を有効。 4.t1に対し挿入・更新を実行する。 5.flashback tableを実施すると以下のようなエラーが発生しました。 sql> flashback table test.t1 to scn 1015246; flashback table test.t1 to scn 1015246 * 行1でエラーが発生しました。: ora-00604: 再帰sqlレベル1でエラーが発生しました。 ora-01031: 権限が不足しています。 6.testにflashback any tableシステム権限/sysdba権限を付与 7.sqlplusにtestで再度ログイン(sqlplus test/***) 8.flashback tableを実施するとやはり同様のエラーが発生しました。 9.sqlplusにsysdbaでtestで再度ログイン。(sqlplus test/*** as sysdba) 10.flashback tableを実施すると成功しました。 参考書などの記載を見る限り、基本的に自分のテーブルであれば権限は不要と思ったのですが(少なくともsysdbaでないと不可というものではないはず!?)、no5、no8でエラーとなってしまったのは、どこに問題があったものでしょうか。 何か情報ありましたら教えてください。
回答: こんにちわ。 #1 のmuyodhid です。 > 1.ユーザー「test」を作成。権限はconnectロールのみ。 > 2.sqlplusにtestでログイン(sqlplus test/***) > 3.テーブル「t1」を作成/行移動を有効。 oracle 10.2 から、connect ロールにはcreate session system 権限しか 無くなった筈ので、create table もできないはずです。 権限を付与したユーザとflashback を実行しているユーザの権限を 再度確認した方が良いと思います。 以下、11.2 のセキュリティガイドのconnect ロールに関する説明です。 http://docs.oracle.com/cd/e16338_01/network.112/b56285/guidelines.htm#chdfecgd