Hi Ted,

The direct connector requires select access on some data dictionary views which 
is probably why you are having issues. See if the DBA can grant you the 
privileges outlined in this section of the user guide:

http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_oracle_roles_and_privileges

David

From: Ted Dong [mailto:[email protected]]
Sent: Tuesday, 17 November 2015 8:14 AM
To: [email protected]
Subject: Oracle Import Error Using --direct Option

Hi,

I was able to use the --direct option to import data from an Oracle database to 
HDFS. The Oracle database was a development instance and the credentials I was 
using had full read/write privileges.

I then switched to another Oracle database which is a QA instance. The 
credentials I was given contains only read-only access.

When I run Sqoop with the --direct option I get this error:

15/11/16 13:06:09 WARN oracle.OraOopManagerFactory: Unable to determine whether 
the Oracle table "IAPPS"."MF_PROFILE" is an index-organized table.
Error:
ORA-00942: table or view does not exist
15/11/16 13:06:09 ERROR sqoop.Sqoop: Got exception running Sqoop: 
java.lang.RuntimeException: java.sql.SQLSyntaxErrorException: ORA-00942: table 
or view does not exist

java.lang.RuntimeException: java.sql.SQLSyntaxErrorException: ORA-00942: table 
or view does not exist

        at 
org.apache.sqoop.manager.oracle.OraOopConnManager.getColumnNamesInOracleTable(OraOopConnManager.java:133)
        at 
org.apache.sqoop.manager.oracle.OraOopConnManager.getSelectedColumnNamesInOracleTable(OraOopConnManager.java:144)
        at 
org.apache.sqoop.manager.oracle.OraOopConnManager.getColTypesQuery(OraOopConnManager.java:216)
        at 
org.apache.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:225)
        at 
org.apache.sqoop.manager.oracle.OraOopConnManager.getColumnTypes(OraOopConnManager.java:504)
        at 
org.apache.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:295)
        at 
org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1833)
        at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1645)
        at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:96)
        at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:478)
        at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605)
        at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        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)
Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not 
exist

        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
        at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951)
        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:513)
        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227)
        at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
        at 
oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:208)
        at 
oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:886)
        at 
oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1175)
        at 
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1296)
        at 
oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3613)
        at 
oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3657)
        at 
oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1495)
        at 
org.apache.sqoop.manager.oracle.OraOopOracleQueries.getTableColumns(OraOopOracleQueries.java:658)
        at 
org.apache.sqoop.manager.oracle.OraOopOracleQueries.getTableColumns(OraOopOracleQueries.java:767)
        at 
org.apache.sqoop.manager.oracle.OraOopOracleQueries.getTableColumnNames(OraOopOracleQueries.java:624)
        at 
org.apache.sqoop.manager.oracle.OraOopConnManager.getColumnNamesInOracleTable(OraOopConnManager.java:124)
        ... 16 more

I confirmed that the credentials I am using to access the QA database can see 
and read from the table I am trying to import to HDFS (confirmed using toad).

Are there some other user account settings that is required on the Oracle side 
to get the --direct option working from Sqoop?

Thanks!

Reply via email to