Oracle ORA-1034,ORA-07318: WHEN TRYING TO CONNECT

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com

 

问题描述

===================

 

当使用远程连接连接到Oracle时尝试在服务器上进行SQL*Net V2 loopback ,或启动 SQL*Net V2 Listener,你收到以下错误:

 

ORA-01034: “ORACLE not available”

Cause: Oracle was not started up. Possible causes include the following:

– The SGA requires more space than was allocated for it.

– The operating-system variable pointing to the instance is

improperly defined.

Action: Refer to accompanying messages for possible causes and correct

the problem mentioned in the other messages.

If Oracle has been initialized, then on some operating systems,

verify that Oracle was linked correctly. See the platform

specific Oracle documentation.

 

ORA-07318:  “smsget: open error when opening sgadef.dbf file.”

Cause:  Unable to open sgadef.dbf file.

Action:  Check errno. Possible permission problem. Verify that

sgadef.dbf file exists.

 

 

问题说明:

====================

 

当由于SQL*Net配置文件中的错误,尝试连接到服务器失败时,发生这些错误。由于ORA-7318失败,显示ORA-1034信息。

 

They can also occur when symbolic links are used to reference $ORACLE_HOME

in some but not all occurences. For example, if symbolic links are used in

the database file names in the control files but not in the “listener.ora”.

在一些但不是所有情况中,当符号链接用来引用$ ORACLE_HOME,它们也会发生。例如,如果符号链接用于在控制文件中的数据库文件名而不是在“listener.ora中”。

 

搜索词

============

 

ora-01034 ora-07318 sqlnet, sqlplus, SQL*Plus, upgrade, upgrading

 

 

在listener.ora,init.ora 和tnsnames.ora中查看SID的大小写

 

 

解决方案描述:

———————

Unix 是大小写敏感的。

在listener.ora,init.ora 和tnsnames.ora中查看SID的大小写。

lsnrctl status 来查看它正在监听哪个sid 大写/小写。

 

解决方案说明:

———————

确保listener.ora ,tnsnames.ora 和init.ora 中的所有sid大小写相同。

 

 

解决方案参考:

——————–

Note:95526.1

Note:69546.1

Note:1056155.6

 

 

 

 

UNIX: MAKE SURE SID MATCHES ENTRIES IN “TNSNAMES.ORA”

 

 

解决方案描述:

=====================

 

这可能由Listener 和/或tnsnames 和”sgadef<SID>”条目键的SID名称错配导致。

 

查找你的”sgadef<SID>.dbf” 文件。在UNIX上,它位于目录”$ORACLE_HOME/dbs”中。确保<SID> 匹配在你的”tnsnames.ora”文件和”listener.ora” file文件中的条目。在UNIX中,它是大小写敏感的,所以大小写要匹配。如果你做过更改,进行必要的纠正并重启。

 

 

解决方案说明:

=====================

 

在实例启动时,数据文件”sgadef<SID>.dbf”被创建且它的函数要储存SGA的内存位置的地址。

 

Server Manager 起作用,因为它在使用本地连接,SQL*Plus失败显示这些错误,因为它在尝试使用SQL*Net 且无法绕过SID错配。

 

 

 

 

VERIFY THAT PARENTHESIS MATCH IN “LISTENER.ORA”

 

 

解决方案描述:

=====================

 

查看”listener.ora” 文件并验证所有所有的括号匹配,尤其在the SID_LIST_<LISTENER> = portion of the file specific to the instance that is failing。

 

特定SID_LIST_<LISTENER> = entry 将如下所示:

 

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = ORCL.world)

(SID_NAME = ORCL)

)

)

 

 

解决方案说明:

=====================

 

Listener在它的配置文件中未识别出SID,且无法找出创建连接所需的所有数据库文件。

 

 

 

VERIFY ALIASES MATCH BETWEEN CLIENT AND SERVER

 

 

解决方案描述:

=====================

 

确保在客户端 (PC)的”tnsnames.ora” 文件中的条目完全匹配在服务器段的”tnsnames.ora”文件中的条目,尤其是引用的大小写。PC端更容忍大/小写不一致性,但UNIX不是。如果条目不同,SQL*Net 会无法创建连接。

 

例如:

 

在服务器段的 “tnsnames.ora” 文件中,数据库的条目是:

 

production = (DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP) (HOST = sam) (PORT = 1521))

)

(CONNECT_DATA = (SID = PROD)))

 

 

在客户端的 “tnsnames.ora” 文件中,数据库的条目是:

 

PRODUCTION = (DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP) (HOST = sam) (PORT = 1521))

)

(CONNECT_DATA = (SID = PROD)))

 

 

解决方案说明:

=====================

 

文件中的区别会导致客户端的SQL*Net 连接失败。将客户设为小写能解决连接失败。为建立PC和UNIX服务器键的连接,别名(alias)必须完全匹配。

 

 

 

VERIFY “ORACLE_SID” AND “ORACLE_HOME” SET CORRECTLY

 

 

解决方案描述:

=====================

 

确保设置了环境变量”ORACLE_SID” 和 “ORACLE_HOME”,且它们的大小写适当。在UNIX上:

 

% echo $ORACLE_SID

% echo $ORACLE_HOME

 

同时通过检查后台检查pmon来检查数据库是否在运行:

 

% ps -ef |grep ora_pmon_$ORACLE_SID

 

 

解决方案说明:

=====================

 

如果”ORACLE_SID” 未正确设置,则pmon 不会存在。这也可能是因为数据库不在运行。

 

如果未正确设置”ORACLE_HOME” ,Oracle将不知道其文件架构是否保留且无法导向该架构中相关的文件路径。这样设置提供不同目录布局的适应能力。

 

 

MAY NEED TO REMOVE “$ORACLE_HOME/DBS/SGADEF<SID>.DBF”

 

 

解决方案描述:

=====================

 

If these errors are received when starting up a SQL*Net V2 Listener, check to

see if your database is running.  If the database is not running, then you may

need to remove the “$ORACLE_HOME/dbs/sgadef<SID>.dbf” file.  If the database is

running, it may need to be restarted.  This is not a networking issue but a

database problem that will prevent the listener from starting.

如果在启动SQL*Net V2 Listener时收到这些错误,查看你的数据库是否在运行。如果数据库没有运行,那么你可能需要删除“$ ORACLE_HOME / dbs / sgadef<SID>.dbf”文件。如果该数据库在运行,它可能需要被重启。这不是网络的问题,而是数据库的问题,这会使监听器的无法启动。

 

解决方案说明:

=====================

 

SGA (Shared Global Area)是一个内存cache,每次在Oracle数据库启动时被创建,在相应数据库关闭时被删除。如果数据库未正常关闭(例如由于硬件故障的系统重启),则文件 “$ORACLE_HOME/dbs/sgadef<SID>.dbf” 无法被正确删除且可能导致这些错误。如果在Listener启动时数据库不在运行,删除 “$ORACLE_HOME/dbs/sgadef<SID>.dbf”文件。如果此时数据库在运行,作为正确的oracle/dba用户停止并重启数据库。

 

 

 

 

CHECK SETTING OF $ORACLE_HOME IN “LISTENER.ORA” FILE OF SID

 

 

解决方案描述:

=====================

 

确保在你尝试连接的SID上,正确的 $ORACLE_HOME 在”listener.ora” 文件中被定义。

 

 

解决方案说明:

=====================

 

如果你的$ORACLE_HOME变量未被正确定义,储存SGA的内存位置地址的数据文件”sgadef<SID>.dbf”会无法找到。

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号