大家好,今天在使用Oracle XE数据库的时候遇到了“访问 PRODUCT_USER_PROFILE 时出错,警告: 未加载产品用户概要文件信息!您需要将 PUPBLD.SQL 作为 SYSTEM 运行”的警告。下面为大家分析下,并说明我的解决方法:

    在安装了Oracle XE 数据库之后,创建用户test

   --创建表空间--extent management local uniform size 256K(制定扩展空间)

create tablespace test_data datafile 'D:\Oracle\app\oracle\oradata\XE\test_data.dbf' size 1G extent management local autoallocate;

   --创建临时表空间

create temporary tablespace test_temp tempfile 'D:\Oracle\app\oracle\oradata\XE\test_temp.dbf' size 100m autoextend on next 50m maxsize 20480m extent management local;

     --创建用户
create user test identified by test default tablespace test_data temporary tablespace test_temp;

    --给用户授权

grant connect, resource, dba to test;

一切执行顺利,可是通过 sqlplus test/[email protected] 命令登录数据库的时候给出警告信息,Oracle XE 访问 PRODUCT_USER_PROFILE 时出错 处理之前没有遇到过这样的问题,以为数据库安装错误,或者Oracle XE不能创建表空间呢,经上网查询后,得知表PRODUCT_USER_PROFILE 是SYSTEM用户下负责安全策略的表。

根据提示信息,Oracle XE安装后 SYSTEM用户下缺失了该表,需要用SYSTEM登录,并执行D:\Oracle\app\oracle\product\11.2.0\server\sqlplus\admin\pupbld.sql 文件,该路径是我机器上的文件路径,你们的可能不一样的。

Oracle XE 访问 PRODUCT_USER_PROFILE 时出错 处理

这个过程为什么会报错呢?我们打开pupbld.sql文件看下就知道了。

-- If PRODUCT_USER_PROFILE exists, use its values and drop it


DROP SYNONYM PRODUCT_USER_PROFILE;


CREATE TABLE SQLPLUS_PRODUCT_PROFILE AS
  SELECT PRODUCT, USERID, ATTRIBUTE, SCOPE, NUMERIC_VALUE, CHAR_VALUE,
  DATE_VALUE FROM PRODUCT_USER_PROFILE;


DROP TABLE PRODUCT_USER_PROFILE;
ALTER TABLE SQLPLUS_PRODUCT_PROFILE ADD (LONG_VALUE LONG);


-- Create SQLPLUS_PRODUCT_PROFILE from scratch


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
);


-- Remove SQL*Plus V3 name for sqlplus_product_profile


DROP TABLE PRODUCT_PROFILE;



-- Create the view PRODUCT_PRIVS and grant access to that


DROP VIEW PRODUCT_PRIVS;
CREATE VIEW PRODUCT_PRIVS AS
  SELECT PRODUCT, USERID, ATTRIBUTE, SCOPE,
         NUMERIC_VALUE, CHAR_VALUE, DATE_VALUE, LONG_VALUE
  FROM SQLPLUS_PRODUCT_PROFILE
  WHERE USERID = 'PUBLIC' OR USER LIKE USERID;


GRANT SELECT ON PRODUCT_PRIVS TO PUBLIC;
DROP PUBLIC SYNONYM PRODUCT_PROFILE;
CREATE PUBLIC SYNONYM PRODUCT_PROFILE FOR SYSTEM.PRODUCT_PRIVS;
DROP SYNONYM PRODUCT_USER_PROFILE;
CREATE SYNONYM PRODUCT_USER_PROFILE FOR SYSTEM.SQLPLUS_PRODUCT_PROFILE;
DROP PUBLIC SYNONYM PRODUCT_USER_PROFILE;
CREATE PUBLIC SYNONYM PRODUCT_USER_PROFILE FOR SYSTEM.PRODUCT_PRIVS;


-- End of pupbld.sql

由于数据库中不存该表或者视图,所有会报错,不用担心。最后给大家展示下效果:

Oracle XE 访问 PRODUCT_USER_PROFILE 时出错 处理

OK 问题解决了,希望对大家用帮助,谢谢~

相关文章:

  • 2021-06-05
  • 2021-11-30
  • 2021-08-25
  • 2022-12-23
  • 2021-10-23
  • 2021-12-19
  • 2021-12-11
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-05-26
  • 2021-11-07
  • 2021-04-27
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案