PL/SQL Can't grant privileges while logged as system
SYSTEM is a typical database user (such as HR or OE)


The DBMS_LOB package belongs to SYS schema so that only the owner(Or user having the GRANT OPTION) can grant the object privilieges to other users. So if you connect as SYSDBA using SYSTEM user you will be connected to SYS schema.

SQL&gt; conn system/oracle
Connected.
SQL&gt; show user
USER is "SYSTEM"
SQL&gt; 

SQL&gt; grant execute on dbms_lob to hr;
grant execute on dbms_lob to hr
                 *
ERROR at line 1:
ORA-01031: insufficient privileges


SQL&gt; conn system/oracle as sysdba
Connected.
SQL&gt; 
SQL&gt; show user
USER is "SYS"
SQL&gt; grant execute on dbms_lob to hr;

Grant succeeded.

SQL&gt; revoke execute on dbms_lob from hr;

Revoke succeeded.


OR

You can grant EXECUTE on DBMS_LOB to SYSTEM user with GRANT OPTION then user SYSTEM user to grant that object privilege to other users.

SQL&gt; conn / as sysdba
Connected.
SQL&gt; grant execute on dbms_lob to system with grant option;

Grant succeeded.

SQL&gt; conn system/oracle
Connected.
SQL&gt; grant execute on dbms_lob to hr;

Grant succeeded.

SQL&gt;