I have this very strange observation on my Windows 10x64 machine:
Given the following script file (file name
DEFINE SYS_NAME = &1 DEFINE SYS_PWD = &2 DEFINE ORACLE_HOME = &3 CONNECT &SYS_NAME/&SYS_PWD@//localhost:1521/xe AS SYSDBA SET VERIFY OFF SET SERVEROUTPUT ON -- SET FEEDBACK OFF WHENEVER SQLERROR EXIT SQL.SQLCODE ROLLBACK; WHENEVER OSERROR EXIT FAILURE ROLLBACK; ---- enable DBMS_OUTPUT --------- ALTER SESSION SET CONTAINER=CDB$ROOT; @&ORACLE_HOME/rdbms/admin/dbmsotpt.sql ---- run SQL scripts --------- BEGIN DBMS_OUTPUT.PUT_LINE('Database script initialization finished.'); DBMS_OUTPUT.PUT_LINE(''); END; / DISCONNECT @aaaaaaaaaaaa EXIT
When I call this script against my local Oracle DB 18.4 XE Windows installation with appropriate arguments, like:
sqlplus -S /nolog '@C:\Temp\sql\test.sql' sys *** 'C:\app\Me\product\18.0.0\dbhomeXE'
Using SQL*Plus 22.214.171.124.0 I get this output (translated from German):
Session changed. OS Message: No such file or directory
Using SQL*Plus 126.96.36.199.0 I get this output (again, translated from German):
Session changed. Session changed. Type created. Package created. Synonym created. Synonym created. User access granted. User access granted. Session changed. Database script initialization finished. PL/SQL Procedure successfully finished.
So, using SQL*Plus 188.8.131.52.0, neither the built-in SQL Script nor my script (
@aaaaaaaaaaaa for demonstration purposes) is getting called.
Using SQL*Plus 184.108.40.206.0, the built-in SQL Script seems to be getting called, but my script (
@aaaaaaaaaaaa for demonstration purposes) is not getting called.
Why isn't this working?
NB: The same script is working flawlessly when run in an Oracle 18c XE Linux Docker container.