Skip to Main Content
  • Questions
  • ORA-12578: TNS:wallet open failed while doing any DDL except CREATE TABLE

Breadcrumb

Question and Answer

Connor McDonald

Thanks for the question, Akash.

Asked: July 31, 2019 - 8:11 am UTC

Last updated: November 05, 2019 - 3:57 am UTC

Version: 12.1.0.2.0

Viewed 10K+ times! This question is

You Asked

Hi Team,

I have 11gR2 installed on my personal system.

Recently , I created a wallet and using that to connect to the db. The steps followed were :-
1) Made entries in sqlnet.ora
2) Created a wallet using mkstore
3) Added an entry to the wallet using mkstore
4) Added entry in the tnsnames.ora for the above entry

Now I am able to connect to db using the wallet.

However, whenever I try to drop a table or add a column to a table or drop a column from a table, I get the below error -
SQL> drop table ind_skip purge;
drop table ind_skip purge
*
ERROR at line 1:
ORA-12578: TNS:wallet open failed

I dont get any error while trying to create a table.

If I disable the wallet , I stop getting the error. What does this error mean and how to get rid of this ?

--Adding the sqlnet.ora
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES = (NTS)

WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN\wallet)))
SQLNET.WALLET_OVERRIDE=TRUE

Also, I noticed the following :-
a) drop table <table_name>; -- this works
b) drop table <table_name> purge; -- this fails


Thanks

and Connor said...

Most likely cause here is due to it being a Windows system, and a permissions issue on the wallet to due to who created it versus how Oracle wants to use it.

The Oracle database (in 11g) is running as "SYSTEM" and you probably created the wallet as "Administrator".

Grant the "SYSTEM" user full control to both wallet files:

cwallet.sso
ewallet.p12

via the normal way, ie, right click on each file and select "Properties" and then the "Security" tab.

Select "SYSTEM" from the list of users and check the "Allow" box to give the user the full control privilege, then click OK.



Is this answer out of date? If it is, please let us know via a Comment

More to Explore

Security

All of the vital components for a secure database are covered in the Security guide.