2

マルチスキーマ設定に関して、Oracle で何が可能で何が不可能かを理解するのに苦労しています。A私が2つのスキーマを持っているとしましょうB:

-- with user SYS connect as SYSDBA
-- note: ALL PRIVILEGES are granted for simplicity in the scope of this question.
--       real life databases would have more fine-grained grants...
create user A identified by A;
grant all privileges to A;

create user B identified by B;
grant all privileges to B;

-- with user A
create table A.REFERENCED_TABLE (
  ID number(7) not null,
  constraint REFERENCED_TABLE_PK primary key (ID)
);

-- with user A or B
create table B.REFERENCING_TABLE (
  A_ID number(7) not null,
  constraint REFERENCING_TABLE_FK 
    foreign key (A_ID) 
    references A.REFERENCED_TABLE(ID)
    on delete cascade
);

しかし、上記のステートメントが原因で

ORA-01031: insufficient privileges

あるスキーマのテーブルが別のスキーマのテーブルを参照するようにするにはどうすればよいですか? GRANTまだ足りないものはありますか?これは可能ですか?

4

2 に答える 2

4

権限には、システム権限とオブジェクト権限の 2 種類があります。

GRANT ALL PRIVILEGES TO user;

すべてのシステム権限をユーザーに付与するため、非常に慎重に使用する必要があります。

GRANT ALL ON table TO user;

テーブル(つまりオブジェクト)に対するSELECT、INSERTなどをユーザーに許可します。

だからあなたはする必要があります...

GRANT ALL ON a.referenced_table TO b;

...上記が機能するための CREATE TABLE A.REFERENCED_TABLE ステートメントの後。

于 2012-02-05T12:12:57.117 に答える