2016-04-24 1 views
2

は、私は、スキーマFOO上のテーブルの束を作成し、ユーザー/スキーマFOOを作成していた場合、スキーマ上の任意のテーブル/ビューで選択します/テーブル/ビューが作成される前のビュー? または、テーブル/ビューを作成した後にのみ行う必要がありますか?グラントは <p></p>は、私はすべてのテーブルを上の選択ユーザーFOO許可を与えることができる方法があり、Oracleでは

CREATE USER FOO .... 
/
*** GRANT SELECT TO USER FOO ON ANY TABLE/VIEW CREATED 
/
CREATE TABLE 1 ... 
/
CREATE TABLE ... ... 
/
CREATE TABLE N  ... 
/
+1

ユーザ 'foo'は常に' foo'スキーマのオブジェクトを問い合わせることができます。 'foo'はそれらのオブジェクトを所有していますので、' foo'はそれらを削除し、それらを変更したり、クエリしたりします。 'foo'スキーマのすべてのオブジェクトにユーザbarがアクセスできるようにすることは可能でしょうか? –

+0

良いキャッチ - 私はそれを逃した。 – mathguy

答えて

2

ない正確に何をしたいが、あなたはselect(またはその他)を与えることができます動的SQLを使用したスキーマのすべてのテーブル上の特権:

begin 
    for i in (
      select 'grant select on ' || table_name || ' to USER2' as stm 
      from dba_tables 
      where owner = 'USER1' 
      ) 
    loop 
    execute immediate i.stm; 
    end loop; 
end; 

これは、あなたがいることを考えると、尋ねたものとはslighty異なっていますすべてのテーブルを作成した後にのみこれを実行することができます。ただし、すべての表作成後に実行して、ユーザーが完全に付与されていることを確認できる、単純なSQLの部分です。

1

あなたが求めているのはgrant select on <schema_name> to <user_name>です。今日、そのようなものは存在しません。

https://community.oracle.com/ideas/2333

同じ場所で必要な場合は、回避策のアイデアを見つける:現在アクティブであるOTN(Oracle Technology Networkの)、で、この問題に関するオープン要求/ユーザー投票があります。

+0

ロールを作成し、そのロールにユーザーを割り当ててテーブルを作成するというトリックがあったのを覚えていますが、私はそのことを覚えていません。 – user648026

+0

あなたの人生をシンプルにするためのロールを作成できますが、ロールのスキーマを選択します。事実の後ではテーブルへのアクセスは許可されますが、個々のユーザではなくただ1つのロールにしかアクセスできません。 – mathguy

関連する問題