数据库启动的三个台阶nomount,mount,open(转载)

摘要:
目的是了解详细数据库启动的三个步骤。将数据库启动到nomount状态的条件如下。一旦装载,一个无意义的实例就会链接到数据库。安装是指将普通水泵放入指定的池塘。Mount是一个读取控制文件,包含有关数据文件和日志文件的信息。数据库将启动分为三个步骤,这样我们就可以准确地知道问题所在,并快速消除它。完成任何活动事务后,将以与SHUTDOWNIMMEDIATE相同的方式关闭数据库。

目的是明白细化启动数据库的三个步骤
启动数据库到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强制启动数据库,等于强制停止数据库再启动数据库。

force mount就等于是强制关闭数据库,然后将数据库启动到mount状态。

还有一个命令restricted为受限模式,当startup restricted以受限模式打开数据库后,只有具有restricted session 权限或DBA角色的用户可以访问数据库,当执行数据库结构维护或导出导入数据时为了禁止普通用户访问数据库可以使用受限模式启动数据库。

 

启动一个数据库需要三个步骤:

1、 创建一个Oracle实例(非安装阶段)

2、 由实例安装数据库(安装阶段)

3、 打开数据库(打开阶段)

第一步:STARTUP NOMOUNT

NOMOUNT选项仅仅创建一个Oracle实例。

第二步:STARTUP MOUNT

该命令创建实例并且安装数据库,但没有打开数据库。

第三步:STARTUP

该命令完成创建实例、安装实例和打开数据库的任何三个步骤。

数据库的关闭

1、SHUTDOWN NORMAL

发出该命令后,任何新的连接都将再不允许连接到数据库。在数据库关闭之前,Oracle将等待现在连接的任何用户都从数据库中退出后才开始关闭数据库。采用这种方式关闭数据库,在下一次启动时无需进行任何的实例恢复。但需要注意一点的是,采用这种方式,也许关闭一个数据库需要几天时间,也许更长。

 

2、SHUTDOWN IMMEDIATE

 

这是我们常用的一种关闭数据库的方式,想很快地关闭数据库,但又想让数据库干净的关闭,常采用这种方式。

 

当前正在被Oracle处理的SQL语句立即中断,系统中任何没有提交的事务全部回滚。假如系统中存在一个很长的未提交的事务,采用这种方式关闭数据库也需要一段时间(该事务回滚时间)。系统不等待连接到数据库的任何用户退出系统,强行回滚当前任何的活动事务,然后断开任何的连接用户。

 

3、SHUTDOWN TRANSACTIONAL

 

该选项仅在Oracle 8i后才能够使用。该命令常用来计划关闭数据库,他使当前连接到系统且正在活动的事务执行完毕,运行该命令后,任何新的连接和事务都是不允许的。在任何活动的事务完成后,数据库将和SHUTDOWN IMMEDIATE同样的方式关闭数据库。

 

4、SHUTDOWN ABORT

 

这是关闭数据库的最后一招,也是在没有任何办法关闭数据库的情况下才不得不采用的方式,一般不要采用。假如下列情况出现时能够考虑采用这种方式关闭数据库。

 

 1)数据库处于一种非正常工作状态,不能用shutdown normal或shutdown immediate这样的命令关闭数据库;

 

 2)需要立即关闭数据库;

 

 3)在启动数据库实例时碰到问题;

 

任何正在运行的SQL语句都将立即中止。任何未提交的事务将不回滚。Oracle也不等待现在连接到数据库的用户退出系统。下一次启动数据库时需要实例恢复,因此,下一次启动可能比平时需要更多的时间。

 

免责声明:文章转载自《数据库启动的三个台阶nomount,mount,open(转载)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SQL Server 2012安装配置(Part1 )Flask小总结+实例化Flask参数以及对app的配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Redis缓存篇(四)缓存异常

这一节,我们来学习一下缓存异常。缓存异常有四种类型,分别是缓存和数据库的数据不一致、缓存雪崩、缓存击穿和缓存穿透。 下面通过了解这四种缓存异常的原理和应对方法。 缓存和数据库的数据不一致 缓存和数据库的数据一致性包含两种情况: 缓存中有数据,缓存的数据值需要和数据库中的值相同; 缓存中没有数据,数据库中的值必须是最新值。 数据不一致是如何发生的? 在第...

【DB宝41】监控利器PMM的使用--监控MySQL、PG、MongoDB、ProxySQL等

目录 一、PMM简介 二、安装使用 三、监控MySQL数据库MySQL慢查询分析 四、监控PG数据库 五、监控MongoDB数据库 六、监控ProxySQL中间件 一、PMM简介 之前发布过一篇Prometheus+Grafana的文章,连接为:【DB宝36】使用Docker分分钟搭建漂亮的prometheus+grafana监控,今天我们...

命令行方式登录PostgreSQL

目录:   一、在默认配置条件下,本机访问PostgreSQL   二、创建新用户来访问PostgreSQL   三、最简单的做法   四、开启远程访问 一、在默认配置条件下,本机访问PostgreSQL 切换到Linux用户postgres,然后执行psql: $ su - postgres Last login: Wed Mar 1 13:16:48...

[转]MS Sql 7105错误

转自:http://hi.baidu.com/ylj798/blog/item/4878077ab64fe7ea2f73b300.html 有的时候发现查询数据库会出现以下类似的提示: [Microsoft][ODBC SQL Server Driver][SQL Server]text、ntext 或 image 节点的页 (1:220),槽 14 不...

mvc+EF

---------------------------------------------------------------------数据库先行------------------------------------------------------------------------------------- 这种方式是比较传统的以数据库为核心的开...

Access数据库 字段值 字符替换

两种方法: (一)Access数据库内部使用方法 Update 表 SET 字段=replace(字段,"原字符","替换字符") 示例: 假设表为biao、字段为content、原字符为xiazai.jb51.net、替换字符为down1.jb51.net, 那么相应的SQL语句如下:Update biao SET content=replace(co...