助け合いフォーラム
この問題はプレミアムコンテンツです。
問題 選択肢 解答 訂正
他スキーマの表に索引を作成する。
とは、任意のスキーマ内に索引を作成する権限だと思います。
ですので、CREATE ANY INDEX
システム権限が必要であると考えられるため、問題に誤りがあると思われます。
ご指摘の選択肢については、こう解説されています。
・他スキーマの表に索引を作成する
INDEXオブジェクト権限があれば行えますので、誤りです。
https://docs.oracle.com/cd/E29814_01/timesten.1122/b66446/privileges.htm#BABIDBFC をみると
オブジェクト権限とは、オブジェクトで特定のアクションを実行したり、別のユーザーのオブジェクトにアクセスする権限のことです。オブジェクトには、表、ビュー、マテリアライズド・ビュー、索引、シノニム、順序、キャッシュ・グループ、レプリケーション・スキームと、PL/SQLファンクション、プロシージャおよびパッケージがあります。
と記載があり、誤答解説のINDEXオブジェクト権限について確認すると
ユーザーは表またはマテリアライズド・ビューに索引を作成できます。
と書かれてます。なので、CREATE ANY INDEX
システム権限がなくても「他スキーマの表」に関して索引の作成を実行するユーザーに対するINDEXオブジェクト権限があれば実行できることになり、問題の正誤にも解説にも特に誤りはないと思いますよ。
コメント
ご提示いただいた INDEX オブジェクト権限について、確認させていただきました。
そのうえで恐縮ですが、引用元として挙げていただいたドキュメントについて確認したところ、Oracle TimesTen In-Memory Database SQL リファレンスに関する資料のように見受けられました。
そのため、Oracle Bronze の試験対象となっている Oracle Database(12c 以降の通常版)とは、製品として異なるものではないかと思います。
TimesTen はインメモリ型で軽量な特殊用途のデータベースであり、権限や構文の扱いにおいても、Oracle Database と異なる点があるという認識です。
一方、Oracle Database の公式ドキュメント(SQL Language Reference)では、以下のように明記されています:
“To create an index in another schema, you must have the CREATE ANY INDEX system privilege.”
(他のスキーマ内の表にインデックスを作成するには、CREATE ANY INDEX システム権限が必要です)
このように、Oracle Database においては、オブジェクト権限(INDEX 権限)のみでは他スキーマの表に索引を作成することはできず、CREATE ANY INDEX といったシステム権限が必要とされているようです。
なお、正解のひとつとして挙げられていた「自分のスキーマにビューを作成する」については、CREATE VIEW がシステム権限に分類されることから、設問上では「システム権限が必要」とみなされている可能性もあるかと思います。
ただし、実際にはこの権限は多くのユーザーにデフォルトで付与されるものであり、CREATE ANY VIEW のような特別なシステム権限が求められるわけではないため、「他スキーマの表に索引を作成する」と比較した場合、より明確にシステム権限が必要とされる後者(他スキーマの表に索引を作成する)のほうが、正解として適切なのではないかとも感じております。
コメント
この投稿に対して返信しませんか?