0

0

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

php中文网

php中文网

发布时间:2016-06-07 15:09:11

|

1605人浏览过

|

来源于php中文网

原创

数据库的启动分三个阶段,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

<span>SQL> STARTUP PFILE=/u01/app/oracle/product/10.2.0/dbs/init.ora</span>

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重做日志文件

Yourware
Yourware

专注于AI编程作品部署与分享的云托管平台

下载

如果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

查看动态视图

<pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">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", <span>status BLOCKED</span>, 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








加载数据库

<pre class="brush:php;toolbar:false;">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

<p>[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 <span>READY</span>, 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
</p>


打开数据库

<p>SQL> alter database open;
SQL> select status from v$instance;

STATUS
------------
OPEN

SQL> select open_mode from v$database;

OPEN_MODE
----------
READ WRITE
</p>


查看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

<pre class="brush:php;toolbar:false;">
<pre class="brush:php;toolbar:false;">











					

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

286

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

126

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

42

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

19

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

23

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

14

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

421

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

51

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
SQL 教程
SQL 教程

共61课时 | 3.9万人学习

Java 教程
Java 教程

共578课时 | 67.3万人学习

oracle知识库
oracle知识库

共0课时 | 0.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号