oracle的启动过程在网上还是有很多文章的,大多是罗列下启动的命令,介绍详细些的也有,自己也写点吧,算是巩固下
这里不介绍RAC模式下的操作,只是简单的单实例状态
oracle的启动方法说起来极其简单,看命令就一个单词(startup)搞定,甚至比咱们起个游戏还简单,玩游戏还有插件,客户端啥的呢,呵呵
但是要是往深了看,就比较头大了,启动过程众所周知,三段启动,中间读取的文件,拉的进程,分配内存,关联数据文件,写跟踪日志还是蛮多的,没事分析下让咱们对数据库还是能多点了解的
oracle的启动方式,或者说其后面能跟什么参数
1、startup nomount--数据库实例启动
2、startup mount----数据库装载
3、startup-----数据库打开
4、startup force (nomount|mount)----在启动前加上shutdown abort
5、startup open recover ----------启动一个事例,装入数据库,并启动全部的介质恢复
6、startup restrict------限制在启动时对数据库的访问
oracle的三段启动
1、startup nomount
启动方法:
使用sqlplus / as sysdba|sysoper 登陆数据库空实例,执行以下命令
startup nomount
启动时需要的条件
1)、环境变量设置正确,需要设置ORACLE_SID环境变量
2)、有对应的参数文件,参数文件最小化设置db_name
启动时参数文件的读取顺序
spfile
.ora--------spfile.ora------------init.ora
启动过程中oracle执行的哪些操作
1)、读取验证参数文件,初始化参数
2)、分配内存空间
9i有了pga_aggregate_target参数,10g有了sga_target参数,11g有了memory_target参数,所以设置的内存分配的参数越来越少,11g很省事就1个了,具体的大家看看参数文件和内存空间管理的相关介绍就行了。说多了就跑题了。
3)、启动后台进程
4)、写跟踪日志(这是在启动全过程都有的)
日志的位置在$ORACLE_BASE/admin/ORACLE_SID/bdump/alert_sid.log
日志内容
Tue May 7 17:32:01 2013
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 3
Using LOG_ARCHIVE_DEST_10 parameter default value as USE_DB_RECOVERY_FILE_DEST
Autotune of undo retention is turned on.
IMODE=BR
ILAT =182
LICENSE_MAX_USERS = 0
SYS auditing is disabled
ksdpec: called for event 13740 prior to event group initialization
Starting up ORACLE RDBMS Version: 10.2.0.4.0.
System parameters with non-default values:
processes = 1500
sga_target = 1073741824
control_files = /billdb/controlfile/controlfile01.ctl, /billdb/controlfile/controlfile02.dbf
db_block_size = 8192
compatible = 10.2.0.4.0
db_files = 4096
db_file_multiblock_read_count= 16
db_recovery_file_dest = /oraflash
db_recovery_file_dest_size= 3219128320
undo_management = AUTO
undo_tablespace = UNDOTBS1
remote_login_passwordfile= EXCLUSIVE
db_domain =
dispatchers =
session_cached_cursors = 200
job_queue_processes = 10
background_dump_dest = /oracle/app/oracle/admin/sid/bdump
user_dump_dest = /oracle/app/oracle/admin/sid/udump
core_dump_dest = /oracle/app/oracle/admin/sid/cdump
audit_file_dest = /oracle/app/oracle/admin/sid/adump
db_name = ****
open_cursors = 800
pga_aggregate_target = 536870912
PMON started with pid=2, OS id=25273
PSP0 started with pid=4, OS id=25277
MMAN started with pid=6, OS id=25279
DBW0 started with pid=8, OS id=25281
DBW1 started with pid=10, OS id=25283
LGWR started with pid=12, OS id=25285
CKPT started with pid=14, OS id=25287
SMON started with pid=16, OS id=25289
RECO started with pid=18, OS id=25291
CJQ0 started with pid=20, OS id=25293
MMON started with pid=22, OS id=25295
MMNL started with pid=24, OS id=25299
可以看到启动过程做了哪些事,其中比较全面的记录了参数文件的内容,在一些参数文件意外损坏或丢失的情况下可以借此修复
最后看到启动了哪些后台进程,有pid和OS id(操作系统的pid)两列的值,其中OS id在10g才有的,也有听说是9i的某个版本,这个应该不是太重要,可以通过视图v$process来查看具体的对应关系的,有点意思的地方大家看到没,后台进程启动时日志中的pid(相当乱啊,名词缩写都一样,各种pid,spid)都是偶数,呵呵,这个我也不晓得是不是oracle内部还有什么机制决定的。或者压根就是我多虑了,有知道的大虾们帮忙解惑啊!
实例启动后可以做的操作
1)、可以查看关于参数文件的一些视图
如v$parameter、v$sga、v$process、v$session、v$instance等
2)、可以使用show parameter parameter_name 查看参数
3)、可以使用alter system|session set parameter_name=value 来修改参数(spfile启动)
4)、由于此时控制文件没有被打开,所以还可以重做控制文件
2、mount
启动方法
1)、使用sqlplus / as sysdba|sysoper 登陆数据库空实例,执行以下命令
startup nomount
2)、在已经nomount的状态下执行
alter database mount
启动需要的条件
1)、控制文件
这里并不需要数据文件,虽然这一部做了数据库的装载,关联了数据文件,但是是不对数据文件和一些日志文件的是否存在进行验证的。
启动过程中oracle做哪些操作
1)、关联数据文件,装载数据库,这是废话
2)、写跟踪日志文件,貌似这也是废话,一头汗啊
看看日志里写了什么
Tue May 7 17:33:26 2013
alter database mount
Tue May 7 17:33:30 2013
Setting recovery target incarnation to 1
Tue May 7 17:33:30 2013
Successful mount of redo thread 1, with mount id 3297703398
Tue May 7 17:33:30 2013
Database mounted in Exclusive Mode
Completed: alter database mount
数据库装载后可以进行的操作
1)、可以查看控制文件相关的一些视图:如v$controlfile、v$database、v$datafile、v$logfile等
2)、可以对数据库的物理结构做操作
重命名数据文件
添加、删除和重命名重做日志文件
执行数据库完全恢复操作
改变数据库的归档模式
打开数据库的闪回模式
3)、可以做数据文件的备份
3、open
启动方法
1)、使用sqlplus / as sysdba|sysoper 登陆数据库空实例,执行以下命令
startup
2)、在已经mount的状态下执行
alter database open
启动条件
需要数据文件,联机重做日志文件存在,且确实可用,别lv啥的没激活就歇菜了
启动过程
1)、检查数据文件,联机重做日志文件是否存在,且进行校验数据库的一致性,如果需要将启动SMON进行实例恢复
2)、前滚数据(将已经写入联机重做日志中的但没有写入数据文件的操作进行重做)
日志内容:
Tue May 7 17:33:39 2013
alter database open
Tue May 7 17:33:39 2013
LGWR: STARTING ARCH PROCESSES
ARC0 started with pid=26, OS id=25756
Tue May 7 17:33:39 2013
ARC0: Archival started
ARC1: Archival started
LGWR: STARTING ARCH PROCESSES COMPLETE
ARC1 started with pid=28, OS id=25758
ARC1: Becoming the 'no FAL' ARCH
ARC1: Becoming the 'no SRL' ARCH
Tue May 7 17:33:39 2013
ARC0: Becoming the heartbeat ARCH
Tue May 7 17:33:39 2013
db_recovery_file_dest_size of 6144 MB is 55.89% used. This is a
user-specified limit on the amount of space that will be used by this
database for recovery-related files, and does not reflect the amount of
space available in the underlying filesystem or ASM diskgroup.
Tue May 7 17:34:06 2013
Thread 1 advanced to log sequence 44435 (thread open)
Thread 1 opened at log sequence 44435
Current log# 2 seq# 44435 mem# 0: /billdb/redolog/redolog02.dbf
Successful open of redo thread 1
Tue May 7 17:34:06 2013
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Tue May 7 17:34:06 2013
SMON: enabling cache recovery
Tue May 7 17:34:07 2013
Successfully onlined Undo Tablespace 1.
Tue May 7 17:34:07 2013
SMON: enabling tx recovery
Tue May 7 17:34:07 2013
Database Characterset is ZHS16GBK
Opening with internal Resource Manager plan
where NUMA PG = 2, CPUs = 4
replication_dependency_tracking turned off (no async multimaster replication found)
Starting background process QMNC
QMNC started with pid=30, OS id=25990
Tue May 7 17:34:10 2013
Completed: alter database open
启动后数据库运行正常,该怎么玩就怎么玩吧
4、startup force (nomount|mount)
这只在极端的情况下使用,其实是两条命令的集合
shutdown abort +?
5、startup open recover
启动一个实例,装入数据库,并启动全部的介质恢复
6、startup restrict
将数据库启动到受限状态
在受限状态下,只有DBA才能访问数据库,执行一下操作:
-
Perform an export or import of data
-
Perform a data load (with SQL*Loader)
-
Temporarily prevent typical users from using data
-
Perform certain migration or upgrade operations
1) 执行数据导入导出
2) 使用sql*loader提取外部数据
3) 需要暂时拒绝普通用户访问数据库
4) 进行数据库移植或者升级操作
使用alter system disable restricted session命令即可以将受限状态改变为非受限状态
使用alter system enable restricted session命令可以将非受限状态变为受限状态
最后还可以使用其他两种启动方式
alter database open read only
可以使数据库进入只读状态。
alter database open read write 这个应该是默认状态的
可以使数据库进入读写状态
阅读(2307) | 评论(0) | 转发(0) |