第03章Oracle实例

初始化参数文件

要启动实例并打开数据库,必须以sysdba身份连接并输入startup命令。然后,Oracle服务器将读取初始化参数文件,并根据其中包含的初始化参数准备实例。

两种类型的初始化参数文件:
  • 静态参数文件,pfile
  • 持久服务器参数文件,spfile
    图片说明

静态参数文件:initSID.ora

介绍:
  • 文本文件
  • 使用操作系统编辑器修改
  • 手动修改
  • 更改将在下次启动时生效
  • 仅在实例启动期间打开
  • 默认位置为$ORACLE U HOME/DBS
创建文件:
  • 从init.ora示例文件创建
    由Oracle Universal安装程序安装的示例
    使用操作系统copy命令复制示例
    由SID数据库唯一标识
    cp init.ora$oracle home/dbs/initdb101.ora
  • 修改initsid.ora文件
    编辑参数
    特定于数据库需求
静态参数文件例子
//初始化参数文件:initba01.ora
#Initialization Parameter File: initdba01.ora
//数据库名称=dba01
db_name = dba01
//实例名=dba01
instance_name = dba01
//控制文件=(/主页/dba01/oradata/u01/control01dba01.ctl,主/dba01/oradata/u02/control01dba02.ctl)
control_files = (
/home/dba01/ORADATA/u01/control01dba01.ctl,
/home/dba01/ORADATA/u02/control01dba02.ctl)
//数据库块大小=4096
db_block_size = 4096
//数据库缓存大小=4M
db_cache_size = 4M
//共享池大小=50000000
shared_pool_size = 50000000
//java_pool_大小=50000000
java_pool_size = 50000000
//最大转储文件大小=10240
max_dump_file_size = 10240
//后台转储目标=/home/dba01/admin/bdump
background_dump_dest = /home/dba01/ADMIN/BDUMP
//用户转储目标=/home/dba01/admin/udump
user_dump_dest = /home/dba01/ADMIN/UDUMP
//核心转储目标=/home/dba01/admin/cdump
core_dump_dest = /home/dba01/ADMIN/CDUMP
//撤消管理=自动
undo_management = AUTO
//撤消表空间=撤消
undo_tablespace = UNDOTBS

持久服务器参数文件

介绍:

  • 二进制文件
  • 由Oracle服务器维护
  • 始终驻留在服务器端
  • 能够在关闭和启动期间持续进行更改
  • 可以自动调整参数值
  • 可以让恢复管理器支持备份到初始化参数文件
创建SPfiles:
  • 从pfile文件创建
    SQL> CREATE SPFILE = ‘ORACLE_HOME/dbs/initDBA01.ora’;
    参数说明:
    SPFILE-NAME: SPFILE to be created
    PFILE-NAME: PFILE creating the SPFILE
  • 可以在实例启动之前或之后执行

spfile示例:

*.background_dump_dest= '/home/dba01/ADMIN/BDUMP'
*.compatible='9.2.0'
*.control_files='/home/dba01/ORADATA/u01/ctrl01.ctl'
*.core_dump_dest= '/home/dba01/ADMIN/CDUMP'
*.db_block_size=4096
*.db_name='dba01'
*.db_domain= 'world'
*.global_names=TRUE
*.instance_name='dba01'
*.remote_login_passwordfile='exclusive'
*.java_pool_size=50000000
*.shared_pool_size=50000000
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS'
修改spfile中的参数

从操作系统层面不能修改,只能通过数据库内部参数文件修改
SYSTEM SET parameter_name = parameter_value [COMMENT 'text'] [SCOPE = MALTER SYSTEM SET 命令用于更改实例参数的值。
ALTER EMORY|SPFILE|BOTH] [SID= 'sid'|'*']
参数说明:

  • parameter_name: 要更改的参数的名称
  • parameter_value: 将参数更改为的值
  • COMMENT: 要添加到要更改的参数旁边的spfile中的注释。
  • SCOPE: 确定是在内存、spfile中还是在这两个区域中进行更改
  • MEMORY: 仅在当前运行的实例中更改参数值
  • SPFILE 仅更改spfile中的参数值
  • BOTH: 更改当前运行的实例和spfile中的参数值。(静态参数不能同时用于修改,例如日志缓冲区。)
  • SID: 标识正在使用的spfile的Oracle_sid
  • 'sid': 更改spfile时使用的特定sid
  • '*': 使用默认的spfile文件
显示在spfile中参数:

show parameter 命令用于更改实例参数的值。
show parameter [参数名称]

从spfile创建pfile:

pfile在服务器端创建为文本文件。此命令可以在实例启动之前或之后执行。这提供了一种查看spfile并通过以下方式进行修改的简单方法:

  • 将spfile导出到pfile
  • 编辑pfile
  • 从已编辑的pfile重新创建spfile
优先顺序:
  • spfilesid.ora文件
  • 默认spfile
  • 初始ID.ORA
  • 默认文件
指定的pfile可以覆盖优先级。

startup pfile=$oracle_home/dbs/initba1.ora

pfile可以指示使用spfile。

spfile=/database/startup/spfiledba1.ora

启动数据库

启动数据库时,您可以选择它的启动状态。以下场景描述了启动实例的不同阶段。

启动实例(nomount)

只有在创建数据库或重新创建控制文件时,才会在nomount阶段启动实例。
启动实例包括以下任务:

  • 按以下顺序从$oracle_home/dbs读取初始化文件:
    第一个spfilesid.ora
    如果找不到,则spfile.ora
    如果找不到,则initsid.ora
    使用startup指定pfile参数将覆盖默认行为。
  • 分配SGA
  • 启动后台进程
  • 打开alertsid.log文件和跟踪文件

