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和pl/sql语句的信息

共享最近使用过的SQL语句

通过“最近最少使用”( least recently used (LRU) )算法来管理
包括两种结构:共享SQL区和共享PL/SQL区
大小由共享池(Shared Pool)的大小确定

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命令

  1. sqlplus /nolog
  2. conn USER/PASSWORD as sysdba
  1. sqlplus /nolog
  2. conn USER/PASSWORD as sysdba

截图:

 Step two:创建一个Oracle实例(非安装阶段)
sqlplus命令

  1. startup nomount
  1. startup nomount

截图:

       如上所示:NONOUNT选项仅仅创建一个Oracle实例。读取init.ora初始化参数文件、启动后台进程、初始化系统全局区(SGA)。Init.ora文件定义了实例的配置,包括内存结构的大小和启动后台进程的数量和类型等。当实例打开后,系统将显示一个SGA内存结构和大小的列表,如上截图所示

Step three: 由实例安装数据库(安装阶段)
命令:

  1. alter database mount;
  1. alter database mount;

截图:

      该命令创建实例并且安装数据库,但没有打开数据库。Oracle系统读取控制文件中关于数据文件和重作日志文件的内容,但并不打开该文件。

Step four:打开数据库(打开阶段)

命令:

alter database open;

截图:

该命令完成创建实例、安装实例和打开数据库的所有三个步骤。此时数据库使数据文件和重作日志文件在线,通常还会请求一个或者是多个回滚段。这时系统除了可以看到前面Startup Mount方式下的所有提示外,还会给出一个"数据库已经打开"的提示。此时,数据库系统处于正常工作状态,可以接受用户请求。

Note that:

当然可以用用一条命令打开

  1. startup
  1. 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数据库,管理员登录,启动

  1. sqlplus /nolog
  2. conn USER/PASSWORD as sysdba
  3. startup
    1. sqlplus /nolog
    2. conn USER/PASSWORD as sysdba
    3. startup

Oracle:shared memory realm does not exist的更多相关文章

  1. 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 ...

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

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

  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. 参数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标准命名规则 ...

  6. shared memory realm does not exist

    有天启动ORACLE,碰到如下问题 提示ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist 解决 ...

  7. ORA-27101:shared memory realm does not exist的问题

    ORA-27101:shared memory realm does not exist的问题 登陆SQLPlus时出现: ORA-01034:ORACLE not avaiable ORA-2710 ...

  8. 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 ...

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

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

随机推荐

  1. 设备树(Device Tree)

    设备树介绍: 设备树是一个描述设备硬件资源的文件,该文件是由节点组成的树形结构.如下: / { node1 { a-string-property = "A string"; a- ...

  2. 根据不同浏览器使用不同的css文件

    代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...

  3. Java Drp项目实战—— 环境搭建

    概要 我们要開始一个关于Java项目的开发,那么我们就须要搭建一个关于Java开发的环境,那么搭建一个Java开发环境,都须要些什么东东,又有些什么注意事项呢. 过程 我先将我搭建Java环境的软件和 ...

  4. jquery ajax方式直接提交整个表单

    $.ajax({ type: "POST", url: url, data: $('#form1').serialize(), success: function(msg){ al ...

  5. WebApi-如何实现接口加密

    方法一 加一个访问token.例如你的api地址是http://www.example.com/api.php需要接受的参数有a,b,c三个那么可以加一个验证token(通过约定的key加密生成). ...

  6. CSDN日报20170404 ——《不不过写代码,而是完毕作品》

    [程序人生]不不过写代码,而是完毕作品 作者:瞬息之间 近来有人问起,如今似乎真得变成了码农,日出而作,日落而息.整天不停的写代码,开发业务需求,周而复始,日子长了,感到厌倦. 有时回忆,应该在过去的 ...

  7. eclipse 发布签名APK图文讲解

    eclipse 发布 签名android 程序 1 在项目上右键 export 2 export android application 3 第一次发布 要创建一个新的keystore 4 填写key ...

  8. TP框架中如何使用SESSION限制登录?

    TP框架中如何使用SESSION限制登录? 之前总是被问题今天才明白,最高效的来做页面访问限制问题. OOP思想中的继承特性,实现验证,是否已经登录,不必每个页面都进行判断. 实现如下: 继承Cont ...

  9. vim 查找和替换命令 替换/n和\n

    一. 字符串的查找 1. vim 中用 / 和 ? 来查找字符串,两者的区别是: /string 会高亮显示光标后匹配的第一个字符串,回车后光标移到该字符串的第一个字母: ?string 会高亮显示光 ...

  10. ubuntu安装五笔输入法(ibus-table-wubi)

    IBus-Table是为基于码表的输入法即所谓的形码开发的输入法框架,常见的形码有郑码.五笔.仓颉.二笔等.   安装如下: # apt-get install ibus-table-wubi   开 ...