【oracle笔记】启动、关闭数据库以及查看数据库状态

您所在的位置:网站首页 ora-01507怎么解决 【oracle笔记】启动、关闭数据库以及查看数据库状态

【oracle笔记】启动、关闭数据库以及查看数据库状态

2023-01-21 04:41| 来源: 网络整理| 查看: 265

王炸科技 2022-03-27 【oracle笔记】启动、关闭数据库以及查看数据库状态 来源:        

  数据库的启动分三个阶段,nomount,mount,open,此处也分三个阶段来查看数据库的状态。数据库启动的三阶段1.nomount阶段创建实例instancenomount阶段,oracle主要完成5件事a.查找参数文件,oracle会在$ORACLE_HOME/dbs/目录下依次查找下面的参数文件,如

  数据库的启动分三个阶段,nomount,mount,open,此处也分三个阶段来查看数据库的状态。

  数据库启动的三阶段

  1.nomount阶段创建实例instance

  nomount阶段,oracle主要完成5件事

  a.查找参数文件,oracle会在$ORACLE_HOME/dbs/目录下依次查找下面的参数文件,如果其中某个存在,就会使用它。spfile是二进制文件,不能直接编辑,init(pfile)是文本文件可以直接编辑。

  1.spfile$ORACLE_SID.ora

  2.spfile.ora

  3.init$ORACLE_SID.ora

  b.读取参数文件确定初始化参数的值

  c.根据初始化参数分配SGA内存区

  d.启动后台进程

  e.打开alert_$ORACLE_SID.log文件和trace追踪文件,把启动过程中的参数和执行的操作写入alert文件

  在启动的时候可以手动指定使用PFILE

  SQL>STARTUPPFILE=/u01/app/oracle/product/10.2.0/dbs/init.ora

  2.mount模式

  实例通过加载数据库将数据库和实例关联起来。mount阶段,oracle根据参数文件中的CONTROL_FILES参数找到控制文件,从控制文件中读取数据库名称、确定数据文件,以及在open时访问的onlineredologfiles,此时实例没有打开数据库的物理文件,即数据文件和重做日志文件。用户在mount状态仍无法与数据库建立连接或会话。

  如果控制文件复用副本丢失、损坏,oracle会报错,需要进行控制文件恢复,修改参数文件、手动创建控制文件、或者替换丢失或损坏的控制文件。

  3.open模式

  只有将数据库设置为打开后,用户才可以与数据库建立连接和访问数据库。oracle会分步打开物理文件

  a.打开除了撤销表空间以外,所有online在线表空间的数据文件

  b.打开undotablespace撤销表空间

  c.打开onlineredologfile重做日志文件

  如果open阶段发现有数据文件或重做日志文件丢失、损坏而不可用,或者数据文件不一致,oracle会报错,此时需要进行mediarecovery介质恢复。

  查看数据库的状态

  在nomount,mount模式,无法连接数据库,可以通过查看动态视图和lsnrctl查看数据库的状态。

  如果数据库没有启动,lsnrctl状态

  [oracle@localhostdbs]$lsnrctlstatus……ListeningEndpointsSummary...(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1521)))ServicesSummary...Service"PLSExtProc"has1instance(s).Instance"PLSExtProc",statusUNKNOWN,has1handler(s)forthisservice...Thecommandcompletedsuccessfully

  启动数据库

  [oracle@localhostdbs]$sqlplus/assysdbaSQL>startupnomount

  查看动态视图

  SQL>selectstatusfromv$instance;STATUS------------STARTEDSQL>selectopen_modefromv$database;selectopen_modefromv$databaseERRORatline1:ORA-01507:databasenotmounted查看lsnrctlstatus

  [oracle@localhostdbs]$lsnrctlstatus……ServicesSummary...Service"PLSExtProc"has1instance(s).Instance"PLSExtProc",statusUNKNOWN,has1handler(s)forthisservice...Service"orcl"has1instance(s).Instance"orcl",statusBLOCKED,has1handler(s)forthisservice...Service"orcl_XPT"has1instance(s).Instance"orcl",statusBLOCKED,has1handler(s)forthisservice...Thecommandcompletedsuccessfully

  加载数据库

  SQL>alterdatabasemount;Databasealtered.SQL>selectstatusfromv$instance;STATUS------------MOUNTEDSQL>selectopen_modefromv$database;OPEN_MODE----------MOUNTED

  查看lsnrctlstatus

  [oracle@localhostdbs]$lsnrctlstatus……ServicesSummary...Service"PLSExtProc"has1instance(s).Instance"PLSExtProc",statusUNKNOWN,has1handler(s)forthisservice...Service"orcl"has1instance(s).Instance"orcl",statusREADY,has1handler(s)forthisservice...Service"orcl_XPT"has1instance(s).Instance"orcl",statusREADY,has1handler(s)forthisservice...Thecommandcompletedsuccessfully

  打开数据库

  SQL>alterdatabaseopen;SQL>selectstatusfromv$instance;STATUS------------OPENSQL>selectopen_modefromv$database;OPEN_MODE----------READWRITE

  查看lsnrctlstatas

  [oracle@localhostdbs]$lsnrctlstatus……ServicesSummary...Service"PLSExtProc"has1instance(s).Instance"PLSExtProc",statusUNKNOWN,has1handler(s)forthisservice...Service"orcl"has1instance(s).Instance"orcl",statusREADY,has1handler(s)forthisservice...Service"orclXDB"has1instance(s).Instance"orcl",statusREADY,has1handler(s)forthisservice...Service"orcl_XPT"has1instance(s).Instance"orcl",statusREADY,has1handler(s)forthisservice...Thecommandcompletedsuccessfully

  .

  参考:http://download.oracle.com/docs/cd/E11882_01/server.112/e16508/startup.htm#CEGJEJDD

  关闭数据库与数据库启动相对应,关闭数据库也分3个步骤:1)关闭数据库oracle将redologbuffer写入onlineredolog中,将databasebuffercache中的dirty块写入datafile,然后关闭所有datafile和onlineredofile。2)卸载数据库instance卸载database,关闭controlfile。3)关闭实例终止所有后台进程和服务器进程,回收内存空间。关闭数据库有4种方式:shutdown[normal|transaction|immediate|abort]1)shutdownnormal是默认方式。如果对数据库的关闭没有时间限制,可以采用,oracle会执行以下操作:a.阻止用户建立新的连接b.等待当前连接的用户主动断开连接c.一旦所有用户都断开连接,则关闭数据库d.2)shutdownimmediate如果要求在尽可能短的时间内关闭数据库,可以采用此种方法。oracle会执行以下操作:a.阻止用户建立新的连接b.回滚所有未提交的事务。c.终止所有用户的连接,关闭数据库。d.3)shutdowntransaction如果要求在尽量短的时间内关闭数据库,同时还要保证所有当前事物可以提交,则可以采用shutdowntransaction命令关闭数据库。oracle会执行以下操作:a.阻止用户建立新的连接b.等待用户回滚或提交当前未提交的事务,然后立即断开用户连接c.关闭数据库d.4)shutdownabort如果前三种方法无法关闭数据库,或者数据库出现严重错误时,只能采取shutdownabort方式关闭数据库。这种方式等同于突然切断电源,会造势部分数据信息丢失。下次启动数据库时,oracle会自动执行instancerecovery(rollforward和rollback)。shutdownabort时oracle会执行以下操作:a.阻止用户建立新的连接b.立即结束正在执行的SQL语句c.任何未提交的事务不被回滚d.中断所有的用户连接,立即关闭数据库

  e.数据库实例重启后需要instancerecovery

上一篇:win8下cocos2d

下一篇:专栏:oracle数据库学习笔记



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3