Role & amp; #39; PLUSTRACE & amp; #39; doesnotexist

Source: Internet
Author: User
Authorization: SQLcreateuserwatsonidentifiedbywatson; SQLgrantresource, connect, createsessiontowatson; Therewillbeanerrorhappenedwhenweusethisne

I have created a new user named watson and granted the related priviledges as following: SQL create user watson identified by watson; SQL grant resource, connect, create session to watson; there will be an error happened when we use this ne

I have created a new user named watson and granted the related priviledges as following:

SQL> create user watson identified by watson;

SQL> grant resource, connect, create session to watson;

There will be an error happened when we use this new user to trace the execution plan. The following is the prompt hinted by oracle database.

SQL> grant plustrace to watson;
Grant plustrace to watson
*
ERROR at line 1:
ORA-01919: role 'plustrace 'does not exist

The reason is that we have not run the related SQL statement which supports this function. Below is the scritpt where is coming from.

$ ORACLE_HOME/sqlplus/admin/plustrace. SQL

We can take a glance at this script to have a understanding of what this function is.

[Oracle @ TEST11G ~] $ Vi $ ORACLE_HOME/sqlplus/admin/plustrce. SQL
--
-- Copyright (c) Oracle Corporation 1995,200 2. All Rights Reserved.
--
-- NAME
-- Plustrce. SQL
--
-- DESCRIPTION
-- Creates a role with access to Dynamic Performance Tables
-- For the SQL * Plus SET AUTOTRACE... STATISTICS command.
-- After this script has been run, each user requiring access
-- The AUTOTRACE feature shocould be granted the PLUSTRACE role
-- The DBA.
--
-- USAGE
-- Sqlplus "sys/knl_test7 as sysdba" @ plustrce
--
-- Catalog. SQL must have been run before this file is run.
-- This file must be run while connected to a DBA schema.

Set echo on

Drop role plustrace;
Create role plustrace;

Grant select on v _ $ sesstat to plustrace;
Grant select on v _ $ statname to plustrace;
Grant select on v _ $ mystat to plustrace;
Grant plustrace to dba with admin option;

Set echo off

So the only thing we need to do is to execute this script by sys system priviledge as following:

[Oracle @ TEST11G ~] $ Sqlplus/as sysdba

SQL * Plus: Release 11.2.0.1.0 Production on Thu Jun 26 05:48:21 2014

Copyright (c) 1982,200 9, Oracle. All rights reserved.

Connected:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0-Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> @ $ ORACLE_HOME/sqlplus/admin/plustrce. SQL
SQL>
SQL> drop role plustrace;
Drop role plustrace
*
ERROR at line 1:
ORA-01919: role 'plustrace 'does not exist

SQL> create role plustrace;

Role created.

SQL>
SQL> grant select on v _ $ sesstat to plustrace;

Grant succeeded.

SQL> grant select on v _ $ statname to plustrace;

Grant succeeded.

SQL> grant select on v _ $ mystat to plustrace;

Grant succeeded.

SQL> grant plustrace to dba with admin option;

Grant succeeded.

SQL>
SQL> set echo off

Up to this step, we all know that this script has been executed successfully. So we can grant plustrace role priviledge to the user who we will need to trace the SQL stament execution plan.

SQL> grant plustrace to watson;

Grant succeeded.

In order to show the execution plan successfully, we also need to do the one more steps, which is to create the plan_table by a script offered by oracle, if not executed.

[Oracle @ TEST11G ~] $ Sqlplus/as sysdba

SQL * Plus: Release 11.2.0.1.0 Production on Thu Jun 26 06:24:28 2014

Copyright (c) 1982,200 9, Oracle. All rights reserved.

Connected:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0-Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> @? /Rdbms/admin/utlxplan. SQL

Table created.

Now the common user watson have the function of trace SQL execution plan as following:

SQL> set autotrace traceonly
SQL> select * from t1;

Execution Plan
----------------------------------------------------------
Plan hash value: 3617692013

--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (% CPU) | Time |
--------------------------------------------------------------------------
| 0 | select statement | 2 | 380 | 3 (0) | 00:00:01 |
| 1 | table access full | T1 | 2 | 380 | 3 (0) | 00:00:01 |
--------------------------------------------------------------------------

Note
-----
-Dynamic sampling used for this statement (level = 2)


Statistics
----------------------------------------------------------
0 recursive cballs
0 db block gets
4 consistent gets
0 physical reads
0 redo size
1442 bytes sent via SQL * Net to client
419 bytes encoded ed via SQL * Net from client
2 SQL * Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
2 rows processed

Now the error has been resolved. To conclusion, there are two important scripts we need to know.

1, $ ORACLE_HOME/sqlplus/admin/plustrce. SQL

2, $ ORACLE_HOME/rdbms/admin/utlxplan. SQL

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.