08/10/21 20:33:45 sw348KkR
10gに詳しい人に質問です。
sysやsystemで、ユーザーにロールで権限を与えるときに不思議なこと
がおきます。
RESOURCEロールに「CREATE TABLE」の記述がありますが、RESOURCEロール
だけでは、SQLPLUSなどででユーザーがテーブルを作ろうとしても、エラー
になります。
この点を調べても見ると、RESOURCEロールの「CREATE TABLE」には、
「表領域」の権限しかないからとの事でした(後述しますが、表領域しか
ない時点で「TABLESPACE」の表記じゃないのがおかしく思えます)。
次に、RESOURCEロールをはずした状態で、「GRANT CREATE TABLE」で、
単独で権限を与えてから、ユーザーでテーブルをつくろうとすると、
またもやエラ-になりました。
この点も調べてみると、単独の「GRANT CREATE TABLE」には、「表作
成」の権限はあるが、「表領域」の権限がないからとの事でした。
つまり、
表領域 表作成
RESOURCEロールの中の「CREATE TABLE」 ○ ×
単独の「CREATE TABLE」 × ○
ということになるようです。
そこで、RESOURCEロールを与えた後で,「CREATE TABLE」を与えてみると
ユーザーでテーブルをつくることができました。
テーブル作成ができた事で結果オーライといきたいことですが、ユーザー
権限を付け加えるときに、Object Browserで権限の表示を観察してみたら
とても不思議なことがおこったのです。
まず、最初にユーザーにRESOURCEロールを付与します。この時の権限の
一覧には「CREATE TABLE」の他に「TRIGGER」などいくつかの権限が表記され
ていました。
次に、単独の「CREATE TABLE」の権限を与えてみてから、Object Browserで
権限の表示一覧を見ると
「CREATE TABLE」
「TABLESPACE」
の二つしか載っていないのです。
ここで頭が「???」となりました。
①RESOURCEロールの「CREATE TABLE」には表領域しかないのに
「TABLESPACE」と表記しないのか?
②RESOURCEロールに単独の「CREATE TABLE」を新たに付与すると
なぜ今まで出てこなかった「TABLESPACE」が出てくるのか?
③RESOURCEロールについていた他の権限(TRIGGERなど)は、なんで
消えてしまうのか?
この①②③について、詳しい方、ご教授くださいませ。