oracle命令行关闭,oracle数据库的启动与关闭过程详解

本文介绍了如何通过命令行启动Oracle数据库的四种模式(NOMOUNT、MOUNT、OPEN和正常启动),以及SHUTDOWN命令的四种关闭选项(NORMAL、TRANSACTIONAL、IMMEDIATE和ABORT),包括它们的区别和应用场景。
摘要由CSDN通过智能技术生成

1、命令行启动数据库

在发布startup命令启动数据库时,oracle将在默认位置$ORACLE_HOME/dbs(UNIX/Linux)中查找初始化参数文件。Oracle将以下面的顺序在其中寻找合适的初始化文件

ØSpfile$ORACLE_SID.ora

ØSpfile.ora

ØInit$ORACLE_SID.ora

可以用几种方式启动oracle数据库。

a)STARTUP NOMOUNT命令

可以在SQL*Plus会话中使用STARTUP NOMOUNT命令启动实例,这样启动仅有实例运行。如果以这种方式启动,将不读控制文件,而且数据文件也不打开。操作系统启动Oracle后台进程,并且给oracle分配SGA。事实上,只有实例本身在运行。

SQL> startup nomount;

ORACLE例程已经启动。

Total System Global Area167772160 bytes

Fixed Size1247900 bytes

Variable Size75498852 bytes

Database Buffers88080384 bytes

Redo Buffers2945024 bytes

SQL>

有时在某些维护操作和恢复过程中,不能打开数据库让大家访问。在此情形下可以以这种方式启动。在数据库创建过程中且必须重建控制文件时,也需要使用nomount启动模式。

b)STARTUP MOUNT命令

在启动过程中,实例启动后的下一步是安装数据库。在安装步骤中,oracle把实例与数据库关联。Oracle打开并读取控制文件,获取数据文件和重做日志文件的名称和位置。

如果已经以以非安装模式启动了数据库,应该使用一下命令:

SQL> alter database mount;

数据库已更改。

SQL>

为了以安装模式直接启动,可使用如下命令:

SQL> startup mount;

ORACLE例程已经启动。

Total System Global Area167772160 bytes

Fixed Size1247900 bytes

Variable Size75498852 bytes

Database Buffers88080384 bytes

Redo Buffers2945024 bytes

数据库装载完毕。

SQL>

在进行诸如全数据库恢复、更改数据库的归档日志模式或重命名数据文件这一类的活动时,通常需要以安装模式启动数据库。请注意,这三种操作都要求oracle访问数据文件,但不提供对文件的用户操作。

c)STARTUP OPEN命令

启动过程的最后一步是打开数据库。当数据库以打开模式启动时,所有有效用户可以连接到数据库,执行数据库操作。在此步骤之前,一般用户根本就不能连接到数据库。通过发布下面的命令让数据库出于打开模式:

SQL>

alter database open;

数据库已更改。

SQL>

更常见的是使用STARTUP命令同时安装和打开数据库:

SQL> startup;

ORACLE例程已经启动。

Total System Global Area167772160 bytes

Fixed Size1247900 bytes

Variable Size75498852 bytes

Database Buffers88080384 bytes

Redo Buffers2945024 bytes

数据库装载完毕。

数据库已经打开。

SQL>

为了打开数据库,oracle服务器首先打开所有数据文件和联机重做日志文件,并确认数据库是一致的。如果数据库不一致,例如,如果控制文件中的SCN与数据文件头中的某些SCN不匹配,则后台进程将自动在打开数据库前进行一个实例恢复。如果需要介质恢复而不是实例恢复,oracle将指出需要数据库恢复,并且在你完成恢复前不能打开数据库。

2、命令行关闭数据库

为进行某种类型的备份或者软件的升级等活动,可能需要关闭一个正在运行的数据库,关闭数据库有几种方式。所选择的方式将影响关闭数据库所花费的时间,并且在重启数据库时可能需要进行数据库实例恢复。下面是关闭数据库的4种可用方式。

a)SHUTDOWN NORMAL命令

如下发布此命令:

SQL>shutdown

normal;

以下是SHUTDOWN NORMAL命令的详细说明:

Ø一旦发布此命令,不允许任何用户进行新的连接;

Ø在关闭数据库之前,oracle等待所有的用户退出会话;

Ø重启数据库时不需要实例恢复,因为oracle会在关闭以前把所有重做日志缓冲区和数据块缓冲区内容写入磁盘,从而使数据库关闭时是一致的;

ØOracle关闭数据文件并终止后台进程,释放内存。

b)SHUTDOWN TRANSACTIONAL命令

如果不想等待某用户退出而花费很长时间,可以使用SHUTDOWN

TRANSACTIONAL命令,如下发布此命令:

SQL>shutdown

transactional;

以下是SHUTDOWN TRANSACTIONAL命令的详细说明:

Ø一旦发布此命令,不允许任何用户进行新的连接;

Ø现有用户不能启动新事务,并且将断开连接;

Ø如果某用户有一个正在执行的事务,在断开该用户的连接前,oracle将等待直到该事务完成;

Ø重启数据库时不需要实例恢复,因为oracle会在关闭以前把所有重做日志缓冲区和数据块缓冲区内容写入磁盘,从而使数据库关闭时是一致的;

Ø在所有现有事务完成后,oracle关闭实例并释放内存;

c)SHUTDOWN IMMEDIATE命令

有时,在决定关闭数据库时,某用户可能正在执行非常长得事务。在这样的情形下,前面介绍的两种方式都不适用。可以使用SHUTDOWN IMMEDIATE命令关闭数据库。如下发布此命令:

SQL>shutdown

immediate;

以下是SHUTDOWN IMMEDIATE命令的详细说明:

Ø一旦发布此命令,不允许任何用户进行新的连接;

Ø立即断开所有用户的连接;

Ø终止所有当前正在执行的事务;

Ø对于所有半途终止的事务,oracle将进行回退,使数据库保持一致。随后终止后台进程并释放内存。

Ø重启数据库时不需要实例恢复,因为它在关闭时是一致的。

d)SHUTDOWN ABORT命令

就oracle而言,使用这个选项相当于断电。如下发布此命令:

SQL>shutdown abort;

下面是SHUTDOWN ABORT命令的详细说明:

Ø一旦发布此命令,不允许任何用户进行新的连接;

Ø现有会话被终止,不管它们是否有活动的事务;

Ø不回退被终止的事务;

Ø不将重做日志缓冲区和数据缓冲区写到磁盘;

Ø终止后台进程、立即释放内存并关闭数据库;

Ø在重启时,oracle将执行自动实例恢复,因为不能保证数据库在关闭时是一致的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值