例程恢复

031 第三章 管理oracle例程
第三章 管理oracle例程
目标:
创建和管理初始化参数文件
启动和关闭例程
监视和使用诊断文件

要点:
1.初始化参数文件
要启动一个例程,Oracle 服务器必须读取初始化参数文件。
参数文件有两种类型:
    静态参数文件pfile,一般名为initSID.ora
    永久参数文件(服务器端参数文件)spfile 一般名为spfileSID.ora
初始化参数文件内容:
    例程参数列表
    与该例程相关联的数据库的名称
    系统全局区 (SGA) 的内存结构的分配
    如何处理已满的联机重做日志文件
    控制文件的名称和位置
    有关撤消段的信息
为在各种不同情况下优化性能,一个例程可有多个初始化参数文件。

2.pfile initSID.ora
PFILE 是可使用标准的操作系统编辑器进行维护的文本文件。PFILE 在例程启动过程中是只读的。
如果文件发生修改,则必须关闭然后重新启动例程以使新的参数值生效。
缺省情况下,该文件位于 $ORACLE_HOME/dbs 目录中,文件名是 initSID.ora。 
pfile的创建:
pfile可通过复制样本init.ora文件(由 Universal Installer 在安装过程中创建),修改相关参数来创建(可直接使用文本编辑器编辑)。

3 spfile spfileSID.ora
SPFILE 是 Oracle9i 中新增的二进制文件。该文件不能手动修改,且必须始终驻留在服务器端。
创建该文件后,即由 Oracle 服务器进行维护。如果进行手动修改,SPFILE 将无效。
SPFILE 具有对数据库进行永久更改的功能,不受关闭和启动操作的影响,它还提供自动调节记录在文件中的参数值的功能。
使用 SPFILE,RMAN 可以支持初始化参数文件的备份,因为 SPFILE 驻留在服务器端。
缺省情况下,它位于 $ORACLE_HOME/dbs 目录中,缺省名称为 spfileSID.ora。
spfile的创建:
SPFILE 是使用 CREATE SPFILE 命令从 PFILE 文件创建的。该命令需要具有 SYSDBA 权限才能执行。该命令可在例程启动之前或之后执行。 
CREATE SPFILE [='SPFILE-NAME'] FROM PFILE[='PFILE-NAME']
如果在语法中未包括 SPFILE-NAME 和 PFILE-NAME,Oracle 将使用缺省 PFILE 来生成 SPFILE(其名称由系统生成)。
导出spfile:
CREATE PFILE FROM SPFILE;
以上命令在服务器端创建了一个文本文件格式的PFILE 。该命令可在例程启动之前或之后执行。
这样就提供了一种查看SPFILE并进行修改的简单方法: 
将 SPFILE 导出到PFILE
编辑PFILE
从编辑过的PFILE重新创建 SPFILE
将SPFILE导出到PFILE还可用作创建永久参数文件的备份的备用方法。 
注:spfile不能直接编辑,否则将不可用,如需查看应导出到pfile。
    使用Oracle9i,RMAN 还可备份永久参数文件。 
    查看SPFILE内的参数设置时有几个选项。V$SPPARAMETER是显示和查看SPFILE的内容的另一种方法。

4.startup命令行为
若要启动例程,请使用以下命令: 
 STARTUP [FORCE] [RESTRICT] [PFILE=filename]
  [OPEN [RECOVER][database]
  |MOUNT  
  |NOMOUNT]
其中: 
OPEN:使用户能够访问数据库 
MOUNT:为某些 DBA 活动加载数据库,但不允许用户访问数据库。
NOMOUNT:创建 SGA 并启动后台进程,但不允许访问数据库。
PFILE=parfile:允许使用非缺省参数文件配置例程。
FORCE:执行正常启动之前终止运行的例程。 
RESTRICT:只允许具有 RESTRICTED SESSION 权限的用户访问数据库。  
RECOVER:在数据库启动时开始进行介质恢复。
按以下优先顺序读取参数文件:
    服务器端的spfileSID.ora用于启动例程。 
    如果找不到spfileSID.ora,则使用服务器端的缺省SPFILE来启动例程。 
    如果找不到缺省SPFILE,将使用服务器端的initSID.ora来启动例程。 
    指定的PFILE可覆盖缺省SPFILE来启动例程。 
    可在PFILE中包含一个定义以指示要使用SPFILE。这是在非缺省位置使用SPFILE 启动例程的唯一方法。
    要使用非缺省位置的SPFILE启动数据库,必须在PFILE中指定 SPFILE=<完整路径和文件名>。 
例:
 STARTUP PFILE = $ORACLE_HOME/dbs/initDBA1.ora
         SPFILE=$HOME/ADMIN/PFILE/$ORACLE_SID.ora。
 
