Oracle sqlldr ORA-28009: 作为 SYS 的连接应该作为 SYSDBA 或 SYSOPER

Oracle sqlldr ORA-28009:connection as SYS should be as SYSDBA or SYSOPER

我尝试使用 SYS/PASS@

从 DOS sqlldr 运行
sqlldr.exe 'sys/PASS@orcl' control="D:/test/control_file.dat" log="D:/test/log.log"

得到这个错误

Oracle sqlldr ORA-28009:connection as SYS should be as SYSDBA or SYSOPER

有谁能告诉我在上面的命令行中指定 SYSDBASYSOPER 吗?

您需要将 AS SYSDBA 添加到您的连接字符串中。试试这个:

sqlldr.exe 'sys/PASS@orcl AS SYSDBA' control="D:/test/control_file.dat" log="D:/test/log.log"

P.S.

注意 来自 documentation:

This example shows the entire connect string enclosed in quotation marks and backslashes. This is because the string, AS SYSDBA, contains a blank, a situation for which most operating systems require that the entire connect string be placed in quotation marks or marked as a literal by some method. Some operating systems also require that quotation marks on the command line be preceded by an escape character. In this example, backslashes are used as the escape character. If the backslashes were not present, the command line parser that SQL*Loader uses would not understand the quotation marks and would remove them. See your Oracle operating system-specific documentation for information about special and reserved characters on your system.