First of all, I was suspicious to the password of sys user.
Checking with client, sys password was right but remote login to DB was not possible.
I found that REMOTE_LOGIN_PASSWORDFILE is NONE in database which means priviliged users can not login remotely to database.
In order to give permission to sys use to access to database remotely, this parameter should not be NONE.
For doing that, the following steps is recommended.
- Shutdown database.
- Move database password file (In Unix on $ORACLE_HOME/dbs) and create a new password file.
- Set REMOTE_LOGIN_PASSWORDFILE to EXCLUSIVE
- Startup database
Other possible reasons of this error are :
- The password file does not exist
- The password supplied does not match the one in the password file
- The password file been changed since the instance was started