CREATE USER user1
   IDENTIFIED BY welcome1
   DEFAULT TABLESPACE users
   QUOTA UNLIMITED ON users;

GRANT CREATE SESSION, CREATE TABLE TO user1;

CREATE USER user2
   IDENTIFIED BY welcome1
   DEFAULT TABLESPACE users;

GRANT CREATE SESSION TO user2;

CONN user1/welcome1

CREATE TABLE test
   (description    VARCHAR2(100));

INSERT INTO test
   VALUES ('record #1');

COMMIT;

GRANT SELECT ON test TO user2;

CONN user2/welcome1

SELECT * 
  FROM user1.test;

SELECT *
  FROM user1.test
   FOR UPDATE;

LOCK TABLE user1.test IN EXCLUSIVE MODE;

CONN user1/welcome1

REVOKE SELECT ON test FROM user2;

GRANT READ ON test TO user2;

CONN user2/welcome1

SELECT *
  FROM user1.test;

SELECT *
  FROM user1.test
   FOR UPDATE;

LOCK TABLE user1.test IN EXCLUSIVE MODE;

-- Clean-Up

CONN / AS SYSDBA

DROP TABLE user1.test PURGE;

DROP USER user1 CASCADE;

DROP USER user2 CASCADE;