一、数据库打开
startup数据库正常启动
1.startup nomount
启动 Oracle DB 实例:NOMOUNT ,创建sga,创建了alert日志,用于create db,create controlfile
启动数据库实例时,请选择实例启动时所处的状态。以下方案描述了启动实例过程中的不同阶段。
在创建数据库期间、重新创建控制文件期间,或执行某些备份和恢复方案期间,通常只在 NOMOUNT 模式下启动实例。
启动实例过程包括执行以下任务:
按以下顺序搜索 $ORACLE_HOME/dbs 中具有特定名称的文件:
1. 搜索 spfile.ora。
2. 如果未找到 spfile.ora,则搜索 spfile.ora。
3. 如果未找到 spfile.ora,则搜索 init.ora。
这是包含实例初始化参数的文件。使用 STARTUP 指定 PFILE 参数可覆盖默认 行为。
分配 SGA
启动后台进程
打开 alert_.log 文件和跟踪文件
注:SID 是用于标识实例的系统 ID(例如 ORCL)。
2.alter database mount;
动 Oracle DB 实例:MOUNT 打开控制文件,可以重命名数据文件,启用或停用归档模式,数据库恢复。
数据库装载过程包括执行以下任务:
将数据库与以前启动的实例关联
定位并打开参数文件中指定的控制文件
通过读取控制文件来获取数据文件和联机重做日志文件的名称和状态(但是,此时不会执行检查来验证是否存在数据文件和联机重做日志文件)。
要执行特定的维护操作,请启动实例,然后装载数据库,但不打开该数据库。
例如,在执行以下任务期间必须装载数据库,但不得打开数据库:
重命名数据文件(打开数据库时可重命名脱机表空间的数据文件)。
启用和禁用联机重做日志文件归档选项
执行完整的数据库恢复
注:即使发出了 OPEN 请求,数据库仍可能处于 MOUNT 模式下。这是因为可能需要以某种方式恢复数据库。如果在 MOUNT 状态下执行恢复,将打开重做日志进行读取,并打开数据文件读取需要恢复的块,以及在恢复期间根据需要写入块。
3.alter database open;
启动 Oracle DB 实例:OPEN 打开数据文件,redo日志,
数据库操作正常意味着实例已启动、数据库已装载且已打开。在数据库操作正常时,任何有效用户都可连接到数据库,而且可执行典型数据访问操作。
打开数据库过程包括执行以下任务:
打开数据文件
打开联机重做日志文件
如果尝试打开数据库时任一数据文件或联机重做日志文件不存在,则 Oracle 服务器返回错误。
在最后这个阶段,Oracle 服务器会验证是否可以打开所有数据文件和联机重做日志文件,还会检查数据库的一致性。如有必要,系统监视器 (SMON) 后台进程将启动实例恢复。
可以在受限模式下启动数据库实例,以便只让有管理权限的用户使用该实例。要在受限模式下启动实例,请在“Advanced Startup Options(高级启动选项)”页上选择“Restrict access to database(限制对数据库的访问)”选项。
二、数据库关闭
shutdown为shutdown immediate的简写
1.shutdown normal
NORMAL 是使用 SQL*Plus 时的默认关闭模式。正常关闭数据库时会发生以下情况:
不可以建立新连接。
Oracle 服务器待所有用户断开连接后再完成关闭。
数据库和重做缓冲区被写入磁盘。
后台进程终止,并从内存中删除 SGA。
Oracle 服务器在关闭并断开数据库后关闭实例。
下一次启动不需要进行实例恢复。
2.shutdown transactional
采用 TRANSACTIONAL 关闭方式可防止客户机丢失数据,其中包括客户机当前活动的 结果。执行事务处理数据库关闭时会发生以下情况:
任何客户机都不能利用这个特定实例启动新事务处理。
会在客户机结束正在进行的事务处理后断开客户机。
完成所有事务处理后立即执行关闭。
下一次启动不需要进行实例恢复。
3.shutdown immediate
采用 IMMEDIATE 关闭模式会出现以下情况:
Oracle DB 正在处理的当前 SQL 语句不会完成。
Oracle 服务器不会等待当前连接到数据库的用户断开连接。
Oracle 服务器会回退活动的事务处理,而且会断开所有连接用户。
Oracle 服务器在关闭并断开数据库后关闭实例。
下一次启动不需要进行实例恢复。注:IMMEDIATE 是使用 Enterprise Manager 时的默认关闭模式。
4.shutdown abort
如果 NORMAL、TRANSACTIONAL 和 IMMEDIATE 关闭模式都不起作用,则可以中止当前的数据库实例。中止实例时会发生以下情况:
Oracle DB 正在处理的当前 SQL 语句会立即终止。
Oracle 服务器不会等待当前连接到数据库的用户断开连接。
数据库和重做缓冲区未写入磁盘。
不回退未提交的事务处理。
实例终止,但未关闭文件。
数据库未关闭或未卸载。
下一次启动时需要进行实例恢复,实例恢复是自动进行的。
注:建议不要备份处于不一致状态的数据库。
关闭模式对当前活动的适用性按以下顺序逐渐增强:
ABORT:在关闭之前执行的任务最少。由于此模式需要在启动之前进行恢复,因此只在需要时才使用此模式。当启动实例时出现了问题,或者因紧急情况(如,通知在数秒内断电)而需要立即关闭时,如果其它关闭方式都不起作用,通常选择使用此模式。
IMMEDIATE:这是最常用选项。选择此模式会回退未提交的事务处理
TRANSACTIONAL:允许事务处理完成
NORMAL:等待会话断开 如果考虑执行关闭所花费的时间,则会发现 ABORT 的关闭速度最快,而 NORMAL 的关闭速度最慢。NORMAL 和 TRANSACTIONAL 花费的时间较长,具体取决于会话和事务处理的数目。
用 SQL*Plus 启动和关闭
要使用 SQL*Plus 启动、关闭数据库或者更改数据库的状态,必须以 SYSDBA 或 SYSOPER 身份登录。然后,使用以前介绍的 Enterprise Manager 功能的等效命令:
SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]
STARTUP [NOMOUNT | MOUNT | OPEN (open_options)] [FORCE] [RESTRICT] [PFILE=filename]
这样,可以将启动和关闭操作包含在执行数据库任务的脚本或批处理中执行(这种情况下,数据库需要处于特定的状态)。
注:通过 open 选项可以指定一种访问模式,即指定的数据库启动时应处的模式。可能的模式包括:
READ ONLY
READ WRITE 对于 STARTUP,还可以使用 PFILE 选项。该选项指定要在启动数据库实例时使用的 PFILE 初始化参数文件。