看oracle入门书,其中一句话说,使用startup nomount 命令启动例程,不可以和mount open 和exclusive一起使用,这个命令适用于建立数据库或是维护数据库时使用。

于是查了一下,为什么不能同时使用,以及他们之间的区别。

以下为转载:

nomount:读初始化参数文件,启动实例。
mount:打开控制文件
open: 打开数据文件,日志文件

简单来说,nomount是用来创建数据库的状态,在此情况下可以执行create  database....  
        mount是用来维护数据库的,比如数据库出现了问题,数据文件被误删除,就无法open,这时可在mount状态下将数据文件从数据库中去除。  
        open是数据库可以对全体用户提供服务了。

详细介绍:

1、startup nomount

  非安装启动,这种方式启动下可执行:重建控制文件、重建数据库

  读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。

  2、startup mount dbname

  安装启动,这种方式启动下可执行:

  数据库日志归档、

  数据库介质恢复、

  使数据文件联机或脱机,

  重新定位数据文件、重做日志文件。

  执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,

  但此时不对数据文件和日志文件进行校验检查。

  3、startup open dbname

  先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,

  这种方式下可访问数据库中的数据。

  4、startup,等于以下三个命令

  startup nomount

  alter database mount

  alter database open

数据库启动的三个台阶nomount,mount,open   目的是明白细化启动数据库的三个步骤
   启动数据库到nomount状态的条件如下。如果你是非windows OS就没有注册表,而有环境变量服务中的OracleService必须启动
服务的名称和注册表中的oracle_sid相匹配
存在正确的密码文件和参数文件
有足够的内存
参数文件中描述的路径必须存在
数据库产品安装正确

conn sys/oracle as sysdba
shtudown abort;
startup nomount;
select instance_name,status from v$instance;
启动数据库到第一个台阶nomount状态做了如下的工作
1.读参数文件
2.分配内存
3.启动后台进程
4.初始化部分v$视图

将数据库带到mount状态
select value from v$spparameter where name='control_files';
alter database mount;
mount数据库的过程是读参数文件中描述的控制文件,校验控制文件的正确性,将控制文件的内容读入到内存中,mounu是挂接的意思,是操作系统中的概念。一旦mount之后,就是将一个没有意义的实例和一个数据库发生了联系。因为实例是空壳。没有任何数据库和该实例发生关系,我们可以理解为实例是水泵,放到哪个水塘里就会抽取哪里的数据,实例是通用的。mount的意思是将一个通用的水泵放入到一个指定的水塘。mount是读控制文件,控制文件中有数据文件和日志文件的信息。
select instance_name,status from v$instance;

打开数据库
alter database open;
读控制文件中描述的数据文件
验证文件的一致性,如果不一致,使用日志文件将数据库文件恢复到一致的状态。
数据库open后,普通用户才可以访问数据库
用户的表才为可见

只读方式open数据库
startup mount;
alter database open read only;
select open_mode from v$database;
默认的open方式为read write
想改read only为read write必须重新启动数据库
我们现在回想一下数据库启动的三个台阶,我们先读的是参数文件,参数文件可以由我们来编写。读完参数文件后又读了控制文件,控制文件中描述了数据文件和日志文件的信息,如果控制文件丢失了我们可以重新建立,最后是读数据文件。数据文件里才存放了我们的数据。数据库将启动分为三个台阶,目的是我们可以准确的知道哪里有问题,迅速排除。有点象老拖木钎,大头的在后面。由最开始的一个1K的参数文件,最后到几个 T的大型数据库。当我们只打startup而不加任何参数的时候,默认是到open,等于startup open;

我们从屏幕显示的结果可以清楚的看出,有三个台阶。
还有一个命令是startup force强制启动数据库,等于强制停止数据库再启动数据库。

转载:http://hi.baidu.com/mecss/item/1fb3c949299a7392823ae125

