Sqoop - 尝试连接到Oracle DB Server时获取java.lang.NullPointerException

时间:2015-04-02 16:50:36

标签: sqoop

使用Sqoop,我尝试连接到Oracle DB,然后列出可用的数据库。 但是当我尝试执行命令时,我得到了java.lang.NullPointerException

请找到下面提到的命令和例外:

[hadoop@njpas01 bin]$ ./sqoop list-databases --connect jdbc:oracle:thin@DEVDB1:1521 --username dev_user -P
Warning: $HADOOP_HOME is deprecated.

15/04/01 14:56:24 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5
Enter password:
15/04/01 14:56:35 INFO oracle.OraOopManagerFactory: Data Connector for Oracle and Hadoop is disabled.
15/04/01 14:56:35 INFO manager.SqlManager: Using default fetchSize of 1000
15/04/01 14:56:35 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.NullPointerException
java.lang.NullPointerException
        at org.apache.sqoop.manager.OracleManager.listDatabases(OracleManager.java:695)
        at org.apache.sqoop.tool.ListDatabasesTool.run(ListDatabasesTool.java:49)
        at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
        at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
        at org.apache.sqoop.Sqoop.main(Sqoop.java:236)

无防火墙问题。可以从运行Sqoop命令的机器访问端口1521。 Oracle版本 - 11g 企业版。 ojdbc6.jar Oracle连接器位于Sqoop lib文件夹中。

请告诉我这个问题的原因是什么。我已经用SQL Server做了类似的操作并成功列出了数据库,将数据从DB导入HDFS。但我在Oracle DB中遇到了这个问题。请帮忙。

感谢。

1 个答案:

答案 0 :(得分:0)

尝试使用sqoop命令连接到oracle数据库时遇到同样的错误。

sqoop语句中的

使用了从执行sqoop命令的节点无法访问的主机名。尝试使用以下命令检查您的oracle主机是否可访问:

ping主机名

如果你得到ping:未知主机,则sqoop将不会连接到oracle服务器。

因此请求在sqoop语句中使用IPaddress,并确保下面的命令成功(得到响应)

ping IPaddress;

PING 10.xx.xx.xx(10.xx.xx.xx)56(84)字节的数据。 来自10.xx.xx.xx的64个字节:icmp_seq = 1 ttl = 128 time = 2.39 ms

更新ipadress后,我能够连接到oracle数据库。

sqoop list-tables --connect jdbc:oracle:thin:@ 10.xx.xxx.xx:1521 / dbname - username ur_username --password ur_password