質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.69%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

1回答

2811閲覧

OracleでPLUSTRACEロール権限がないのに実行計画が表示されるのは何故?

退会済みユーザー

退会済みユーザー

総合スコア0

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2018/02/24 02:33

下記のようにOracleのDBでPLUSTRACEロールの権限が付与されていないユーザなのに、実行計画が取得できるように見えるのは何故なのでしょうか?
この実行計画の情報は偽物?なのでしょうか。

[vagrant@ ~]$ sqlplus usr01/usr01@XE SQL*Plus: Release 11.2.0.2.0 Production on Sat Feb 24 02:26:32 2018 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production SQL> !echo "ユーザ権限確認" ユーザ権限確認 SQL> select * from user_role_privs; no rows selected SQL> SQL> SQL> !echo "autotrace off"の場合 autotrace offの場合 SQL> set autotrace off SQL> select * from emp where rownum = 1; EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- --------- ---------- ---------- DEPTNO ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 SQL> SQL> SQL> !echo "autotrace on"の場合 autotrace onの場合 SQL> set autotrace on SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled SP2-0611: Error enabling STATISTICS report SQL> SQL> select * from emp where rownum = 1; EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- --------- ---------- ---------- DEPTNO ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 Execution Plan ---------------------------------------------------------- Plan hash value: 1973284518 --------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | --------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 38 | 2 (0)| 00:00:01 | |* 1 | COUNT STOPKEY | | | | | | | 2 | TABLE ACCESS FULL| EMP | 1 | 38 | 2 (0)| 00:00:01 | --------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter(ROWNUM=1) SQL> exit Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production [vagrant@ ~]$

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

回答1

0

AUTOTRACE を実行したユーザーで以下の3つのビューが見えるでしょうか?
DESC V$SESSTAT
DESC V$STATNAME
DESC V$MYSTAT

見えるなら、PLUSTRACEロールを使わずに直接ユーザーにSELECT権がGRANTされているのでしょう。エラー・メッセージは直すのを忘れているのは愛嬌(Oracle USA)。

Oracle11gからexplain plan での実行計画をちょっと取得し易いように、PLAN_TABLE が自動的にCREATE されるようになっています。PLAN_TABLE

投稿2018/02/24 02:53

Orlofsky

総合スコア16375

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

回答へのコメント

退会済みユーザー

退会済みユーザー

2018/02/24 02:58

SQL> DESC V$SESSTAT ERROR: ORA-04043: object "SYS"."V_$SESSTAT" does not exist SQL> DESC V$STATNAME ERROR: ORA-04043: object "SYS"."V_$STATNAME" does not exist SQL> DESC V$MYSTAT ERROR: ORA-04043: object "SYS"."V_$MYSTAT" does not exist どのビューも見えませんでした。 >PLUSTRACEロールを使わずに直接ユーザーにSELECT権がGRANTされているのでしょう。 どのオブジェクトのSELECT権なのでしょうか?
Orlofsky

2018/02/24 03:04

上記3つのビューです。別のビュー名が用意されたのかもしれません。 サポートからの回答はサポートの了解を得ない限り公開することは禁止されているので、サポート契約が有効でしたら、オラクル社カスタマ・サポートセンターに問合せては?
退会済みユーザー

退会済みユーザー

2018/02/24 03:20

$ORACLE_HOME/sqlplus/admin/plustrce.sql の中身を確認したところ grant select on v_$sesstat to plustrace; grant select on v_$statname to plustrace; grant select on v_$mystat to plustrace; がありました。これらのビューにSELECT権限が付与されていればPLUSTRACEロールの権限を付与されていたことと同じですね。PLUSTRACEが付与されていない場合、これらのビューに対する権限をこれからは確認してみようと思います。 ご回答ありがとうございます。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.69%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

同じタグがついた質問を見る

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。