oracle startup mount nomount 区别的更多相关文章

  1. oracle startup startup nomount startup mount 的区别

    startup nomount选项启动实例,但不安装 数据库.当数据库以这个模式启动时,参数文件被读取:后台进程和内存结构被启动:但它们不被附加或与数据库的磁盘结构进行通信.当实例处于这个状态时sta ...

  2. oracle 的 startup,startup mount,startup nomount之间的区别

    startup,startup mount,startup nomount之间的区别   startup nomount选项:(读初始化参数文件,启动实例) startup nomount选项启动实例 ...

  3. Oracle启动中,startup nomount、 startup mount 有什么差别?

    Oracle启动中,startup nomount. startup mount 有什么差别? 解答: startup nomount:启动实例,读取参数文件,分配内存空间,启动后台进程,打开跟踪文件 ...

  4. oracle与sqlserver部分区别

    oracle和sqlserver的区别:1,执行修改操作要接commit,不然数据仅仅只是查看,并不是提交数据2,oracle不能使用select 字段 这种查看方式查看数据:3,oracle存储过程 ...

  5. Oracle nvchar2和varchar2区别分析

    Oracle nvchar2和varchar2区别分析: [注意]VARCHAR2是Oracle提供的特定数据类型,Oracle可以保证VARCHAR2在任何版本中该数据类型都可以向上和向下兼容.VA ...

  6. Oracle primary,unique,foreign 区别,Hibernate 关联映射

    Oracle primary,unique,foreign 区别 转:http://www.cnblogs.com/henw/archive/2012/08/15/2639510.html NOT N ...

  7. Oracle/Mysql/SqlServer函数区别

    mysql日期和时间格式转换 Linux scp 使用详解 Oracle/Mysql/SqlServer函数区别 2011-07-01 12:34:36|  分类: Mysql技术 |  标签:mys ...

  8. oracle 10g 11g 12c区别

    oracle 10g 11g 12c区别

  9. 关系和非关系型数据库区别(以及oracle和mysql的区别)

    一.关系型数据库 关系型数据库,是指采用了关系模型来组织数据的数据库.    关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐 ...

随机推荐

  1. Linux:运行级别,root密码重置,救援模式,安装图形化界面

    运行级别,root密码重置,救援模式,安装图形界面 运行级别 1.查看当前系统的运行级别 runlevel 2.认识各个运行级别以及开机自启运行级别 Linux系统运行级别共7个执行 vi /etc/ ...

  2. Linux:expand命令详解

    expand 用于将文件的制表符[TAB]转换为空格,将结果显示到标准输出设备 语法 expand(选项)(file) 选项 -t<数字>:指定制表符所代表的空白字符的个数,而不使用默认的 ...

  3. macOS 下安装SDKMAN 软件开发工具包管理器

    SDKMAN 软件开发工具包管理器的安装非常简单,只需要打开终端,执行: $ curl -s "https://get.sdkman.io" | bash 就OK了,输出类似如下: ...

  4. Java多线程编程实战指南(核心篇)读书笔记(三)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76686044冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

  5. 我也说说Emacs吧(1) - Emacs和Vi我们都学

    好友幻神的<Emacs之魂>正在火热连载中,群里人起哄要给他捧捧场. 作为一个学习Emacs屡败屡战的用户,这个场还是值得捧一下的.至少我是买了HHKB键盘的... 从我的键盘说起 - 有 ...

  6. import 路径

    例子: import sys sys.path.append("/home/wang/Downloads/caffe-master/python") import caffe

  7. 【集成学习】lightgbm使用案例

    github地址 #!/usr/bin/env python2 # -*- coding: utf-8 -*- """ Created on Sat Mar 31 21: ...

  8. 将 async/await 异步代码转换为安全的不会死锁的同步代码

    在 async/await 异步模型(即 TAP Task-based Asynchronous Pattern)出现以前,有大量的同步代码存在于代码库中,以至于这些代码全部迁移到 async/awa ...

  9. 接口测试框架——第四篇-url、excel内容等

    到现在为止,发送邮件(email_module).读excel(excel_module).发送requests(requests_module).常量(setting)我们都已经完成了,看看第一篇中 ...

  10. VS2013下的64位与32位程序配置

    VS2013下的64位与32位程序配置   在Windows 7 64bit和Visual Studio 2013下生成64位程序. 新建一个Visual Studio Win32 Console项目 ...