SQLPlus 中启动与关闭数据库
启动sqlplus,以sysdba角色登录数据库。
以Windows 7 平台为例,首先启动OracleServiceSID(SID为数据库名字)服务,否则sqlplus无法登录。登录后在sqlplus中使用命令关闭数据库(此时OracleServiceSID服务不会停止),之后可在sqlplus中进行数据库的打开与关闭操作。
启动数据库
启动步骤:
(1)、启动实例。
(2)、安装数据库。
(3)、打开数据库。
在以startup命令启动Oracle数据库时,Oracle将在默认位置$ORACLE_HOEM/dbs(UNIX/Linux)中查找初始化参数文件。Oracle将以下面的顺序在其中寻找合适的初始化文件。
(1)、spfile$ORACLE_SID.ora
(2)、spfile.ora
(3)、init$ORACLE_SID.ora
不同启动模式:
A:startup nomount
启动实例,仅有实例运行。以这种方式打开数据库,将不读取控制文件,不打开数据文件。操作系统启动Oracle后台进程,并分配SGA。(如同一台拖车的引擎启动,但没挂拖车)
后续使数据库可用输入如下命令:
alter database mount;
alter database open;
B:startup mount
启动实例、安装数据库。在安装步骤中,Oracle把实例与数据库关联。Oracle打开并读取控制文件,获取数据文件和重做日志文件的名称和位置。
启动后使用 alter database open; 打开数据库。
C:startup / startup open 启动、安装、打开数据库
或
关闭数据库
A:shutdown /shutdown normal
Oracle 将在关闭数据库之前等待所有用户断开与数据库的连接。(normal)是Oracle关闭数据库的默认方式。
(1)、一旦发布此命令,新的用户连接无法再创建。
(2)、在关闭数据库前,Oracle等待所有用户退出连接。
(3)、重启数据库时不需要实例恢复,因为Oracle会在关闭数据库以前把所有重做日志缓冲区和数据块缓冲区内容写入磁盘,从而数据库以这种方式关闭时是一致。
(4)、Oracle关闭数据文件并终止后台进程,Oracle的SGA被解除分配。
或:
B: shutdown transactional
Oralce 将在断开所有用户与数据库的连接前等待所有活动事务完成(不能创建新的事务),然后关闭数据库。
(1)、一旦发布此命令,新的用户连接无法再创建。
(2)、现有用户不能启动新的事务,并且将断开连接。
(3)、如果某用户有一个正在执行的事务,在断开该用户连接前,Oracle将等待直到该事务完成。
(4)、在所有现有事物完成后,Oracle关闭数据库实例并释放内存,Oracle将所有重做日志缓冲区和数据块缓冲区写入磁盘。
(5)、数据库是一致的,重启数据库时不需要实例恢复。
C:shutdown immediate
Oracle 不等待事务完成,回退所有活动的事务,断开已有用户的连接,关闭数据库。
(1)、一旦发布此命令,新的用户连接无法创建。
(2)、立即断开所有用户连接。
(3)、终止所有当前正在执行的事务。
(4)、回退未完成的事务,数据库保持一致。
(5)、数据库是一致的,重启数据库时不需要实例恢复。
D: shutdown abort
Oracle 不等待当前事务完成,不回退事务,直接断开用户连接。
(1)、一旦发布此命令,新的用户连接无法创建。
(2)、现有会话终止,不管是否有活动的事务。
(3)、不回退终止的事务。
(4)、不将重做日志缓冲区和数据缓冲区写入磁盘。
(5)、终止后台进程,立即释放内存并关闭数据库。
(6)、在重启时,Oracle将执行自动实例恢复,因为不能保证数据库在关闭时是一致的。
【Oracle建议在备份数据库之前,应该用shutdown 或 shutdown immediate命令而不是shutdown abort命令】
特别注意:sqlplus 中关闭数据库后,以Windows 7 为例,OracleServiceSID服务仍处于启动状态。
数据库停顿
停顿数据库提供了使数据库处于单用户方式而不必关闭数据库的机会。
当DBA使数据库处于停顿状态时,有以下限制:
(1)、所有非活动会话不允许发布任何数据库命令直到数据库停顿终止。
(2)、允许完成所有活动会话。
(3)、所有新登录企图将被排队,用户试图登录不会出现错误消息,这些登录操作似乎被挂起一样。
(4)、数据库中只允许DBA的查询、事务和PL/SQL语句。
使数据库处于停顿状态:SQL>alter system quiesce restricted;
终止数据库停顿状态:SQL>alter system unquiesce;
数据库挂起
如果希望在某个特殊的管理性任务中挂起所有I/O操作,可以挂起数据库。处于挂起状态时,数据库禁止读写任何数据文件和控制文件。例如数据表空间的紧急备份和执行分裂镜像等特殊任务时可以挂起数据库。
挂起:SQL>alter system suspend;
恢复:SQL>alter system resume;