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

如上图所示:Oracle服务器的组件结构,Oracle服务器可以看做由两部分组成:Oracle实例和Oracle数据库,上图被加粗直线分为两个部分,直线上半部分表示Oracle实例,而直线之下表示Oracle数据库。如Oracle Start Up 1中所说,Oracle数据库在物理上可以看做是由不同文件组成的文件系统,从逻辑上可以看做是一个由TableSpace、Segment、Extent、Blocks组成的四维结构;
关于Oracle实例:
是访问Oracle数据库的一种方法,一个Oracle实例只可以打开一个Oracle数据库;
由内存和后台进程组成;
存在于内存中,一个数据库对应一个共享的内存区,共享的内存区被Oracle后台进程所共享;
建立与客户端的连接(连接到Oracle服务器实质上与Oracle服务器的Oracle实例建立连接)
从以下几个方面分解上图:
(1)Oracle两大进程

用户进程:
在客户机内存上运行的程序,用来访问Oracle数据库;
与数据库实例建立连接,不能直接与数据库直接连接;
如在客户机上运行的 SQL PLUS,企业管理器;
用户进程向服务进程提出操作请求;
服务器进程:
一个直接与数据库服务器对话的进程;
响应用户进程提出的操作请求,并返回结果;
(2) Oracle的主要内存结构包括两个部分
程序全局区Program Global Area (PGA): 当服务器进程启动的时候分配。
每个用户连接到Oracle数据库的内存区域;
当进程建立的时候单独分配;
当进程终止的时候释放;
只能用于一个进程,是私有的,不能够共享
系统全局区System Global Area (SGA): 在实例启动的时候分配, 是数据库实例的基本组成部分,从结构框架图中分离出SGA部分如下图:

SGA包括几个内存结构:
共享池(Shared Pool)
数据库缓冲区快速缓存(Database Buffer Cache)
重做日志缓冲区(Redo Log Buffer )
大池(Large Pool)
Java池(Java Pool)
其它结构 (锁(lock)、锁存管理 (latch)、统计数据(statistical data))
SGA几个特性:
动态分配
由SGA_MAX_SIZE确定大小
有时称为共享全局区域(Shared Global Area)
在SGA内以内存颗粒( granules )进行分配
SGA各内存部分功能键下表:
|
Library Cache |
库快速缓冲区 共享最近使用过的SQL语句 通过“最近最少使用”( least recently used (LRU) )算法来管理 |
| Data Dictionary Cache | 数据字典缓冲区 数据库中最近使用过的定义的一个集合 包括数据库文件、表、索引、列、用户、权限、和其它对象的信息 在解析阶段,服务器进程寻找数据字典信息来解析对象的名字和访问权限 把数据字典的信息加载到内存里面,来提高查询和DML(Data Manipulation Language)数据操纵语言语句的反应时间 大小由共享池(Shared Pool)的大小确定 |
| Database Buffer Cache | 数据库缓冲区快速缓存 存储从数据文件提取出来的数据块的一个拷贝 当提取数据或者修改数据的时候,能很大的提高性能 通过LRU(Least Recently Used )算法来管理 DB_BLOCK_SIZE决定了主数据块的大小 |
| Redo Log Buffer | 重做日志缓冲区 记录了对数据块的所有改变 主要的目的是为了恢复数据库 改变被记录在成为重做目录的对象里面(redo entries) 重做目录(Redo entries)包含重建或者重做改变的信息 大小通过LOG_BUFFER来定义 |
| Java Pool | Java池 用于解析java命令 在安装和使用java的时候需要使用 大小确定:JAVA_POOL_SIZE |
| Large Pool | 大池 SGA中可选的一块内存区域 减少了共享池(Shared Pool)的负担 |
(3)Oracle实例的后台进程

