Here the steps to do it.
connect / as sysdba
grant execute on dbms_redact to ASO;
connect ASO/tiger
create table ASO.table01 (stt number, ID varchar2(10), value number);
insert into ASO.table01 values (1,’abc123456′,20000);
insert into ASO.table01 values (2,’abc12345′,300);
insert into ASO.table01 values (3,’abc1234′,40000000);
insert into ASO.table01 values (4,”,5000);
insert into ASO.table01 values (5,’abc1234567′,”);
commit;
insert into TABLE01 values (&1,’&2′,&3,&4);
begin
dbms_redact.drop_policy(
object_schema => ‘ASO’,
object_name => ‘TABLE01’,
policy_name => ‘redact_table01_pol’);
end;
/
begin
sys.dbms_redact.add_policy(
object_schema => ‘ASO’,
object_name => ‘TABLE01’,
column_name => ‘ID’,
policy_name => ‘redact_table01_pol’,
function_type => DBMS_REDACT.PARTIAL,
function_parameters => ‘VVVVVVVVVVVV,VVVVVVVVVVVV,*,4,10’,
expression => ‘1=1’);
end;
/
*****If you wish to drop ***
begin
dbms_redact.drop_policy(
object_schema => ‘ASO’,
object_name => ‘TABLE01’,
policy_name => ‘redact_table01_pol’);
end;
/
begin
sys.dbms_redact.add_policy(
object_schema => ‘ASO’,
object_name => ‘TABLE01’,
column_name => ‘ID’,
policy_name => ‘redact_table01_pol’,
function_type => DBMS_REDACT.PARTIAL,
function_parameters => ‘VVVVVVVVVVVV,VVVVVVVVVVVV,x,2,10’,
expression => ‘1=1’);
end;
***************
Add policy for Value Full
BEGIN
DBMS_REDACT.alter_policy(
object_schema => ‘ASO’,
object_name => ‘TABLE01’,
policy_name => ‘redact_table01_pol’,
action => dbms_redact.ADD_COLUMN,
column_name => ‘value’,
function_type => dbms_redact.FULL
);
END;
/
*****Add polcit partial Number ***
BEGIN
DBMS_REDACT.alter_policy (
object_schema => ‘ASO’,
object_name => ‘TABLE01’,
policy_name => ‘redact_table01_pol’,
action => dbms_redact.ADD_COLUMN,
column_name => ‘sal’,
function_type => DBMS_REDACT.partial,
function_parameters => ‘4,1,12’
);
END;
/
begin
sys.dbms_redact.alter_policy(
object_schema => ‘ASO’,
object_name => ‘TABLE01’,
column_name => ‘queue’,
policy_name => ‘redact_table01_pol’,
function_type => DBMS_REDACT.REGEXP,
expression => ‘1=1’,
regexp_pattern => ‘VVVVVV.VVV.VVVVVVVVVVV’,
regexp_replace_string => ‘*’,
regexp_position => 1,
regexp_occurrence => 0,
regexp_match_parameter => ‘.’);
end;
/
BEGIN
DBMS_REDACT.alter_POLICY(
object_schema => ‘ASO’,
object_name => ‘TABLE01’,
column_name => ‘mqueue’,
policy_name => ‘redact_table01_pol’,
function_type => DBMS_REDACT.REGEXP,
regexp_pattern => ‘.’,
regexp_replace_string => ‘###’,
regexp_position => DBMS_REDACT.RE_BEGINNING,
regexp_occurrence => DBMS_REDACT.RE_ALL,
expression => ‘1=1’);
END;
/
*********Connect by new user ***
create user pbd identified by pbd;
*********Out Put
QL> select * from TABLE01;
STT ID VALUE SAL
———- ———- ———- ———-
1 abc123456 20000 100000
2 abc12345 300 100000
3 abc1234 40000000 100000
4 5000 100000
5 abc1234567 100000
6 Pramod 2000 2000000
7 Mubin 2000 300000000
8 Bindu 40000 4000000000
9 Abhishek 50000 50000000
9 rows selected.
SQL> connect pbd/pbd
Connected.
SQL> select * from aso.TABLE01;
STT ID VALUE SAL
———- ———- ———- ———-
1 axxxxxxxx 0 111111
2 axxxxxxx 0 111111
3 axxxxxx 0 111111
4 0 111111
5 axxxxxxxxx 111111
6 Pxxxxx 0 1111111
7 Mxxxx 0 111111111
8 Bxxxx 0 1111111111
9 Axxxxxxx 0 11111111
9 rows selected.
table_name —redaction_policies
SELECT SYS_CONTEXT(‘USERENV’,’CLIENT_INFO’) FROM DUAL;
begin
dbms_redact.drop_policy(
object_schema => ‘ASO’,
object_name => ‘EMP’,
policy_name => ‘EMP_SAL_POL’);
end;
BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema => ‘ASO’,
object_name => ‘EMP’,
policy_name => ‘EMP_SAL_POL’,
expression => ‘SYS_CONTEXT(”USERENV”,”CLIENT_INFO”) != ”PBD” OR SYS_CONTEXT(”USERENV”,”CLIENT_INFO”) IS NULL’,
column_name => ‘SAL’,
function_type => DBMS_REDACT.FULL);
END;
/
BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema => ‘ASO’,
object_name => ‘EMP’,
policy_name => ‘EMP_SAL_POL’,
expression => ‘SYS_CONTEXT(”USERENV”,”SESSION_USER”) = ”PBD”’,
column_name => ‘SAL’,
function_type => DBMS_REDACT.FULL);
END;
/
BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema => ‘ASO’,
object_name => ‘EMP’,
policy_name => ‘EMP_SAL_POL’,
expression => ‘SYS_CONTEXT(”USERENV”,”SESSION_USER”) = ”PBD”’,
column_name => ‘SAL’,
function_type => DBMS_REDACT.FULL);
END;
/
BEGIN
DBMS_REDACT.alter_policy
(object_schema => ‘ASO’
,object_name => ‘EMP’
,policy_name => ‘EMP_SAL_POL’
,action => dbms_redact.ADD_COLUMN
,column_name => ‘EMPNO’
,function_type => dbms_redact.FULL
);
END;
/
SELECT SYS_CONTEXT (‘hr_apps’, ‘group_no’) “User Group”
FROM DUAL;