How to obfuscate table , schema details


I know we can use oracle obfuscation kit to encrypt pl/sql code or actual data stored in database table but I would like to know if we can obfuscate oracle database schema, table structure.

I would like to know how we can obfuscate table name, column name in Oracle database. Please help me understand how this can be done. Can we use one technique to obfuscate all pl/sql code (i.e. triggers, packages,procedures, functions) and table name, col name?

Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Does the Oracle wrap utility actually "encrypt" the existing oracle schema structure?

So, one cannot directly mask/obfuscate/morph/encrypt oracle database schema structure, table, column.

But apart from security measures like grant/revoke of privileges, roles and fine grained access control, one can indirectly do it with help of synonyms (has to be in same schema as tables/views since schema is user that connects to database), views(SQL SELECT query). With these one can hide table/view names and hide query as well as give alias names to columns selected in view respectively.

Similarly, in distributed computing, db links hide the SID or service name of target database since one accesses it while connected to source database.
One can also resort to renaming of tables, columns and recreating synonyms/views and other objects with a different name in long periodic time. But this should be the last resort since even though there is a checklist to make due changes to code i.e. application and SQL or PL/SQL, this is a headache.
The Ultimate Tool Kit for Technolgy Solution Provi

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy for valuable how-to assets including sample agreements, checklists, flowcharts, and more!

also note,  even if you do obfuscate your tables and other objects you will still be able to find references between them in dba_dependencies and dba_constraints
Oracle security is based on ownership and priwiliges.
Every user can see everything in his own tables. But the tables could be encrypted - this could be done using DBMS_CRYPTO pckage.

Other users (except SYS) can not see neither the structure nor the name and the contents of the user objects.

But I say it again - the tables can be encrypted and without knowing the encryption key and the encryption method it is not possible to see the content.
To encrypt programming code(procedures, functions, packages, triggers) (one way only! no decryption) use the 'wrap" utility of Oracle.
Should be found in ORACLE_HOME/bin

Tables are encrypted usig DBMS_CRYPTO PL/SQL package. Interner has plenty of examples "How to encrypt/decrypt ..." so I will avoid to puiblish codes here.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
idforpg1Author Commented:
need more information
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Oracle Database

From novice to tech pro — start learning today.