`
fyd222
  • 浏览: 103964 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Oracle 数据库实例启动关闭过程

 
阅读更多

--================================

-->Oracle 数据库实例启动关闭过程

--================================

/*

Oracle数据库实例的启动,严格来说应该是实例的启动,数据库仅仅是在实例启动后进行装载。Oracle数据启动的过程被划分为

几个不同的步骤,在不同的启动过程中,我们可以对其实现不同的操作,系统修复等等工作,因此了解Oracle数据启动、关闭是非常

有必要的。下面详细了Oracle Database 10g 数据库启动及关闭的过程。

一、数据库实例的启动

启动命令:starup [force][restrict] [pfile=...] [nomount] [mount] [open]

启动过程:nomount ---> mount ---> open (startup不带参数将逐步一一完成)

1.nomount阶段(即实例的启动)

实例的启动通常包含下列任务:

a.按以下顺序在$ORACLE_HOME/dbs[win平台为database]目录下搜索下列文件,即如果第一个没找到,就找下一个

spfile<SID>.ora ---> spfile.ora ---> init<SID>.ora

b.分配SGA

c.启动后台进程

d.打开并修改告警<SID>.log文件及跟踪文件

使用场景:

多用于数据库创建、控制文件重建、特定的备份恢复等

注意:

此阶段不打开任何的控制文件及数据文件。

2.mount阶段

mount阶段完成的任务:

a.启动实例并打开控制文件,将数据库与实例关联起来

b.利用参数文件中的说明,打开并锁定控制文件

c.读取控制文件以获取数据文件和重做日志文件的名字和状态信息,但不检查数据日志文件是否存在

使用场景:

a.重命名数据文件,移动数据文件位置等(数据库打开,表空间脱机的情况下也可以重命名数据文件)

b.启用或关闭重做日志文件的归档及非归档模式

c.实现数据库的完全恢复

注意:

这一步会读控制文件,如果这一步有一个控制文件损坏就无法启动

3.open阶段

mount阶段完成的任务:

a.打开数据文件

b.打开联机日志文件

注意:

a.在此期间,Oracle服务器将校验所偶的数据文件和联机日志文件能否打开并对数据库作一致性检查

b.如果出现一致性错误,SMON进程将启动实例恢复

c.如果任一数据文件或联机日志文件丢失,Oracle服务器将报错

4.特殊的方式打开数据库

只读模式:

startup open read only;

如果现在在mount

alter database open read only;

受限模式:

有时进行数据库维护护,希望一般的用户不能登录。可以启动到该模式,这样只有用户具有

restricted session 权限,才可登录到数据库。

启动方法:

startup restrict;

取消受限:

alter system disable restricted session;

二、数据库实例的关闭

关闭命令:shutdowm abort | immediate | transactional | normal (shutdown不带参数将缺省为normal)

关闭选项:

normal --->不准许新的连接,等待当前的session 结束,等待当前的事务结束,强制检查点并关闭文件

transactional --->不准许新的连接,不等待当前的session结束,等待当前的事务结束,强制检查点并关闭文件。

immediate --->不准许新的连接,不等待当前的session结束,不等待当前的事务结束,强制检查点并关闭文件。

abort --->不准许新的连接,不等待当前的session结束,不等待当前的事务结束,不作强制检查点。

三、几类诊断文件

包含有重要意义时间的具体信息,用于解决问题,用于日常更好的管理数据库

a.alterSID.log 告警文件

记录了数据库启动、关闭时间和一些重要操作及错误警告信息,包含错误号ora-,dba管理

位置由background_dump_dest

维护alertSID.log,定期转移,系统会自动产生新的alert_sid.log

b.后台进程跟踪文件:

记录了后台进程的一些重要信息和警告、错误等

位置:$ORACLE_BASE/admin/vvorcl/bdump/vvorcl_lgwr_15135.trc

c.用户跟踪文件:

由用户进程产生也能由服务器进程产生,跟踪用户的SQL语句的统计信息,也包括错误信息

文件位置由user_dump_dest

用户跟踪:

会话级:

alter session set sql_trace=true;

实例级:

alter system set set sql_trace=true;

跟踪文件的大小由max_dump_file_size参数决定。跟踪时最好要限制他的大小

四、动态性能视图

记录当前数据库的活动,并且不停的更新,故不能保证读取数据的一致性

监控和调整数据库

所有者sys

v$开头

DICTDICT_COLUMNS视图包含了动态性能视图描述及其列的描述

v$FIXED_TALBE包含了所有视图的名字及相关信息

五、演示 */

[root@robinson ~]# su - oracle

--查看未启动实例前的进程情况

[oracle@robinson ~]$ ps -aef |grep oracle

root 3332 3300 0 12:20 pts/1 00:00:00 su - oracle

oracle 3333 3332 0 12:20 pts/1 00:00:00 -bash

oracle 3365 3333 0 12:20 pts/1 00:00:00 ps -aef

oracle 3366 3333 0 12:20 pts/1 00:00:00 grep oracle

--使用ipcs查看当前进程间通讯所用到的共享资源,内存段及信号量,

--可以看出当前无任何通信设备及共享资源

[oracle@robinson ~]$ ipcs -a

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

------ Semaphore Arrays --------

key semid owner perms nsems

------ Message Queues --------

key msqid owner perms used-bytes messages

--登陆到sqlplus

[oracle@robinson ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Apr 29 13:07:29 2010

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to an idle instance.

--再次查看进程情况,多出了进程

SQL> !ps -aef | grep oracle

root 3332 3300 0 12:20 pts/1 00:00:00 su - oracle

oracle 3333 3332 0 12:20 pts/1 00:00:00 -bash

oracle 3972 3333 0 13:07 pts/1 00:00:00 sqlplus as sysdba

oracle 3973 3972 0 13:07 ? 00:00:00 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle 3974 3972 0 13:07 pts/1 00:00:00 /bin/bash -c ps -aef | grep oracle

oracle 3975 3974 0 13:07 pts/1 00:00:00 ps -aef

--再次查看进程间通讯资源,同样是没有任何分配

SQL> !ipcs -a

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

------ Semaphore Arrays --------

key semid owner perms nsems

------ Message Queues --------

key msqid owner perms used-bytes messages

--启动到nomount

SQL> startup nomount

ORACLE instance started.

Total System Global Area 398458880 bytes

Fixed Size 1219640 bytes

Variable Size 117441480 bytes

Database Buffers 276824064 bytes

Redo Buffers 2973696 bytes

--可以看到多出了一些后台进程,即为Oracle的后台进程。从开始。

SQL> !ps -aef | grep oracle

root 3332 3300 0 12:20 pts/1 00:00:00 su - oracle

oracle 3333 3332 0 12:20 pts/1 00:00:00 -bash

oracle 3972 3333 0 13:07 pts/1 00:00:00 sqlplus as sysdba

oracle 3981 1 0 13:09 ? 00:00:00 ora_pmon_orcl

oracle 3983 1 0 13:09 ? 00:00:00 ora_psp0_orcl

oracle 3985 1 0 13:09 ? 00:00:00 ora_mman_orcl

oracle 3987 1 0 13:09 ? 00:00:00 ora_dbw0_orcl

oracle 3989 1 0 13:09 ? 00:00:00 ora_lgwr_orcl

oracle 3991 1 0 13:09 ? 00:00:00 ora_ckpt_orcl

oracle 3993 1 0 13:09 ? 00:00:00 ora_smon_orcl

oracle 3995 1 0 13:09 ? 00:00:00 ora_reco_orcl

oracle 3997 1 0 13:09 ? 00:00:00 ora_cjq0_orcl

oracle 3999 1 0 13:09 ? 00:00:00 ora_mmon_orcl

oracle 4001 1 0 13:09 ? 00:00:00 ora_mmnl_orcl

oracle 4003 1 0 13:09 ? 00:00:00 ora_d000_orcl

oracle 4005 1 0 13:09 ? 00:00:00 ora_s000_orcl

oracle 4006 3972 0 13:09 ? 00:00:00 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle 4009 3972 0 13:10 pts/1 00:00:00 /bin/bash -c ps -aef | grep oracle

oracle 4010 4009 0 13:10 pts/1 00:00:00 ps -aef

--可以看到已经分配了SGA

SQL> !ipcs -a

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

0x99eb282c 65537 oracle 640 402653184 14

------ Semaphore Arrays --------

key semid owner perms nsems

0x6df43ca0 98304 oracle 640 127

0x6df43ca1 131073 oracle 640 127

0x6df43ca2 163842 oracle 640 127

------ Message Queues --------

key msqid owner perms used-bytes messages

--查看控制文件,没有任何数据,因为此阶段控制文件并没有打开

SQL> select * from v$controlfile;

no rows selected

--查看数据文件和日志文件,提示database not mounted

SQL> select * from v$datafile;

select * from v$datafile

*

ERROR at line 1:

ORA-01507: database not mounted

SQL> select * from v$logfile;

select * from v$logfile

*

ERROR at line 1:

ORA-01507: database not mounted

--切换到mount阶段

SQL> alter database mount;

Database altered.

--可以查看控制文件的相关信息

SQL> select * from v$controlfile;

STATUS NAME IS_ BLOCK_SIZE FILE_SIZE_BLKS

------- -------------------------------------------------- --- ---------- --------------

/u01/app/oracle/oradata/orcl/control01.ctl NO 16384 430

/u01/app/oracle/oradata/orcl/control02.ctl NO 16384 430

/u01/app/oracle/oradata/orcl/control03.ctl NO 16384 430

--可以查看数据文件的相关信息

SQL> select FILE#,STATUS,ENABLED,CHECKPOINT_CHANGE#,CHECKPOINT_TIME,ONLINE_TIME,NAME from v$datafile;

FILE# STATUS ENABLED CHECKPOINT_CHANGE# CHECKPOIN ONLINE_TI NAME

---------- ------- ---------- ------------------ --------- --------- --------------------------------------------------

1 SYSTEM READ WRITE 2027235 28-APR-10 06-APR-10 /u01/app/oracle/oradata/orcl/system01.dbf

2 ONLINE READ WRITE 2027235 28-APR-10 06-APR-10 /u01/app/oracle/oradata/orcl/undotbs01.dbf

3 ONLINE READ WRITE 2027235 28-APR-10 06-APR-10 /u01/app/oracle/oradata/orcl/sysaux01.dbf

4 ONLINE READ WRITE 2027235 28-APR-10 06-APR-10 /u01/app/oracle/oradata/orcl/users01.dbf

5 ONLINE READ WRITE 2027235 28-APR-10 /u01/app/oracle/oradata/orcl/example01.dbf

6 ONLINE READ WRITE 2027235 28-APR-10 /u01/app/oracle/oradata/orcl/Test.dbf

7 ONLINE READ WRITE 2027235 28-APR-10 /u01/app/oracle/oradata/orcl/ORCL/datafile/o1_mf_s

_5vrl1t7h_.dbf

--可以查看日志文件的相关信息

SQL> select * from v$logfile;

GROUP# STATUS TYPE MEMBER IS_

---------- ------- ------- ------------------------------------------------------------ ---

3 ONLINE /u01/app/oracle/oradata/orcl/redo03.log NO

2 ONLINE /u01/app/oracle/oradata/orcl/redo02.log NO

1 ONLINE /u01/app/oracle/oradata/orcl/redo01.log NO

--数据不可访问,因为在此阶段,数据文件,日志文件并没有打开

SQL> select * from scott.emp;

select * from scott.emp

*

ERROR at line 1:

ORA-01219: database not open: queries allowed on fixed tables/views only

--切换到open 阶段

SQL> alter database open;

Database altered.

--再次查看进程信息,多出了之后的相关进程

SQL> !ps -aef | grep oracle

oracle 3981 1 0 13:09 ? 00:00:00 ora_pmon_orcl

oracle 3983 1 0 13:09 ? 00:00:00 ora_psp0_orcl

oracle 3985 1 0 13:09 ? 00:00:00 ora_mman_orcl

oracle 3987 1 0 13:09 ? 00:00:00 ora_dbw0_orcl

oracle 3989 1 0 13:09 ? 00:00:00 ora_lgwr_orcl

oracle 3991 1 0 13:09 ? 00:00:00 ora_ckpt_orcl

oracle 3993 1 0 13:09 ? 00:00:00 ora_smon_orcl

oracle 3995 1 0 13:09 ? 00:00:00 ora_reco_orcl

oracle 3997 1 0 13:09 ? 00:00:00 ora_cjq0_orcl

oracle 3999 1 0 13:09 ? 00:00:00 ora_mmon_orcl

oracle 4001 1 0 13:09 ? 00:00:00 ora_mmnl_orcl

oracle 4003 1 0 13:09 ? 00:00:00 ora_d000_orcl

oracle 4005 1 0 13:09 ? 00:00:00 ora_s000_orcl

root 4068 4036 0 13:29 pts/1 00:00:00 su - oracle

oracle 4069 4068 0 13:29 pts/1 00:00:00 -bash

oracle 4101 4069 0 13:29 pts/1 00:00:00 sqlplus

oracle 4102 4101 0 13:29 ? 00:00:01 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle 4137 1 0 13:54 ? 00:00:00 ora_qmnc_orcl

oracle 4139 1 0 13:54 ? 00:00:01 ora_j000_orcl

oracle 4141 1 0 13:54 ? 00:00:00 ora_j001_orcl

oracle 4143 1 0 13:54 ? 00:00:00 ora_j002_orcl

oracle 4145 1 0 13:54 ? 00:00:00 ora_j003_orcl

oracle 4147 1 0 13:54 ? 00:00:00 ora_j004_orcl

oracle 4149 1 0 13:54 ? 00:00:00 ora_j005_orcl

oracle 4159 1 0 13:54 ? 00:00:00 ora_q001_orcl

oracle 4167 1 0 13:56 ? 00:00:00 ora_q002_orcl

oracle 4169 1 0 13:57 ? 00:00:00 ora_q003_orcl

oracle 4172 4101 0 13:58 pts/1 00:00:00 /bin/bash -c ps -aef | grep oracle

oracle 4173 4172 0 13:58 pts/1 00:00:00 ps -aef

--数据已可正常访问

SQL> select * from scott.emp where ename = 'SCOTT';

EMPNO ENAME JOB MGR HIREDATE SAL COMM

---------- ---------- --------- ---------- --------- ---------- ----------

DEPTNO

----------

7788 SCOTT ANALYST 7566 19-APR-87 3000

--查看告警日志文件路径

SQL> show parameter background_dump_dest

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

background_dump_dest string /u01/app/oracle/admin/orcl/bdu

mp

--查看动态性能视图

SQL> select sql_text,executions from v$sql where cpu_time >2000000;

SQL_TEXT

--------------------------------------------------------------------------------

EXECUTIONS

----------

select s.synonym_name object_name, o.object_type from all_synonyms s, sys.a

ll_objects o where s.owner in ('PUBLIC', :schema) and o.owner = s.table_owner an

d o.object_name = s.table_name and o.object_type in ('TABLE', 'VIEW', 'PACKAGE',

'TYPE', 'PROCEDURE', 'FUNCTION', 'SEQUENCE')

2

SQL> select username,status,server,state from v$session where program = 'plsqldev.exe';

USERNAME STATUS SERVER STATE

------------------------------ -------- --------- -------------------

SYS INACTIVE DEDICATED WAITING

SYS INACTIVE DEDICATED WAITING

SQL> select sid,ctime from v$lock where sid = 275;

SID CTIME

---------- ----------

275 9607

275 9270

275 9243

/*

六、更多*/

SQL/PLSQL 基础

Oralce 10g 使用DBCA创建数据库

使用Uniread实现SQLplus翻页功能

Linux (RHEL 5.4)下安装Oracle 10g R2

VmWare6.5.2下安装RHEL 5.4(配置Oracle安装环境)

Oracle实例和Oracle数据库(Oracle体系结构)

Oracle相关

分享到:
评论

相关推荐

    深刻理解Oracle数据库的启动和关闭

    实例启动后,Oracle 会读取 `init.ora` 文件,并启动后台进程,分配 SGA。 - `STARTUP MOUNT`:创建实例并装载数据库,但不打开它。在这种状态下,可以进行一些数据库维护操作,如更改数据文件或重做日志配置。 - ...

    修改数据库最大连接数以及linux系统下ORACLE数据库启动多实例参照.pdf

    数据库最大连接数修改与 Oracle 多实例启动在 Linux 系统下 一、修改 Oracle 数据库允许的最大连接数 Oracle 数据库的最大连接数可以通过修改参数文件或使用 alter system 语句来实现。下面是修改最大连接数的步骤...

    修改数据库最大连接数以及linux系统下ORACLE数据库启动多实例借鉴.pdf

    Oracle数据库最大连接数修改和Linux系统下Oracle数据库多实例启动 一、修改Oracle数据库最大连接数 Oracle数据库的最大连接数是指数据库允许的最大并发连接数,该数值可以通过修改数据库参数来实现。下面是修改...

    oracle数据库的启动与关闭

    Oracle数据库的启动与关闭是数据库管理员日常管理的重要环节。Oracle数据库的启动分为三个阶段:启动例程、装载数据库和打开数据库。首先,启动例程涉及读取初始化参数文件,分配内存给SGA(系统全局区)和PGA(程序...

    oracle数据库的启动和关闭

    Oracle数据库的启动和关闭是数据库管理员(DBA)日常维护工作的重要部分,这些操作对于数据库的性能优化和问题排查至关重要。下面将详细讲解这个过程中的关键步骤和注意事项。 首先,关闭数据库时,如果用户已登录...

    Oracle数据库实例讲解.pdf

    本文将深入讲解Oracle数据库实例的概念,以及数据库与实例之间的关系,并提供启动、挂载、打开、关闭和卸载数据库实例的基本步骤。 Oracle数据库实例由一组后台进程和一个共享内存区域组成,这些进程和内存区域在同...

    Linux系统怎么用命令重启oracle数据库.docx

    重启Oracle数据库通常涉及两个主要步骤:停止数据库实例(如果尚未关闭)和重新启动监听器以及数据库实例。以下是几种常见的重启方法: **方法1:使用`dbstart`和`lsnrctl`命令** 1. 以root用户登录Linux系统。 2. ...

    Oracle 12c数据库实例深入浅出

    #### 一、Oracle数据库实例概念解析 **Oracle数据库实例**是指一组管理数据库文件的存储结构。简单来说,一个运行中的Oracle数据库背后实际上是一个实例,这个实例负责管理和提供对数据库文件的访问。 #### 二、...

    Oracle数据库的启停

    启停数据库的过程可以细分为三个步骤:启动实例、挂载数据库、打开数据库。下面将详细讲解 Oracle 数据库的启停过程。 启动数据库 启动数据库的过程可以通过 STARTUP 命令来实现。STARTUP 命令有三种方式:STARTUP...

    ORACLE数据库启动过程祥解.doc

    首先,Oracle数据库启动分为几个关键阶段,包括实例启动、数据文件检查、控制文件读取、还原日志文件、打开数据库和实例恢复等。这些步骤确保了数据库从关闭状态安全地恢复到可用状态。 在UNIX平台上,数据库启动...

    oracle修改实例名

    标题《oracle修改实例名》与描述《修改oracle数据库的实例名,修改oracle数据库的实例名》暗示本文主要讲述的是在Oracle数据库中如何修改数据库实例名称的操作。实例名(也称作SID,即系统标识符)是数据库安装后在...

    Oracle数据库精讲之数据库管理_ Oracle数据库管理视频

    第九讲:oracle数据库启动和关闭管理 第十讲:oracle undo sapce管理 第十一讲:oracle tablespace管理 第十二讲:oracle table管理 第十三讲:oracle index管理 第十四讲:oracle Partitioned Tables and Indexes...

    Oracle数据库启动与停止bat文件

    1. 双击运行`ORACLE_START.bat`,如果一切设置正确,Oracle数据库实例将开始启动,可以在SQL*Plus中查看启动状态,或者在服务管理器中确认数据库服务已启动。 2. 同样,双击`ORACLE_STOP.bat`,数据库将被停止。同样...

    ORACLE实例与数据库详解.doc

    Oracle数据库系统是由两个核心组成部分构成:Oracle实例(Instance)和数据库(Database)。理解它们之间的关系对于有效管理和维护Oracle环境至关重要。 1. **Oracle实例**:实例是操作系统中的进程集合,这些进程...

    实战管理Oracle 12c数据库实例

    Oracle 12c数据库实例管理是 DBA 的核心工作之一,本文将从数据库版本号、参数对比、安装环境、启动数据库阶段等方面详细介绍实战管理Oracle 12c数据库实例的知识点。 1. 数据库版本号 Oracle数据库版本号由五个...

    Oracle_11g图形界面创建数据库实例

    ### Oracle 11g 图形界面创建数据库实例详解 #### 一、概述 在本篇文章中,我们将详细介绍如何使用Oracle 11g图形界面创建一个新的数据库实例,并进一步配置包括表空间、角色及导入数据文件等操作。这不仅适用于...

    oracle数据库日志查看方法

    ### Oracle数据库日志查看方法详解 #### 一、概述 Oracle数据库是企业级应用中广泛使用的数据库管理系统之一,为了确保数据库系统的稳定运行和快速定位问题,掌握Oracle数据库日志查看方法至关重要。本文将详细...

    oracle 默认数据库 orcl 启动 关闭 批处理

    在提供的压缩包中,我们有两个批处理文件:`Start Oracle.bat`和`Stop Oracle.bat`,分别用于启动和关闭Oracle数据库实例。 1. **启动Oracle数据库**: - `Start Oracle.bat`文件很可能包含了启动Oracle数据库实例...

    Oracle数据库案例教程.pdf

    从给定的文件信息来看,这是一本关于Oracle数据库的案例教程,主要面向初学者,旨在通过实际案例和练习帮助读者掌握Oracle数据库的基础知识和操作技能。以下是对该教程涉及的关键知识点的详细解读: ### Oracle...

Global site tag (gtag.js) - Google Analytics