日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

DBMS_RLS系統包提供了向表添加細粒度訪問控制策略的支持,能夠靈活地隔離數據。

DBMS_RLS子程序總覽

子程序

說明

ADD_POLICY Procedure

向表添加細粒度的訪問控制策略。

ENABLE_POLICY Proceduree

啟用或禁用一個細粒度的訪問控制策略。

DROP_POLICY Procedure

從表中刪除細粒度的訪問控制策略。

ADD_POLICY Procedure

該存儲過程用于向表中添加細粒度的訪問控制策略。

語法

DBMS_RLS.ADD_POLICY ( 
   object_schema            IN  VARCHAR2       DEFAULT NULL,
   object_name              IN  VARCHAR2,
   policy_name              IN  VARCHAR2,
   function_schema          IN  VARCHAR2       DEFAULT NULL,
   policy_function          IN  VARCHAR2,
   statement_types          IN  VARCHAR2       DEFAULT NULL,
   update_check             IN  BOOLEAN        DEFAULT FALSE,
   enable                   IN  BOOLEAN        DEFAULT TRUE,
   static_policy            IN  BOOLEAN        DEFAULT FALSE,
   policy_type              IN  BINARY_INTEGER DEFAULT NULL,
   long_predicate           IN  BOOLEAN        DEFAULT FALSE,
   sec_relevant_cols        IN  VARCHAR2       DEFAULT NULL,
   sec_relevant_cols_opt    IN  BINARY_INTEGER DEFAULT NULL); 

參數說明

參數

說明

object_schema

(可選參數)包含表的模式。如果沒有指定object_schema,則使用當前用戶的模式。

object_name

待添加策略的表的名稱。

policy_name

待添加的策略名稱。對于同一個表,它必須是唯一的。

function_schema

(可選參數)策略函數的模式(NULL表示使用當前默認的模式)。如果沒有指定function_schema,則使用當前用戶的模式。

policy_function

為策略生成謂詞的函數的名稱。如果函數是在包中定義的,那么包的名稱必須存在。

statement_types

(可選參數)策略適用的語句類型。它可以是任意組合SELECTINSERTUPDATEDELETE。默認值為SELECT UPDATE DELETE

update_check

(可選參數)對于INSERTUPDATE語句類型的可選參數。默認值為FALSE,設置update_check為TRUE后會導致PolarDB檢測插入或更新后的值。

enable

(可選參數)指示添加時是否啟用該策略。默認值為TRUE。

static_policy

(可選參數)默認值為FALSE,如果設置為TRUE,則策略函數為訪問該對象的任何人生成相同的謂詞字符串。PolarDB僅做參數兼容。

policy_type

(可選參數)默認值為NULL,表示policy_type由static_policy的值決定。指定policy類型后,會覆蓋static_policy的值。PolarDB僅做參數兼容。

long_predicate

(可選參數)默認值為FALSE,表示策略函數可以返回長度最多為4000字節的謂詞。TRUE表示謂詞文本字符串的長度可以達到32K字節。PolarDB僅做參數兼容。

sec_relevant_cols

(可選參數)啟用列級虛擬隱私數據庫(VPD),在查詢中引用包含sec_relevant_cols定義的列時強制執行安全策略,多個列名使用逗號分隔。默認為對象的所有用戶定義列。

sec_relevant_cols_opt

(可選參數)設置為DBMS_RLS.ALL_ROWS時,不滿足當前策略時sec_relevant_cols中定義的列顯示為NULL,其余列正常顯示。設置為NULL時,不滿足當前策略時,整行均不顯示。默認為NULL。

示例

該示例展示了如何添加一個新的訪問控制策略。

-- 創建測試表
CREATE TABLE t(a int, b int);
INSERT INTO t VALUES (1, 2);
INSERT INTO t VALUES (10, 20);
INSERT INTO t VALUES (100, 200);

-- 創建策略函數
CREATE OR REPLACE FUNCTION f(obj_schema varchar2, obj_name varchar2)
RETURN varchar2 IS
BEGIN
  RETURN 'a < 10';
END;

-- 添加策略
BEGIN
DBMS_RLS.ADD_POLICY(object_name => 't',
                    policy_name => 'p',
                    policy_function => 'f',
                    statement_types => 'select',
                    sec_relevant_cols => 'b',
                    sec_relevant_cols_opt => DBMS_RLS.ALL_ROWS);
END;

-- 查詢數據,在 a<10 時會顯示 b,其他行的 b 不顯示
SELECT * FROM t ORDER BY b;
  a  | b
-----+---
   1 | 2
  10 |
 100 |
(3 rows)

ENABLE_POLICY Procedure

該存儲過程用于啟用/禁用一個細粒度的訪問控制策略。

語法

DBMS_RLS.ENABLE_POLICY (
   object_schema IN VARCHAR2 NULL,
   object_name   IN VARCHAR2,
   policy_name   IN VARCHAR2,
   enable        IN BOOLEAN TRUE);

參數說明

參數

說明

object_schema

(可選參數)包含表的模式。如果沒有指定object_schema,則使用當前用戶的模式。

object_name

待啟用/禁用策略所在表的名稱。

policy_name

待啟用/禁用的策略名稱。

enable

啟用或禁用該策略。取值如下:

  • TRUE(默認):啟用該策略。

  • FALSE:禁用該策略。

示例

該示例展示了如何啟用/禁用策略。

-- 禁用策略
BEGIN
DBMS_RLS.ENABLE_POLICY(object_name => 't',
                       policy_name => 'p',
                       enable => 'f');
END;

-- 查詢數據,a b 均完整顯示
SELECT * FROM t ORDER BY b;
  a  |  b
-----+-----
   1 |   2
  10 |  20
 100 | 200
(3 rows)

-- 啟用策略
BEGIN
DBMS_RLS.ENABLE_POLICY(object_name => 't',
                       policy_name => 'p',
                       enable => 't');
END;

-- 查詢數據,在 a<10 時會顯示 b,其他行的 b 不顯示
SELECT * FROM t ORDER BY b;
  a  | b
-----+---
   1 | 2
  10 |
 100 |
(3 rows)

DROP_POLICY Procedure

該存儲過程用于刪除表中的細粒度訪問控制策略。

語法

DBMS_RLS.DROP_POLICY (
   object_schema   IN VARCHAR2 NULL,
   object_name     IN VARCHAR2,
   policy_name     IN VARCHAR2);

參數說明

參數

說明

object_schema

(可選參數)包含表的模式。如果沒有指定object_schema,則使用當前用戶的模式。

object_name

待刪除策略所在表的名稱。

policy_name

待刪除的策略名稱。

示例

該示例展示了如何刪除指定的策略。

-- 刪除策略
BEGIN
DBMS_RLS.DROP_POLICY(object_name => 't',
                     policy_name => 'p');
END;

-- 查詢數據,a b 均完整顯示
SELECT * FROM t ORDER BY b;
  a  |  b
-----+-----
   1 |   2
  10 |  20
 100 | 200
(3 rows)