1

Oracle XE インスタンスに SYSTEM ユーザーとしてログオンしています。ユーザー、テーブル、および制約を作成するスクリプトを実行しようとすると、ORA-01031エラーが発生します。スクリプトは次のとおりです。

CREATE USER AA IDENTIFIED BY AA DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
CREATE USER BB IDENTIFIED BY BB DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT ALL PRIVILEGES TO AA WITH ADMIN OPTION;
GRANT ALL PRIVILEGES TO BB WITH ADMIN OPTION;
...
CREATE TABLE ...
CREATE INDEX ...
...
ALTER TABLE "BB"."B_TABLE" ADD CONSTRAINT "FK_BB_AA" FOREIGN KEY ("AA_ID")
  REFERENCES "AA"."A_TABLE" ("ID") ENABLE; -- this line report the error

この制約を Oracle XE に追加することはできませんか?

4

1 に答える 1

1

まず、ALL PRIVILEGESユーザーに権限を付与し、特に権限を付与しない状況があってはなりませんWITH ADMIN OPTION。これは、セキュリティを管理するための貧弱な方法です。実際のシステムに近いものでは、実際に必要な権限を特定し、それらの権限のみを付与する必要があります。

次に、 schema の外部キーがBBの親テーブルを参照するには、AAの親テーブルに対する権限がBB必要です。システム権限がないため、テーブルを作成した後、外部キーを作成する前に権限を付与する必要があります。REFERENCEAAREFERENCE ANY TABLEBBREFERENCEAA.A_TABLE

GRANT REFERENCES ON aa.a_table TO bb;
于 2012-10-05T01:32:03.997 に答える