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

arj*_*aur 1 unix oracle sql-loader

我正在尝试使用SQL Loader从csv文件加载我的表中的数据.

<--- load.sh - >

ORACLE_HOME=/oracle/OraHome11g
export ORACLE_HOME
PATH=/oracle/OraHome11g/bin
export PATH
$ORACLE_HOME/bin/lsnrctl start
sqlldr RETAIL_FIN/RETAIL_FIN$123@ERDEV control=LBR.ctl
Run Code Online (Sandbox Code Playgroud)

<--- 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)
Run Code Online (Sandbox Code Playgroud)

执行脚本后,我收到以下错误:

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
Run Code Online (Sandbox Code Playgroud)

谢谢

Ale*_*ole 6

密码中的$被视为环境变量引用,或者在这种情况下$1作为脚本的第一个参数 - 可能为null.实际使用传递给甲骨文的密码RETAIL_FIN23,不是RETAIL_FIN$123.

你的脚本需要逃避$符号:

sqlldr RETAIL_FIN/RETAIL_FIN\$123@ERDEV control=LBR.ctl
Run Code Online (Sandbox Code Playgroud)

您可以非常简单地看到相同的效果:

$ echo sqlldr RETAIL_FIN/RETAIL_FIN$123@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_FIN$123@ERDEV control=LBR.ctl
Run Code Online (Sandbox Code Playgroud)