5.修改实例的参数值——alter system
语法:   
ALTER SYSTEM SET parameter_name = parameter_value
   [COMMENT 'text'] [SCOPE = MEMORY|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
ALTER SYSTEM RESET 命令用于删除或还原为缺省值,例:
SQL> ALTER SYSTEM RESET undo_suppress_errors
   2 SCOPE=BOTH SID=‘dba01’;
从SPFILE中删除一个参数有以下几种方法: 
将参数重设为缺省值来模拟使用 ALTER SYSTEM SET 的删除操作。 
使用 CREATE SPFILE FROM PFILE 重新创建 SPFILE。
使用 ALTER SYSTEM RESET 从 SPFILE 删除参数。

6.启动数据库
启动例程(nomount)
数据库或仅在创建重新创建控制文件过程中,例程才会在NOMOUNT阶段启动。 
启动例程包括下列任务: 
按以下顺序从 $ORACLE_HOME/dbs 读取初始化文件: 
首先读取 spfileSID.ora
如果找不到,则读取 spfile.ora
如果仍然找不到,则读取 initSID.ora 
使用 STARTUP 指定PFILE参数以覆盖缺省行为。 
分配 SGA
启动后台进程 
打开 alertSID.log 文件和跟踪文件 
必须在初始化文件中使用 DB_NAME 参数对数据库命名,或使用 STARTUP 命令命名。
加载数据库(mount)
若要执行特定的维护操作,可启动例程并加载数据库,但不要打开数据库。 
例如,在以下任务中必须加载数据库但不要打开数据库: 
重命名数据文件
启用和禁用重做日志归档选项
执行完全数据库恢复 
加载数据库包括以下任务: 
使数据库与以前启动的例程关联
定位并打开参数文件中指定的控制文件
读取控制文件以获取数据文件和重做日志文件的名称和状态。但是,在此时不进行数据文件和联机重做日志文件是否存在的检查。
打开数据库(OPEN)
打开数据库包括以下任务: 
打开联机数据文件
打开联机重做日志文件 
如果在尝试打开数据库时有任何数据文件或联机重做日志文件不存在,Oracle 服务器将返回错误消息。 
在这个最后阶段中,Oracle 服务器验证所有数据文件和联机重做日志文件是否可以打开,并检查数据库的一致性。
如果需要,系统监视 (SMON) 后台进程将启动例程恢复操作。

7.ALTER DATABASE 命令 
要将数据库从 NOMOUNT 更改为 MOUNT 阶段或者从 MOUNT 更改为 OPEN 阶段,请使用 ALTER DATABASE 命令: 
ALTER DATABASE { MOUNT | OPEN }
如果想open数据库,必须先mount,无法从nomount状态改为open状态。
若要防止数据被用户事务修改,可以以只读模式打开数据库。
若要启动例程,请使用以下命令: 
ALTER DATABASE OPEN [READ WRITE| READ ONLY]
其中: 
READ WRITE:以读写模式打开数据库,以便用户生成重做日志。 
READ ONLY:将用户限制为只能执行只读事务,防止用户生成重做日志信息。

8.以受限模式打开数据库 
受限模式下只有具有 RESTRICTED SESSION 权限的用户才可以使用该数据库。
语法:
ALTER SYSTEM [ {ENABLE|DISABLE} RESTRICTED SESSION ]
其中: 
ENABLE RESTRICTED SESSION:仅允许具有 RESTRICTED SESSION 权限的用户在以后登录 
DISABLE RESTRICTED SESSION:禁用 RESTRICTED SESSION 以允许没有该权限的用户可以登录 
终止会话: 
将例程置于受限模式后,在执行管理任务前可能想终止所有当前用户会话。此操作可通过以下命令来实现: 
ALTER SYSTEM KILL SESSION 'integer1,integer2'
其中:  
integer1:V$SESSION 视图中的 SID 列的值 
integer2:V$SESSION 视图中的 SERIAL# 列的值 
注:会话 ID 和序列号用来唯一地标识会话。这样,即使用户注销身份并且新会话使用相同的会话 ID,
也可确保 ALTER SYSTEM KILL SESSION 命令能够应用于正确的会话。 
终止会话的影响: 
ALTER SYSTEM KILL SESSION 命令一执行,将使后台进程 PMON 立即执行以下步骤: 
 回退用户的当前事务
 释放所有当前持有的表或行锁定
 释放用户当前保留的所有资源

9.以只读模式打开数据库 
只要数据库尚未以读写模式打开,就能以只读模式打开。该功能对于备用数据库从生产数据库卸载查询处理尤其有用。 
如果查询需要使用临时表空间(例如,进行磁盘排序),当前用户必须将本地管理的表空间分配为缺省的临时表空间;
否则查询会失败。对于用户 SYS,需要有本地管理的表空间。
只读模式不限制无需生成重做数据即可更改数据库状态的数据库恢复或操作。例如,在只读模式中: 
可使数据文件脱机和联机。
可以执行脱机数据文件和表空间的恢复。 
磁盘在写入其它文件,如控制文件、操作系统审计线索、跟踪文件和警报日志文件时,可仍然保持只读模式。 
即:只限制会生成重做日志的操作。

10.关闭数据库
这关闭数据库一操作将导致对所有物理结构进行操作系统脱机备份,并使修改过的静态初始化参数在重新启动后生效。 
要关闭例程,必须使用以下命令以 SYSOPER 或 SYSDBA 身份进行连接: 
SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]
不同方式关闭数据库的对比:
                                     ABORT            IMMEDIATE          TRANSACTIONAL                NORMAL  