感觉挺复杂,将在以后做专门说明;
3.Oracle数据库的启动
要启动和关闭数据库,必须要以具有Oracle 管理员权限的用户登陆,通常也就是以具有SYSDBA权限的用户登陆
启动一个数据库需要三个步骤:
(1)、 创建一个Oracle实例(非安装阶段)
(2)、 由实例安装数据库(安装阶段)
(3)、 打开数据库(打开阶段)
下面从实验的角度来实践这三个阶段:
Step one:以具有Oracle 管理员权限的用户登陆
sqlplus命令
- sqlplus /nolog
- conn USER/PASSWORD as sysdba
- sqlplus /nolog
- conn USER/PASSWORD as sysdba
截图:
Step two:创建一个Oracle实例(非安装阶段)
sqlplus命令
- startup nomount
- startup nomount
截图:
如上所示:NONOUNT选项仅仅创建一个Oracle实例。读取init.ora初始化参数文件、启动后台进程、初始化系统全局区(SGA)。Init.ora文件定义了实例的配置,包括内存结构的大小和启动后台进程的数量和类型等。当实例打开后,系统将显示一个SGA内存结构和大小的列表,如上截图所示
Step three: 由实例安装数据库(安装阶段)
命令:
- alter database mount;
- alter database mount;
截图:
该命令创建实例并且安装数据库,但没有打开数据库。Oracle系统读取控制文件中关于数据文件和重作日志文件的内容,但并不打开该文件。
Step four:打开数据库(打开阶段)
命令:
截图:
该命令完成创建实例、安装实例和打开数据库的所有三个步骤。此时数据库使数据文件和重作日志文件在线,通常还会请求一个或者是多个回滚段。这时系统除了可以看到前面Startup Mount方式下的所有提示外,还会给出一个"数据库已经打开"的提示。此时,数据库系统处于正常工作状态,可以接受用户请求。
Note that:
当然可以用用一条命令打开
- startup
- startup
给出截图:
上图中红色线分开的三部分表示三个启动阶段
4,解决一个问题
本文一开始提出问题,这里做一解决,为什么会出现那个问题了是因为Oracle数据库没有被启动,解决的方法就是如上面3所示操作打开数据库;
上述问题表现最直接的一个现象:查看任务管理器下oracle.exe所占内存,当oracle.exe所占内存为几十兆说明Oracle数据库没有启动,正常oracle.exe所占内存如下:
现在还原错误:关闭数据库后连接数据库,查看oracle.exe所占内存
查看内存:
与正常启动时相差比价大,所以总结一下解决“shared memory realm does not exist”方法:
(1)任务管理器中查看oracle.exe所占内存,当oracle.exe所占内存仅为几十兆,说明问题是数据库没有启动
(2)启动Oracle数据库,管理员登录,启动
- sqlplus /nolog
- conn USER/PASSWORD as sysdba
- startup
- sqlplus /nolog
- conn USER/PASSWORD as sysdba
- startup
Oracle:shared memory realm does not exist的更多相关文章
- oracle连接数据库报错:ORA-01034: ORACLE not available(Oracle 不存在),ORA-27101: shared memory realm does not exist
花一天半的时间解决客户端连接服务端的oracle数据库,无法连接问题.ORA-01034: ORACLE not available(Oracle 不存在),ORA-27101: shared mem ...
- ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist
Oracle 设置默认数据库 如果我们的服务器上或者电脑上安装了多个数据库,当我们使用sqlplus时如果为指定数据库时登录到的是哪一个数据库呢?今天遇到了一个老问题: ORA-01034: ORAC ...
- 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 ...
- 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 苦咖啡 他的博客中一篇文章完美的解 ...
- 参数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标准命名规则 ...
- shared memory realm does not exist
有天启动ORACLE,碰到如下问题 提示ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist 解决 ...
- ORA-27101:shared memory realm does not exist的问题
ORA-27101:shared memory realm does not exist的问题 登陆SQLPlus时出现: ORA-01034:ORACLE not avaiable ORA-2710 ...
- ORA-27101: shared memory realm does not exist
Oracle Error Tips by Burleson Consulting Oracle docs note this about ORA-27101: ORA-27101: shared me ...
- Linux Oracle碰到错误:ORA-27101: shared memory realm does not exist
从ITPUB上摘抄并已验证 1.实例没有启动 sqlplus /nologconnect / as sysdbastartup
随机推荐
- VMware虚拟机的磁盘文件共享给物理机
启动VMware程序 → 选中某虚拟主机('关闭'状态) → 菜单栏'虚拟机(M)' → '设置(S)' 或直接"编辑虚拟机设置". 2 在“硬件”标签下点击“硬盘(SCSI)”→ ...
- Java Web学习总结-文件下载
参考资料:https://www.cnblogs.com/xdp-gacl/p/4200090.html 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件 ...
- WeifenLuo.WinFormsUI.Docking添加关闭功能
/****************************************************************** * 创建人:HTL * 创建时间:2014-7-8 15:37: ...
- vi命令整理
vi命令整理 u 撤销上一次操作 ctrl+r 恢复上一次操作 : 跳转至第1行 :$ 跳转至最后一行 ctrl+f 向文章末尾翻页 ctrl+b 向文章开始翻页 yy 复制一行 p 粘贴刚刚复制第一 ...
- tasklist、taskkill、taskmgr
1.tasklist 列出所有的进程,使用tasklist |findstr xxx , 选取进程 2.taskkill 杀掉进程,使用 taskkill /f /pid 1235 3.taskmg ...
- PHP - AJAX 与 MySQL
PHP - AJAX 与 MySQL AJAX 可用来与数据库进行交互式通信. AJAX 数据库实例 下面的实例将演示网页如何通过 AJAX 从数据库读取信息: 本教程使用到的 Websites 表 ...
- unix 网络编程 第七章
1 getsockopt和setsockopt函数 套接字选项粗分为两大基本类型:一是启用或禁止某个特性的二元选项,二是取得并返回特定值的选项,参数都是以指针形式传入的. 2 套接字状 ...
- Tomcat 关闭时报错
最近tomcat走普通的关闭方式无法正常关闭,会报一些Error,用的是Tomcat7,据说是Tomcat7在关闭的时候加了一些检查线程泄漏内存泄露的东西 总结起来,在我项目中有这么几个原因会导致关闭 ...
- Appium(JAVA)Windows 7系统搭建及示例运行
Appium(JAVA)Windows 7系统搭建及示例运行 分类: Appium 2014-11-14 17:44 4323人阅读 评论(2) 收藏 举报 1.搭建Android环境 http:// ...
- eclipse使用git提交本地项目,提交至远程github上
准备工作: 目的:eclipse使用git提交本地项目,提交至远程github上 eclipse版本:eclipse4.5 64位 jdk版本:jdk-1.7 64位 项目类型:maven web项 ...