Chinaunix首页 | 论坛 | 博客
  • 博客访问: 35598
  • 博文数量: 16
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5
  • 用 户 组: 普通用户
  • 注册时间: 2017-09-11 08:57
文章分类
文章存档

2013年(16)

分类: Oracle

2013-05-10 16:39:31

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) |
给主人留下些什么吧!~~