"startscen"命令执行ODI Scenario 提示无法开始,因为"java.lang.IndexOutOfBoundsException: toInd_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 13048 | 回复: 0   主题: "startscen"命令执行ODI Scenario 提示无法开始,因为"java.lang.IndexOutOfBoundsException: toInd        下一篇 
yang.wang
注册用户
等级:中士
经验:217
发帖:82
精华:0
注册:2011-12-28
状态:离线
发送短消息息给yang.wang 加好友    发送短消息息给yang.wang 发消息
发表于: IP:您无权察看 2011-12-28 10:04:47 | [全部帖] [楼主帖] 楼主

"startscen"命令执行ODI Scenario 提示无法开始,因为"java.lang.IndexOutOfBoundsException: toIndex" Or "java.lang.NullPointerException"

Applies to: 
Oracle Data Integrator - Version: 10.1.3.2
This problem can occur on any platform.


症状

通过ODI "startscen.bat(.sh)"命令启动Scenario,指令未启动同时下列信息抛出:

java.lang.IndexOutOfBoundsException: toIndex = 33683
at java.util.SubList.<init>
at java.util.RandomAccessSubList.<init>
at java.util.AbstractList.subList
at com.sunopsis.m.a.g.a
...
at oracle.odi.Agent.main


注意到,在"odiparams.bat(.sh)"配置文件中,ODI_SECU_ENCODED_PASS设置如下

set ODI_SECU_ENCODED_PASS="agent ENCODE myPassword"


原因

ODI的ODI_SECU_ENCODED_PASS and ODI_ENCODED_PASS变量应该为"agent encode"命令加密。结果字符串应该被设置在"odiparams.bat(.sh)"配置文件中这些字段。

解决方案:

1.    进入命令提示符,进ODI的"/bin"目录下,然后对密码进行加密。详见d in Note.423842.1 <How Can I Encrypt A Password?>.

2.       复制加密后的字符串,粘贴到ODI_SECU_ENCODED_PASS and/or ODI_ENCODED_PASS变量中("odiparams.bat(.sh)"配置文件中定义)

例如

set ODI_SECU_ENCODED_PASS=eofpBV0gXAbqoStGqXMZ8XAvRJll
...
set ODI_ENCODED_PASS=b9ypE6YhlBsKBS7nrLNqC5.Fp


3.    应用更改并重新执行该Scenario

只要ODI认加密算法,就会有错误产生,这取决于解析水平上已检测到的错误。

事实上,下面的消息可能会发生:

java.lang.IndexOutOfBoundsException: toIndex = 33683
at java.util.SubList.<init>(AbstractList.java:705)
at java.util.RandomAccessSubList.<init>(AbstractList.java:861)
at java.util.AbstractList.subList(AbstractList.java:570)
at com.sunopsis.m.a.g.a(g.java)
at com.sunopsis.m.a.c.a(c.java)
at com.sunopsis.m.a.f.b(f.java)
at com.sunopsis.tools.core.SnpsStringTools.b(SnpsStringTools.java)
at com.sunopsis.dwg.DwgObject.snpsDecypher(DwgObject.java)
at com.sunopsis.dwg.DwgJv.treatCmd(DwgJv.java)
at com.sunopsis.dwg.DwgJv.main(DwgJv.java)
at oracle.odi.Agent.main(Agent.java)
Terminate batch job (Y/N)? y


当密码没有被加密,同时以小写字母开头时。由于ODI版本原因有的加密算法并不能被ODI解密。当这种情况发生时,此Scenario 应当被冻结并手动杀死。

ava.lang.NullPointerException
at com.sunopsis.m.a.f.b(f.java)
at com.sunopsis.tools.core.SnpsStringTools.b(SnpsStringTools.java)
at com.sunopsis.dwg.DwgObject.snpsDecypher(DwgObject.java)
at com.sunopsis.dwg.DwgJv.treatCmd(DwgJv.java)
at com.sunopsis.dwg.DwgJv.main(DwgJv.java)
at oracle.odi.Agent.main(Agent.java)
Terminate batch job (Y/N)?


当密码只有一个单词组成,并且包括大小写。由于ODI版本原因有的加密算法并不能被ODI解密。当这种情况发生时,此Scenario 应当被冻结并手动杀死。

java.sql.SQLException: ORA-01017: invalid username/password; logon denied
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:283)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278)
at oracle.jdbc.driver.T4CTTIoauthenticate.receiveOauth(T4CTTIoauthenticate.java:791)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:362)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:439)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at com.sunopsis.sql.SnpsConnection.u(SnpsConnection.java)
at com.sunopsis.sql.SnpsConnection.c(SnpsConnection.java)
at com.sunopsis.sql.i.run(i.java)


当密码以大写字母开头。密码以大写字母开头,ODI认为是以前的Sunopsis加密方法已应用,并尝试解密。结果被传递到数据库,提出了一个无效的密码信息。在这种情况下,Excution在得到密码错误消息后恢复。

当执行OdiSqlUnload (SnpsSqlUnload) or other 使用加密密码的ODI工具时,同样的行为也会发生




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论