Scenario

SQL> connect MLM/m@oemrep
Connected.

SQL> select * from emp_salary;

     	EMPNO 	HOURS_ENTERED 	NAME           SALARY
----------	 ------------- 		---------- 	----------
       	980             	8 			MARTIN        	100000
      	5430             	7 			SEAVER         90000
1968             	8 			MICHAEL      80000

SQL> select username from user_users;

USERNAME
------------------------------
MLM 

connect Michael/mmmmmm0# @mlmtest;
Connected.

SQL> CREATE DATABASE LINK OUR_SALARY CONNECT TO MLM IDENTIFIED BY M
  2  USING '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=martin)(PORT=1521)))
  3  (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=OEMREP)))';

Database link created.

SQL> create synonym salary for mlm.emp_salary@our_salary;

Synonym created.

SQL> 
SQL> select * from salary;

     	EMPNO 	HOURS_ENTERED 	NAME        	SALARY
---------- 	------------- 		------- 		----------
       	 980             	8 			MARTIN 	100000
    	5430             	7 			SEAVER       	90000
1968             	8 			MICHAEL      80000

SQL> CREATE VIEW E_SALARY AS SELECT * FROM SALARY WHERE USER = NAME;
View created.

SQL> GRANT SELECT ON E_SALARY TO FACULTY;
Grant succeeded.

SQL> CREATE OR REPLACE PROCEDURE UPDATE_HOURS (HOURS IN NUMBER)
  2  AS
  3    BEGIN 
  4   UPDATE E_SALARY SET HOURS_ENTERED = HOURS;
  5    END;
  6  /
Procedure created.

SQL> GRANT EXECUTE ON UPDATE_HOURS TO FACULTY;
Grant succeeded.

SQL> CREATE OR REPLACE PROCEDURE UPDATE_SALARY (SAL IN NUMBER) AUTHID CURRENT_USER
  2  AS
  3    BEGIN
  4   UPDATE E_SALARY SET SALARY = SAL;
  5    END;
  6  /
Procedure created.
SQL> GRANT EXECUTE ON UPDATE_SALARY TO FACULTY;
Grant succeeded.

SQL> GRANT FACULTY TO MARTIN, SEAVER, MICHAEL;

Grant succeeded.

ASSUME ALL OF THE EXECUTE STATEMEMTS BELOW WORK AS WRITTEN

