SQL*Loader-128:无法开始会话

SQL*Loader-128: unable to begin a session

我正在尝试使用 SQL 加载程序从 csv 文件加载我的 table 中的数据。

<---load.sh-->

ORACLE_HOME=/oracle/OraHome11g
export ORACLE_HOME
PATH=/oracle/OraHome11g/bin
export PATH
$ORACLE_HOME/bin/lsnrctl start
sqlldr RETAIL_FIN/RETAIL_FIN3@ERDEV control=LBR.ctl

<---load.ctl-->

  load data
    infile '/home/tclfin/LBR.ctl'
    into table LOAN_BALANCE_MASTER_INT
    fields terminated by ',' optionally enclosed by '"'
    (ACCOUNT_NO,CUSTOMER_NAME,LIMIT)

执行脚本后出现以下错误:

LSNRCTL for IBM/AIX RISC System/6000: Version 11.2.0.2.0 - Production on 27-MAY-2016 16:14:34

Copyright (c) 1991, 2010, Oracle.  All rights reserved.

TNS-01106: Listener using listener name LISTENER has already been started

SQL*Loader: Release 11.2.0.2.0 - Production on Fri May 27 16:14:34 2016

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

SQL*Loader-128: unable to begin a session
ORA-01017: invalid username/password; logon denied

谢谢

您密码中的 $ 被视为环境变量引用,或者在本例中 </code> 被视为脚本的第一个参数 - 可能为空。传递给 Oracle 的实际使用的密码是 <code>RETAIL_FIN23,而不是 RETAIL_FIN3

您的脚本需要转义 $ 符号:

sqlldr RETAIL_FIN/RETAIL_FIN$123@ERDEV control=LBR.ctl

你可以很简单地看到同样的效果:

$ echo sqlldr RETAIL_FIN/RETAIL_FIN3@ERDEV control=LBR.ctl
sqlldr RETAIL_FIN/RETAIL_FIN23@ERDEV control=LBR.ctl
$ echo sqlldr RETAIL_FIN/RETAIL_FIN$123@ERDEV control=LBR.ctl
sqlldr RETAIL_FIN/RETAIL_FIN3@ERDEV control=LBR.ctl