转自:http://www.cnblogs.com/JCSU/articles/1307775.html
1. 启动和关闭数据库:
Oracle体系结构参考:
1.1 ORACLE数据库的启动:
启动ORACLE的一般步骤:
- 第一步是实例(instance)本身启动。此时,内存被分配,各种后台进程启动。
- 第二步是挂载(mount)数据库,此时可访问数据库文件。
- 最后一步是打开数据,此时用户可访问数据库中的数据。
尽管通常情况下启动数据库ORACLE要经历三个步骤。在启动过程中,有时候需要使ORACLE停在某一步。以下是相关操作的语法 (假设ORACLE已启动,可使用shutdown命令先关闭ORACLE)
- STARTUP或STARTUP OPEN:告诉ORACLE,遍历启动过程中的三个阶段。如果想要ORACLE只启动实例(instance),可使用STARTUP NOMOUNT命令,此时,ORACLE将启动实例但不会接触任何的数据库文件。什么时候需要这么做呢?假设你要创建新的控制文件(用来存储数据库中元数据的文件)或一个新的数据库。在数据库能够被访问前,这些操作必须完成。
- 你也可以使用STARTUP MOUNT (或者如果你已经使用了STARTUP NOMOUNT,可以使用ALTER DATABASE MOUNT) 告诉ORACLE,挂载(mount)数据库文件。在这种情况下,实例本身可访问与数据库相关的所有信息。然而,用户仍然不可访问数据库。在该阶段,可以重命名一些数据库文件。这些工作一旦完成,可以使用ALTER DATABASE OPEN命令使数据库能被公开访问。
以下是STARTUP的语法结构。中括号[ ]表示该项为可选项,可有可无。
STARTUP [ FORCE ] [ RESTRICT ] [ PFILE=filename ] MOUNT [ dbname ]
STARTUP [ FORCE ] [ RESTRICT ] [ PFILE=filename ] OPEN [ Open_options ] [ dbname ]
Open_options:
READ { ONLY | WRITE [ RECOVER ] } | RECOVER
各关键字含义:
FORCE:在重新启动Oracle实例之前,使用ABORT模式的SHUTDOWN命令关闭当前Oracle实例(如果有实例正在运行)。如果当前实例正在运行,没有指定FORCE关键字,将产生错误。在调试时和处于非正常环境下,FORCE是有用的。一般情况下,不要经常使用该关键字。
RESTRICT:只允许具有RESTRICTED SESSION系统权限的用户连接到数据库。然后,可以使用ALTER SYSTEM命令将restricted session项设为不可用。
PFILE=filename:启动实例时,需要使用的init.ora参数文件。如果没有指定PFILE,则使用默认的STARTUP参数文件。默认文件与平台有关。如,在UNIX中,默认文件为$ORACLE_HOME/dbs/init$ORACLE_SID.ora,在Windows上为%ORACLE_HOME%/database/initORCL.ora。
MOUNT [dbname]:挂载(mount)一个数据库,但不打开它。dbname指需要挂载或打开的数据库名。如果没有指定数据库名,数据库名从初始化参数DB_NAME获取。
OPEN:挂载(mount)并打开指定数据库。
NOMOUNT:启动实例时不要挂载(mount)数据库。不能与MOUNT或OPEN同时使用。
RECOVER:在启动实例之前,如果需要进行恢复,该选项指定进行介质恢复(media recovery)。STARTUP RECOVER跟使用RECOVER DATABASE命令再启动实例的效果是一样的。带有RECOVER选项时,完全恢复(complete recovery)才有可能。不管AUTORECOVERY项是否打开,恢复都会进行。如果在某个位置找不到重做日志文件,恢复过程将通过为你指定一个位置后继续进行。
各种命令的介绍:
- Startup NOMOUNT:启动实例(SGA和后台进程),这种启动只需要init.ora文件。此时可重建控制文件、重建数据库。
- Startup MOUNT dbname:执行NOMOUNT,再打开控制文件。该阶段可执行的一些操作:数据库日志归档、数据库恢复、重新命名一些数据库文件(如:系统表空间和日志文件)。
- Startup OPEN dbname:首先执行“NOMOUNT”,然后执行“MOUNT”,再打开包括Redo log文件在内的所有数据库文件,这种方式下用户可访问数据库中的数据。
- Startup:等价于Startup NOMOUNT; ALTER DATABASE MOUNT; ALTER DATABASE OPEN;
在Windows平台上,启动数据库服务的同时,也会启动实例。
1.2 ORACLE数据库的关闭:
以下是SHUTDOWN的语法结构。中括号[ ]表示该项为可选项,可有可无。
SHUTDOWN IMMEDIATE
SHUTDOWN TRANSACTIONAL [ LOCAL ]
SHUTDOWN NORMAL
各关键字含义:
ABORT:不需等调用完成或用户断开连接,是一种最快的数据库关闭方式。未提交的事务( uncommitted transactions )不会回滚。终止当前正在执行的客户端SQL语句。所有连接到数据库的当前用户断开连接。下一次数据库启动需要进行实例恢复。如果某个后台进程意外终止,你必须使用该选项。
IMMEDIATE:不需等待当前调用完成或用户从数据库中断开连接。禁止其它用户连接到数据库。数据库关闭且被卸载(closed and dismounted)。实例关闭,下一次数据库启动时不需要进行实例恢复。
NORMAL:该选项为默认选项。它等待用户断开到数据库的连接。禁止其它用户连接到数据库。数据库关闭且被卸载(closed and dismounted)。实例关闭,下一次数据库启动时不需要进行实例恢复。
TRANSACTIONAL [LOCAL]:允许活动事务先完成。不需要所有的用户退出登录就可以防止客户丢失数据。客户不能在该实例上启动新的事务。试图进行新的事务将导致断开连接。当所有事务完成后,任何仍连接到实例的客户将断开连接。此时,实例将关闭(SHUTDOWN IMMEDIATE)。下一次数据库启动时不需要任何实例恢复过程。LOCAL模式指定一个事务只在本地(local)实例上进行关闭。因此,它只等待本地(local)事务完成,并不是所有的事务完成。如,对于有计划的停电维修,这是很有用的。
关闭数据库的操作实例:
SQL > connect system/manager @net service name as sysdba
SQL > shutdown immediate
/* 关闭数据库,丢弃所有事务,然后执行干净关闭 */
SQL > alter system checkpoint ;
SQL > shutdown abort
SQL > startup restrict
SQL > shutdown immediate