打开oracle数据库为什么要经过mount , nomount 等 这么麻烦的步骤。

打开oracle数据库为什么要经过mount , nomount 等 这么麻烦的步骤。,第1张

nomount mount open指的是实例启动的过程,你说的教程上的步骤完全正确

之所以设置几个不同的状态,是为了应付不同的情况例如数据文件发生了损坏,需要进行恢复,在open状态下就不能进行,因为open状态下文件是打开的,这时就需要mount状态了但如果是Oracle的控制文件损坏了,需要恢复,这时就需要nomount状态,因为mount状态下控制文件是打开的

其实如果实例已经启动了,你只是去连接访问,就不用管这些东西了

务全都启动起来如果是Oracle10G,应该有4个服务

然后,运行cmdexe,如果Oracle就按照在本机,输入如下命令:sqlplus /nolog完成后会进入到SQL>的提示符

这时候如果win的Oracle服务启动起来了,则数据库正常情况下是mount并且是open的,要想使用startup mount命令,则需要先关闭Oracle数据库输入:

SQL>shutdown immediate;

就可以关闭数据库然后,就可以使用startup mount启动数据库到mount状态了

如果后面还要打开的话,输入

SQL>alter database open;

则会打开数据库

数据库在启动 过程分为三个阶段,nomount ->mount->open

每个阶段干什么了,你只要明白了,就可以很好的控制了

第一个nomount阶段:读取参数文件(pfile ||spfile)分配内存,启动后台进程,参数里面读取到控制文件的路径(并不打开)

如果不能到nomount ,请检查内存和参数文件

第二阶段mount 根据第一步读取到的路径打开控制文件,读取数据文件和日志文件的位置(不打开)

如果不能mount 检查控制文件是否有问题

第三部 open 打开数据文件,日志文件并一致性检查

如果不能到open检查数据文件,日志文件是否有问题

参照图上显示,有以下区别:

1、STARTUP NOMOUNT选项:(读初始化参数文件,启动实例)

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

2、STARTUP MOUNT选项:(打开控制文件)

STARTUP MOUNT选项执行STARTUP NOMOUNT选项的所有工作,但另外附加数据库结构并与这些结构进行交互。这时Oracle从它用来查找和附加到主要数据库结构的控制文件中获得信息。当处于这个模式时,可以执行一些管理型任务,比如恢复。

3、STARTUP OPEN选项:(打开数据文件,日志文件)

如果STARTUP命令行上没有指定任何模式,STARTUP OPEN选项就是默认的启动模式。STARTUP OPEN选项执行STARTUP NOMOUNT和STARTUP MOUNT选项的所有步骤。这个选项把数据库变成对所有用户都时可用的。

4、STARTUP FORCE选项:

如果在用正常方式启动数据库时遇到了困难,可以使用STARTUP FORCE选项。STARTUP FORCE选项首先异常关闭数据库,然后重新启动它。

5、STARTUP RESTRICT选项:

STARTUP RESTRICT选项启动数据库并把它置入OPEN模式,但只给拥有RESTRICTED SESSION权限的用户赋予访问权。

1、ORACLE_SID:是数据库在 *** 作系统内部的环境变量名,其值是正要启动的Oracle数据库实例名。 *** 作系统通过SID找到要启动的Oracle实例的初始化参数文件,根据初始化文件启动Oracle实例,配置内存和创建数据库进程。

2、Global_name:是全局数据库名,对一个数据库(实例)的唯一标识,oracle建议用此种方法命名数据库。该值是在创建数据库时决定的,构造方式=数据库名(Db_name)+数据库域名(Db_domain)。

当域名缺省时,数据库名=全局数据库名。作用是找到对应的数据库安装(mount)、打开(open)。

例:若创建数据库时输入orcl,则全局数据库=orcl;若输入了orclR211gwin,则数据库名=orcl,数据库域名=R211gwin。

原因是oracle在同步controlfile的时候磁盘或者其它原因导致失败,在mount数据库阶段,如果所有controlfile的状态不一致就会出这个问题

解决方法:

我首先备份了控制文件,启动了数据库到nomount状态下,分别指定系统控制文件为三个中的其中一个:

ALTER SYSTEM SET CONTROL_FILES='F:\ORACLE\ORADATA\ORACAS\CONTROL01CTL' SCOPE=SPFILE

然后启动数据库到Mount状态下,如果还是报错,就指定下一个

只要上面三次 *** 作中有一次成功,就可以用那个成功的控制文件来重新作出另外两个控制文件。即先关闭打开的数据库,然后删掉无用的控制文件,把有用的复制一份然后alter system set control_files='/control01ctl','/control02ctl' scope=spfile; 打开数据库即可

以上就是关于打开oracle数据库为什么要经过mount , nomount 等 这么麻烦的步骤。全部的内容,包括:打开oracle数据库为什么要经过mount , nomount 等 这么麻烦的步骤。、oracle里的mount是干什么用的、如何让oracle数据库只能启动到mount状态等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9371910.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存