Oracle PUP的配置与使用

最近在翻Oracle SQLPLUS官方文档,在讲SQLPLUS Security章节介绍了PUP这个机制。借此,我来使用以下:

PUP(PRODUCT_USER_PROFILE)介绍

PRODUCT_USER_PROFILE是SYSTEM账户下一个表,可提供用户级别的安全限制。

PUP设置对DBA权限用户无效。

PUP只针对本地数据库生效(Local Database)。

1、SYSTEM 用户创建PUP:

SQLPLUS SYSTEM

@ D:\app\Administrator\product\11.2.0\dbhome_1\sqlplus\admin\pupbld.sql

脚本内容:

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;

--禁用HR用户的DROP命令

SYSTEM@orcl> insert into product_user_profile values('SQL*Plus', 'HR', 'DROP', NULL, NULL, 'DISABLED', NULL, NULL);

已创建 1 行。

SYSTEM@orcl> commit;

提交完成。

2、PUP表结构概览

SYSTEM@orcl> desc product_user_profile

名称                                     是否为空? 类型

---------------------------------------- -------- ---------------------------

PRODUCT                                  NOT NULL VARCHAR2(30)

USERID                                            VARCHAR2(30)

ATTRIBUTE                                         VARCHAR2(240)

SCOPE                                             VARCHAR2(240)

NUMERIC_VALUE                                     NUMBER(15,2)

CHAR_VALUE                                        VARCHAR2(240)

DATE_VALUE                                        DATE

LONG_VALUE                                        LONG

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

--PRODUCT : 说明要限制的程序

--USERID : 要限制的用户(大写)

--ATTRIBUTE : 要限制的命令或角色

--SCOPE : 不适用;放NULL

--NUMERIC_VALUE : 不适用;放NULL

--CHAR_VALUE :DISABLED

--DATE_VALUE :不适用;放NULL

--LONG_VALUE :不适用;放NULL

3、HR登录进行DROP操作证明设置生效:

SYSTEM@orcl> conn hr/hr

已连接。

HR@orcl> create table t(x int);

表已创建。

HR@orcl> drop table t;

SP2-0544: 在产品用户概要文件中禁用命令 "drop"

HR@orcl> conn system/oracle@orcl

已连接。

SYSTEM@orcl> delete from product_user_profile;

已删除 1 行。

SYSTEM@orcl> commit;

提交完成。

SYSTEM@orcl> conn hr/hr@orcl

已连接。

HR@orcl> drop table t;

表已删除。

4、禁用角色

PRODUCT USERID ATTRIBUTE SCOPE NUMERIC_VALUE CHAR_VALUE DATE_VALUE LONG_VALUE

------- ------ --------- ----- -------- ------ ----- -----

SQL*Plus HR     ROLES                           ROLE1

SQL*Plus PUBLIC ROLES                          ROLE2

用户登录期间PUP行记录将翻译为以下命令

During login, these table rows are translated into the command

SET ROLE ALL EXCEPT ROLE1, ROLE2

例子:

SYS@orcl> create role r_t;

角色已创建。

SYS@orcl> grant select on t to r_t;

授权成功。

SYS@orcl> grant r_t to hr;

授权成功。

SYS@orcl> conn hr/hr

已连接。

HR@orcl> select * from sys.t;

未选定行

HR@orcl> conn system/oracle

已连接。

会话已更改。

SYSTEM@orcl> insert into product_user_profile values('SQL*Plus', 'HR', 'ROLES', NULL, NULL, 'r_t', NULL, NULL);

已创建 1 行。

SYSTEM@orcl> commit;

提交完成。

SYSTEM@orcl> conn hr/hr

已连接。

HR@orcl> select * from sys.t;

select * from sys.t

               *

第 1 行出现错误:

ORA-00942: 表或视图不存在

HR@orcl> select username, granted_role

2      from user_role_privs

3     where granted_role='R_T';

USERNAME                       GRANTED_ROLE

------------------------------ ------------------------------

HR                             R_T

HR@orcl> conn system/oracle

已连接。

会话已更改。

SYSTEM@orcl> delete from product_user_profile;

已删除 1 行。

SYSTEM@orcl> commit;

提交完成。

SYSTEM@orcl> conn hr/hr

已连接。

会话已更改。

HR@orcl> select * from sys.t;

未选定行

------------------------‘

Dylan    Presents.

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索null
, userid
, system
, varchar2
, orcl
HR
psvupdat.pup怎么使用、oracle环境变量配置、oracle 监听配置、oracle 配置文件、oracle客户端配置,以便于您获取更多的相关知识。

时间: 2024-07-31 22:32:03

Oracle PUP的配置与使用的相关文章

oracle使用plsql配置instantclient的问题?

