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将执行自动实例恢复,因为不能保证数据库在关闭时是一致的。