EXECUTE SA_SYSDBA.CREATE_POLICY ('TEST','TT');
EXECUTE SA_COMPONENTS.CREATE_LEVEL ('TEST', 100, 'U', 'UNCLASSIFIED');
EXECUTE SA_COMPONENTS.CREATE_LEVEL ('TEST', 200, 'C', 'CONFIDENTIAL');
EXECUTE SA_COMPONENTS.CREATE_LEVEL ('TEST', 300, 'S', 'SECRET');
EXECUTE SA_COMPONENTS.CREATE_LEVEL ('TEST', 400, 'TS', 'TOP_SECRET');
EXECUTE SA_COMPONENTS.CREATE_COMPARTMENT('TEST', 100, 'NATO', 'NORTH ALANTIC TREATY ORGANIZATION');
EXECUTE SA_COMPONENTS.CREATE_COMPARTMENT('TEST', 200, 'NOFO', 'NO FOREIGN NATIONALS');
EXECUTE SA_COMPONENTS.CREATE_COMPARTMENT('TEST', 300, 'ATOM', 'ATOMIC WEAPONS PROGRAM');
EXECUTE SA_COMPONENTS.CREATE_COMPARTMENT('TEST', 400, 'CYBR', 'CODE BRAKERS');
EXECUTE SA_COMPONENTS.CREATE_GROUP('TEST', 1000, 'US', 'UNITED STATES');
EXECUTE SA_COMPONENTS.CREATE_GROUP('TEST', 1100, 'W', 'US WEST', 'US');
EXECUTE SA_COMPONENTS.CREATE_GROUP('TEST', 1200, 'E', 'US EAST', 'US');
EXECUTE SA_COMPONENTS.CREATE_GROUP('TEST', 1210, 'MD', 'MARYLAND', 'E');
EXECUTE SA_COMPONENTS.CREATE_GROUP('TEST', 2000, 'EU', 'EUROPE');
EXECUTE SA_COMPONENTS.CREATE_GROUP('TEST', 2100, 'G', 'GERMANY', 'EU');
EXECUTE SA_COMPONENTS.CREATE_GROUP('TEST', 2200, 'F', 'FRANCE', 'EU');
EXECUTE SA_LABEL_ADMIN.CREATE_LABEL('TEST', 22121, 'S:NATO,ATOM:EU');
EXECUTE SA_LABEL_ADMIN.CREATE_LABEL('TEST', 32121, 'C:NATO,ATOM,CYBR:G');
EXECUTE SA_LABEL_ADMIN.CREATE_LABEL('TEST', 43120, 'TS:NATO,ATOM,CYBR:F');
EXECUTE SA_LABEL_ADMIN.CREATE_LABEL('TEST', 50000, 'S:NATO,ATOM:MD');
EXECUTE SA_LABEL_ADMIN.CREATE_LABEL('TEST', 60000, 'C:NATO,ATOM,CYBR:E');
EXECUTE SA_LABEL_ADMIN.CREATE_LABEL('TEST', 70000, 'TS:NATO,ATOM,CYBR:W');
EXECUTE SA_USER_ADMIN.SET_LEVELS('TEST', 'ABLE', 'TS', 'S', 'TS', 'S');
EXECUTE SA_USER_ADMIN.SET_COMPARTMENTS('TEST', 'ABLE', 'NATO,CYBR,ATOM,NOFO', 'NATO,ATOM,CYBR', 'ATOM,NATO', 'NATO');
EXECUTE SA_USER_ADMIN.SET_LEVELS('TEST', 'BAKER', 'S', ‘U', 'S', ‘U');
EXECUTE SA_USER_ADMIN.SET_COMPARTMENTS('TEST', 'BAKER', 'NATO,CYBR,ATOM,NOFO'); 
EXECUTE SA_USER_ADMIN.SET_GROUPS('TEST', 'BAKER', 'US,W,E,EU,G,F', 'US,W,EU,G', 'EU,G', 'G');
EXECUTE SA_USER_ADMIN.SET_LEVELS('TEST', 'CHARLES', 'TS', 'U', 'S', 'U');
EXECUTE SA_USER_ADMIN.SET_COMPARTMENTS('TEST', 'CHARLES', 'NATO,ATOM,NOFO'); 
EXECUTE SA_USER_ADMIN.SET_GROUPS('TEST', 'CHARLES', 'US,W,E,EU,G,F', 'US,W,EU,G');
EXECUTE SA_POLICY_ADMIN.APPLY_TABLE_POLICY ('TEST', 'MICHAEL', 'STUDENT');
GRANT SELECT ON STUDENT TO ABLE, BAKER, CHARLES
AS USER SYS
insert into MICHAEL.Student Values (910, 'FUNT', 'DRAMA', 'SM', 19, '1 MAIN', 3.25, 60000);
insert into MICHAEL.Student Values (920, 'GRANT', 'WAR', 'SM', 19, '2 SOUTH', 3.25, 22121);
insert into MICHAEL.Student Values (930, 'IKE', 'HISTORY', 'SM', 19, '3 NORTH', 3.25, 32121);
insert into MICHAEL.Student Values (940, 'FORD', 'FOOTBALL', 'SM', 19, '4 SOUTH', 3.25, 43120);
insert into MICHAEL.Student Values (950, 'BUSH', 'POLYSC', 'SM', 19, '4 SOUTH', 3.25, 50000);

SQL> show user
USER is "SYS"
SQL> select * from michael.student;

 STUDENTID NAME       MAJOR                ST    AGE ADDRESS  GPA  TT
---------- 	--------        ----------------         --      -----   ------------   ------   ---
   100 		ABLE        HISTORY            SR       21   1 UTAH         3
   200               BAKER     ACCOUNTING   JR       19   2 IOWA         2.7
   300 		CHARLES MATH                SR       22   3 MAINE       3.5
   400 		DRAKE     COMPUTER 
			       SCIENCE           FR       18   4 IDAHO       2.8
   500 		ELLIOT     COMPUTER
      SCIENCE            SM      19   5 NEVADA    3.25
   600 		NED          ENGINEERING  SM     17    6 OHIO           3.55
   700 		TED          MUSIC                 SR     21    7 OREGON     3.75
   800 		FRED       ART                      SM    19     8 ARIZONA   3.25
   900 		RED         PSYCHOLOGY    SM    19     9 TEXAS        3.25
   920 		GRANT   WAR                     SM     19     2 SOUTH       3.25     22121
   910 		FUNT       DRAMA              SM      19    1 MAIN          3.25     60000
   930 		IKE          HISTORY            SM      19    3 NORTH       3.25     32121
   940 		FORD       FOOTBALL        SM     19    4 SOUTH        3.25     43120
   950  		BUSH       POLYSC             SM     19    4 SOUTH        3.25     50000
14 rows selected.