问题描述 oracle使用plsql配置instantclient的问题? 网上的一些关于的文章会提到配置环境变量的问题,比如:NLS_lANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBKTNS_ADMIN=F:MyJobOracle11gInstantClientADMINPath=F:MyJobOracle11gInstantClient;_但是有的机子上不配置环境变量也可以使用,机器都是64位的,不知道是什么原因,差别在哪里?是不是服务器和客户端在同一台机子上就不用

Oracle Faq(Oracle TAF的配置)

oracle 如需转载,请注明出处!(刁馋在此先谢过了--)Oracle TAF的配置 TAF为Transparent Application FailOver的缩写,一般应用TAF都是在OPS/RAC环境中.从8i开始有的这一功能,目的和想法都是很好的,但目前应用还很有限,本文将针对TAF相关问题作个详细探讨. 本文的测试环境是Tru64 V5.1+ Oracle9.2.0.1 RAC. 一.相关参数的说明 说实话oracle关于网络的几个配置参数真的是太乱了,很多人都弄不清到底是怎么回事,常

Oracle Dataguard如何配置物理standby

尽管网上有很多Oracle Dataguard的配置教程,但不难发现,很多采用的是rman duplicate这种方法,尽管此种方法较为简便.但在某种程度上,却也误导了初学者,虽说也能配置成功,但只知其然不知其所以然,Dataguard的本质没有吃透,也不利于其维护和调优. 本配置文档基于Oracle官方文档,目的在于加深大家对于Dataguard的了解. 本配置的结果是最大性能模式下的异步传输 ,因此在参数文件中,只涉及基本的主备参数,没有考虑switchover和最大性能模式下的real t

Oracle数据库的配置方案完全分析

本文从几大方面详细讲述了Oracle数据库的配置方案. 所有连接到Oracle的用户必须执行两个代码模块: 应用或Oracle工具:一数据库用户执行一数据库应用或一个Oracle工具,可向Oracle数据库发出SQL语句. Oracle服务器程序:负责解释和处理应用中的SQL语句. 在多进程实例中,连接用户的代码可按下列三种方案之一配置: 1.对于每一个用户,其数据库应用程序和服务器程序组合成单个用户进程: 2.对于每一个用户,其数据库应用是由用户进程所运行,并有一个专用服务器进程.执行Orac

Oracle 监听器日志配置与管理

--========================-- Oracle 监听器日志配置与管理--========================    Oracle 监听器是一个服务器端程序,用于监听所有来自客户端的请求,并为其提供数据库服务.因此对监听器的管理与维护相当重要. 本文主要描述对Oracle监听器日志文件的配置与管理.有关监听器的描述请参考     配置 ORACLE 客户端连接到数据库     配置非默认端口的动态服务注册    一.监听器日志特性 1.  监听器日志是一个纯文本

Oracle Faq(Oracle TAF的配置)_php基础

如需转载,请注明出处!(刁馋在此先谢过了--)Oracle TAF的配置 TAF为Transparent Application FailOver的缩写,一般应用TAF都是在OPS/RAC环境中.从8i开始有的这一功能,目的和想法都是很好的,但目前应用还很有限,本文将针对TAF相关问题作个详细探讨. 本文的测试环境是Tru64 V5.1+ Oracle9.2.0.1 RAC. 一.相关参数的说明 说实话oracle关于网络的几个配置参数真的是太乱了,很多人都弄不清到底是怎么回事,常见的错误为:"

探索Oracle 11gR2 DataGuard_02配置

探索Oracle 11gR2 DataGuard_02配置 作者:吴伟龙 配置步骤: 一.开启强制日志 二.配置pri端传输参数 三.备份pri端数据库 四.拷贝文件到sty端 五.配置sty端传输参数 六.将sty端启动到mount状态并恢复数据 七.在pri端应用发送归档日志文件 八.在sty端开启强制redo应用 九.配置standby日志 十.在pri端启动强制日志应用   11gR2DG传输架构 图: DBName Role DB_UNIQUE_NAME Oracle Net Serv

Oracle RMAN的配置、监控与管理

1.通道的概念 一个通道代表一个到设备(磁盘或磁带)的数据流并且在目标数据库或辅助数据库实例上产生一个相应的服务器会话(server session) 多个通道则产生多个服务器会话,这些服务器会话(或进程)将完成备份.还原与恢复操作等 通道分为备份或还原到磁盘的磁盘通道(disk channel).备份还原到磁带的磁带通道(SBT) 在对数据库执行备份和恢复前必须先分配通道 ALLOCATE CHANNEL命令在目标数据库启动一个服务器进程,同时必须定义服务器进程执行备份或者恢复操作使用的I/O

Oracle TNSNAMES.ORA配置

在安装目录下,如:E:\Oracle\Ora81\network\ADMIN下用写字板或记事本打开TNSNAME.ORA文件,文件内容大概如下: TEST.SOFTONE.COM = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = zcb_8115)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = test) ) ) 蓝色部分为安装时录入的信息. 如果该文件没有配置