zoukankan      html  css  js  c++  java
  • SET AUTOT ON无法使用解决方法,以及PLAN_TABLE的使用

    提示:数据库中的"PUBLIC"用户是一个概念用户,如果要将权限授给每个用户,可将权限授予PUBLIC

    GRANT ALL ON sys.plan_table TO public;

    参考网址:

    https://netfiles.uiuc.edu/jstrode/www/oraplus/plus_set_autotrace.html

    http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch8.htm#i1037226

    http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9010.htm#i2061796

    http://docs.oracle.com/cd/B19306_01/server.102/b14211/ex_plan.htm#PFGRF009

    http://www.oracle-base.com/articles/8i/explain-plan-usage.php

    数据库版本信息:

    测试用户:HR/HR

    HR具有的系统权限和角色:
    拥有的角色:

    拥有的系统权限:

    针对这种情况,参考http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch8.htm#i1037226

    进行PLUSTRACE角色的建立:

    向HR进行授权:

    当前已经可以正常的使用执行计划:

    分析plustrce.sql中的语句:

    --
    -- Copyright (c) Oracle Corporation 1995, 2002.  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 to
    --   the AUTOTRACE feature should be granted the PLUSTRACE role by
    --   the DBA.此处是要在DBA的权限下,把PLUSTRACE的角色赋给需要使用的用户。
    -- 采用了admin的模式,可以将PLUSTRACE的权限传递下去、可以在赋给的用户,
    -- 再次传递赋值
    -- -- USAGE -- sqlplus "/ as sysdba" @plustrce 必须在SYS用户下进行操作 -- -- 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;将PLUSTRACE角色赋给DBA的角色 set echo off

    说明:

    某些文档说明,如下:参考自Oracle官方文档:

           To use this feature, you must create a PLAN_TABLE table in your schema and then have the PLUSTRACE role granted to you. DBA privileges are required to grant the PLUSTRACE role. For information on how to grant a role and how to create the PLAN_TABLE table, see the Oracle Database SQL Reference.

         假如只是要在SQLPLUS端查看执行计划,而不需要将执行计划存入到PLAN_TABLE,使用PLUSTRACE角色即可实现功能。

    注意:

          建立PLUSTRACE角色的目的很明显,只是给这个角色四个对象的访问权限,这是四个动态性能视图,相反,你可以

    己建立一个其他的角色,将上述四个动态性能视图赋给新角色,或者直接在SYS将这四个动态性能视图的访问权限授予HR用户。

         实际上,赋值四个动态性能视图也可以使用一个系统权限也代替: GRANT SELECT ANY DICTIONARY TO HR.

    这个权限赋给HR,表明它可以访问数据库任何的数据字典(视图和表),在我们实例的开发过程中,可能会为某个用户设

    DBA的角色,DBA角色已经包含了SELECT ANY DICTIONARY的系统权限。所有拥有DBA权限的用户可以直接使

    SQLPLUS中SET AUTOT ON的SQLPLUS命令,

       但是,在我接触过的所有的开发项目中,用户都会被授予DBA的权限,所以可以直接进行执行计划的查看,但是在外国人

    开发过程中,它们对系统权限控制的相当严格,一般用户不会被授予DBA的角色,只是授予CONNECT,RESOURCE两个角色。

  • 相关阅读:
    KVC笔记
    在iOS工程中引入C++静态库
    看了iOS 7和Xcode 5后的感想
    OpenGL学习第一天
    常用iOS游戏开发工具与SDK
    分享一个技巧,利用批处理调用ruby脚本(可能你为路径苦恼)
    ruby酷酷的方法——另一种next
    ruby的字符串性能到底如何最佳
    ruby元编程之 method_missing 一个细节
    ruby的继承到底可以继承哪些东西
  • 原文地址:https://www.cnblogs.com/caroline/p/2580355.html
Copyright © 2011-2022 走看看