
Actually, command line upgrades are affected as well, if you do not use OS authentication. Apparently, datapatch is not able to execute in non-OS authentication mode. See MOS note 1635007.1.
Symptom:
You are doing a command line upgrade to Oracle Database 12c with catctl.pl – and you don’t use OS authentication allowing connections with “/ as sysdba” then datapatch.pl won’t be able to execute the SPU/PSU/BP related SQL commands as it will fail to connect to your database with an ORA-1017 (invalid username/password) error.
Solution:
Bug 18361221 is fixed in Oracle 12.2 and got backported to 12.1.0.1.2 and 12.1.0.1.3 but not actually included in any 12.1.0.2 bundles at the moment. Without this fix, datapatch will only connect with ‘/ as sysdba‘.
Either apply generic patch 18361221 to your destination Oracle Home or switch on OS authentication by setting:
- Unix: SQLNET.AUTHENTICATION_SERVICES = (BEQ)
- Windows: SQLNET.AUTHENTICATION_SERVICES = (NTS)
temporarily in your sqlnet.ora for the duration of the upgrade only. See the documentation for further information about SQLNET.AUTHENTICATION_SERVICES. Or, of course, run datapatch.pl -verbose after upgrading your database in any case …
Further Information and Links:
- MOS Note:1635007.1
Datapatch fails with ORA-01017, as it only connects to the database with OS Authentication - Oracle Support Bug 18151716
DATAPATCH UTILITY FAILED INVOKE DUE TO DB CONNECTION FAILURE - Generic patch available:
Patch 18361221: DATAPATCH FAILS WITH ORA-01017, AS IT CONNECTS DB ONLY USING OS AUTHENTICATION
Related Blog Posts datapatch.pl:
- No OS authentication? Then datapatch.pl will fail (Sep 29, 2015)
https://mikedietrichde.com/2015/09/29/no-os-authentication-datapatch-will-fail-in-every-upgrade/ - DBCA 12c and “datapatch.pl” – things to know (Aug 17, 2015)
https://mikedietrichde.com/2015/08/17/dbca-12c-and-datapatch-pl-things-to-know/ - DBUA 12c and “datapatch.pl” – things to know (Jul 20, 2015)
https://mikedietrichde.com/2015/07/20/dbua-12c-and-datapatch-pl-things-to-know/
–Mike
Mike,
The MOS note says bug is applicable to all platforms but the parameter SQLNET.AUTHENTICATION_SERVICES = (NTS) is very specific to Windows. So if all platforms are affected, how to workaround in Linux?
Thanks,
Arun Gupta
Arun,
point goes to you – thanks 😉 Counterpart would be BEQ according to the documentation:
https://docs.oracle.com/database/121/NETRF/sqlnet.htm#NETRF198
beq for native operating system authentication for operating systems other than Microsoft Windows
nts for Microsoft Windows native operating system authentication
I have updated the posting as the MOS note discusses only NTS.
Good catch!!!
Thanks
Mike