热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

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

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

数据库的启动分三个阶段,nomount,mount,open,此处也分三个阶段来查看数据库的状态。 数据库启动的三阶段 1. nomount阶段创建实例instance nomount阶段,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> STARTUP PFILE=/u01/app/oracle/product/10.2.0/dbs/init.ora

2.mount模式

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

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

3.open模式

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

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

b.打开undo tablespace撤销表空间

c.打开online redo log file重做日志文件

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


查看数据库的状态

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

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

[oracle@localhost dbs]$ lsnrctl status
……
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

启动数据库

[oracle@localhost dbs]$ sqlplus / as sysdba
SQL> startup nomount

查看动态视图

SQL> select status from v$instance;

STATUS
------------
STARTED

SQL> select open_mode from v$database;
select open_mode from v$database
                      *
ERROR at line 1:
ORA-01507: database not mounted
查看lsnrctl status
[oracle@localhost dbs]$ lsnrctl status
……
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
  Instance "orcl", status BLOCKED, has 1 handler(s) for this service...
Service "orcl_XPT" has 1 instance(s).
  Instance "orcl", status BLOCKED, has 1 handler(s) for this service...
The command completed successfully








加载数据库

SQL> alter database mount;

Database altered.
SQL> select status from v$instance;

STATUS
------------
MOUNTED

SQL> select open_mode from v$database;

OPEN_MODE
----------
MOUNTED


查看lsnrctl status

[oracle@localhost dbs]$ lsnrctl status …… Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "orcl" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... Service "orcl_XPT" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... The command completed successfully


打开数据库

SQL> alter database open; SQL> select status from v$instance; STATUS ------------ OPEN SQL> select open_mode from v$database; OPEN_MODE ---------- READ WRITE


查看lsnrctl statas

[oracle@localhost dbs]$ lsnrctl status
……
Services Summary...
Service "PLSExtProc" has 1 instance(s). 
    Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s). 
    Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s). 
    Instance "orcl", statusREADY, has 1 handler(s) for this service...
Service "orcl_XPT" has 1 instance(s). 
    Instance "orcl", statusREADY, has 1 handler(s) for this service...
The command completed successfully

.


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









关闭数据库

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

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










        
推荐阅读
  • 本文探讨了在SharePoint环境中使用BDC(Business Data Catalog)时遇到的问题及其解决策略,包括XML文件导入SSP后的不可见性问题以及与远程SQL Server 2005连接的难题。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • PHP 图形函数中实现汉字显示的方法
    本文详细介绍了如何在 PHP 的图形函数中正确显示汉字,包括具体的步骤和注意事项,适合初学者和有一定基础的开发者阅读。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 本文介绍如何通过创建数据库触发器来限制Oracle数据库中特定用户的登录IP地址,以增强系统的安全性。示例代码展示了如何阻止非授权IP地址的登录尝试。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 本文探讨了在使用 MyBatis 进行批量数据处理时遇到的参数绑定异常问题,并提供了详细的解决方案。 ... [详细]
  • 本文详细介绍了如何在Windows和Linux系统上配置Openfire服务器,包括安装步骤、数据库配置及端口映射等关键环节。 ... [详细]
  • 初探Hadoop:第一章概览
    本文深入探讨了《Hadoop》第一章的内容,重点介绍了Hadoop的基本概念及其如何解决大数据处理中的关键挑战。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 利用Docker部署JupyterHub以支持Python协同开发
    本文介绍了如何通过Docker容器化技术安装和配置JupyterHub,以实现多用户的Python开发环境,特别适合团队协作场景。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • 在使用 MySQL 6.0.x 及以上版本的 JDBC 驱动时,若未正确配置 `serverTimezone` 参数,可能会导致连接异常。本文探讨了这一问题的原因及解决方法。 ... [详细]
  • Maven快照版本管理及更新策略详解
    本文深入探讨了Maven中的快照版本管理和更新策略,解释了快照版本与正式版本的区别,并提供了如何配置快照更新策略的方法,以确保项目依赖始终保持最新。 ... [详细]
  • 在CentOS 7中部署Nginx并配置SSL证书
    本文详细介绍了如何在CentOS 7操作系统上安装Nginx服务器,并配置SSL证书以增强网站的安全性。适合初学者和中级用户参考。 ... [详细]
author-avatar
忆丨残年_686
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有