3.18 チュートリアル: SQL式を使用したリダクションされた値を含むレポートの作成
SQL式を使用して、Oracle Data Redactionポリシーが定義された列に基づくレポートを作成できます。
DBMS_REDACT
PL/SQLパッケージに対するEXECUTE
権限と、ADMINISTER REDACTION POLICY
システムまたはスキーマ権限があるユーザーでPDBに接続します。HR.EMPLOYEES
表に対して次のようなデータ・リダクション・ポリシーを作成します。このポリシーにより9
という数値を持つSALARY
列の最初の4桁の値およびCOMMISSION_PCT
列の最初の1桁の値が9
に置換されます。BEGIN DBMS_REDACT.ADD_POLICY( object_schema => 'HR', object_name => 'EMPLOYEES', column_name => 'SALARY', column_description => 'Employees salary column shows employee salary', policy_name => 'redact_emp_sal_comm', policy_description => 'Partially redacts the employee salary column', function_type => DBMS_REDACT.PARTIAL, function_parameters => '9,1,4', expression => '1=1'); END; / BEGIN DBMS_REDACT.ALTER_POLICY( object_schema => 'HR', object_name => 'EMPLOYEES', policy_name => 'redact_emp_sal_comm', action => DBMS_REDACT.ADD_COLUMN, column_name => 'COMMISSION_PCT', function_type => DBMS_REDACT.PARTIAL, function_parameters => '9,1,1', expression => '1=1'); END; /
HR
ユーザーとして接続してから、次のレポートを実行します。このレポートでは、SQL式(SALARY + COMMISSION_PCT)
を使用して、従業員の給料と歩合を組み合せます。SELECT (SALARY + COMMISSION_PCT) total_emp_compensation FROM HR.EMPLOYEES WHERE DEPARTMENT_ID = 80; TOTAL_EMP_COMPENSATION ---------------------- 0 0 0 ...
- レポートには、連結などのSQL式を使用します。 例:
SELECT 'Employee ID ' || EMPLOYEE_ID || ' has a salary of ' || SALARY || ' and a commission of ' || COMMISSION_PCT || '.' detailed_emp_compensation FROM HR.EMPLOYEES WHERE DEPARTMENT_ID = 80 ORDER BY EMPLOYEE_ID; DETAILED_EMP_COMPENSATION ------------------------------------------------------------- Employee ID 150 has a salary of 99990 and a commission of .95. Employee ID 151 has a salary of 9999 and a commission of .95. Employee ID 152 has a salary of 9999 and a commission of .9. ...
redact_emp_sal_comm
データ・リダクション・ポリシーを作成したユーザーとして接続します。- 次の文を実行して、ポリシーを削除します。
BEGIN DBMS_REDACT.DROP_POLICY ( object_schema => 'HR', object_name => 'EMPLOYEES', policy_name => 'redact_emp_sal_comm'); END; /