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$开头

DICT和DICT_COLUMNS视图包含了动态性能视图描述及其列的描述

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

五、演示 */

[[email protected] ~]# su - oracle

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

[[email protected] ~]$ 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查看当前进程间通讯所用到的共享资源,内存段及信号量,

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

[[email protected] ~]$ 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

[[email protected] ~]$ 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

时间: 2024-10-08 21:30:49

Oracle 数据库实例启动关闭过程的相关文章

Linux——oracle数据库实例启动关闭(转)

-->Oracle 数据库实例启动关闭过程 --================================ [[email protected] ~]# su - oracle --查看未启动实例前的进程情况 [[email protected] ~]$ 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   

oracle数据库实例启动与关闭

区分数据库与实例:实例是指各种内存结构和服务进程,数据库是指物里存储磁盘空间. 数据库实例启动: startup [nomount | mount | open | force ]  [resetrict]  [pfile=finename] nomount 表示启动实例不加载数据库 mount 表示启动实例.加载数据库并保持数据库关闭状态 open 表示启动实例.加载并打开数据库,默认为此选项 force 表示终止实例并重新启动数据库 resetrict 表示以受限制的会话方式启动数据库 pf

数据库实例开启关闭详解

Oracle数据库的启动关闭的几种方式 Oracle数据库的几种启动和关闭方式 有以下几种启动方式:1.startup nomount非安装启动,这种方式启动下可执行:重建控制文件.重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件. 2.startup mount dbname安装启动,这种方式启动下可执行:数据库日志归档.数据库介质恢复.使数据文件联机或脱机,重新定位数据文件.重做日志文件. 执行"nomount"

LINUX下oracle数据库的启动和关闭

1. $ su - oracle 2. $ sqlplus / nolog 3. sql> conn / as sysdba 或吧2,3合为一个sqlplus / as sysdba 4. sql> startup (一般不需要加参数,只要设置好环境变量) 5. sql> quit (退出sql模式) 6. $ lsnrctl start (启动监听器)关闭oracle 1. $ lsnrctl stop(关闭监听器,在这之前,应该先关闭应用程序) 2. $ sqlplus /nolog

Oracle数据库实例核心技术解析_超越OCP精通Oracle视频教程培训05

1.学完本章节Oracle视频教程能掌握以下内容: 启动和停止Oracle DB 和组件使用Oracle Enterprise Manager使用SQL*Plus 工具命令访问数据库如何设置Oracle的环境变量的修改数据库初始化参数跟踪分析数据库启动的各个阶段深入剖析数据库初始化的各个内部过程剖析Oracle数据库的引导过程介绍数据库关闭的过程查看数据库警告日志你对Oracle数据库实例了解多少?实例启动警告日志及启动进程控制文件更新时间与心跳信息解析控制文件内容深入分析数据库的参数文件深入理

ORA-00119: invalid specification for system parameter LOCAL_LISTENER ORA-00132: syntax error or unresolved network name &#39;LISTENER_ORCL&#39; 导致Oracle数据库无法启动

前言 最近安装Oracle11g,重启电脑后,无法登陆数据库,到sqlplus登陆时就报错,没有例程...等等(忘记截图了),去看了下服务,监听器和实例服务都是开着的,就是无法启动数据库,到网上找了一些教程,通过 sqlplus / as sysdba 这种方式登录数据库,然后输入 startup 命令启动数据库就报了这两个错误. 个人分析,应该是监听器配置出现了问题,如果有知道的园友,麻烦告知一二. 解决步骤 1.先以 sqlplus / as sysdba 方式启动sqlplus sqlpl

windows下同一台服务器上装有两个ORACLE数据库实例,通过命令启停数据库

同一台服务器上装有两个ORACLE数据库实例,通过命令启停数据库,如何区分操作的是哪个数据库实例?操作如下: 1.在命令行 set oracle_sid=one_实例   //先修改环境变量,这一步等于切换了数据库实例 sqlplus /nolog    connect /as sysdba    shutdown 或者 2.连接的时候 sqlplus user/[email protected] as sysdba    //也可以指定 shutdown immediate select in

Oracle数据库之PL/SQL过程与函数

Oracle数据库之PL/SQL过程与函数 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保存到数据库中,以便共享. 过程和函数均存储在数据库中,并通过参数与其调用者交换信息.过程和函数的唯一区别是函数总向调用者返回数据,而过程不返回数据. 1. 存储过程概念 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中.经过第一次编译后再次

当有超过64个逻辑cpu时,Windows 下Oracle db 实例启动(startup)时会hang(挂起)

Bug 9772171 - Database startup hangs on Windows when machine has more than 64 cores [ID 9772171.8] 该文章已经说明:在11.2.0.2 已经fix(解决)该bug. 而现在11gR2版本已经推出了11.2.0.4,并且11.2.0.4是最终的11gR2版本.所以我们推荐安装11.2.0.4 外加最新的psu 最新的psu可以 查询这个文章获得:Oracle Database, Networking