OCP学习笔记之数据库及实例的启动

本文详细介绍了Oracle数据库与实例的概念,包括实例的内存结构SGA和后台进程,以及数据库从关闭到打开的shutdown、nomount、mount、open四个状态。同时,文章还列举并解析了启动过程中可能遇到的错误,如ORA-00845、ORA-01078、LRM-00109和ORA-01102,并提供了相应的解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数据库与实例的概念

ORACLE数据库服务器至少包含一个数据库和一个实例,因为实例和数据库密切相连所以有时候,数据库这个术语有时既指实例有时也指数据库。
实例由内存结构(SGA)和ORACLE后台进程组成,而数据库时创建在磁盘上的数据文件,每个运行的ORACLE数据库必须有一个oracle实例相连,数据库可以有单实例配置(数据库和实例一一对应),也可以存在一对多的关系(ORACLE RAC)
但是无论是单实例还是RAC ,一个实例只能与一个数据相连

二、oracle实例

当我们安装完ORACLE之后,数据库从关闭到打开的状态会经历一下过程

  • shutdown:关闭
  • nomount:启动实例
    但是没有与某个数据库相关联,用sysdba权限可以进行数据库创建,某些备份操作。
    在这个阶段数据库会搜索服务器的参数文件,查看参数文件位置
SQL> show parameter spfile;

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
spfile                   string  /u01/app/oracle/product/11.2.0
                         /db_1/dbs/spfileocl.ora
  • mount:启动实例,与数据库关联

读取控制文件来与数据关联,此时数据库对用户来说是关闭的,不能访问数据,但是用sysdba这个权限可以进行相关的操作设置比如归档、恢复。
这个过程数据库会加载数据库控制文件,查看控制文件位置

SQL> select * from v$controlfile;

STATUS
-------
NAME
--------------------------------------------------------------------------------
IS_ BLOCK_SIZE FILE_SIZE_BLKS
--- ---------- --------------

/u01/app/oracle/oradata/ocl/control01.ctl
NO   16384        594


/u01/app/oracle/fast_recovery_area/ocl/control02.ctl
NO   16384        594

STATUS
-------
NAME
--------------------------------------------------------------------------------
IS_ BLOCK_SIZE FILE_SIZE_BLKS
--- ---------- --------------
  • open:完全打开

此时授权的用户可以访问数据库包含的数据文件。
这时候就是读取数据文件和日志文件。查看数据文件和日志文件。

SQL>  select FILE_NAME from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/ocl/users01.dbf
/u01/app/oracle/oradata/ocl/undotbs01.dbf
/u01/app/oracle/oradata/ocl/sysaux01.dbf
/u01/app/oracle/oradata/ocl/system01.dbf
/u01/app/oracle/oradata/ocl/example01.dbf

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
IS_
---
     3     ONLINE
/u01/app/oracle/oradata/ocl/redo03.log
NO

     2     ONLINE
/u01/app/oracle/oradata/ocl/redo02.log
NO

三、启动时常见错误

  • ORA-00845
    这个错误是由共享内存不主导致的,只要更改共享内存/dev/shm大小,重新挂载就可以了
[oracle@localhost ~]$ vim /etc/fstab 

LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults,size=1G       0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
LABEL=SWAP-sda3         swap                    swap    defaults        0 0
/dev/cdrom              /mnt                    iso9660 defaults        0 0
~ 
[root@localhost~]# mount -o remount,size=16G /dev/shm                                                                          
  • ORA-01078和LRM-00109
[oracle@localhost~]$ sqlplus / as sysdba  

SQL*Plus: Release 11.2.0.4.0 Production on Sat Jul 16 01:38:13 2016  

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

Connected to an idle instance. 
SQL> startup  
ORA-01078: failure in processing system parameters  
LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/db/dbs/initocl.ora'  

这个问题就是在数据库启动时缺少参数文件,无法进入mount阶段,解决方法,将/u01/app/oracle/admin/ocl/pfile下文件复制到/u01/app/oracle/product/11.2.0/db/dbs/目录下,改名

[oracle@localhost pfile]$ pwd
/u01/app/oracle/admin/ocl/pfile
[oracle@localhost pfile]$ ll
总计 4
-rw-r----- 1 oracle oinstall 2190 10-21 14:49 init.ora.9212017145844
[oracle@localhost pfile]$ cp init.ora.9212017145844  /u01/app/oracle/product/11.2.0/db/dbs/initocl.ora
  • ORA-01102
    导致这个问题有以下原因:
    一、在HA系统中,已经有其他节点启动了实例,将双机共享的资源(如磁盘阵列上的裸设备)占用了;
    二、说明Oracle被异常关闭时,有资源没有被释放,一般有以下几种可能,
    1、Oracle的共享内存段或信号量没有被释放;
    2、Oracle的后台进程(如SMON、PMON、DBWn等)没有被关闭;
    3、用于锁内存的文件lk和sgadef.dbf文件没有被删除。

    具体解决法贴个链接,这篇博客对这个问题分析的挺详细的
    http://blog.itpub.net/20674423/viewspace-711545

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值