/* 99.SQL$
<HUG - 110426.1 By: Jim>
1.任务:将userA所有的table(或view等)的select权限(或insert等)授权给userB
2.基本思想: 以usera登录.将select 'grant insert on '||table_name ||' to userb;' from user_objects ;生成的所有SQL语句执行。
</HUG - 110426.1 By: Jim>
<TEST>
set serveroutput on
declare
p_owner varchar2;
p_obj_type varchar2;
begin
p_owner := 'japp';
p_obj_type := 'table';
grant_objects(p_owner,p_obj_type);
end;
/
set serveroutput off
</TEST>
*/
create or replace procedure grant_objects(
p_owner varchar2, -- 引用者,即 SCHEMA
p_obj_type varchar2 -- 对象类型:'TABLE','VIEW','PROCEDURE','FUNCTION'
) as
str_sql varchar2(1000);
in_count number default 0;
begin
for grant_ob_value in (select OBJECT_NAME from user_objects where OBJECT_TYPE in(upper(p_obj_type)))
loop
if 'TABLE' = upper(p_obj_type) then
str_sql := 'grant DELETE,SELECT,INSERT,UPDATE on '||grant_ob_value.OBJECT_NAME||' to '||upper(p_owner);
elsif 'VIEW' = upper(p_obj_type) then
str_sql := 'grant SELECT on '||grant_ob_value.OBJECT_NAME||' to '||upper(p_owner);
elsif 'PROCEDURE' = upper(p_obj_type) then
str_sql := 'grant EXECUTE on '||grant_ob_value.OBJECT_NAME||' to '||upper(p_owner);
elsif 'FUNCTION' = upper(p_obj_type) then
str_sql := 'grant EXECUTE on '||grant_ob_value.OBJECT_NAME||' to '||upper(p_owner);
elsif 'FUNCTION' = upper(p_obj_type) then
str_sql := 'grant EXECUTE on '||grant_ob_value.OBJECT_NAME||' to '||upper(p_owner);
end if;
--select count(1) into in_count from DBA_TAB_PRIVS D where D.GRANTEE = upper(p_owner) and D.TABLE_NAME = grant_ob_value.OBJECT_NAME;
begin
IF in_count = 0 THEN
dbms_output.put_line(str_sql);
execute immediate str_sql;
END IF;
exception
--When Others Then Null;
when OTHERS Then
dbms_output.put_line(sqlerrm);
end;
end loop;
end;
分享到:
相关推荐
ORACLE单独授权表或视图或存储过程 ORACLE单独授权是指在ORACLE数据库中,授予某个用户对部分数据表、视图或存储过程的访问权限,而不是授予全数据库的访问权限。本文将详细介绍如何授予用户对部分表、视图或存储...
在某些情况下,存储过程可能被加密,这可能是出于安全考虑,防止未授权访问或篡改代码。 unwrap工具的目的是解析和解密这些加密的存储过程,以便能够阅读和理解其中的代码。它通常是一个图形用户界面(GUI)应用...
然而,出于安全考虑,有时会将存储过程加密,以保护敏感的业务代码不被未经授权的用户查看或修改。本篇将详细讲解如何对Oracle加密的存储过程进行解密,以及涉及的相关知识点。 首先,理解Oracle的加密机制至关重要...
1. **安全性提升**:通过加密存储过程,可以防止未授权用户查看或修改存储过程的源代码,从而提高了系统的安全性。 2. **知识产权保护**:对于商业软件来说,存储过程往往包含了核心业务逻辑,加密可以有效保护这些...
### Oracle存储过程、函数和包的关键知识点 #### 1. 存储过程和函数的认识 - **定义**:存储过程和函数是特定类型的PL/SQL块,它们被存储在数据库中,作为命名的对象存在。 - **命名存储**:与普通的PL/SQL块不同,...
Oracle虚拟化环境授权白皮书 Oracle虚拟化环境授权白皮书是关于Oracle在VMWare虚拟化环境中的授权、支持和许可证的详细指南。该白皮书提供了一个详细的概述,涵盖了Oracle认证、支持和许可证在VMWare环境中的应用。...
Oracle 授权审计表 Truncate 权限 Oracle 数据库中的授权审计表是指系统自动生成的审计表,用于记录数据库中各种操作的审计信息。这些审计信息可以用于跟踪数据库中发生的各种操作,提高数据库的安全性。 Truncate...
Oracle数据库(表空间、用户、授权、存储过程、触发器)
在IT领域,尤其是在数据库管理与开发中,Oracle存储过程是一种常用的技术手段,用于实现复杂的业务逻辑、数据处理和批量操作。根据给定的文件信息,本文将深入探讨Oracle存储过程如何用于批量创建用户,以及如何读取...
### Oracle授权语法详解 在Oracle数据库管理中,权限管理是一项重要的功能,它允许数据库管理员(DBA)控制用户对数据库对象的访问级别。本文将详细解释Oracle中的授权语法,并通过具体的例子来阐述如何进行不同类型...
### Oracle 审计表 Sys.Aud$ 授权与管理 #### 概述 在Oracle数据库管理系统中,审计功能是一项重要的安全特性,它记录了数据库的所有访问活动,包括但不限于登录、查询、更新等操作。这些审计记录通常存储在系统表...
"无客户端直联"意味着它使用纯.NET组件来实现与Oracle服务器的连接,简化了部署过程。 描述中提到的"C#直接联oracle无需客户端"进一步证实了这个库是为C#程序员提供的,使他们能够利用C#语言的特性直接与Oracle...
在Oracle数据库管理中,查询用户、表以及授权信息是日常操作的重要部分。这些操作对于数据库管理员(DBA)和开发人员来说至关重要,因为它们有助于理解数据的存储结构和权限分配。以下是一些关于如何在Oracle中执行...
为了增强安全性,有时我们需要对这些存储过程进行加密,防止未授权的访问和阅读。本文将详细介绍如何在Oracle中加密存储过程。 1. **环境变量设置**: 在执行加密操作前,需要设置NLS_LANG环境变量。这个变量决定...
Oracle存储过程是数据库管理系统中一组预编译的SQL语句,用于执行特定任务,如数据处理、业务逻辑等。在开发存储过程时,遵循一定的规范和技巧可以显著提高代码的可读性、可维护性和性能。以下是一些关键点: 1. **...
在本篇文章中,我们将深入探讨这个问题的原因、解决方案以及如何正确地授权和管理Oracle数据库的权限。 1. **错误原因**: - 用户未被授予执行特定操作所需的系统权限,例如UPDATE、DELETE、SELECT或INSERT。 - ...
存储过程可以限制非授权用户访问特定的数据,以避免数据泄露或被恶意操作。 尽管存储过程有诸多优势,但其定制化特性意味着它往往是特定于某个数据库系统的。不同数据库厂商的支持的编程语言可能不同,因此在迁移至...
在Oracle数据库管理中,"编译存储过程"、"赋权"和"查询用户占用空间"是三个重要的操作,它们对于数据库的维护和优化至关重要。接下来,我们将详细探讨这三个概念。 1. **编译存储过程**: 存储过程是预编译的SQL...
2. **安全性**:只有被授权的用户才能执行存储过程和函数,这提供了数据访问的安全性,确保只有拥有相应权限的用户可以操作。 3. **重用性**:存储过程可以作为公共模块被多个程序调用,有利于代码复用,例如,计算...
在Oracle数据库管理中,表空间(Tablespaces)、临时表(Temporary Tables)、用户(Users)以及用户授权(User Authorization)是数据库管理员(DBA)进行数据库架构设计和安全管理的基础操作。以下将详细介绍这些...