ORACLE学习笔记(一)——数据库启动(nomount)

一、nomount状态

数据库启动到nomount状态后会创建Instance,分配相应的内存区域,启动先应的后台进程。启动过程可以在告警日志文件(alert_<ORACLE_SID>.log)中查阅到,这一过程会对去参数文件,使用参数启动实例。

二、v$process视图

通过v$process视图,可以找到对应于操作系统的每一个进程信息

三、参数文件的选

spfile<ORACLE_SID>.ora -> spfile.ora -> init<ORACLE_SID>.ora

SQL> show parameter spfile
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
spfile				     string	 $ORACLE_HOME/dbs/spfile<SID>.ora

四、实例启动最小参数需求

实例启动的最小参数需求是DB_NAME。

如果不设置background_dump_dest目录(告警日志文件的存放地点)缺省位于$ORACLE_HOME/rdbms/log目录下:

SQL> show parameter background_dump
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest		     string	 /home/oracle/app/oracle/diag/r
						 dbms/orcl/orcl/trace
其它几个缺省路径地点:

SQL> show parameter dump_dest
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest		     string	 /home/oracle/app/oracle/diag/r
						 dbms/orcl/orcl/trace
core_dump_dest			     string	 /home/oracle/app/oracle/diag/r
						 dbms/orcl/orcl/cdump
user_dump_dest			     string	 /home/oracle/app/oracle/diag/r
						 dbms/orcl/orcl/trace
SQL> show parameter control_file
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time	     integer	 7
control_files			     string	 /home/oracle/app/oracle/oradat
						 a/orcl/control01.ctl, /home/or
						 acle/app/oracle/flash_recovery
						 _area/orcl/control02.ctl

五、ORACL_SID的含义

ORACLE_SID就是Oracle System IDentifier的缩写,当Oracle实例启动时,在操作系统上fork的进程就一句这个ORACLE_SID来创建

Oracle的实例是由一块共享内存区域(SGA)和一组后台进程共同组成的,而后台进程是数据库和操作系统进行交互的通道,这些进程的名称就是通过ORACLE_SID决定的。

ORACLE_SID还决定实例启动时所需参数文件的名称。

在不同的$ORACLE_HOME下,即使在同一台主机上,Oracle也能够创建相同ORACLE_SID的实例。

六、INSTANCE_NAME的含义

Oracle数据库内部存在一个初始化参数INSTANCE_NAME,用于表示数据库实例的名称,其缺省值通常就是ORACLE_SID;INSTANCE_NAME与ORACLE_SID可以不同,不同的实例也可以用于相同的INSTANCE_NAME.

在同一个ORACLE_HOME下,只要ORACLE_SID不同,数据库并不校验INSTANCE_NAME参数。

在数据库内部视图v$instance中也记录着一个INSTANCE_NAME,这个INSTANCE_NAME来自数据库实例的SID,始终和ORACLE_SID保持一致,这就可能出现数据库中这两个INSTANCE_NAME不一致的情况。

从Oracle 10g开始,参数文件中缺省不再记录INSTANCE_NAME,此时INSTANCE_NAME可以动态从系统获得。

INSTANCE_NAME除了用来标识实例名称之外,在监听器动态注册时还会用于监听器注册。监听器动态注册信息中的Instance内容就来自INSTANCE_NAME参数设置。

v$instance视图和数据库实例的生命周期相关,用于显示当前实例的状态,通过这个视图可以获得包括实例的启动时间、运行主机等重要信息。

七、DB_NAME与INSTANCE_NAME

DB_NAME代表了实例即将挂接的数据库名称,关系到具体的物理文件。通常缺省的数据库INSTANCE_NAME和DB_NAME可以设置相同(在RAC环境下,由于多个实例对应一个数据库,所以INSTANCE_NAME和DB_NAME不同)。

DB_NAME被记录在数据文件、日志文件和控制文件中。如果数据库实例启动过程中参数文件中的DB_NAME和控制文件中的数据库名称不一致,则数据库不能启动。

常见的几个结论有:

  • 一个实例可以MOUNT并打开任何数据库,但是同一时间一个实例只能打开一个数据库。
  • 一个数据库可以被一个或多个实例所MOUNT并打开(在OPS/RAC环境下,一个数据库可以被多个实例所打开)
  • 在非并行模式(OPS/RAC)下,一个数据库同时只能被一个实例加载。
DB_NAME的另外一个作用是在监听器动态注册时作为缺省服务名注册。

参数文件中的db_name和控制文件中的db_name不一致,数据库无法启动,错误提示指定的数据库名称和控制文件中记录的名称不符。

八、RMAN的缺省实例

在使用RMAN(Recovery Manager)时存在更为特殊的情况,Oracle允许在不存在参数文件的情况下启动一个实例,数据库的db_name会被缺省地命名为DUMMY。

九、小结

数据库的nomount过程实质上就是在创建实例,这个步骤只和参数文件相关。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值