Oracle 实例管理
Oracle实例(instance)是一组Oracle后台进程和内存结构的集合。后台进程主要包括SMON,
PMON, DBWR, CKPT 和 LGWR 等;内存结构包括数据库高速缓冲区、重做日志缓冲区、共享池、
大池等组成系统全局区(SGA)的重要组件。实例主要实现对数据库的访问和控制功能,是Oracle
服务器的核心。实例管理主要包括:配置初始化参数、启动和关闭数据库实例、监控数据库实例、
管理会话和管理事务等内容,并利用 Oracle 诊断文件判断 Oracle 数据库中遇到的一些瓶颈及
依赖问题。
Oracle Server 是由实例和数据库组成,数据库实际上就是三种物理文件:控制文件、数据文
件和联机重做日志文件的集合。
一个实例只能访问一个数据库,而一个数据库可以被多个实例同时进行访问。
启动和关闭 Oracle 数据库的方法有很多种,可以使用 OEM, SQL*plus 命令行或操作系统的
服务。启动和关闭一个 Oracle 实例的用户必须具有 sysdba 或 sysoper 权限。
一、 启动和关闭 Oracle 实例
Oracle 数据库的启动是分步骤进行的,包括了实例启动、数据库加载(为实例打开控制文件)、
打开数据库 3 个步骤。因此,Oracle 数据库可处于三种状态:实例已开启(nomount), 数据
库已加载(mount), 数据库已打开(open).
1.启动实例(nomount)
启动实例包括下列任务:
1) 读取数据库参数文件:参数文件默认存放路径是:$ORACLE_HOME/dbs 目录下,参数文件
读取顺序为:spfile<sid>.ora --> spfile.ora -->init<sid>.ora。如果一个
文件都找不到,Oracle 就会报错。
2) 根据所读取参数文件的配置信息,分配 SGA 内存.
3) 启动后台进程并打开 alert 文件以及跟踪文件。
在实例启动过程中,只会使用到初始化参数文件,数据库是否存在对实例的启动并没有影响。如
果初始化参数设置有误,实例将无法启动。
在此阶段,可以访问与 SAG 有关的一些动态性能视图,例如:v$parameter, v$sga,
v$session, v$process 和 v$instance 等。
2.为实例加载数据库(mount)
加载数据库包括以下任务:
1) 使数据库与之前启动的实例相关联。
2) 定位并打开参数文件中指定的所有当前控制文件。
3) 读取控制文件以获取数据文件和重做日志文件的名称和状态,为打开数据库做好准备。
4) 加载数据库时,实例将打开控制文件,如果控制文件损坏,实例将无法加载数据库。在加载
阶段,实例并不会打开数据库的物理文件——数据文件和重做日志文件。
在此阶段可以读取的动态性能视图包括:v$controlfile, v$database, v$datafile,
v$thread 和 v$logfile 等。
3.打开数据库(open)
打开数据库包括以下任务:
1) 打开联机数据文件。
2) 打开联机重做日志文件。
如果在控制文件中列出的任何一个数据文件或重做日志文件无法正常打开,数据库将返回错误信
息,这时就需要进行数据库恢复。只有将数据库设置为打开状态后,数据库才处于正常运行状态,
这时普通用户才能够访问数据库实例。
DBA 可根据不同的情况决定以不同的方式启动数据库:
1) 启动实例不加载数据库(NOMOUNT 模式)
使用 SQL*Plus 命令:SQL> startup nomount
或
使用 srvctl 命令:$ srvctl start database –d orcl –o nomout
NOMOUNT 模式下不允许访问数据库。创建数据库或重建控制文件的操作,必须在该模式下进行。
2) 启动实例加载数据库但不打开数据库(MOUNT 模式)
使用 SQL*Plus 命令:SQL> startup mount
或
使用 srvctl 命令:$ srvctl start database –d orcl –o mout
MOUNT 模式下可以进行特定的 DBA 操作,但不允许一般性的数据库访问。要执行重命名数据文
件、改变数据库归档模式、执行完全数据库恢复等的操作,必须在该模式下进行。
3) 启动实例加载数据库并打开数据库(OPEN 模式)
使用 SQL*Plus 命令:SQL> startup
或
使用 srvctl 命令:$ srvctl start database –d orcl
OPEN 模式是正常的数据库启动模式,包含了启动实例、加载数据库和打开数据库等操作。在非
受限模式下,允许所有普通用户操作数据库,在受限模式下,只允许管理员操作数据库。
4) 强制启动(FORCE)
使用 SQL*Plus 命令:SQL> startup force
或
使用 srvctl 命令:$ srvctl start database –d orcl –o force
在出现启动或者关闭问题时,可以使用 force 选项启动数据库。如果实例正在运行,强制启动
命令与下面两个命令功能相同:
SQL> shutdown abort;
SQL> startup;
5) open recover
如果需要 oracle 在打开数据库前进行介质恢复,则可以使用 open recover 命令启动数据库
实例。
使用命令:SQL> startup open recover
或
$ srvctl start database -d db_unique_name -o "open, recover"
open recover 与以下三个命令功能类似:
SQL> startup mount;
SQL> recover database;
SQL> alter database open;
注意:如果使用共享服务器模式则不能使用 open recover 启动数据库。
二、转换启动模式
要在数据库的各种启动模式之间切换,需要使用 ALTER DATABASE 语句,执行该语句的用户必
须具有 ALTER DATABASE 权限。
为实例加载数据库的命令为:ALTER DATABASE MOUNT
从加载状态进入打开状态命令为:ALTER DATABASE OPEN
三、切换到受限或只读状态
(1)受限状态:
在正常启动模式(OPEN)下,可以选择将数据库设置为受限状态或非受限状态。在受限状态下,
只有同时具有 create session 和 restricted session 权限的用户才能操作数据库,通
常只有数据库管理员才具有这个权限。在受限状态下,即使是 DBA, 也不能使用远程连接模式
访问数据库,而只能使用本地连接模式访问数据。在需要暂时拒绝普通用户访问数据库或进行数
据库迁移、升级操作的时候要将数据库数据库置为受限状态:
数据库启动到受限状态的命令:
SQL> startup restrict
或
$ srvctl start database -d db_unique_name -o restrict
将数据库设置为受限状态的命令:SQL> alter system enable restricted session
将数据库恢复为非受限状态的命令:SQL> alter system disable restricted session
受限状态在 mount, nomount, open 模式下均可使用。
(2)只读状态:
只读状态下,数据库只允许数据读取,无法进行数据库的增删改操作。
将数据库设置为只读模式的命令:SQL> alter database open read only
将数据库设置为读写模式的命令:SQL> alter database open read write
关闭 Oracle 数据库
与数据库的启动相对应,关闭数据库也是分步骤进行的。
执行的命令为:SQL> shutdown [option]
如果是使用 oracle restart 管理的数据库,建议使用 srvctl stop database 命令关闭
数据库。
关闭数据库过程中,任何尝试连接数据库的会话都会收到如下错误:
ORA-01090: shutdown in progress - connection is not permitted
关闭数据库
在关闭数据库时,Oracle 相关后台进程会把高速缓冲区中的提交过的更改与日志缓冲区的条目
分别写入数据文件和联机重做日志文件中,然后关闭所有数据文件和联机重做日志文件。
卸载数据库
关闭数据库,实例仍保留。
(3)关闭实例
将 ALERT 和跟踪文件关闭,SGA 被回收并终止后台进程。
(4)Oracle 数据库的四种关闭模式
关闭数据库的 option 选项有四种:normal, immediate, transactional, abort.
1. NORMAL
a) 发出命令后,不可以建立新连接。
b) Oracle 服务器等待所有用户断开连接后才完成关闭。
c) 数据库高速缓冲区和重做缓冲区会写入到磁盘中。
d) 后台进程被终止,从内存中释放 SGA.
e) Oracle 服务器在关闭实例之前关闭并断开数据库。
f) 下一次启动时不需要进行实例恢复。
执行的命令:
SQL> shutdown normal; -- normal 是 sql*plus 的默认选项,可以省略
或
$ srvctl stop database -d db_unique_name -o normal
2. TRANSACTIONAL
a) 任何客户机都不能利用这个特定实例启动新事务处理。
b) 客户机在结束正在进行的事务处理后断开连接。
c) 完成所有事务处理后立即执行关闭。
d) 下一次启动时不需要进行实例恢复。
执行的命令:
SQL> shutdown transactional;
或
$ srvctl stop database -d db_unique_name -o transactional
3. IMMEDIATE
a) Oracle 数据库服务器执行一次强制检查点操作。
b) Oracle 服务器不等待当前连接到数据库的用户断开连接。
c) Oracle 服务器会回退全部未提交的事务处理,而且会断开所有已连接的用户。
d) Oracle 服务器在关闭实例之前关闭并断开数据库。
e) 下一次启动时不需要进行实例恢复。
执行的命令:
SQL> shutdown immediate; -- immediate 是 OEM 的默认选项
或
$ srvctl stop database -d db_unique_name -o immediate
4. ABORT
a) 立即终止 Oracle 数据库正在处理的当前 SQL 语句。
b) Oracle 服务器不等待当前连接到数据库的用户断开连接。
c) 数据库高速缓冲区和重做缓冲区不写入到磁盘。
d) 不回退未提交的事务。
e) 实例已终止,但未关闭数据文件。
f) 数据库未关闭,也未卸载。
g) 下一次启动时需要进行实例恢复,实例恢复是自动进行的。
执行的命令:
SQL> shutdown abort;
或
$ srvctl stop database -d db_unique_name -o abort
四、 指定参数文件启动实例
启动实例时,数据库会在默认位置$ORACLE_HOME/dbs 读取 spfile 文件或 pfile 文件,也
可以使用 pfile 参数指定非默认位置和文件名的参数文件来启动实例。
1. 实例启动时,可以使用内存中的参数创建 spfile 文件。
2. 可以使用 pfile 创建 spfile 文件
SQL> create spfile=’/home/oracle/spfileorcl1.ora’ from pfile;
3. 使用内存中的参数创建 pfile 文件(实例启动时)
SQL> create pfile=’/home/oracle/initorcl.ora’ from memory;
4. 使用 spfile 创建 pfile 文件
SQL> create pfile=’/home/oracle/initorcl.ora’ from spfile;
五、使用非默认 pfile 文件启动数据库实例
SQL> startup pfile='/home/oracle/initorcl1.ora';
Oracle 实例管理相关推荐
- oracle实例文件,ORACLE实例管理之参数文件
第四章 实例管理 4.1 参数文件 4.1.1 spfile Server parameter file: spfile 数据库服务运行过程中自动维护的参数文件 oracle9i以后新引入的 ...
- Oracle实例管理
目录 0 关闭数据库 1 NOMOUNT状态 [实例已开启] 1.1 参数文件 1.2 分配内存 1.3 后台进程 1.4 预警日志&跟踪文件 2 MOUNT阶段 [数据库已加载] 2.1 控 ...
- [转]Oracle DB 管理ASM实例
• 描述使用ASM 的好处 • 管理ASM 实例 • 创建和删除ASM 磁盘组 • 扩展ASM 磁盘组 • 通过使用各种实用程序检索ASM 元数据 Automatic Storage Manageme ...
- 集群oracle实例扩sga,oracle管理基础知识
1.oracle的安装 win下 linux下 2.内存和后台进程=实例 为何将oracle做的如此复杂呢 1.内存: --提高查询速度 --提升处理数据的速度 2.后台进程 --为了完成特定的服务, ...
- Oracle DB 管理ASM实例
• 描述使用ASM 的好处 • 管理ASM 实例 • 创建和删除ASM 磁盘组 • 扩展ASM 磁盘组 • 通过使用各种实用程序检索ASM 元数据 Automatic Storage Manageme ...
- oracle实例由,Oracle数据库和实例
Oracle数据库服务器由一个数据库和至少一个数据库实例组成. 数据库是一组存储数据的文件,而数据库实例是一组管理数据库文件的内存结构. 另外,数据库由后台进程组成. 一个数据库和一个实例是紧密相连的 ...
- oracle如何进入管理器,oracle 启动管理器
oracle 启动管理器 emctl start dbconsole 是10g的启动console服务的命令 将OEM服务停止emctl stop dbconsole emctl start dbco ...
- Oracle用户管理学习总结
Oracle 用户管理 一.用户的概念 用户,即user,通俗的讲就是访问oracle数据库的"人".在oracle中,可以对用户的各种安全参数进行控制,以维护数据库的安全性,这些 ...
- 图解Oracle用户管理
一 操作实例 首先以system用户登录: 创建用户dog,密码为wangwang: 用dog登录,不能登录: 需要授予create session权限,才能登录: dog登录成功: dog创建表,不 ...
最新文章
- Docker系列06—基于容器制作镜像并上传到Docker Registry
- IDEA:生成javadoc/断点调试/缓存和索引的清理
- less最后一页 linux_linux中less命令使用
- 【2019暑假】市中小学生游泳比赛-酱油记By Chavapa
- python学习群发邮件
- php doctrine,数据库和Doctrine ORM
- win10打印服务器纸规格没有显示,win10系统打印机设置纸张大小的操作方法
- 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机
- 网页不能自动播放视频、音频的解决方案
- HTTP长相随--期盼已久的HTTP2.0、WebDAV协议、 QUICHTTP3.0
- 在微博视频,见证“新”博主诞生
- Diffusion Model(扩散模型)
- Phoenix FD(火凤凰全能流体动力学3Dmax插件)
- 看上旷视又要投了?全面拆解阿里AI布局 | 人工智能观察
- 【51单片机】LD3320A语音识别控制设计
- 还在找骆驼(羊驼)专用PBMC分离试剂盒吗?
- 表单校验之@NotBlank,@NotNull,@NotEmpty之间的区别
- 两步快速调用微信接口,活字格就是这么强
- iOS 歌词解析(lrc, 非谓词, 仿QQ音乐, 仿卡拉ok模式)
- K8S报no kind Deployment is registered for version apps/v1和pod status为ContainerCreating
热门文章
- 网页背景设置的方法总结
- mysql 千万级数据的导入导出
- 数据结构笔记——最短路径BFS算法
- 带你了解信号和UTP线缆
- Polynomial Round 2022 (Div. 1 + Div. 2, Rated, Prizes!) A-C
- LRS2 train.txt、val.txt和test.txt这三个文件是数据集文件列表
- 解决pyinstaller打包后的exe文件打开闪退的问题
- 名帖348 孙过庭 草书《书谱》
- 3分钟学会 “今日头条” 富文本编辑
- 微型计算机中常见到的Ega.VGA等是指,2011年计算机一级考试理论试题:第七部分单选题7...