Error accessing PRODUCT_USER_PROFILE

以普通用户登录SQL*Plus的时候,会碰到下面的错误提示:
  Error accessing PRODUCT_USER_PROFILE
  Warning: Product user profile information not loaded!
  You may need to run PUPBLD.SQL as SYSTEM

  其实在实际意义上这只是一个警告而已,并不是真正的错误,遇到这个提示,并不会影响我们正常使用SQL*Plus,也不会对数据库功能产生影响。

   如果数据库是使用dbca创建的那么不用担心这个问题,通常是我们手动创建数据库的情况下,忘了执行一些脚本才导致出现这样的警告。 PRODUCT_USER_PROFILE其实有很强大的功能,这是SYSTEM模式下的一个表,在此表中存在的数据可以让客户端程序登入的时候检查是否 在命令的执行上有什么限制。基本上我们是以它来限制SQL*Plus这个客户端程序(目前好像也只有这个程序才会去自动检查这张表:D)

  如果不想看到这个警告,作如下操作:
  以SYSTEM用户登入SQL*Plus,然后执行PUPBLD.SQL,这个文件通常在$ORACLE_HOME/sqlplus/admin目录中。
  SQL> @$ORACLE_HOME/sqlplus/admin/pupbld.sql

  执行完毕以后,可以desc product_user_profile来验证一下改表已经创建,并且熟悉一下表的结构。
  以上不是这篇小文章的重点,下面我们要利用这张表来限制SCOTT用户不能执行DROP命令,即使SCOTT用户拥有DROP TABLE的权限。
  SQL> insert into product_user_profile (
  product, userid, attribute, char_value)
  values (
  'SQL*Plus','SCOT%','DROP','DISABLED');
  1 row inserted

  Executed in 0.01 seconds
  SQL> commit;
  Commit complete
  Executed in 0 seconds

  然后退出SYSTEM用户,用SCOTT用户登录,作个测试:
  SQL> create table t_test_profile(
  id number);
  Table created.
  Elapsed: 00:00:00.10

  SQL> drop table t_test_profle;
  SP2-0544: invalid command: drop
  这就是product_user_profile的作用,回顾一下:

  1。如果我们把DROP改成CREATE或者UPDATE那么就对用户禁止了这些命令。
  2。从上面的insert语句,我们可以看到对于用户的限制支持通配符,所有以SCOT开头的用户都不能执行指定的命令。
  3。修改了product_user_profile内容,用户必须重新登录SQL*Plus,修改才会生效,也就是只有在登录的时候,SQL*Plus才会检查一遍product_user_profile表中的内容。
转自:

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12807983/viewspace-700413/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12807983/viewspace-700413/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值