经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Oracle » 查看文章
ORA-02030: can only select from fixed tables/views
来源:cnblogs  作者:潇湘隐者  时间:2018/12/20 9:30:01  对本文有异议

有时候给一些普通用户授予查询系统对象(例如dynamic performance views)权限时会遇到ORA-02030: can only select from fixed tables/views,如下所示:

 

  1. SQL> grant select on v$session to test;
  1. grant select on v$session to test
  1.                 *
  1. ERROR at line 1:
  1. ORA-02030: can only select from fixed tables/views

 

 

 

关于ORA-02030错误介绍如下,也是就是对于fixed tables 或fixed views只能进行SELECT查询,不能做SELECT之外的任何操作

 

[oracle@DB-Server ~]$ oerr ora 2030

02030, 00000, "can only select from fixed tables/views"

// *Cause:  An attempt is being made to perform an operation other than

//         a retrieval from a fixed table/view.

// *Action:  You may only select rows from fixed tables/views.

 

关于V$ Views的介绍如下:

 

V$ Views

 

The actual dynamic performance views are identified by the prefix V_$. Public synonyms for these views have the prefix V$. Database administrators and other users should access only the V$ objects, not the V_$ objects.

 

The dynamic performance views are used by Oracle Enterprise Manager, which is the primary interface for accessing information about system performance. After an instance is started, the V$ views that read from memory are accessible. Views that read data from disk require that the database be mounted, and some require that the database be open.

 

我们查询发现V$SESSION,V$DBLINK都是fixed views,而且v$这类我们经常查的视图都是v_$开头视图的同义词。

 

  1. SQL> SELECT * FROM V$FIXED_TABLE WHERE NAME IN( 'V$SESSION','V$DBLINK');
  1.  
  1. NAME                            OBJECT_ID TYPE   TABLE_NUM
  1. ------------------------------ ---------- ----- ----------
  1. V$SESSION                      4294950919 VIEW       65537
  1. V$DBLINK                       4294951157 VIEW       65537
  1.  
  1. SQL>
  1. SQL> COL OWNER  FOR A12;
  1. SQL> COL OBJECT_NAME FOR A32;
  1. SQL> COL OBJECT_TYPE FOR A32;
  1. SQL> SELECT OWNER, OBJECT_NAME ,OBJECT_TYPE
  1.   2  FROM DBA_OBJECTS
  1.   3  WHERE OBJECT_NAME='V$SESSION';
  1.  
  1. OWNER        OBJECT_NAME                      OBJECT_TYPE
  1. ------------ -------------------------------- --------------------------------
  1. PUBLIC       V$SESSION                        SYNONYM
  1.  
  1. SQL>
  1. SQL> COL TABLE_OWNER FOR A12;
  1. SQL> COL SYNONYM_NAME FOR A20;
  1. SQL> COL TABLE_NAME FOR A16;
  1. SQL> COL DB_LINK FOR A8;
  1. SQL> SELECT * FROM DBA_SYNONYMS WHERE SYNONYM_NAME='V$SESSION';
  1.  
  1. OWNER        SYNONYM_NAME         TABLE_OWNER  TABLE_NAME       DB_LINK
  1. ------------ -------------------- ------------ ---------------- --------
  1. PUBLIC       V$SESSION            SYS          V_$SESSION

 

 

所以要授权就应该执行下面SQL语句

 

  1. SQL>
  1. SQL> GRANT SELECT ON V_$SESSION TO TEST;
  1.  
  1. Grant succeeded.

 

 

 

 

如果遇到这样的错误,直接找到对应同义词对应的视图或基表,然后进行授权,如下所示:

 

  1. SQL> show user;
  1. USER is "SYS"
  1. SQL> grant select on v$dblink to test;
  1. grant select on v$dblink to test
  1.                 *
  1. ERROR at line 1:
  1. ORA-02030: can only select from fixed tables/views
  1.  
  1.  
  1. SQL> COL OWNER  FOR A12;
  1. SQL> COL OBJECT_NAME FOR A32;
  1. SQL> COL OBJECT_TYPE FOR A32;
  1. SQL> SELECT OWNER, OBJECT_NAME ,OBJECT_TYPE
  1.   2  FROM DBA_OBJECTS
  1.   3  WHERE OBJECT_NAME=UPPER('v$dblink');
  1.  
  1. OWNER        OBJECT_NAME                      OBJECT_TYPE
  1. ------------ -------------------------------- --------------------------------
  1. PUBLIC       V$DBLINK                         SYNONYM
  1.  
  1. SQL> COL TABLE_OWNER FOR A12;
  1. SQL> COL SYNONYM_NAME FOR A20;
  1. SQL> COL TABLE_NAME FOR A16;
  1. SQL> COL DB_LINK FOR A8;
  1. SQL> SELECT * FROM DBA_SYNONYMS WHERE SYNONYM_NAME='V$DBLINK';
  1.  
  1. OWNER        SYNONYM_NAME         TABLE_OWNER  TABLE_NAME       DB_LINK
  1. ------------ -------------------- ------------ ---------------- --------
  1. PUBLIC       V$DBLINK             SYS          V_$DBLINK
  1.  
  1. SQL> grant select on v_$dblink to test;
  1.  
  1. Grant succeeded.
  1.  
  1. SQL>

 

clip_image001

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号