
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でエラーとなってしまったのは、どこに問題があったものでしょうか。
何か情報ありましたら教えてください。
No.1ベストアンサー
- 回答日時:
こんにちわ。
>どこに問題があったものでしょうか。
Oracle のマニュアル (SQL リファレンス) には、以下のように記載されています。
> 表を以前のSCNまたはタイムスタンプまでフラッシュバックするには、
> その表に対するFLASHBACKオブジェクト権限か、FLASHBACK ANY TABLE
> システム権限が必要です。 また、その表に対するSELECT、INSERT、DELETE
> およびALTERオブジェクト権限が必要です。
回答ありがとうございます。
私の方でもマニュアルの方は確認しまして、たとえば別ユーザー(FLASHBACKオブジェクト権限以外をtest.t1に付与。FLASHBACKのみない。)で以下を実行したところでは、直接エラーが発生しました。
SQL> flashback table test.t1 to scn 1015246;
flashback table test.t1 to scn 1015246
*
行1でエラーが発生しました。:
ORA-01031: 権限が不足しています。
対してtestでは再帰SQLにてエラーとなっています。
testユーザーはt1に対しては自所有のオブジェクトのため全オブジェクト権限を持っているはずですし、No8ではFLASHBACK ANY TABLEを付与しても発生したので、マニュアルに記載以外の条件が必要なのではと思った次第でした。
なお、その別ユーザーにFLASHBACK ANY TABLEを付与しても同様でした。
的外れかもしれませんが、ディクショナリ関連の権限が必要かと推測しています・・・。
他になにか情報ありましたら教えてください。
No.2
- 回答日時:
こんにちわ。
#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/ …
この回答への補足
本件、原因は不明なままですが、いつの間にか実行できるようになっておりました。。。
関係ないと思いますが、実施した内容として大きなものはバックアップやファイル削除後のリカバリーなどを行っておりました。
若干すっきりしない点がありますが、回答いただきありがとうございました。
大変申し訳ありません、質問の文章が誤っておりました。
「1.ユーザー「test」を作成。権限はconnectロールのみ。」
と記載しましたが、実際にはCONNECT/MGMT_USER/OEM_MONITORの3つの権限がありました。
(以前、enterprise managerよりtestでインポート/エクスポートするとき、やはり権限関連でうまく動作せず、ロールを付与したり、どこかのサイトにのっていたストアドプロシージャを実行したりしました)
2,3,記載の通りt1は、test自身が作成したものになります。
また、念のためtestにさらにresourceロールを付与しましたが同様でした。
現在のtestの権限は以下の通りです。
ロール:CONNECT/MGMT_USER/OEM_MONITOR/RESOURCE(いずれもデフォルト)
システム権限:FLASHBACK ANY TABLE
オブジェクト権限:無し
たびたびお手数をおかけしますが、情報ありましたらよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Statement ignored というエラー
-
ODBCリンクの際にACCESSでは読...
-
異なるスキーマのビューを元に...
-
oracleユーザーの権限確認方法...
-
Accessのマクロでモジュールを...
-
SQL文のエラー
-
Access VBAで行ラベルが定義さ...
-
重複するIDのデータを1行にま...
-
SQLで部分的にGROUP BYしたいとき
-
エクセルVBAでUserFormを起動し...
-
sqlplusでヘッダーが付かない
-
キャッシュを使わずにSELECTを...
-
今日の日付が入った行のデータ...
-
ストアドプロシジャからストア...
-
日付型カラムへのデータINSERT
-
callで順に実行されるプロシー...
-
OutlookVBAで作成したマクロに...
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
PL/SQLカーソルの2重FORループ...
-
PL/SQLでのSQL文法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Statement ignored というエラー
-
ODBCリンクの際にACCESSでは読...
-
別のスキーマのテーブルアップ...
-
異なるスキーマのビューを元に...
-
会社の〇〇部と〇〇課の違いっ...
-
Oracle 10gで順序sequenceの作...
-
Poweruser権限でのIPアドレス変...
-
ロールを言い換えると?
-
oracle8.1.7について
-
テーブル権限確認
-
権限で「委任」「専決」とあり...
-
IE6の「ディスカッション」は...
-
dba_で始まるシステム表を検索...
-
Oracle 10g 他スキーマの参照権...
-
ポリスとシェリフの違い 及び...
-
ノートンの活動ログに詳しい方...
-
トリガーにてビューを作成しよ...
-
同一SQLでも実行ユーザによりカ...
-
oracleユーザーの権限確認方法...
-
「バッチジョブとしてログオン...
おすすめ情報