花一天半的时间解决客户端连接服务端的oracle数据库,无法连接问题。ORA-01034: ORACLE not available(Oracle 不存在),ORA-27101: shared memory realm does not   exist 分析:
前几天还可以连接数据库,但是昨天开始,本地无缘无故的不能连接服务端数据库。网上很多人说造成这个问题的原因是异常关机

,数据库没有在关机之前关闭。我公司人说在前几天确实有人重启过电脑,就当是这个原因吧,有时间一定要把真正原因找出来。

下面主要的任务还是解决问题先。遇到问题的详细过程:

通过plsql访问数据报错:ORA-01034: ORACLE not available(Oracle 不存在),ORA-27101: shared memory realm does not

exist(共享内存领域不存在);通过程序登录同样报这个错误。

遇到这种问题,大部分人第一步想到的是检查服务端配置文件是否有问题,所以打开你的Oracle安装路径(这里必须是服务端的,

因为服务端才有监听文件listener.ora,客户端只有sqlnet.ora和tnsnames.ora两个文件)主目录下面的Admin文件夹有三个文件(

我的服务端安装路径是:E:\opt\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN) ,分别是:listener.ora和sqlnet.ora和

tnsnames.ora。打开sqlnet.ora和tnsnames.ora 匹配本地(就是你本地的Oracle客户端主目录)的两个文件sqlnet.ora和

tnsnames.ora,检查两个tnsnames.ora的ip和prot是否一致,必须要相同。下面本人分享下本人能正常访问的,服务端和客户端两

个文件全部的参数配置 分别是本地:sqlnet.ora本地:tnsnames.ora 服务端:sqlnet.ora 服务端:tnsnames.ora 如下:

本地客户端sqlnet.ora 配置文件全部copy如下:

SQLNET.AUTHENTICATION_SERVICES= (NTS)

服务端sqlnet.ora 配置文件全部copy如下:

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)

ADR_BASE = E:\opt\oracle\product\11.2.0\dbhome_1\log

本地客户端tnsnames.ora和服务端tnsnames.ora也是一样的:tnsnames.ora配置文件全部copy如下:

# tnsnames.ora Network Configuration File: C:\instantclient_12_1\tnsnames.ora
# Generated by Oracle configuration tools.
CCNF2008 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 180.166.155.134)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ccnf_2008)
)
)
前面打星号的可以忽略。CCNF2008是本地客户连接数据库的别名,plsql登录的入口的,数据库输入框就是填写它了。prot=1521不

用多说。SERVICE_NAME的值就是ccnf_2008 是你在服务端实例化出来的数据库名称。其他参数照搬。

服务端的listener.ora文件全部copy下面如下:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ccnf_2008)
(ORACLE_HOME = E:\opt\oracle\product\11.2.0\dbhome_1)
(SID_NAME = ccnf_2008)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =180.166.155.134)(PORT = 1521))
)

ADR_BASE_LISTENER = E:\opt\oracle\product\11.2.0\dbhome_1\log

检查完上面三个文件ip,端口,和其他参数都匹配就可以排除不是配置文件原因。

排除配置文件原因后,需要用netmanager管理器使用用户测试连接是否成功,如果用户登录测试成功,在外网telnet ip+端口命令

连接失败,说明是网络端口没有对外开放,需要建立端口1521的出入站规则。如果还不行,进入cmd,命令:lsnrctl stop 停止监

听,再次重启监听:lsnrctl start; 再进入sql操作:sqlplus /nolog执行,在执行 conn / as sysdba 以管理员身份连接数据

库 startup 启动数据库,如果已经启动先 卸载数据shutdowm immediate 关闭数据库,再startup。再次在外网telnet ip +端口,

如果还不行就:来源网络查找:http://blog.csdn.net/inthirties/article/details/4558769最后面的方法
1. 打开注册表
2. 找到[HKEY_LOCAL_MACHINESOFTWAREORACLEKEY_OraDb10g_home1]这个目录
在其下加入一个字符串值
键:USE_SHARED_SOCKET
值: TRUE
3. 重启监听服务

如果上面步骤还不行,估计最有可能的原因就是ip和机器名和127.0.0.1这个区别问题。所以请在C:\Windows\System32\drivers

\etc ,打开hosts文件,添加一个映射。 127.0.0.1 ip地址。设置完成映射后,重启监听、startup数据库。本人就是通过这个

步骤解决问题的。

