
3.2 启动数据库
3.2.1 启动数据库步骤
在一个典型的Oracle使用过程中,通过STARTUP命令手动启动一个实例,然后装载并打开数据库,使其能让用户使用。
图3-17显示了将数据库的进展从关闭(SHUTDOWN)状态到打开(OPEN)状态的步骤。

图3-17 启动数据库步骤
当Oracle数据库从SHUTDOWN状态进入到OPEN状态,需经历以下3个模式。
1. NOMOUNT
实例启动但是不装载数据库,尚未与数据库相关联。
2. MOUNT
实例启动,并通过读取数据库的控制文件装载数据库,与数据库相关联。
3. OPEN
实例启动,并通过读取控制文件装载数据库,读取数据文件和联机重做日志文件打开一个相关联的数据库。授权用户可以访问包含在数据文件中的数据。
3.2.2 启动数据库选项
使用STARTUP命令结合不同选项来启动Oracle数据库,从而进入不同的模式中。要启动数据库,必须要拥有SYSDBA或SYSOPER系统权限。
1. NOMOUNT选项
使用NOMOUNT选项可以启动一个实例,而无需装载和打开数据库,此时将读取参数文件。这将不允许访问数据库,通常只用于创建数据库或重新创建控制文件。
SQL> STARTUP NOMOUNT ORACLE 例程已经启动。 Total System Global Area 431038464 bytes Fixed Size 1375088 bytes Variable Size 318768272 bytes Database Buffers 104857600 bytes Redo Buffers 6037504 bytes
2. MOUNT选项
使用MOUNT选项可以启动实例并装载数据库,但不打开数据库,允许执行特定的维护操作,但一般不允许对数据库进行访问,此时将读取控制文件。
MOUNT选项启动实例并装载数据库以后,可以执行以下操作。
➢ 启用和禁用重做日志归档选项。
➢ 执行完整的数据库恢复。
SQL> STARTUP MOUNT ORACLE 例程已经启动。 Total System Global Area 431038464 bytes Fixed Size 1375088 bytes Variable Size 318768272 bytes Database Buffers 104857600 bytes Redo Buffers 6037504 bytes 数据库装载完毕。
3. OPEN选项
使用OPEN选项可以启动一个实例,并且装载和打开数据库,此时将读取数据文件和联机重做日志文件。此时将允许任何有效用户连接到数据库,然后执行数据访问操作。
SQL> STARTUP OPEN ORACLE 例程已经启动。 Total System Global Area 431038464 bytes Fixed Size 1375088 bytes Variable Size 318768272 bytes Database Buffers 104857600 bytes Redo Buffers 6037504 bytes 数据库装载完毕。 数据库已经打开。
4. FORCE选项
使用FORCE选项可以强制启动一个实例,并且装载和打开数据库。在正常启动数据库实例时遇到问题,可以尝试使用FORCE选项。如果一个实例正在运行,使用FORCE选项会在重新启动之前使用ABORT模式关闭它。在这种情况下,警告日志中显示消息“Shutting down instance (abort)”,其次是“Starting ORACLE instance (normal)。”
不应该强制数据库启动,除非出现以下情况。
➢ 不能使用SHUTDOWN NORMAL、SHUTDOWN IMMEDIATE或SHUTDOWN TRANSACTIONAL命令关闭当前实例。
➢ 启动实例时遇到问题。
SQL> STARTUP FORCE ORACLE 例程已经启动。 Total System Global Area 431038464 bytes Fixed Size 1375088 bytes Variable Size 318768272 bytes Database Buffers 104857600 bytes Redo Buffers 6037504 bytes 数据库装载完毕。 数据库已经打开。
5. RESTRICT选项
使用RESTRICT选项可以在限制模式下启动一个实例,并选择性地装载并打开一个数据库,此时该实例只提供给管理人员(而不是一般数据库用户)使用。可以结合MOUNT、NOMOUNT和OPEN模式使用RESTRICT选项。
当实例处于限制模式下时,数据库管理员无法通过远程Oracle监听程序访问实例,但只能在本地系统上访问实例。
SQL> STARTUP RESTRICT ORACLE 例程已经启动。 Total System Global Area 431038464 bytes Fixed Size 1375088 bytes Variable Size 318768272 bytes Database Buffers 104857600 bytes Redo Buffers 6037504 bytes 数据库装载完毕。 数据库已经打开。
6. PFILE选项
使用PFILE选项在启动数据库时将读取文本初始化参数文件。在不指定PFILE时,读取默认路径下的服务器参数文件。如果没有找到默认路径下的服务器参数文件,将读取默认路径下的文本初始化参数文件。如果还没有找到,数据库启动会失败。
SQL> STARTUP PFILE='c:\initorcl' ORACLE 例程已经启动。 Total System Global Area 431038464 bytes Fixed Size 1375088 bytes Variable Size 318768272 bytes Database Buffers 104857600 bytes Redo Buffers 6037504 bytes 数据库装载完毕。 数据库已经打开。
注意
需要预先存在文件初始化参数文件c:\initorcl。
3.2.3 转换数据库启动模式
在执行数据库管理和维护工作时,需要转换数据库启动模式。ALTER DATABASE语句用于转换数据库启动模式,在数据库的不同启动模式之间进行切换,如从NOMOUNT模式切换到MOUNT模式,从MOUNT模式切换到OPEN模式。要转换数据库启动模式,必须要拥有ALTER DATABASE系统权限。
以下情况必须指定RESETLOGS。
➢ 使用备份控制文件进行不完全介质恢复或介质恢复以后。
➢ 执行OPEN RESETLOGS操作之后没有完成。
➢ FLASHBACK DATABASE操作以后。
语法:
ALTER DATABASE { MOUNT | OPEN { [ READ WRITE ] [ RESETLOGS | NORESETLOGS ] | READ ONLY } };
表3-2列出了ALTER DATABASE语句各参数的描述信息。
表3-2 ALTER DATABASE语句参数

例3-4:转换Oracle启动模式。
SQL> STARTUP NOMOUNT ORACLE 例程已经启动。 Total System Global Area 431038464 bytes Fixed Size 1375088 bytes Variable Size 327156880 bytes Database Buffers 96468992 bytes Redo Buffers 6037504 bytes SQL> ALTER DATABASE MOUNT; 数据库已更改。 //装载Oracle数据库 SQL> ALTER DATABASE OPEN; 数据库已更改。 //以默认方式打开数据库
例3-5:以只读模式打开数据库。
SQL> ALTER DATABASE OPEN READ ONLY;
例3-6:以读写模式打开数据库。
SQL> ALTER DATABASE OPEN READ WRITE;