oracle 加载过程,4_Oracle_Admin_Oracle的启动过程

5c3a7539d141f247f2b00c8d65920f26.png

首先找加了SID的SPFILE,如果找不到,就找不带SID的SPFILE;如果还是找不到,就找PFILE。如果为startup 指定一个PFILE的路径,则该PFILE会覆盖默认的查找顺序。

/*=====================演示启动过程==========================*/

[oracle@localhost ~]$ cd /oracle/11g/dbs

[oracle@localhost dbs]$ lltotal 28

-rw-rw----. 1 oracle oinstall 1544 Sep  9 03:26 hc_orcl.dat

-rw-r--r--. 1 oracle oinstall 2851 May 15  2009 init.ora

-rw-r--r--. 1 oracle oinstall  861 Sep 9 03:27 initorcl.ora

# PFILE

-rw-r-----. 1 oracle oinstall   24 Aug 5 18:28 lkORCL

-rw-r-----. 1 oracle oinstall 1536 Aug  7 16:08 orapworcl

drwx------. 2 oracle oinstall 4096 Aug  5 18:25 peshm_orcl_0

-rw-r-----. 1 oracle oinstall 2560 Sep  8 22:10 spfileorcl.ora

# SPFILE

[oracle@localhost ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Tue Sep 903:26:57 2014

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

SQL> conn / as sysdbaConnected to an idle instance.

SQL> startupORACLE instance started.

Total System Global Area 422670336 bytes

Fixed Size                 1336960 bytes

Variable Size             318769536 bytes

Database Buffers          96468992 bytes

Redo Buffers               6094848 bytes

Database mounted.

Database opened.

-- 默认的启动方式使用的是SPFILE文件

[oracle@localhost dbs]$ mkdir old

[oracle@localhost dbs]$ mv spfileorcl.ora old

#将SPFILE移动到old目录下

[oracle@localhost dbs]$ rm -f initorcl.ora

[oracle@localhost dbs]$ cp old/spfileorcl.ora ./spfileabc.ora

[oracle@localhost dbs]$ vim abc123.oraspfile=$ORACLE_HOME/dbs/spfileabc.ora

# 创建一个PFILE,在这个PFILE里面指定SPFILE的路径

[oracle@localhost dbs]$ lltotal 32

-rw-r--r--. 1 oracle oinstall   38 Sep 9 03:38 abc123.ora

-rw-rw----. 1 oracle oinstall 1544 Sep  9 03:32 hc_orcl.dat

-rw-r--r--. 1 oracle oinstall 2851 May 15  2009 init.ora

-rw-r-----. 1 oracle oinstall   24 Aug 5 18:28 lkORCL

drwxr-xr-x. 2 oracle oinstall 4096 Sep  9 03:34 old

-rw-r-----. 1 oracle oinstall 1536 Aug  7 16:08 orapworcl

drwx------. 2 oracle oinstall 4096 Aug  5 18:25 peshm_orcl_0

-rw-r-----. 1 oracle oinstall 2560 Sep  9 03:36 spfileabc.ora

SQL> shutdown immediateDatabase closed.

Database dismounted.

ORACLE instance shut down.

-- 关闭现有的Instance

SQL> startuppfile=$ORACLE_HOME/dbs/abc123.ora-- 启动实例是指定PFILE的路径

ORACLE instance started.

Total System Global Area 422670336 bytes

Fixed Size                 1336960 bytes

Variable Size            318769536 bytes

Database Buffers           96468992 bytes

Redo Buffers               6094848 bytes

Database mounted.

Database opened.

0ea99337bd8b9736e2b86f5b62d908b8.png

f1a80b5a8e36ce64d5441e9670e4f1fa.png

Unix/Linux的root用户,或者Windows的administrator 具有启动关闭数据库的权限;如果Database是基于口令认证的,而某个用户被授予了SYSDBA和SYSOPER的权限,就可以启动关闭数据库, SYSOPER的权限略小于SYSDBA;

[oracle@localhost dbs]$ iduid=500(oracle) gid=500(oinstall)groups=500(oinstall),501(dba)context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

SQL> startup-- 这里没有要求输入口令,这是由于当前用户已经登录了操作系统,oracle就默认该用户有启动数据库的权限;如果该用户是远程连接数据库的,那么就会提示输入口令。

ORACLE instance started.

Total System Global Area 422670336 bytes

Fixed Size                 1336960 bytes

Variable Size            318769536 bytes

Database Buffers          96468992 bytes

Redo Buffers               6094848 bytes

Database mounted.

Database opened.

3d3945b12be1bf6082b177de200f84fb.png

Instance started是分配SGA,启动后台进程的过程:

48e934116d1e53504dc65c75af70d86f.png

启动时会将很多启动参数写入日志文件,如果启动过程中出现了问题,可以查看相关的日志文件。日志文件中的参数可以拷贝出来构造成一个新的parameterfile。

/*============下面来演示一下startup nomount的状态==============*/

[oracle@localhost ~]$ sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Production on Tue Sep 903:59:30 2014

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

SQL> conn /as sysdbaConnected to an idle instance.

[oracle@localhost dbs]$ ps -ef | grep oracleoracle   1235112347  0 03:16 ?        00:00:00 sshd: oracle@pts/1

oracle   1235212351  0 03:16 pts/1    00:00:00 -bash

oracle   1319712315  0 03:59 pts/0    00:00:00 sqlplus

oracle     13198 13197 0 03:59 ?      00:00:00 oracleorcl(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

# 当前的数据库连接进程

oracle   13204 12352 0 04:00 pts/1    00:00:00 ps -ef

oracle   13205 12352 0 04:00 pts/1    00:00:00 greporacle

[oracle@localhost dbs]$ ipcs# 查看ipcs会发现此时SGA是空的

------ Shared MemorySegments --------

key        shmid      owner     perms      bytes      nattch    status

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

key        semid      owner     perms      nsems

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

key        msqid      owner     perms      used-bytes   messages

SQL> startup nomount--以nomount的模式启动

ORACLE instance started.

Total System GlobalArea  422670336 bytes

Fixed Size                  1336960 bytes

Variable Size             318769536 bytes

Database Buffers           96468992 bytes

Redo Buffers                6094848 bytes

[oracle@localhost dbs]$ ps -ef | grep oracleoracle   13197 12315 0 03:59 pts/0    00:00:00sqlplus

oracle   13286    1  0 04:04 ?        00:00:00 ora_pmon_orcl

oracle   13288    1  1 04:04 ?        00:00:00 ora_vktm_orcl

oracle   13292    1  0 04:04 ?        00:00:00 ora_gen0_orcl

oracle   13294    1  0 04:04 ?        00:00:00 ora_diag_orcl

oracle   13296    1  0 04:04 ?        00:00:00 ora_dbrm_orcl

oracle   13298    1  0 04:04 ?        00:00:00 ora_psp0_orcl

oracle   13300    1  0 04:04 ?        00:00:00 ora_dia0_orcl

oracle   13302    1  0 04:04 ?        00:00:00 ora_mman_orcl

oracle   13304    1  0 04:04 ?        00:00:00 ora_dbw0_orcl

oracle   13306    1  0 04:04 ?        00:00:00 ora_lgwr_orcl

oracle   13308    1  0 04:04 ?        00:00:00 ora_ckpt_orcl

oracle   13310    1  0 04:04 ?        00:00:00 ora_smon_orcl

oracle   13312    1  0 04:04 ?        00:00:00 ora_reco_orcl

oracle   13314    1  0 04:04 ?        00:00:00 ora_mmon_orcl

oracle   13316    1  0 04:04 ?        00:00:00 ora_mmnl_orcl

oracle   13318    1  0 04:04 ?        00:00:00 ora_d000_orcl

oracle   13320    1  0 04:04 ?        00:00:00 ora_s000_orcl

# Oracle的后台进程都已经启动了

oracle   13323 13197 0 04:04 ?        00:00:00oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle   13347 12352 0 04:05 pts/1    00:00:00 ps -ef

oracle   13348 12352 0 04:05 pts/1    00:00:00 greporacle

[oracle@localhost dbs]$ ipcs------ Shared MemorySegments --------

key        shmid      owner     perms      bytes      nattch    status

0x85abc748 425984     oracle    660        4096       0

# 再次查看ipcs的资源,会发现SGA已经分配好了

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

key        semid      owner     perms      nsems

0x974edfd4 983042     oracle    660        154

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

key        msqid      owner     perms      used-bytes   messages

/*=========已经可以查看到数据库的部分信息了=========*/

SQL> show parameter db_namNAME                              TYPE        VALUE

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

db_name                              string      orcl

SQL> show parameter db_block_sizeNAME                              TYPE        VALUE

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

db_block_size                        integer     8192

fad665fe27097d523c466aeb0a3baebb.png

Mount的过程就是将实例和数据库建立关联的过程,要mount数据库,首先要找到并打开control files,这个查找的路径由初始化参数中CONTROL_FILES指定。Mount时会读取controlfiles中数据库的name和redo log files等相关信息。

这个阶段数据库仍然是关闭状态,普通用户不能访问数据库,只有管理员可以对数据库做一些维护工作,如备份和恢复等。

===================演示mount数据库的过程========================

[oracle@localhostdbs]$ strings spfileorcl.ora | moreorcl.__shared_pool_size=159383552

orcl.__streams_pool_size=4194304

*.audit_file_dest='/oracle/admin/orcl/adump'

*.control_files='/oracle/oradata/orcl/control01.ctl','/oracle/flash_recovery_area/orcl/control02.ctl'

# 启动项中规定的control files文件的路径

*.db_block_size=8192

*.db_domain=''

*.db_name='orcl'

SQL> alter database mount;--Mount数据库

Database altered.

c8c18c66c2adf449f7c4422148bf0eaa.png

此阶段control files中指定的文件如redolog 或联机数据文件等都会打开;普通用户已经可以连接数据库了。

但是在上一次关闭数据库之前就已经处于offline状态的tablespace,此时仍然处于offline状态,如果要使其变成online状态,需要使用相应的启动命令。

如果某些数据文件或redo log files有错误,而导致数据库无法正常打开,那么需要先将数据库调整为mount状态,然后进行一些恢复工作。

SQL> alter database open;Database altered.

c5e27b07ba16144bb29d2c67409f56f1.png

18246638e102533c7cf54b95f526b02e.png

注意,数据库的启动过程是单向的,即只能从mount到open,但不能从mount到nomount。

[oracle@localhost ~]$sqlplus /nologSQL*Plus: Release11.2.0.1.0 Production on Tue Sep 9 04:38:48 2014

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

SQL> conn / as sysdbaConnected to an idleinstance.

SQL> startup mount;ORACLE instance started.

Total System GlobalArea  422670336 bytes

Fixed Size                  1336960 bytes

Variable Size             318769536 bytes

Database Buffers           96468992 bytes

Redo Buffers                6094848 bytes

Database mounted.

SQL> alter databasenomount;alter database nomount

*

ERROR at line 1:

ORA-02231: missing orinvalid option to ALTER DATABASE

-- 不能从mount到nomount状态

SQL> alter database open;Database altered.

-- 但是可以由mount到open状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值