Orientdb: ETL transport data Sql <> OrientDB - User or password not valid

Created on 25 Jan 2017  Â·  5Comments  Â·  Source: orientechnologies/orientdb

OrientDB Version:

  • v2.2.12-SNAPSHOT (build 2.2.x)

Operating System

  • Windows 8.1

Problem:

I want transport _massive data (~8.000.000 records)_ from Sql Server(v2014) to OrientDB using ETL module, but I get an error about User & password when run > oetl.bat config.json in console.
_Why OrientDB didn't show more detail for error in console?! Is OrientDB poor?_
Anyway I put my error+config+works here.

Config.json

{
  "config": {
    log : "debug"
  },
  "extractor" : {
    "jdbc": { "driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver",
              "url": "jdbc:sqlserver://localhost;databaseName=My_Sql_DB;",
              "userName": "sa",
              "userPassword": "123",
              "query": "select name from My_Table" 
            }
  },

  "transformers" : [
    { "vertex": { "class": "Person"} }
  ],
   "loader" : {
    "orientdb": {
      "dbURL": "plocal:E:\folder\orientdb-community-2.2.12\databases\My_Orient_DB",
      dbUser: "root",
      dbPassword: "123",
      "dbAutoCreate": true,
      dbType: "graph"
    }
  }
}

Error:

OrientDB etl v.2.2.12-SNAPSHOT (build @BUILD@) www.orientdb.com

2017-01-25 02:16:38:556 WARNI MaxDirectMemorySize JVM option is not set or has invalid value, that may cause out of memory errors. Please set the -XX:MaxDirectMemorySize=8030m option when you start the JVM. [Class]Exception in thread "main" com.orientechnologies.orient.core.exception.OSecurityAccessException: User or password not valid for database: 'My_Orient_DB'
DB name="My_Orient_DB"
at com.orientechnologies.orient.core.metadata.security.OSecurityShared.authenticate(OSecurityShared.java:237)
at com.orientechnologies.orient.core.metadata.security.OSecurityProxy.authenticate(OSecurityProxy.java:107)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.open(ODatabaseDocumentTx.java:272)
at com.orientechnologies.orient.core.db.OPartitionedDatabasePool$DatabaseDocumentTxPooled.internalOpen(OPartitionedDatabasePool.java:447)
at com.orientechnologies.orient.core.db.OPartitionedDatabasePool.openDatabase(OPartitionedDatabasePool.java:310)
at com.orientechnologies.orient.core.db.OPartitionedDatabasePool.acquire(OPartitionedDatabasePool.java:268)
at com.tinkerpop.blueprints.impls.orient.OrientBaseGraph.(OrientBaseGraph.java:144)
at com.tinkerpop.blueprints.impls.orient.OrientGraphNoTx.(OrientGraphNoTx.java:62)
at com.tinkerpop.blueprints.impls.orient.OrientGraphFactory.getNoTx(OrientGraphFactory.java:138)
at com.orientechnologies.orient.etl.loader.OOrientDBLoader.configureGraphDB(OOrientDBLoader.java:415)
at com.orientechnologies.orient.etl.loader.OOrientDBLoader.configure(OOrientDBLoader.java:401)
at com.orientechnologies.orient.etl.OETLProcessor.configureComponent(OETLProcessor.java:449)
at com.orientechnologies.orient.etl.OETLProcessor.configureLoader(OETLProcessor.java:262)
at com.orientechnologies.orient.etl.OETLProcessor.parse(OETLProcessor.java:209)
at com.orientechnologies.orient.etl.OETLProcessor.parse(OETLProcessor.java:176)
at com.orientechnologies.orient.etl.OETLProcessor.parseConfigAndParameters(OETLProcessor.java:144)
at com.orientechnologies.orient.etl.OETLProcessor.main(OETLProcessor.java:108)

I did this work:

  • Put _orientdb-etl-2.2.12.jar_ + _orientdb-jdbc-2.2.12.jar_ into bin folder
  • Put _sqljdbc4.jar_ into lib folder.
  • Add 'name' parameter into My_Orient_DB's _Person_ class.
question

Most helpful comment

ohh...I added this parameters and solved my probelm:

....
"tx": false,
"batchCommit": 1000,
"wal" : false,
....

All 5 comments

If you are using a plocal (aka embedded) database, please use admin/admin as uname and password

the error message is clear:

User or password not valid for database: 'My_Orient_DB'

@robfrank Ohhhhh....Ok man. Solved my problem, Now I have a new problem :)
I tranported 22.000 records from Sql Server to OrientDB, that I saw increased usaged memory of _Java(TM) Platform SE bainary_(~2G) until end of ETL Process.
Now, I've got a question from OrientDB's Developers: Why OrienrDB didn't release memory usage after Insert data into my OrientDB?!!!!! :(

I don't understand what do you mean.
The ETL, as OrientDB, is a Java program, so when it stops the JVM stops and memory allocated by the JVM itself is released to the operative system.
Moreover, if you run the ETL using plocal, the database is embedded, so there's only a single JVM that execute the ETL AND the database engine.
If you start an OrientDB server, obviously a running server use memory.
It is up to the underlying OS (linux, windows) to re-allocate the memory to other processes.

@hosseinGanjyar You must learn some concepts of orientdb via tutorials asap . your issue is not a problem on OrientDB certainly .

ohh...I added this parameters and solved my probelm:

....
"tx": false,
"batchCommit": 1000,
"wal" : false,
....
Was this page helpful?
0 / 5 - 0 ratings

Related issues

lightjiao picture lightjiao  Â·  3Comments

codelimner picture codelimner  Â·  4Comments

akizze01 picture akizze01  Â·  3Comments

laa picture laa  Â·  3Comments

fpertl picture fpertl  Â·  4Comments