oracle连接数据库报错:ORA-01034: ORACLE not available(Oracle 不存在),ORA-27101: shared memory realm does not exist的更多相关文章

  1. 参数SID写错,ERROR OGG-00664 ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist

    添加进程,启动进程报错 1.0添加进程 GGSCI (t2) > add ext exta,tranlog,begin now EXTRACT added. --添加exta(ext标准命名规则 ...

  2. Oracle:shared memory realm does not exist

    1. 先描述一个连接Oracle 10g的错误:“shared memory realm does not exist” 如图所示Sqlplus连接时出现这个错误: 2. Oracle 服务器主要组件 ...

  3. Oracle数据库使用出现错误-状态: 失败 ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist

    Oracle数据库使用出现错误-状态: 失败 ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist ...

  4. Oracle重启 error: ora-01034:oracle not available ora-27101:shared memory realm does not exist

    error: ora-01034:oracle not available ora-27101:shared memory realm does not exist 苦咖啡 他的博客中一篇文章完美的解 ...

  5. ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist

    Oracle 设置默认数据库 如果我们的服务器上或者电脑上安装了多个数据库,当我们使用sqlplus时如果为指定数据库时登录到的是哪一个数据库呢?今天遇到了一个老问题: ORA-01034: ORAC ...

  6. oracle链接报错shared memory realm does not exist

    问题描述: 前两天能够正常链接,今天来了突然不能链接,原因不详. 处理方法: 连接linux进行如下操作: 1.sqlplus /nolog 2.conn / as sysdba 3.startup ...

  7. Linux Oracle碰到错误:ORA-27101: shared memory realm does not exist

    从ITPUB上摘抄并已验证 1.实例没有启动 sqlplus /nologconnect / as sysdbastartup

  8. oracle登录时shared memory realm does not exist的解决方法

    解决办法:1.用CMD进入命令行2.sqlplus /nolog 3.conn / as sysdba4.startup   然后用sqlplus进入命令  

  9. ORA-01034:ORACLE not available ORA-27101:shared memory realm does not exit

    ORA-01034:ORACLE not available ORA-27101:shared memory realm does not exit   ERROR: ORA-01034:ORACLE ...

随机推荐

  1. day10<面向对象+>

    面向对象(package关键字的概述及作用) 面向对象(包的定义及注意事项) 面向对象(带包的类编译和运行) 面向对象(不同包下类之间的访问) 面向对象(import关键字的概述和使用) 面向对象(四 ...

  2. 使用keytool生成密钥对

    1.首先要用KeyTool工具来生成私匙库:(-alias别名 –validity 3650表示10年有效) keytool -genkey -alias privatekey -keystore p ...

  3. ActiveMQ伪集群部署

    本文借鉴http://www.cnblogs.com/guozhen/p/5984915.html,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一.本文目的 介绍如何在 ...

  4. Python 调用外部命令

    python 可以使用 os 模块来调用外部的 Linux Shell 命令,常用的方法如下: os.system():结果输出在终端上,捕获不到os.popen() : 结果返回一个对象,即标准输出 ...

  5. Python 扩展知识:编程习惯

    1. 使用四个空格作为缩进而不是Tab键2. 函数名定义时第二个单词首字母大写,如 getNum,类名定义时所有单词首字母大写,如 GetNum

  6. NUC970设备驱动

    安装完WinUSB4NuVCOM_NUC970.exe后      USB0要配置成DEVICE 才可以在设备管理器中显示.

  7. NUC972学习历程之NUWRITER使用说明以及烧录模式的说明

    3.1 簡介Nu-Writer 工具能幫助使用者透過 USB ISP模式, 將Image檔案放入儲存體中, 例如:SPI Flash設備或 NAND Flash設備.3.2 驅動程式安裝Nu-Writ ...

  8. cocos2dx游戏--欢欢英雄传说--添加动作

    添加完人物之后接着给人物添加上动作.我们为hero添加4个动作:attack(由3张图片构成),walk(由2张图片构成),hit(由1张图片构成),dead(由1张图片构成):同样,为enemy添加 ...

  9. Android 使用ProgressBar实现进度条

    ProgressBar简介ProgressBar是进度条组件,通常用于向用户展示某个耗时操作完成的进度,而不让用户感觉是程序失去了响应,从而更好地提升用户界面的友好型. 课程目标(1)制定Progre ...

  10. Oracle 12C卸载图文教程

    第一步:找到自己的Oracle安装目录.我的目录是:D:\app\u01\product\12.1.0\dbhome_1\deinstall ,然后点击bat文件.出现如下等待画面.   第二步:耐心 ...