2009-04-09 13 views
1

外部DB管理者が運用データベースをエクスポートし、テスト環境にインポートしました。私たちはOracle 9.2を使用しています。インポートされたデータベースオブジェクト(テーブル、ビュー、イデックス、パッケージなど)の大半は正常に動作しますが、3つの特定のテーブルに問題があります。これらのテーブルに対してSELECT、UPDATE、DELETEを実行できますが、テーブル。言い換えればOracleテーブルの簡単なビューを作成できません

、folowing作品:

create or replace view v_test_view as select 1 x from dual; // we can create views 
create or replace view v_test_view as select 1 x from someTable; 
select * from problematicTable; // we can select data from problematic table 

しかし、これは動作しません:

create or replace view v_test_view as select 1 x from problematicTable; 
--> ORA-01031: insufficient privileges 

背景情報:コピーするには、インポート/エクスポートユーティリティを使用

  • デシベル管理をデータベーススキーマ
  • 生産とテストのバージョン最初のインポートが完了した後、問題のあるテーブルがオブジェクトカタログ(およびデータベース開発ツール)に表示されましたが、これからSELECTを実行しようとすると、オラクルはまったく同じではありません(生産は9.2.0.8、テストは9.2.0.7)
  • テーブル、我々は "無効な識別子"を取得しました。その後、テーブルは再インポートされましたが、現在はSELECTから選択できますが、ビューは作成できません

アイデアはありますか?

更新日: 状況がさらに奇妙に見えます。 1つのOracleセッションを使用している場合、我々は(ログインするのと同じユーザーを使用して!)別のOracleセッションでは、このテーブルからデータを選択することができ、我々は「ORA-00904:無効な識別子」を取得している

UPDATE#2:を インポートに使用されたエクスポート・データは、Oracleの同じインスタンスにある問題のあるテスト環境(TEST2)にある別のテスト環境(TEST1と呼ぶ)にデータをインポートするために使用されました。これらの2つの環境の違いは、TEST1は本番と同じユーザー(スキーマ名)を使用しますが、TEST2は別のユーザー(別のスキーマ名にインポートされたオブジェクト)を使用することです。問題のあるテーブルには、正常に動作するテーブルとは異なる特別なセキュリティプロパティはありません。

マトラ

+0

問題のあるテーブルの名前を教えてください。それには奇妙な文字や外来文字が含まれていますか?また、十分な特権ではないと確信していますか? – Petros

+0

テーブルの名前にforegin文字が含まれていません。名前はADSLMANUALCHECKです。権限について:上記のように、私は時々このテーブルから選択することができますが、他の回(同じユーザーを使用して)私はそうすることができず、私はORA-009004を返却します。 –

+0

TEST2がテーブルを所有していて、ビューを作成しようとしていますか? –

答えて

3

はROLEを経由して、問題のテーブルの上に選択付与されたビューを作成するユーザーですか?その場合は、テーブルに対して明示的な許可を与えてください。オラクルから

「スキーマ内にビューを作成するためには、そのスキーマは、どちらかの選択、挿入、更新に必要な権限を持っている必要があります、またはすべてのテーブルまたはビューから行を削除したビューにビューの所有者には、役割ではなく直接これらの権限が与えられなければなりません。その理由は、役割に付与された権限をオブジェクト経由で継承することができないからです。

+0

私たちは特別なロールを使用していません。 select * from SESSION_ROLESは、CONNECT、PLUSTRACE、RESOURCEを返します。ユーザーはスキーマの所有者です。 UPDATE#2も参照してください。 –

+0

問題のあるテーブルに共通するものはありますか?インポート後、手動でcreate view文を実行すると同じエラーが発生しますか?暗闇の中でのショット... – DCookie

+0

インポートされた他のテーブルとは違いはありません。一般的なこと:テーブル名は 'A'で始まりますが、他の 'A'テーブルもあります。これらのテーブルは、数年前にこのDBで最初に作成されたテーブルの1つでした。私はビューを手動で再作成しようとしましたが(オリジナルの質問を参照)、成功はありません。 –

0

インポートに問題があるようです。だから、私たちのDB管理者が問題を修正するために何をしたかだった:

  • は、問題のテーブルに
  • 逆輸入構造問題のあるテーブルの(列、制約、インデックス)
  • 構造が再た後にドロップ彼はまた戻ってデータをコピーするAS SELECTと述べ
  • 彼がされた

TABLを再作成するCREATE TABLEで再生

  • データを再インポートして作成します現在のスキーマに空き領域がなくなった(自動拡張に設定されていない)ことを発見しました。奇妙なことは、最初の輸入が不十分なスペースについて不平を言っていないということです。

    したがって理論的には、insufficeintスペースがデータ辞書の破損の原因であったということです。

  • +0

    私はあなたのインスタンスのアラートログにあなたを指摘することを考えましたが、「おそらく何もありません」と考えました。スペース不足のエラーがそこに表示されるはずです。 – DCookie

    +0

    奇妙なことは、インポートログにエラー/警告がないことです。とにかくありがとう。 –

    関連する問題