允许建立新连接                        否                 否                   否                       否
等待到当前会话结束                    否                 否                   否                       是
等待到当前事务处理结束                否                 否                   是                       是
强制执行检查点操作并关闭文件          否                 是                   是                       是
正常关闭(NORMAL)
“正常”是缺省的关闭模式。正常的数据库关闭在下列情况下进行: 
未建立新连接。
Oracle 服务器等待所有用户断开后才完成关闭。 
数据库和重做缓冲区中的内容已写入磁盘。
后台进程已终止,SGA 已从内存中删除。
Oracle 在关闭例程前将关闭并卸装数据库。
下一次启动将不要求例程恢复。
事务处理关闭(TRANSACTIONAL)
事务处理关闭防止客户机丢失工作。事务处理数据库关闭在下列情况下进行: 
没有客户机可以在此特定例程上启动新事务。
当客户机结束正在进行的事务时,断开客户机。
当所有事务都已完成后立即关闭。
下一次启动将不要求例程恢复。
立即关闭: 
立即关闭数据库在下列情况下进行: 
由 Oracle 处理的当前 SQL 语句未完成。
Oracle 服务器不等待当前连接到数据库的用户断开。
Oracle 回退活动的事务并断开所有连接的用户。
Oracle 在关闭例程前将关闭并卸装数据库。
下一次启动将不要求例程恢复。
关闭中止: 
如果 “正常” 和 “立即关闭” 选项不起作用,可以中止当前数据库例程。中止例程在下列情况下进行: 
Oracle 服务器所处理的当前 SQL 语句被立即终止。
Oracle 不等待当前连接数据库的用户断开。
数据库和重做缓冲区中的内容不写入磁盘。
未提交的事务不回退。
在不关闭文件的情况下例程被终止。
数据库不关闭或被卸装。
下次启动要求恢复例程,该操作将自动进行。 
注:终止方式关闭数据库将会使数据库不一致。
    不要备份处于不一致状态的数据库。
    在下次启动过程中使用重做日志重新应用更改(即前滚)。
    然后使用撤销段回退未提交的更改。

11.使用诊断文件监视例程
alertSID.log文件:记录数据库日常操作的信息。
后台跟踪文件:记录 SMON、PMON、DBWn和其它后台进程失败时产生的重要信息。
用户跟踪文件:记录出现严重用户错误或用户强制执行跟踪文件时产生的重要信息。
alertSID.log
每个Oracle例程都有一个警报日志文件。如果该文件尚未创建,将在例程启动过程中进行创建。
日志文件记录了以下信息: 
数据库启动或关闭的时间
所有非缺省初始化参数的列表
后台进程的启动
例程使用的线程
正在向其中写入信息的日志序列号 LGWR
有关日志切换的信息
表空间的创建和撤消段
已发出的警报声明
有关 ORA-600 等错误消息和区错误的信息 
alert_SID.log 的存储位置由BACKGROUND_DUMP_DEST 初始化参数定义。
后台跟踪文件
后台跟踪文件用于记录后台进程(如 SMON、PMON、DBWn 和其它后台进程)遇到的错误。
只有出现需要写入跟踪文件的错误时,才会创建后台跟踪文件。
用户跟踪文件的命名约定:sid_processname_PID.trc (db01_lgwr_23845.trc)。 
其存储位置由 BACKGROUND_DUMP_DEST 初始化参数定义。
用户跟踪文件 
用户跟踪文件包含跟踪的 SQL 语句的统计信息,这对于 SQL 优化非常有用。此外,用户跟踪文件还包含用户错误消息。 
用户跟踪文件的命名约定:sid_ora_PID.trc(db01_ora_23845.trc)。
其存储位置由 USER_DUMP_DEST 初始化参数定义。
启用和禁用用户跟踪
ALTER SESSION SET SQL_TRACE = TRUE
执行 DBMS 过程:dbms_system.SET_SQL_TRACE_IN_SESSION
例程级别 
设置初始化参数:SQL_TRACE = TRUE
注:在例程级别设置 SQL_TRACE=TRUE 后将生成大量跟踪数据。因此,要谨慎使用此选项。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值