`
哇哈哈852
  • 浏览: 93392 次
文章分类
社区版块
存档分类
最新评论

ORA-02030问题解决方法又一例

阅读更多


给普通用户赋予对v$视图的查询权限,结果报 ORA-02030 错误
ORA-02030: 只能从固定的表/视图查询(ORA-02030: can only select from fixed tables/views)
http://cuug.com.cn/html/activityinfor_283_283_1054.html?wnlt
问题背景:
在一个dba用户下的存储过程中需要使用v$的视图(v$client_stats)

使用命令行测试:
SQL> variable total number;
SQL> begin
  2    select count(1) into :total from v$client_stats;
  3    dbms_output.put_line('total = '|| :total);
  4  end;
  5  /
 
PL/SQL procedure successfully completed
total
---------
0

这样并没有问题,于是编辑成过程执行

使用过程
SQL> create or replace procedure p_test
  2  authid current_user
  3  as
  4    v_all  number := 9999;
  5  begin
  6    select count(1)
  7      into v_all from v$client_stats;
  8 
  9    dbms_output.put_line('v_all =' ||v_all );
  10  end;
  11  /
 
Warning: Procedure created with compilation errors

具体错位信息
Compilation errors for PROCEDURE ZHANGBIN.P_TEST

Error: PL/SQL: ORA-00942: 表或视图不存在
Line: 9
Text: FROM v$client_stats;


Error: PL/SQL: SQL Statement ignored
Line: 7
Text: SELECT COUNT(1)

此时需要给用户赋查询权限(于是产生了ORA-02030错误)

SQL> show user;
User is "SYS"

SQL> grant select on v$client_stats to zhangbin;
 
grant select on v$client_stats to zhangbin
 
ORA-02030: 只能从固定的表/视图查询

解决方法:

SQL> select * from dba_synonyms t where t.synonym_name = 'V$CLIENT_STATS';
 
OWNER                          SYNONYM_NAME                  TABLE_OWNER                    TABLE_NAME                    DB_LINK
------------------------------ ------------------------------ ------------------------------ ------------------------------ -----------
PUBLIC                        V$CLIENT_STATS                SYS                            V_$CLIENT_STATS
 
SQL> grant select on V_$CLIENT_STATS to zhangbin;
 
Grant succeeded

切换到普通用户
SQL> show user;
User is "zhangbin"

SQL> create or replace procedure p_test
  2  as
  3    v_all      number :=9999;
  4  begin
  5    select count(1)
  6      into v_all
  7      from v$client_stats;
  8    dbms_output.put_line('v_all =' ||v_all );
  9  end;
  10  /
 
Procedure created
 
SQL> set serveroutput on
SQL> exec p_test;
 
v_all =0
 
PL/SQL procedure successfully completed
  • 大小: 31.8 KB
分享到:
评论

相关推荐

    oracle数据库中ora-报错原因及处理

    以"ORA-01422"为例,这个错误通常发生在使用SELECT INTO语句时,如果查询返回多于一行的数据,就会触发这个错误。处理方法可能包括修改查询以确保只返回一行数据,或者使用BULK COLLECT INTO与FORALL语句进行批量...

    ORA-12737 ZHS16GBK 解决方案 oci sqlplus

    6. **修改应用程序代码**:如果上述方法都无法解决问题,可能需要修改应用程序代码,确保它能处理不同字符集的数据。 总的来说,解决"ORA-12737"错误需要理解字符集的概念,并根据实际情况调整客户端或服务器的配置...

    oracle 回闪日志 满了 ORA-03113 通信信道结束 进入 rman 删除日志

    ### Oracle回闪日志满了与ORA-03113错误处理 在Oracle数据库管理过程中,经常遇到的一些问题包括回闪日志...通过以上步骤,可以有效地解决Oracle回闪日志空间不足的问题以及ORA-03113错误,确保数据库系统的稳定运行。

    p17890099_121010_Linux-x86-64.zip ORA-2072 AND ORA-2063 ON QUERY

    本文将深入探讨一个与Oracle数据库相关的技术问题,即“ORA-2072”和“ORA-2063”错误在通过DB Link进行查询时的出现情况。我们将基于提供的文件信息“p17890099_121010_Linux-x86-64.zip”,以及描述中的12.1.2.0与...

    Oracle实例启动时报错:ORA-32004的解决方法

    在本例中,通过切换到pfile启动数据库,然后更新并重建spfile,我们可以有效地解决这类问题。在日常的数据库管理中,保持参数文件的更新,并遵循最佳实践是非常重要的,以避免类似的问题。同时,定期备份参数文件和...

    oracle10g服务器断电恢复

    总结,Oracle 10g 数据库在遭遇意外断电时,可能需要一系列复杂的恢复步骤,包括检查和修复损坏的数据文件,使用日志文件进行介质恢复,以及调整数据库参数以解决一致性问题。在无法正常恢复的情况下,备份数据和...

    ORACLE 11G导入到10G的命令

    在实际操作过程中还需要根据具体情况调整参数,并且密切关注日志文件中的信息,以便及时发现并解决问题。此外,建议在正式迁移之前先在一个测试环境中进行模拟操作,确保一切正常后再应用于生产环境。

    plsql连接oracle数据库报ora 12154错误解决方法

    ### PL/SQL连接Oracle数据库报ORA-12154错误及解决方法 #### 错误概述 在尝试使用PL/SQL Developer连接Oracle数据库时,可能会遇到“ORA-12154: TNS: 无法解析指定的连接标识符”这一错误。此错误通常表明PL/SQL ...

    SPFILE参数错误

    ### SPFILE 参数错误...通过仔细检查归档日志路径的有效性、调整文件系统权限以及正确更新SPFILE中的参数,通常可以解决这些问题。在处理此类错误时,还需要注意遵循Oracle数据库的最佳实践,以确保数据库稳定运行。

    Oracle利用errorstack追踪tomcat报错ORA-00903 无效表名的问题

    开启errorstack的方法有两种: - **通过ALTER SESSION/SYSTEM命令**: ```sql alter session/system set events '<error_number> trace name errorstack level 3'; ``` 其中`<error_number>`是出现的ORA错误号...

    Oracle the account is locked解决办法

    ### Oracle账户锁定问题详解与解决方法 在Oracle数据库管理中,遇到账户被锁定的问题是非常常见的。...需要注意的是,在处理此类问题时,应保持足够的耐心,并仔细检查每一个步骤,避免因操作不当导致问题复杂化。

    TNS-12500解决过程

    因此,解决TNS-12500错误的方法是,增加系统的物理内存,调整内存分配参数,优化系统配置,避免系统资源耗竭的情况发生。同时,也可以通过优化数据库配置,调整数据库参数,提高数据库的性能,以减少TNS-12500错误的...

    Oracle删除数据报ORA 02292错误的巧妙解决方法

    解决这个问题的一种巧妙方法如描述中所提到,分为以下几步: 1. **查询约束**:首先,我们需要了解哪些约束影响了我们的操作。通过执行`SELECT * FROM user_constraints WHERE constraint_name LIKE '%TB_ROLE%'`,...

    解决linux磁盘扩容出现Bad magic number in super-block while trying问题

    在Linux环境中,对磁盘进行扩容时可能会遇到各种问题,其中一种常见的错误是"Bad magic number in super-block while trying to open"。这个错误通常发生在尝试使用`resize2fs`命令扩展文件系统时,表明系统无法识别...

    oracle数据库克隆总结

    - Oracle GoldenGate是一种高性能的数据复制解决方案。 - 通过GoldenGate可以实现实时的数据同步,适用于跨平台、跨版本的数据库克隆场景。 4. **物理文件复制克隆**: - 对于简单的克隆需求,可以直接复制...

    OGG11g同构(GoldenGate-ORACLE)、异构(GoldenGate-MYSQL)同步配置及错误解析

    解决方法是更新`.bash_profile`文件,包含Oracle库的路径,或者创建软链接到所需的库文件。 配置Oracle GoldenGate的过程包括创建必要的子目录,这些子目录用于存放参数文件、报告文件和其他运行时文件。通过GGSCI...

    instantclient_12_2 navicat oracle

    总的来说,Oracle Instant Client提供了一种方便的方法来处理Oracle连接问题,而oci.dll的更新是解决特定错误如"ORA-28547"的关键步骤。通过理解这个过程,IT专业人士可以更有效地排查和修复Oracle数据库连接问题。

    数据结构课程设计报告

    - **解决方法:** 调整查询逻辑,确保子查询返回的结果集中只有一行记录,或者使用其他更合适的方法来实现删除操作。 - 示例代码: ```sql SQL> delete from work where eid in (select eid from emp where (...

    小结SQLServer连接失败错误及解决

    北京 在使用SQLServer的过程中,用户遇到的最多的问题莫过于连接... 一、客户端工具连接失败 在使用SQLServer自带的客户端工具(以企业管理器为例)连接SQLServer时,最常见的错误有如下一些: 1、SQLServer不存在

    initorcl.ora;lsnrctl;spfileorcl;lkORCL

    这个文件是Oracle数据库实例的初始化参数文件,通常命名为`initSID.ora`,其中`SID`代表服务标识符,即数据库实例的名字,在本例中是`ORCL`。这个文件包含了数据库启动时所需的配置参数,如内存结构大小、日志切换...

Global site tag (gtag.js) - Google Analytics