oracle学习小结之oracle数据库的启动
一、概述
Oracle数据库的启动,严格来说应该是实例的启动,数据库仅仅是在实例启动后进行装载。Oracle数据库启动的过程被划分为几个不同的步骤,在不同的启动过程中,可以对其实现不同的操作。
Oracle 数据库启动分为三个阶段:NOMOUNT--->MOUNT--->OPEN
nomount:读取参数文件,启动实例,分配 SGA,启动部分进程,定位控制文件。
mount:实例启动后读取控制文件,挂载数据库。
open:读取数据文件和日志文件,启动数据库。
启动命令:STARTUP [FORCE][RESTRICT] [PFILE=...] [NOMOUNT] [MOUNT] [OPEN]
二、第一个阶段:NOMOUNT阶段
nomount阶段需要加载参数文件、启动一个实例(分配内存SGA和启动部分必要前后台进程)。
1.nomount阶段操作流:(1) --->(2) --->(3) --->(4) --->(5)
(1)、定位参数文件: Oracle 实例按照固定的搜索顺序查找有效的参数文件:spfile<SID>.ora ---> spfile.ora ---> init<SID>.ora
-
spfile<SID>.ora: 在平台特定的默认位置(通常是$ORACLE_HOME/dbs(Unix/Linux) 或%ORACLE_HOME%\database(Windows))查找服务器参数文件 (SPFILE),文件名如spfileorcl.ora(SID=orcl)。 -
spfile.ora: 在同一目录查找默认名称的 SPFILE (spfile.ora)。 -
init<SID>.ora: 在同一目录查找传统的文本初始化参数文件 (PFILE),文件名如initorcl.ora。 -
(2)、读取参数: 找到第一个有效的参数文件后,实例读取其中的参数设置(SGA和控制文件参数(
CONTROL_FILES参数的值,获取控制文件的位置列表))。 -
(3)、分配内存: 根据参数设置(主要是
SGA_TARGET,SGA_MAX_SIZE,MEMORY_TARGET,MEMORY_MAX_TARGET,PGA_AGGREGATE_TARGET等)分配 SGA 内存。 -
(4)、启动后台进程和前台进程: 根据参数设置启动必要的后台进程(如 PMON, SMON, DBWn, LGWR, CKPT, ARCn 等)。
-
(5)、打开log文件:打开并修改告警日志文件及跟踪文件。
2、参数文件内容介绍(spfile和pfile)
spfile是二进制文件,pfile是文本文件,二者可以相互转换
二者核心参数内容包含如下:
全局标识参数
DB_NAME:数据库唯一名称,必须与创建数据库时一致
DB_UNIQUE_NAME:在Data Guard环境中标识数据库的唯一名称
文件路径参数
CONTROL_FILES:指定控制文件路径(多路径配置提高容错性)
DB_CREATE_FILE_DEST:默认数据文件存储位置
内存管理参数
SGA_TARGET:定义系统全局区(SGA)总内存大小,支持自动管理子组件(如共享池、缓冲区缓存)
PGA_AGGREGATE_TARGET:设置程序全局区(PGA)内存限制,优化排序等操作
MEMORY_TARGET:统一管理SGA和PGA的总内存
进程与连接参数
PROCESSES:允许的最大并发进程数
SESSIONS:并发会话数上限
性能调优参数
DB_BLOCK_SIZE:数据库块大小(影响I/O性能,默认8KB)
OPTIMIZER_MODE:查询优化器模式(如ALL_ROWS/FIRST_ROWS)
3.分配内存阶段涉及到的SGA主要参数
SGA_MAX_SIZE: SGA最大大小
SGA_TARGET: SGA总大小(软上限),一般为总上限的80%-90%,Oracle会自动管理各个子区域大小
DB_CACHE_SIZE: 定义数据库缓冲区缓存大小
SHARED_POOL_SIZE:定义共享池的大小
STREAMS_POOL_SIZE:定义大池大小
LARGE_POOL_SIZE:定义大池大小
JAVA_POOL_SIZE:Java:定义大池大小
4.nomount阶段启动的关键后台进程
DBWn 数据库写入进程,虽然数据库文件尚未加载,但写入进程会启动
LGWR 日志写入进程,为后续的日志操作做准备
SMON 系统监控进程,为数据库恢复提供支持
PMON 进程监控进程,清理失败的进程
CKPT 检查点进程,为检查点操作和快速恢复提供支持
5.nomount阶段可以做的操作
该阶段多用于数据库创建、控制文件重建、特定的备份恢复等。
需要注意的是,此阶段不打开任何数据库文件(控制文件、数据文件、在线Redo日志)。
在RMAN恢复时,还原数据库控制文件和SPFILE文件也是在该阶段进行。
二、第二个阶段:MOUNT阶段
1.mount阶段操作流:(1) --->(2)
(1)关联数据库与开启的实例;
(2)根据参数文件找到控制文件并打开;
(3)读取控制文件获得数据文件及redo log文件。
1.控制文件内容与作用
控制文件里面存放的就是创建控制文件的sql语句,是二进制文件CONTROL01.CTL,利用如下语句可以把控制文件直接备份成创建控制文件的sql语句:alter database backup controlfile to trace as '/home/oracle/ctl001.txt';
可以看到控制文件里面的内容如下:
(1)它包含数据文件,在线日志文件,归档文件信息,这些文件信息用于数据库open的文件验证。当数据库的架构改变时,比如增减,删除文件时,会更新控制文件。
(2)包含了数据库恢复时需要的一些信息,用于数据库的恢复
以下是txt格式控制文件存放的信息
[oracle@rac1 ~]$ cat ctl001.txt
-- The following are current System-scope REDO Log Archival related
-- parameters and can be included in the database initialization file.
--
-- LOG_ARCHIVE_DEST=''
-- LOG_ARCHIVE_DUPLEX_DEST=''
--
-- LOG_ARCHIVE_FORMAT=orcl_%d_%S_%t_%r.dbf
--
-- DB_UNIQUE_NAME="orcl"
--
-- LOG_ARCHIVE_CONFIG='SEND, RECEIVE, NODG_CONFIG'
-- LOG_ARCHIVE_MAX_PROCESSES=4
-- STANDBY_FILE_MANAGEMENT=MANUAL
-- FAL_CLIENT=''
-- FAL_SERVER=''
--
-- LOG_ARCHIVE_DEST_1='LOCATION=/app/archive'
-- LOG_ARCHIVE_DEST_1='OPTIONAL REOPEN=300 NODELAY'
-- LOG_ARCHIVE_DEST_1='ARCH NOAFFIRM NOVERIFY SYNC'
-- LOG_ARCHIVE_DEST_1='REGISTER'
-- LOG_ARCHIVE_DEST_1='NOALTERNATE'
-- LOG_ARCHIVE_DEST_1='NODEPENDENCY'
-- LOG_ARCHIVE_DEST_1='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME'
-- LOG_ARCHIVE_DEST_1='VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)'
-- LOG_ARCHIVE_DEST_STATE_1=ENABLE
--
-- Below are two sets of SQL statements, each of which creates a new
-- control file and uses it to open the database. The first set opens
-- the database with the NORESETLOGS option and should be used only if
-- the current versions of all online logs are available. The second
-- set opens the database with the RESETLOGS option and should be used
-- if online logs are unavailable.
-- The appropriate set of statements can be copied from the trace into
-- a script file, edited as necessary, and executed when there is a
-- need to re-create the control file.
--
-- Set #1. NORESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- Additional logs may be required for media recovery of offline
-- Use this only if the current versions of all online logs are
-- available.
-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/app/oracle/oradata/ORCL/redo01.log' SIZE 200M BLOCKSIZE 512,
GROUP 2 '/app/oracle/oradata/ORCL/redo02.log' SIZE 200M BLOCKSIZE 512,
GROUP 3 '/app/oracle/oradata/ORCL/redo03.log' SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'/app/oracle/oradata/ORCL/system01.dbf',
'/app/oracle/oradata/ORCL/test01.DBF',
'/app/oracle/oradata/ORCL/sysaux01.dbf',
'/app/oracle/oradata/ORCL/undotbs01.dbf',
'/app/oracle/oradata/ORCL/wms01.DBF',
'/app/oracle/oradata/ORCL/users01.dbf'
CHARACTER SET ZHS16GBK
;
-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE '/app/archive/orcl_62725153_0000000001_1_1005785759.dbf';
-- ALTER DATABASE REGISTER LOGFILE '/app/archive/orcl_62725153_0000000001_1_1123878365.dbf';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE
-- All logs need archiving and a log switch is needed.
ALTER SYSTEM ARCHIVE LOG ALL;
-- Database can now be opened normally.
ALTER DATABASE OPEN;
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/app/oracle/oradata/ORCL/temp01.dbf'
SIZE 33554432 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
-- End of tempfile additions.
--
-- Set #2. RESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- The contents of online logs will be lost and all backups will
-- be invalidated. Use this only if online logs are damaged.
-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/app/oracle/oradata/ORCL/redo01.log' SIZE 200M BLOCKSIZE 512,
GROUP 2 '/app/oracle/oradata/ORCL/redo02.log' SIZE 200M BLOCKSIZE 512,
GROUP 3 '/app/oracle/oradata/ORCL/redo03.log' SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'/app/oracle/oradata/ORCL/system01.dbf',
'/app/oracle/oradata/ORCL/test01.DBF',
'/app/oracle/oradata/ORCL/sysaux01.dbf',
'/app/oracle/oradata/ORCL/undotbs01.dbf',
'/app/oracle/oradata/ORCL/wms01.DBF',
'/app/oracle/oradata/ORCL/users01.dbf'
CHARACTER SET ZHS16GBK
;
-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE '/app/archive/orcl_62725153_0000000001_1_1005785759.dbf';
-- ALTER DATABASE REGISTER LOGFILE '/app/archive/orcl_62725153_0000000001_1_1123878365.dbf';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE USING BACKUP CONTROLFILE
-- Database can now be opened zeroing the online logs.
ALTER DATABASE OPEN RESETLOGS;
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/app/oracle/oradata/ORCL/temp01.dbf'
SIZE 33554432 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
-- End of tempfile additions.
2.mount阶段可以做的操作
(1)重命名数据文件,移动数据文件位置等(数据库被打开,表空间脱机的情况下也可以重命名数据文件)。
(2)修改数据库的归档模式。
(3)实现数据库的完全恢复。
三、第三个阶段:OPEN阶段
1.open阶段操作流:(1) --->(2) --->(3)
(1)根据控制文件中获得的信息,打开数据文件;
(2)打开redo log;
(3)检查数据一致性,如有必要,进行前滚回滚恢复。
2.注意事项
该阶段需要注意以下几点:
(1)在此期间,Oracle将校验所有的数据文件和联机Redo日志文件能否打开并对数据库作一致性检查。
(2)如果出现一致性错误,那么SMON进程将启动实例恢复。
(3)如果任意一个数据文件或联机日志文件丢失,那么Oracle数据库将会报错。

1316

被折叠的 条评论
为什么被折叠?



