Wow, simply, wow.
First of all, at a rough guess, the reason why I could no longer access the DB after adjusting the sqlnet.ora
file is that the settings that I put into that file were invalid, and prevented the DB from starting up at all.
Secondly, the basic problem here is that I saw this message:
https://community.oracle.com/message/10155459#10155459
And then assumed that the syntax was this:
SQLNET.ALLOWED_LOGON_VERSION=(8)
And, that you could potentially put multiple numbers, separated by commas, inside the parentheses. This assumption merely comes from me knowing nothing about Oracle DBs or how you would set variables in .ora
files. I don't know if the parentheses are valid in some cases, but apparently not in this case.
By removing the parentheses, the DB starts up again as normal:
SQLNET.ALLOWED_LOGON_VERSION=8
Rebooting the DB with the above setting, all connections work fine. However, my 9i-based DB-access-library still returns the same error.
Further searching reveals that ALLOWED_LOGON_VERSION
, described here for Oracle DB 11, and mentioned in pretty much any post regarding the ORA-28040: No matching authentication protocol
, is deprecated in 12c, replaced by ALLOWED_LOGON_VERSION_CLIENT
and ALLOWED_LOGON_VERSION_SERVER
(the latter detailed here).
Setting both of these to 8 solved my problem, and enabled my 9i-based library to connect to my 12c database! Yay!
Specifically, the lines to add to the sqlnet.ora
file are:
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8