网站首页 > 技术文章 正文
对于很多刚入门的朋友,如果对数据库的启动过程不是很了解,这篇文章就可以解决你对数据库启动过程的疑问。
最好是在自己虚拟机上跟着我的实验走,这样理解会透彻点。
一 启动数据库
Oracle启动过程涉及几种模式,这些模式涉及不同的文件,每个状态下数据库做不同的事情,同时这些模式适用于不同的维护需求,主要的模式有三种:NOMOUNT、MOUNT、OPEN。
1 NOMOUNT:启动数据库实例, 此时读取参数文件,但是不加载数据库;
2 MOUNT:启动数据库实例,加载数据库,但是数据库处于关闭状态;
3 OPEN: 启动数据库实例,加载并打开数据库;
4 FORCE: 终止实例并重启数据库,这种模式在数据库关闭或者启动遇到问题时使用,这种方式不到万不得已时不要使用,会有数据丢失;
1 NOMOUNT
这种模式只会创建实例(创建Oracle实例的各种内存结构与服务进程,其中有5个进程必须启动, DBWR、LGWR、SMON、PMON、CKPT),并不加载数据库,也不会打开任何数据文件。
在NoMount模式下,只能访问那些与SGA区相关的数据字典视图,包括V$PARAMETER、V$SGA、V$PROCESS 和 V$SESSION等,这些视图中的信息都是从SGA区中获取的,与数据库无关。非安装启动,这种方式启动下可执行:重建控制文件、重建数据库、读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
模式用途:
(1)创建新数据库;
(2)重建控制文件。
先关闭数据库
startup nomount
数据库的启动过程记录在警告追踪文件中,该警告追踪文件中包括数据库启动信息,它存放在参数BACKGOUND_DUMP_DEST定义的目录下,警告日志的名字为alert_orcl.log
进入到目录查看警告日志关于startup nomount过程记录
测试在nomount状态时数据字典是否打的开,下图说明数据库字典在nomount状态下是无法访问的,因为数据字典需要从控制文件获取文件的信息,而此时控制文件没有打开所以无法查看。
但是在nomount下可以通过参数文件获得控制文件的位置,因为此时参数文件已经打开
2 MOUNT
这种模式将启动实例,加载数据库并保持数据库关闭状态。数据库启动到MOUNT状态有两种方式,一是可以直接启动数据库到MOUNT,二是如果数据库已经启动到NOMOUNT状态,使用alter database mount把数据库切换到MOUNT状态;
在Mount模式下,只能访问那些与控制文件相关的数据字典视图,包括V$THREAD、V$CONTROLFILE、V$DATABASE、V$DATAFILE 和 V$LOGFILE等,这些视图都是从控制文件中获取的。
模式用途:
(1)重命名数据文件;
(2)添加、删除或重命名重做日志文件;
(3)执行数据库完全恢复操作;
(4)改变数据库的归档模式。
alert database mount
startup mount
此时我们可以查看数据字典,因为控制文件已经打开
但是此时我们不能访问数据库的数据文件(表,视图),文件此时数据文件没有打开。
3 OPEN
这种模式将启动实例,加载并打开数据库,这是常规的启动模式,用户想要对数据库进行多种操作就必须使用OPEN模式启动数据库,启动到OPEN状态,有两种方式,一是直接启动到OPEN状态(使用startup或者startup open),二是如果数据库处于NOMOUNT或者MOUNT状态,可以通过alter database open切换到OPEN状态。
此时可以访问数据文件了。
4 FORCE
这种模式将终止实例并重启数据库,这是一种强制性启动模式,只有在启动或者关闭出现问题时才使用,并且有一定的风险,会丢失数据,造成意外的问题。
用途&讲解:在某些情况下,使用前面的各种模式都无法成功启动数据库时,可以尝试强制启动模式。
二 关闭数据库
与启动数据库顺序相反,也分三个步骤:关闭数据库(CLOSE 关闭数据文件),卸载数据库(关闭控制文件 DISMOUNT),关闭Oracle实例(SHUTDOWN)。同时关闭模式也有多种常见的有:
1 NORMAL
命令:shutdown nomal
正常的关闭方式,如果对于关闭数据库的时间没有限制,通常采用这种方式,以NORMAL方式关闭数据库,Oracle将执行如下操作:
A 阻止任何用户建立新的连接;
B 等待当前所有正在连接的用户主动断开连接;
C 当前所有用户的都断开连接后,将立即关闭数据库;
2 TRANSACTION
命令:shutdown transactional
事务关闭方式,它的首要任务是保证当前所有活动的事务都可以被提交,并在尽可能短的时间内关闭数据库。以事务方式关闭,Oracle将执行如下操作:
A 阻止用户建立新连接和开始新事务;
B 等待所有活动事务提交后,再断开用户连接;
C 当所有活动事务提交完毕,用户断开连接后,关闭数据库;
3 IMMEDIATE
命令:shutdown immediate
立即关闭方式,可以较快且安全的关闭数据库,是DBA经常采用的关闭数据库的方式,立即关闭方式,Oracle执行如下操作:
A 阻止用户建立新的连接和开始新的事务;
B 中断当前事务,回滚未提交事务;
C 强制断开所有用户连接和执行检查点把脏数据写到数据文件中;
D 关闭数据库
4 Abort(终止关闭方式)
命令:shutdown abort
讲解:这是比较粗暴的一种关闭方式,当前面3种方式都无法关闭时,可以尝试使用终止方式来关闭数据库。但是以这种方式关闭数据库将会丢失一部份数据信息,当重新启动实例并打开数据库时,后台进程SMON会执行实例恢复操作。一般情况下,应当尽量避免使用这种方式来关闭数据库。执行过程如下:
(1)阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
(2)立即终止当前正在执行的SQL语句。
(3)任何未提交的事务均不被退名。
(4)直接断开所有用户的连接,关闭、卸载数据库,并终止实例。
觉得有用的走波关注哦~
猜你喜欢
- 2024-10-16 数据库Oracle的安装及访问 oracle数据库安装视频教程
- 2024-10-16 Oracle数据库不为人知的几个概念:selectivity、cardinality和CF
- 2024-10-16 Oracle数据库之高级查询二 oracle 高级
- 2024-10-16 Oracle数据库死锁查询 oracle数据库死锁处理方法
- 2024-10-16 Oracle——怎么查看执行计划 oracle查看执行计划详解
- 2024-10-16 详解六种方法查看oracle执行计划=》优化必备
- 2024-10-16 oracle数据库条件查询之本月之前 oracle查询当月的每一天
- 2024-10-16 Oracle查看Sql执行计划的方法及示例
- 2024-10-16 分享两个Oracle的shell脚本---一键获得数据库实例状态、参数及包
- 2024-10-16 「DBA」查看Oracle数据块和操作系统块大小
你 发表评论:
欢迎- 06-24发现一款开源宝藏级工作流低代码快速开发平台
- 06-24程序员危险了,这是一个 无代码平台+AI+code做项目的案例
- 06-24一款全新的工作流,低代码快速开发平台
- 06-24如何用好AI,改造自己的设计工作流?
- 06-24濮阳网站开发(濮阳网站建设)
- 06-24AI 如何重塑前端开发,我们该如何适应
- 06-24应届生靠这个Java简历模板拿下了5个offer
- 06-24服务端性能测试实战3-性能测试脚本开发
- 567℃几个Oracle空值处理函数 oracle处理null值的函数
- 566℃Oracle分析函数之Lag和Lead()使用
- 550℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 545℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 543℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 536℃【数据统计分析】详解Oracle分组函数之CUBE
- 526℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 519℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)