购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5 启动与关闭数据库实例

1.5.1 启动数据库实例

Oracle数据库实例的启动过程分为3个步骤,分别是启动实例、加载数据库和打开数据库。用户可以根据实际情况的需要,以不同的模式启动数据库。启动数据库使用STARTUP命令,语法格式如下。

    STARTUP [NOMOUNT | MOUNT | OPEN | FORCE] [RESTRICT] [PFILE=filename]

● NOMOUNT:表示启动实例但不加载数据库。

● MOUNT:表示启动实例,加载数据库,并保持数据库的关闭状态。

● OPEN:表示启动实例,加载并打开数据库,这个是默认选项。

● FORCE:表示终止实例并重新启动数据库。

● RESTRICT:用于指定以受限制的会话方式启动数据库。

● PFILE:用于指定启动实例时所使用的文本参数文件,filename就是文件名。

Oracle数据库实例在启动时必须读取一个初始化参数文件,以便从中获得有关实例启动的参数配置信息。若在STARTUP语句中没有指定PFILE参数,则Oracle首先读取默认位置的服务器初始化参数文件spfile,若没有找到默认的服务器初始化参数文件,则将读取默认位置的文本初始化参数文件。下面将分别讲解STARTUP语法中列举出的几种启动模式。

1.NOMOUNT模式

NOMOUNT启动模式只会创建实例(即创建Oracle实例的各种内存结构和服务进程),并不加载数据库,也不会打开任何数据文件。

【例1.1】 启动数据库实例到NOMOUNT模式下,代码及运行结果如下。 (实例位置:资源包\TM\sl\1\1)

    SQL> connect system/1qaz2wsx as sysdba;
    已连接。
    SQL> shutdown immediate
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup nomount
    ORACLE 例程已经启动。
    Total System Global Area    535662592 bytes
    Fixed Size            1375792 bytes
    Variable Size           226492880 bytes
    Database Buffers        301989888 bytes
    Redo Buffers          5804032 bytes

在上述示例代码中,首先用户要以sysdba的身份登录,然后才具有关闭和启动数据实例的权限。这意味着在使用SHUTDOWN命令关闭数据库实例之后,可以使用STARTUP NOMOUNT命令启动数据库实例。

说明

通常在创建新数据库或重建控制文件时,使用NOMOUNT模式启动数据库实例。

2.MOUNT模式

MOUNT模式将启动实例,加载数据库并保持数据库的关闭状态。

【例1.2】 启动数据库实例到MOUNT模式下,代码及运行结果如下。 (实例位置:资源包\TM\sl\1\2)

    SQL> shutdown immediate
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup mount
    ORACLE 例程已经启动。
    Total System Global Area  535662592 bytes
    Fixed Size        1375792 bytes
    Variable Size       226492880 bytes
    Database Buffers      301989888 bytes
    Redo Buffers        5804032 bytes
    数据库装载完毕。

上述代码中,首先使用SHUTDOWN命令关闭数据库实例,然后使用STARTUP MOUNT命令启动数据库实例。

说明

MOUNT模式通常在进行数据库维护时使用,如执行数据库完全恢复操作、更改数据库的归档模式等。

3.OPEN模式

OPEN模式将启动实例,加载并打开数据库。这是常规的启动模式,用户要对数据库进行多种操作,就必须使用OPEN模式启动数据库实例。

【例1.3】 启动数据库实例到OPEN模式下,代码及运行结果如下。

    SQL> startup
    ORACLE 例程已经启动。
    Total System Global Area  535662592 bytes
    Fixed Size        1375792 bytes
    Variable Size       226492880 bytes
    Database Buffers      301989888 bytes
    Redo Buffers        5804032 bytes
    数据库装载完毕。
    数据库已经打开。

在上述代码中,startup命令的后面不带有任何参数,就表示以OPEN模式启动数据库实例。

4.FORCE模式

FORCE模式将终止实例并重新启动数据库,这种启动模式具有一定的强制性。例如,在其他启动模式失效时,可以尝试使用这种启动模式。