必须使用初始化参数文件或启动命令中的db_name参数来命名数据库。
启动数据库时,您可以选择它的启动状态。以下场景描述了启动实例的不同阶段。

装入数据库(装入)

只有在创建数据库或重新创建控制文件时,才会在nomount阶段启动实例。
要执行特定的维护操作,可以启动实例并装载数据库,但不打开数据库。
例如,在执行以下任务时,必须装入数据库,但不能打开:

  • 重命名数据文件
  • 启用和禁用联机重做日志文件存档选项
  • 正在执行完整的数据库恢复
    装载数据库包括以下任务:
  • 定位并打开参数文件中指定的控制文件
  • 读取控制文件以获取数据文件和联机重做日志文件的名称和状态。但是,此时不执行任何检查来验证数据文件和联机重做日志文件的存在。
打开数据库(打开)

正常的数据库操作意味着一个实例被启动,数据库被装入并打开。通过正常的数据库操作,任何有效的用户都可以连接到数据库并执行典型的数据访问操作。
打开数据库包括以下任务:

  • 打开联机数据文件
  • 打开联机重做日志文件

如果试图打开数据库时没有任何数据文件或联机重做日志文件,Oracle服务器将返回一个错误。
在最后一个阶段,Oracle服务器将验证所有数据文件和联机重做日志文件是否都可以打开,并检查数据库的一致性。如有必要,SMON后台进程将启动实例恢复。

启动命令:

STARTUP [FORCE] [RESTRICT] [PFILE=filename] [OPEN [RECOVER][database] |MOUNT |NOMOUNT]
参数说明:

  • OPEN:允许用户访问数据库
  • mount:为某些DBA活动装载数据库,但不提供用户访问数据库的权限
  • nomount:创建SGA并启动后台进程,但不提供对数据库的访问
  • pfile=parfile:启用用于配置实例的非默认初始化参数文件
  • force:在执行正常启动之前中止正在运行的实例
  • RESTRICT:仅允许具有受限会话权限的用户访问数据库
  • RECOVER:在数据库启动时开始媒体恢复
alter database命令

要将数据库从nomount移到mount阶段或从mount移到open阶段,请使用alter database命令:
ALTER DATABASE (安装/打开)
为了防止用户事务修改数据,可以以只读模式打开数据库。
要启动实例,请使用以下命令:
ALTER DATABASE OPEN [读写只读]
参数说明:

  • READ WRITE:以读/写模式打开数据库,用户可以生成在线重做日志文件。
  • READ ONLY:限制用户只读事务,防止用户生成联机重做日志文件信息。
关闭数据库

关闭数据库以使操作系统脱机备份所有物理结构,并在重新启动时使修改的静态初始化参数生效。要关闭实例,必须以sysoperar或sysdba身份连接,并使用以下命令:
SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]

使用诊断文件监视实例

诊断文件
  • 包含有关遇到的重要事件的信息
  • 用于解决问题
  • 用于在日常基础上更好地管理数据库
有几种类型
  • alertsid.log文件:数据库日常操作的信息
  • 后台跟踪文件:后台进程(如smon、pmon、dbwn等)失败时的重要信息
  • 用户跟踪文件:致命用户错误或用户强制跟踪文件的重要信息
警报日志文件
  • alertsid.log文件:
    记录命令
    记录重大事件的结果
    用于日常操作信息
    用于诊断数据库错误
  • 每个条目都有一个与之相关联的时间戳
  • 必须由DBA管理
  • BACKGROUND_DUMP_DEST(后台转储目标)初始化参数定义的位置。
    注意:Oracle 10g中警报日志的默认路径是oracle_sid/bdump,
    在Oracle11g中是oracle_sid/$oracle_sid/trace。如果意外删除了警报日志文件,则不需要执行任何操作,该文件将由实例自动创建。
    更改日志文件
    每个Oracle实例都有一个警报日志文件。如果尚未创建,则在实例启动。警报日志文件必须由DBA管理,当数据库继续工作时,它继续增长。警报日志文件应该是您查找的第一个位置。诊断日常操作或错误时。警报日志文件还包含用来跟踪文件以获取更详细的信息的指针。
    警报日志文件保存以下信息的记录:
  • 启动或关闭数据库时间
  • 所有非默认初始化参数的列表
  • 启动后台流程
  • 实例使用的线程
  • 日志序列号lgwr正在写入
  • 关于日志切换的信息
  • 创建表空间和撤消段
  • 更改已发布的报表
  • 有关错误信息的信息,如ORA-600和扩展数据块错误
后台跟踪文件
  • 后台跟踪文件用于记录后台进程遇到的错误,如SMON, PMON, DBWN和其他后台进程。只有当错误需要写入跟踪文件时,这些文件才存在。您可以使用这些文件诊断和排除问题。最初创建后台跟踪文件时,它包含指示数据服务器和操作系统版本号的头信息。
  • 用户跟踪文件的命名约定:sid_processname_pid.trc(db01_lgwr_23845.trc)。
  • 其位置由BACKGROUND_DUMP_DEST(后台转储目标)初始化参数定义。
用户跟踪文件
  • 用户跟踪文件
    由用户进程生成
    可以由服务器进程生成
    包含跟踪的SQL语句的统计信息
    包含用户错误消息
  • 当用户遇到用户会话错误时创建
  • 用户跟踪文件的命名约定:sid_ora_pid.trc(db01_ora_23845.trc)。
  • 位置由USER_DUMP_DEST(用户转储)目标定义
  • 由MAX_DUMP_FILE_SIZE(最大转储文件大小)定义大小