0

Following a video tutorial on oracle wallets: https://youtu.be/LLZzUNb9ALU

The db server is run from oracle's official docker container.

The steps I have done are as follows:

  1. On server shell, ran sql plus as sysdba:
$ sqlplus / as sysdba
  1. Created a user:
SQL> alter session set "_ORACLE_SCRIPT"=true;
SQL> CREATE USER fred identified by flintstone;
SQL> GRANT CONNECT, RESOURCE, DBA to fred;
  1. Tested logon:
$ sqlplus fred/flintstone

SQL> show user;
User is "fred"
  1. Created a wallet at default location: $ORACLE_BASE/admin/$ORACLE_SID/wallet
$ orapki wallet create -wallet $ORACLE_BASE/admin/$ORACLE_SID/wallet -auto_login -pwd MyWalletPass
  1. Created a wallet profile for user fred:
$ mkstore -wrl $ORACLE_BASE/admin/$ORACLE_SID/wallet -createCredential $ORACLE_SID fred flintstone
  1. Tried to login sqlplus:
$ sqlplus /@$ORACLE_SID

This fails. Got the error ORA-01017: invalid username/password; logon denied

Not able to understand whats wrong. The final goal is to use this wallet for a nodejs application with external auth (node-oracledb). But I think if I can fix step 6 I should be able to use from nodejs.

5
  • 1
    Why did you set that internal parameter to pretend that this is an Oracle owned user? You should be creating your users in a pluggable database not the root container. Your use of $ORACLE_SID when a tnsnames entry is required is very confusing, I suggest you don’t use an environment variable (and confirm it points to the pluggable DB you create the user in). Have you pointed to your wallet from your sqlnet config? I suggest you read oracle-base.com/articles/10g/… Jan 2, 2021 at 19:26
  • Did not do anything with sqlnet.ora since the location where the wallet is created is one of the default locations oracle searches for wallets.
    – deostroll
    Jan 3, 2021 at 1:54
  • Is this all on the database server? Is the $ORACLE_HOME for the client different that the $ORACLE_HOME for the DB, and if so which one did you put the wallet in? I would second what Andrew said as well: never rely on "defaults"; they can vary by version or product. Always specify your configuration explicitly in your sqlnet.ora file. The next person who comes along may have no idea where the default locations are, or that you used a wallet at all, much less where you put it, unless you document that in your configuration.
    – pmdba
    Jan 3, 2021 at 4:55
  • Can you include your client sqlnet.ora, tnsnames.ora, and confirm whether the client connection is originating from the database server itself, or from a separate application server?
    – pmdba
    Jan 3, 2021 at 4:58
  • I have done the following two things: explicitly specified the wallet location in sqlnet.ora file, and, included the line SQLNET.WALLET_OVERRIDE=TRUE in the same file. Post which I can sqlplus as mentioned in #6. Now the issue still remains in next steps (i.e in the nodejs app).
    – deostroll
    Jan 7, 2021 at 13:22

1 Answer 1

0

As suggested by Andrew

The 1st part, I explicitly mentioned wallet location in sqlnet.ora file, and also included the following line:SQLNET.WALLET_OVERRIDE=TRUE. Also verified the correct tns entry in tnsnames.ora. (This is already taken care of during container start, so I didn't have to do anything).

For the 2nd part, I had to use the same sqlnet.ora with the exception that the WALLET_LOCATION parameter was updated with the location to the wallet folder on the client machine. And for the client program, I had to set the TNS_ADMIN environment variable; I had to point it to the folder where the former file would reside. Additionally added a tnsnames.ora file and added a tns name (similar to the oracle service name on the db server).

Note: On the client machine, we have to be careful of the syntax in the sqlnet.ora and the tnsnames.ora file. Different clients have various ways to connect. I have just noted for the case of a nodejs program which used orcaledb as the oracle client. These specific type of clients make use of the environment variable TNS_ADMIN.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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