• 关于PUPBLD.SQL


    使用sims_ecl用户登录时出现问题

    sql>conn   sims_ecl/sims_ecl@ecldb

    访问PRODUCT_USER_PROFILE时出错

    警告:未加载产品用户概要文件信息!

    您需要将PUPBLD.SQL作为SYSTEM运行

    已连接。

    使用system跑一遍PUPBLD.SQL脚本就好了,如图:

    问题解决。

    注,在执行PUPBLD.SQL脚本一定要确认当前连的用户是否为system,如果连接的用户不是system执行PUPBLD.SQL脚本后再次,用sims_ecl用户连接还是没有解决问题。就算新建一个PUPBLD.SQL脚本再次执行连接还是会有这个问题存在,一下为建立PUPBLD.SQL脚本的sql

    手动执行sql语句,创建表和视图及同义词:

    SQL> DROP SYNONYM PRODUCT_USER_PROFILE;

    SQL> DROP TABLE PRODUCT_USER_PROFILE;

    SQL> CREATE TABLE SQLPLUS_PRODUCT_PROFILE(PRODUCT VARCHAR2 (30) NOT NULL,USERID VARCHAR2 (30),ATTRIBUTE VARCHAR2 (240),SCOPE VARCHAR2 (240),NUMERIC_VALUE DECIMAL (15,2),CHAR_VALUE VARCHAR2 (240),DATE_VALUE DATE,LONG_VALUE LONG);

    表已创建。

    SQL> DROP VIEW PRODUCT_PRIVS;

    视图已删除。

    SQL> CREATE VIEW PRODUCT_PRIVS AS

     2  SELECT PRODUCT, USERID, ATTRIBUTE, SCOPE,

     3  NUMERIC_VALUE, CHAR_VALUE, DATE_VALUE, LONG_VALUE

      4 FROM SQLPLUS_PRODUCT_PROFILE WHERE USERID = 'PUBLIC' OR USER LIKE USERID;

    视图已创建。

    SQL> GRANT SELECT ON PRODUCT_PRIVS TO PUBLIC;

    授权成功。

    SQL> DROP PUBLIC SYNONYM PRODUCT_PROFILE;

    同义词已删除。

    SQL> CREATE PUBLIC SYNONYM PRODUCT_PROFILE FOR SYSTEM.PRODUCT_PRIVS;

    同义词已创建。

    成功。

     

    补充(以下内容部分转载自网络):

    关于PUPBLD.SQL

    我们可以分析一下PUPBLD.SQL中代码,知道它实际上是创建了一个表SQLPLUS_PRODUCT_PROFILE,基于此表创建视图PRODUCT_PRIVS(包含表中所用字段),把视图PRODUCT_PRIVS的SELECT权限设置为PUBLIC,创建了视图PRODUCT_PRIVS的同义词PRODUCT_PROFILE,创建了表SQLPLUS_PRODUCT_PROFILE的同义词PRODUCT_USER_PROFILE,后用创建了视图PRODUCT_PRIVS的PUBLIC同义词PRODUCT_USER_PROFILE。

    SQLPLUS_PRODUCT_PROFILE(基表)->PRODUCT_USER_PROFILE(同义词)

    PRODUCT_PRIVS(视图,授权SELECT给PUBLIC)->PRODUCT_PROFILE(同义词)

     PRODUCT_USER_PROFILE(同义词,PUBLIC)

    因为自己对这表、视图和同义词和PUBLIC,不是很了解。所以,先通过以下实验来检验一下:

    首先用普通用户登录

    SQL> conn scott/tiger

    Connected.

    普通用户无法访问SQLPLUS_PRODUCT_PROFILE

    SQL> select * from system.SQLPLUS_PRODUCT_PROFILE;

    select * from system.SQLPLUS_PRODUCT_PROFILE

                        *

    ERROR at line 1:

    ORA-00942: table or view does not exist

     

    SQL> select * from SQLPLUS_PRODUCT_PROFILE;

    select * from SQLPLUS_PRODUCT_PROFILE

                 *

    ERROR at line 1:

    ORA-00942: table or view does not exist

    普通用户可以在加模式前缀的前提下访问PRODUCT_PRIVS

     
     

    SQL> select * from system.PRODUCT_PRIVS;

    no rows selected

    SQL> select * from PRODUCT_PRIVS;

    select * from PRODUCT_PRIVS

                 *

    ERROR at line 1:

    ORA-00942: table or view does not exist

    普通用户可以直接访问PRODUCT_PROFILE

    SQL> select * from system.PRODUCT_PROFILE;

    select * from system.PRODUCT_PROFILE

                        *

    ERROR at line 1:

    ORA-00942: table or view does not exist

    SQL> select * from PRODUCT_PROFILE;

    no rows selected

     

    普通用户可以直接访问PRODUCT_USER_PROFILE

    SQL> select * from PRODUCT_USER_PROFILE;

    no rows selected

    SQL> select * from system.PRODUCT_USER_PROFILE;

    select * from system.PRODUCT_USER_PROFILE

                        *

    ERROR at line 1:

    ORA-00942: table or view does not exist

    基本可以得出以下结论:

    1、访问同义词可以不用使用模式前缀(理解为同义词可以方便我们访问)。

    2、只有被授权为PUBLIC的,才可以由其他用户访问。
  • 相关阅读:
    JAVA-初步认识-第十二章-多线程创建方式一继承
    JAVA-初步认识-第十二章-主线程运行示例
    JAVA-初步认识-第十二章-JVM中的多线程分析
    JAVA-初步认识-第十二章-面向对象(Jar包)
    JAVA-初步认识-第十二章-面向对象(导入import)
    ecstore-kvcache里表结构
    ecstore-app接口
    ecstore与淘宝sdk的autoload加载顺序问题
    正则匹配<{$vcode}>变量
    电子面单纸打印时固定高度18cm,到底是多少px
  • 原文地址:https://www.cnblogs.com/ifruo/p/3179463.html
Copyright © 2020-2023  润新知