I'm trying to encrypt a column and I found many tutorials that use DBMS_CRYPTO. However, when I test this, it says DBMS_CRYPTO is an invalid identifier. I was using SYSDBA account.

I've searched the Internet but, to my surprise, I couldn't find an answer for this one.

How come DBMS_CRYPTO is an invalid identifier ?

  • This package is not granted to PUBLIC by default. Ask DBAs for exec privs.
    – ibre5041
    Jan 13, 2014 at 8:43
  • Can you check package? select object_name, object_type, status from dba_objects where object_name = 'DBMS_CRYPTO'; Can you describe it? desc dbms_crypto Jan 13, 2014 at 10:15
  • We don't know how you are testing it, nor we know the full error stack, also useful information is full db version. 11g means any of 4+ different versions.
    – Raj
    Jan 13, 2014 at 15:20
  • I think dbms_crypto is not installed by default, you might have to install it using $ORACLE_HOME/rdbms/admin/dbmsoctk.sql and $ORACLE_HOME/rdbms/admin/prvtobtk.plb scripts. Then make sure you create a synonym and grant execute to the user needed.
    – Raj
    Jan 14, 2014 at 15:30

1 Answer 1


DBMS_CRYPTO is a package which is owned by SYS schema. You can ask the DBA to give the execute privilege on that package to the schema which you are using.

Here DBA has to login as SYS. Even SYSTEM or any other schema for that mater, which has SYSDBA role won't do.

  • Source: DBMS_CRYPTO: "Oracle Database installs this package in the SYS schema. You can then grant package access to existing users and roles as needed".
    – ckujau
    Jan 5 at 17:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.