【例1.4】 启动数据库实例到FORCE模式下,代码及运行结果如下。

    SQL> startup force
    ORACLE 例程已经启动。
    Total System Global Area  535662592 bytes
    Fixed Size        1375792 bytes
    Variable Size       226492880 bytes
    Database Buffers      301989888 bytes
    Redo Buffers            5804032 bytes
    数据库装载完毕。
    数据库已经打开。

1.5.2 关闭数据库实例

与启动数据库实例相同,关闭数据库实例也分为3个步骤,分别是关闭数据库、卸载数据库和关闭Oracle实例。在SQL*Plus中,可以使用SHUTDOWN语句关闭数据库,其具体语法格式如下。

    SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT]

● NORMAL:表示以正常方式关闭数据库。

● TRANSACTIONAL:表示在当前所有的活动事务被提交完毕之后关闭数据库。

● IMMEDIATE:表示在尽可能短的时间内立即关闭数据库。

● ABORT:表示以终止方式来关闭数据库。

下面将分别讲解在SHUTDOWN语法中列举出的4种关闭数据库实例的方式。

1.NORMAL方式

NORMAL方式称作正常关闭方式,如果对关闭数据库的时间没有限制,通常会使用这种方式来关闭数据库。

【例1.5】 使用NORMAL方式关闭数据库,代码及运行结果如下。

    SQL> shutdown normal
    数据库已经关闭。
    已经卸载数据库。
    ORACLE例程已经关闭。

从上述代码中可以看出,Oracle在执行SHUTDOWN命令后,所返回的响应信息就是关闭数据库实例的过程。当以正常方式关闭数据库时,Oracle将执行如下操作。

● 阻止任何用户建立新的连接。

● 等待当前所有正在连接的用户主动断开连接。

● 当所有的用户都断开连接后,将立即关闭数据库。

2.TRANSACTIONAL方式

TRANSACTIONAL方式称作事务关闭方式,它的首要任务是能够保证当前所有的活动事务都可以被提交,并在尽可能短的时间内关闭数据库。

【例1.6】 使用TRANSACTIONAL方式关闭数据库,代码及运行结果如下。

    SQL> shutdown transactional
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。

以事务方式关闭数据库时,Oracle将执行如下操作。

● 阻止用户建立新连接和开始新事务。

● 等待所有活动事务提交后,再断开用户连接。

● 当所有的活动事务提交完毕、所有的用户都断开连接后,将关闭数据库。

3.IMMEDIATE方式

与IMMEDIATE单词的含义一样,IMMEDIATE方式称作立即关闭方式,这种方式将在尽可能短的时间内关闭数据库。

【例1.7】 使用IMMEDIATE方式关闭数据库,代码及运行结果如下。

    SQL> shutdown immediate
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。

在这种关闭方式下,Oracle不但会立即中断当前用户的连接,而且会强行终止用户的当前活动事务,将未完成的事务回退。以立即关闭方式关闭数据库时,Oracle将执行如下操作。

● 阻止用户建立新连接和开始新事务。

● 将未提交的活动事务回退。

● 关闭数据库。

4.ABORT方式

ABORT方式称作终止关闭方式,具有一定的强制性和破坏性。使用这种方式会强制中断数据库的操作,这样可能会丢失一部分数据信息,影响数据库的完整性。除了由于使用其他3种方式无法关闭数据库而使用它之外,应该尽量避免使用这种方式。

【例1.8】 使用ABORT方式关闭数据库,代码及运行结果如下。

    SQL> shutdown abort
    ORACLE 例程已经关闭。

以立即关闭方式关闭数据库时,Oracle将执行如下操作。

● 阻止用户建立新连接和开始新事务。

● 取消未提交的活动事务,而不是回退。

● 立即终止正在执行的任何SQL语句。

● 立即关闭数据库。

互动练习: 在scott模式下,使用DISTINCT关键字显示emp表中的不重复记录。 yXW0UZxGBVBJmPy6P/pgBCbQ9JFKZDlSJTEF7gNDdjPH9gU5qXhKzR6qHLGtnURl

点击中间区域
呼出菜单
上一章
目录
下一章
×