Solved oracle: fatal: open failed:

Posted on 2005-10-19
Last Modified: 2007-12-19
Running Oracle 10g under solaris 9

When I try going into sqlplus as user b, i get message:

Enter user-name: oracle: fatal: open failed: No such file or directory
ORA-12547: TNS:lost contact

I go in as user a and everything is fine.  I've copied user a .profile to user b and still get the error.
Any ideas what is the problem?
Question by:xoxomos

    Author Comment

    I've just noticed, the userid that works has both a .profile and a .bash_profile
    The one that doesn't has only a .profile.  
    LVL 47

    Expert Comment

    The OS user B has to have same Oracle environment variables as user A
    in order to get access to the Oracle binaries and libraries.

    Author Comment

    Yeah, I copied Oracles .profile into user b but that doesn't seem to make a difference.

    Author Comment

    If I go:
    psdwp /sysadm/xoxomos $ sqlplus

    SQL*Plus: Release - Production on Wed Oct 19 10:50:56 2005

    Copyright (c) 1982, 2005, Oracle.  All rights reserved.

    Enter user-name: student
    Enter password: oracle: fatal: open failed: No such file or directory
    ORA-12547: TNS:lost contact

    Enter user-name:

    But  as the same os user I can go

    psdwp /sysadm/xoxomos $ sqlplus student/nt311m3nt@dwproddb

    SQL*Plus: Release - Production on Wed Oct 19 10:52:17 2005

    Copyright (c) 1982, 2005, Oracle.  All rights reserved.

    Connected to:
    Oracle Database 10g Enterprise Edition Release - 64bit Production
    With the Partitioning, OLAP and Data Mining options


    And everything is fine.???????????

    LVL 6

    Accepted Solution

    Try to follow this thread, it is simular to your problem.

    The way you tried to connect before is called a direct/bequeath connection. This works by directly creating a new oracle process from sqlplus and comunicating with it using a pipe (no listener involved) . But since you were running it as a different user it was having some problems starting, I am not sure exactly why, maybe its permissions on the shared memory segments or the actual data files. In principle it should be able to work this way,even from another user, but maybe not on all platforms and depending on permissions, I am not sure.

    The second way was connecting via the network listener (dependant on your tnsnames configuration) and the oracle process will get started by the oracle user, so there are no problems with permissions on shared memory or files.

    You can set a TWO_TASK environment variable to dwproddb and the it would connect without specifying the @dwproddb.
    When TWO_TASK is defined any connection you make without specifying a TNS entry will get "@TWO_TASK" glued to it before trying to connect. This works exactly as if you have connected to "sqlplus user/pass@dwproddb".

    Author Comment

    I'll close this and try to follow that thread you mentioned.  Exporting the TWO_TASK inside the script even has the cron job running again ok.

    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    Learn The Basics of Ethical Hacking & Pen Testing

    Computer and network security is one of the fastest growing and most essential industries in technology, meaning companies will pay big bucks for ethical hackers. This is the perfect course to leap into this lucrative career, learning how to use ethical hacking to reveal ...

    Suggested Solutions

    Subquery in Oracle: Sub queries are one of advance queries in oracle. Types of advance queries: •      Sub Queries •      Hierarchical Queries •      Set Operators Sub queries are know as the query called from another query or another subquery. It can …
    Note: this article covers simple compression. Oracle introduced in version 11g release 2 a new feature called Advanced Compression which is not covered here. General principle of Oracle compression Oracle compression is a way of reducing the d…
    This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.
    This video shows information on the Oracle Data Dictionary, starting with the Oracle documentation, explaining the different types of Data Dictionary views available by group and permissions as well as giving examples on how to retrieve data from th…

    884 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    18 Experts available now in Live!

    Get 1:1 Help Now