Oracle database启动过程分析
实例跟数据库的区别
实例(instance)是内存中的一块区域和一组后台进程的集合。它的作用是维护数据库文件的。而数据库(database)则是指存放数据的数据库文件。它是一系列格式化的数据的集合。它只有挂载到实例上,才能被访问,维护。
Oracle启动过程
要启动一个oracle数据库,首先需要启动一个实例,然后把数据库文件挂载到这个实例,最后把数据库设置成打开模式。这样就完成了一个数据库的启动过程。
首先,oracle根据环境变量中的ORACLE_SID确定要启动哪一个数据库,然后在$ORACLE_HOME/database/目录下找到初始化参数文件。根据初始化参数文件中的内容,分配系统内存,创建后台进程。这样实例就启动完成了。
然后根据参数文件中指定的控制文件路径,找到要挂载的数据库的控制文件,控制文件是个二进制文件,不可进行直接读写。实例根据控制文件内容,检查加载数据库文件,重做日志文件,这样,数据库就挂载到实例上了。最后将数据库至于打开状态。
从上面的过程可以看出,两个文件是非常重要的,他就是
初始化参数文件跟控制文件。初始化参数文件
原本oracle使用的pfile文件,是个文本文件。可直接用文件编辑器进行修改。后来,oracle在启动参数文件这部分引入了spfile文件,这是个二进制文件,不可以直接修改。但同时oracle也支持以文本格式的pfile文件为参数进行启动。启动之后可以根据现有的pfile文件对spfile文件进行重建。
以pfile参数文件启动的命令为
Startup nomount pfile=’/u01/initoracle.ora’
即使用pfile=‘’参数对启动参数文件进行指定。
启动实例后,可用
Create spfile from pfile=‘/u01/initoracle.ora’
对spfile文件进行重建。
当数据库的启动参数文件丢失的时候,可以直接把其他数据库的启动参数文件拷贝过来,然后以文本打开,对其中的参数进行调整,就可以直接使用了。
参数文件主要是用来启动实例的。它里面的主要参数主要设置了实例内存区各区域的大小。参数文件中另一个比较重要的参数就是控制文件位置。
当oracle实例启动后,若要挂载数据库,可使用命令
Alter database mount
命令对数据库文件进行挂载。这个命令主要是根据参数文件中的控制文件路径找到控制文件,然后根据控制文件的内容,把数据库文件,重做日志文件挂载到实例上。
控制文件
是个二进制文件,它里面主要记录了数据库文件的路径以及重做日志文件的路径,以及scn号等信息。因为这个文件很重要,一般数据库中留有这个文件的2-3个备份,并且数据库管理员应该物理的将这个文件备份至不同磁盘,甚至不同主机上。
一般参数文件中的控制文件路径会不止一个,当挂载数据库的时候,实例会检查所有路径下的参数文件的有效性并核对各个参数文件内容是否一致,若内容有差别或者某个路径下的参数文件失效,则实例会报错,并无法挂载数据库。
若只是数据库控制文件众多备份中的一个损坏了,那直接从备份的控制文件拷贝过来,并更改好文件名就可以直接使用了。
对于控制文件的备份还有一种方式,就是登陆数据库,使用命令
Alter database backup controlfile to trace;
这条命令就经控制文件中的内容备份到了trace文件中,可通过查看相应的trc文件来进行控制文件的恢复。当然,alert_log中会记录此备份语句的执行,并记录控制文件备份的trc文件的名字。
此命令对应的trace文件完整的告诉了你如何利用此文件中的信息进行控制文件恢复。首先包括两种方式,resetlog和noresetlog。Resetlog就是重置日志,当重做日志部分不可用或全部不可用的时候使用此方法。Nosetlog就是不重置日志,当日志文件全部可用的时候使用此选项托福答案 www.tfjy386.com
当然,如果控制文件完全丢失也没有备份,那么只有利用其它数据库中的trace文件中的信息,做一定的修改,然后重建控制文件。
Oracle database启动过程分析的更多相关文章
- Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)
ORACLE集群概念和原理(二) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之缓存融合技术和主要后台进程(四)
缓存融合技术和主要后台进程(四) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...
- Oracle Database 11g Express Editon介绍及安装
一.Oracle Database 11g Express版本介绍 公司项目开发中,使用的数据库是Oracle 10g和MySQL 5.5,最新因为开发需要,需要从后台读取一些数据.使用的客户端是PL ...
- Oracle Database Server 'TNS Listener'远程数据投毒漏洞(CVE-2012-1675)解决
环境:Windows 2008 R2 + Oracle 10.2.0.3 应用最新bundle patch后,扫描依然报出漏洞 Oracle Database Server 'TNS Listener ...
- Oracle Database 11g Release 2(11.2.0.3.0) RAC On Redhat Linux 5.8 Using Vmware Workstation 9.0
一,简介 二,配置虚拟机 1,创建虚拟机 (1)添加三块儿网卡: 主节点 二节点 eth0: 公网 192.168.1.20/24 NAT eth0: 公网 192.168.1 ...
- 【转】Oracle Database PSU/CPU
转自: http://www.cnblogs.com/ebs-blog/archive/2011/07/28/2167232.html 1. 什么是PSU/CPU?CPU: Critical Patc ...
- Linux环境下Oracle数据库启动停止命令
切换root至oracle数据库账号 su – oracle 查看数据库服务状态: ps -ef |grep oracle netstat –an|grep 1521 查看数据库监听状态: [orac ...
- Oracle Database 11g Express Edition学习笔记
修改字符集 使用用户system,通过sqlplus程序连接到Oracle数据库,输入以下命令,查看字符集: SQL> select userenv('language') from dual; ...
- Oracle Database 11g Express Edition 使用小结(windows)
如何启动oraclewindows系统服务中有一个服务叫:[OracleService[SID]]SID是你安装oracle xe时候的实例名,如果你没有改默认的是[XE], OracleServic ...
随机推荐
- HDOJ 2072 单词数
Problem Description lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题. ...
- selenium webdriver python 元素定位
总结 定位查找时,返回查找到的第一个match的元素.如果找不到,则 raise NoSuchElementException 单个元素定位: find_element_by_idfind_e ...
- C#中DataTable行转列示例
将下面表(1)格式的数据转换为表(2)格式的数据.很明显,这是一个行转列的要求,本想在数据库中行转列,因为在数据库中行转列是比较简单的,方法可以参考本站SQLServer中(行列转换)行转列及列转行且 ...
- powershell利用winform批量执行tsql语句
#加载.net的winform模块 [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") $app= ...
- 【转】在Eclipse环境下配置Servlet开发环境
配置这个真心坑···浪费我一下午时间,而且去网上找了一圈资料发现都不靠谱呀= = 于是自己写一个,防止忘记了 一.配置前准备 你需要下载三个东西 Eclipse J2EE:http://www.ecl ...
- C# Dictionary 字典
C#中的Dictionary字典类介绍 关键字:C# Dictionary 字典 作者:txw1958原文:http://www.cnblogs.com/txw1958/archive/2012/ ...
- android窗体动画:activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失的动画实现
在IOS系统里,我们打开app都是有启动动画的,这样子在打开一个新窗体,用户感觉有个过渡动画,体验效果很好,不会觉得很突然就冒出一个窗体,下面就实现一个android 的activity启动和关闭动画 ...
- java接口与抽象类的区别
接口可以是标志接口,里面没有任何常量和方法. 抽象类不一定必须有抽象方法,也可也没有方法,但含抽象方法的类必须被声明为抽象类. 在抽象层次结构中,Java接口在最上面,然后紧跟着抽象类,然后是一般类. ...
- 关于虚拟继承类的大小问题探索,VC++ 和 G++ 结果是有区别的
昨天笔试遇到个 关于类占用的空间大小的问题,以前没怎么重视,回来做个试验,还真发现了问题,以后各位笔试考官门,出题时请注明是用什么编译器. vc6/vc8 cl 和 Dev-C 的g++ 来做的测试: ...
- [转] gdb的基本工作原理
转自: http://www.spongeliu.com/linux/howgdbwork/ 还是面某M的时候,面试官问我:“用过gdb么?” 答:“用过,调了两年bug了”.“那好,给我解释下gdb ...