我在PLSQL程序中有一个游标可以从ADD passenger-enterprise-license /etc/passenger-enterprise-license
RUN echo deb https://download:<OUR_KEY>@www.phusionpassenger.com/enterprise_apt xenial main > /etc/apt/sources.list.d/passenger.list
RUN apt-get update && apt-get install -y -o Dpkg::Options::="--force-confold" passenger-enterprise nginx-extras
和DBA_TABLES
中选择。
USER_TABLES
然而程序抱怨
执行期间“ORA-00942表或视图不存在”
。
答案 0 :(得分:1)
用户必须拥有该视图的SELECT权限 要检查用户是否具有针对此视图的SELECT权限,请以此用户身份登录并运行以下查询:
select * from user_tab_privs WHERE table_name = 'DBA_TABLES';
如果此查询返回none,则该用户无权访问该视图,但无法查看该视图。
要将此权限授予该用户,请以SYS或SYSTEM身份登录,然后发出:
GRANT select ON DBA_TABLES TO username;
在此之后,用户应该看到如下所示的结果,并且可以访问该视图:
select table_name, privilege from user_tab_privs WHERE table_name = 'DBA_TABLES';
TABLE_NAME PRIVILEGE
---------- ---------
DBA_TABLES SELECT
答案 1 :(得分:0)
如果您只需要DBA_TABLES,请遵循krokodilko答案中的步骤。如果您需要查询多个数据字典对象,则SELECT ANY DICTIONARY
特权是另一种选择。它授予对DBA视图(包括DBA_TABLES)的选择访问权限。以SYSTEM身份登录并运行:
grant select any dictionary to your-username;
SELECT ANY DICTIONARY特权允许用户查询SYS模式中的任何数据字典对象,但以下情况除外:DEFAULT_PWD $,ENC $,LINK $,USER $,USER_HISTORY $和XS $ VERIFIERS。
偶然地,问题中的c1游标可能不需要访问DBA_TABLES。以下查询应产生相同的结果:
CURSOR c1 IS
SELECT TABLE_NAME FROM USER_TABLES WHERE IOT_TYPE IS NOT NULL;