外部の DB 管理者が本番データベースをエクスポートし、テスト環境にインポートしました。Oracle 9.2 を使用しています。インポートされたデータベース オブジェクト (テーブル、ビュー、idex、パッケージなど) の大部分は正常に動作しますが、特定の 3 つのテーブルに問題があります。これらのテーブルでは SELECT、UPDATE、DELETE を実行できますが、このテーブルではビューを作成できません。テーブル。
つまり、次のように動作します。
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
背景情報:
- データベース管理者は、インポート/エクスポート ユーティリティを使用してデータベース スキーマをコピーしました
- 実動 Oracle とテスト Oracle のバージョンは正確に同じではありません (実動は 9.2.0.8、テストは 9.2.0.7)。
- 最初のインポートが完了した後、問題のあるテーブルはオブジェクト カタログ (およびデータベース開発ツール) に表示されましたが、このテーブルから SELECT しようとすると、「無効な識別子」が返されました。その後、テーブルが再インポートされ、テーブルから SELECT できるようになりましたが、ビューを作成することはできません。
何か案は?
更新: 状況はさらに奇妙に見えます。1 つの Oracle セッションを使用すると、このテーブルからデータを選択できます。別の Oracle セッションで (同じユーザーを使用してログインします! )、「ORA-00904: 無効な識別子」が表示されます。
更新#2: インポートに使用されたエクスポートデータは、問題のあるもの(TEST2)と同じOracleインスタンスにある別のテスト環境(TEST1と呼びましょう)にデータをインポートするために正常に使用されました。これら 2 つの環境の違いは、TEST1 は本番環境と同じユーザー (スキーマ名) を使用するのに対し、TEST2 は別のユーザーを使用することです (オブジェクトが別のスキーマ名にインポートされたようです)。問題のあるテーブルには、正常に機能するテーブルとは異なる特別なセキュリティ プロパティはありません。
マトラ