Oracle数据库提供了几种不同的数据库启动和关闭方式,本文将详细介绍这些启动和关闭方式之间的区别以及它们各自不同的功能。
51Testing软件测试网q!\Z8Z6I}:n2m 一、启动和关闭Oracle数据库
K J^Z2pm7m051Testing软件测试网
\wYRn*^iqC 对于大多数Oracle DBA来说,启动和关闭Oracle数据库最常用的方式就是在命令行方式下的Server Manager。从Oracle 8i以后,系统将Server Manager的所有功能都集中到了SQL*Plus中,也就是说从8i以后对于数据库的启动和关闭可以直接通过SQL*Plus来完成,而不再另外需要Server Manager,但系统为了保持向下兼容,依旧保留了Server Manager工具。另外也可通过图形用户工具(GUI)的Oracle Enterprise Manager来完成系统的启动和关闭,图形用户界面Instance Manager非常简单,这里不再详述。
Anfit05} C-wwAn,|q0 要启动和关闭数据库,必须要以具有Oracle 管理员权限的用户登陆,通常也就是以具有SYSDBA权限的用户登陆。一般我们常用INTERNAL用户来启动和关闭数据库(INTERNAL用户实际上是SYS用户以SYSDBA连接的同义词)。Oracle数据库的新版本将逐步淘汰INTERNAL这个内部用户,所以我们最好还是设置DBA用户具有SYSDBA权限。51Testing软件测试网y0V4y _u/T#K
g
9]%R*G#a;F(t9s@)_0 二、数据库的启动(STARTUP)
HrIc)z]X^0W6@5Y6MMA0W0 启动一个数据库需要三个步骤:
.iA
Fc[:kM o*z'}0;BHgXA V_AND;w0 1、 创建一个Oracle实例(非安装阶段)51Testing软件测试网 g$nk5z.]0N
51Testing软件测试网3u^*L{CCnaP 2、 由实例安装数据库(安装阶段)
jr2Ec \y4mnf0)E!pu
@/C+g9Y0 3、 打开数据库(打开阶段)51Testing软件测试网!Sc,kza Vw
3X)VD`#a/k0 在Startup命令中,可以通过不同的选项来控制数据库的不同启动步骤。51Testing软件测试网^ kU"Z3K g4W
&D,Z mx9H_a0 1、STARTUP NOMOUNT
QF)up;ri051Testing软件测试网9e~$h6SJ |Zy&ZF NONOUNT选项仅仅创建一个Oracle实例。读取init.ora初始化参数文件、启动后台进程、初始化系统全局区(SGA)。Init.ora文件定义了实例的配置,包括内存结构的大小和启动后台进程的数量和类型等。实例名根据Oracle_SID设置,不一定要与打开的数据库名称相同。当实例打开后,系统将显示一个SGA内存结构和大小的列表,如下所示:51Testing软件测试网RQ1{3Gde6[X7M
:H7RT~hG4ge$S0SQL> startup nomount
Y)i"k2eda0ORACLE 例程已经启动。51Testing软件测试网|1Pi5}iYBS/o
Total System Global Area 35431692 bytes51Testing软件测试网gM,k
l(VKW5z`#C
Fixed Size 70924 bytes51Testing软件测试网?0H0jm6jk
Variable Size 18505728 bytes51Testing软件测试网 QpWC[Y#Qx]
`
Database Buffers 16777216 bytes
5r[!}:m;kck6j5H5N0Redo Buffers 77824 bytes 51Testing软件测试网e:{,@h\9ej7A)rl
51Testing软件测试网#?(m w2uZ+H~rG!n$u 2、STARTUP MOUNT
0Z3c1]6^`051Testing软件测试网F^8wtw%u/G0k~ 该命令创建实例并且安装数据库,但没有打开数据库。Oracle系统读取控制文件中关于数据文件和重作日志文件的内容,但并不打开该文件。这种打开方式常在数据库维护操作中使用,如对数据文件的更名、改变重作日志以及打开归档方式等。在这种打开方式下,除了可以看到SGA系统列表以外,系统还会给出"数据库装载完毕"的提示。
IX
sS5xbi051Testing软件测试网n1t)`3_Y$D%JwG8w 3、STARTUP51Testing软件测试网,~-B7PW$T5r#D
51Testing软件测试网5[rp;f,R#rH#W~ o 该命令完成创建实例、安装实例和打开数据库的所有三个步骤。此时数据库使数据文件和重作日志文件在线,通常还会请求一个或者是多个回滚段。这时系统除了可以看到前面Startup Mount方式下的所有提示外,还会给出一个"数据库已经打开"的提示。此时,数据库系统处于正常工作状态,可以接受用户请求。51Testing软件测试网$ln|gSvu B,k
51Testing软件测试网X{J%m2G 如果采用STARTUP NOMOUNT或者是STARTUP MOUNT的数据库打开命令方式,必须采用ALTER DATABASE命令来执行打开数据库的操作。例如,如果你以STARTUP NOMOUNT方式打开数据库,也就是说实例已经创建,但是数据库没有安装和打开。这是必须运行下面的两条命令,数据库才能正确启动。
hyl\+h%m,c^o]0coY}&LF0jO0ALTER DATABASE MOUNT;
qV#f5HG?i6g0ALTER DATABASE OPEN;51Testing软件测试网Oy
zy`
51Testing软件测试网[X,O'zh G~ 而如果以STARTUP MOUNT方式启动数据库,只需要运行下面一条命令即可以打开数据库:51Testing软件测试网(d%lFDH
51Testing软件测试网,Wpd'H(Ezx6{c ALTER DATABASE OPEN.
,_gT+O'IQ]051Testing软件测试网JW{b5D,Y"~j.K
L 4、其他打开方式
f&v*U$S/B;e+F c0"p Vn&YAx#f/d0 除了前面介绍的三种数据库打开方式选项外,还有另外其他的一些选项。
%ac/r,l.GP'a
b8k~0%gLRFdP2b'Yt0 (1) STARTUP RESTRICT51Testing软件测试网8FI&hY0S \]
Y2d
7L Gyx~)GI;N0 这种方式下,数据库将被成功打开,但仅仅允许一些特权用户(具有DBA角色的用户)才可以使用数据库。这种方式常用来对数据库进行维护,如数据的导入/导出操作时不希望有其他用户连接到数据库操作数据。51Testing软件测试网8Sp9i)z+QX%D8]
l~*LhNB6OMh Ie0 (2) STARTUP FORCE
7?QLzV"n0b;xN8v3Uk9x0 该命令其实是强行关闭数据库(shutdown abort)和启动数据库(startup)两条命令的一个综合。该命令仅在关闭数据库遇到问题不能关闭数据库时采用。
R,s"P LUjG#t09VT5[)r6qh#E[4P0 (3) ALTER DATABASE OPEN READ ONLY;51Testing软件测试网
SH F:cAZhg
b5Kr VP(A+]s0 该命令在创建实例以及安装数据库后,以只读方式打开数据库。对于那些仅仅提供查询功能的产品数据库可以采用这种方式打开。
SZs"x;tCg6q051Testing软件测试网1C%UA/DL$^$KjSA5F
x%F-z,l5RQ'l0 三、数据库的关闭(SHUTDOWN)51Testing软件测试网(L/r
V*I4z{D!D
51Testing软件测试网.Afx7g[SG-K@ 对于数据库的关闭,有四种不同的关闭选项,下面对其进行一一介绍。51Testing软件测试网
SEA}2MT!K'oQ
De
51Testing软件测试网Df+jw5g"v 1、SHUTDOWN NORMAL51Testing软件测试网9ptaTfmv$A;w;a'Le
^Zm
Tmvz*k0 这是数据库关闭SHUTDOWN命令的确省选项。也就是说如果你发出SHUTDOWN这样的命令,也即是SHUTDOWN NORNAL的意思。
%f&}#k-Q%bv.g[v051Testing软件测试网&}*VCN7?9wo 发出该命令后,任何新的连接都将再不允许连接到数据库。在数据库关闭之前,Oracle将等待目前连接的所有用户都从数据库中退出后才开始关闭数据库。采用这种方式关闭数据库,在下一次启动时不需要进行任何的实例恢复。但需要注意一点的是,采用这种方式,也许关闭一个数据库需要几天时间,也许更长。
1o.p/c~K4w0,X3]5z
h_V]E0 2、SHUTDOWN IMMEDIATE51Testing软件测试网dY.C2eG&V'Bd4F
"W ?^*p,T&FS}.]b0 这是我们常用的一种关闭数据库的方式,想很快地关闭数据库,但又想让数据库干净的关闭,常采用这种方式。
dG:ia7l8iIB#s/O4R051Testing软件测试网ZJv W5Q9w 当前正在被Oracle处理的SQL语句立即中断,系统中任何没有提交的事务全部回滚。如果系统中存在一个很长的未提交的事务,采用这种方式关闭数据库也需要一段时间(该事务回滚时间)。系统不等待连接到数据库的所有用户退出系统,强行回滚当前所有的活动事务,然后断开所有的连接用户。51Testing软件测试网*s-rJR.|9VQ3[
R3OC"\~'hL0 3、SHUTDOWN TRANSACTIONAL51Testing软件测试网+_
_8RA'K!A0V,P
51Testing软件测试网4IhD!{-B;Z@ 该选项仅在Oracle 8i后才可以使用。该命令常用来计划关闭数据库,它使当前连接到系统且正在活动的事务执行完毕,运行该命令后,任何新的连接和事务都是不允许的。在所有活动的事务完成后,数据库将和SHUTDOWN IMMEDIATE同样的方式关闭数据库。51Testing软件测试网.v3s_*g/i*DH,Oi[&_
^-r dx%g;z0 4、SHUTDOWN ABORT51Testing软件测试网)CnR3{9_[
mz
K,H)i'[L"\$p0 这是关闭数据库的最后一招,也是在没有任何办法关闭数据库的情况下才不得不采用的方式,一般不要采用。如果下列情况出现时可以考虑采用这种方式关闭数据库。51Testing软件测试网3k$d+iN'hi*]
51Testing软件测试网:vE"Zn)FDhE 1、 数据库处于一种非正常工作状态,不能用shutdown normal或者shutdown immediate这样的命令关闭数据库;51Testing软件测试网;^#l)eZv'["vq
51Testing软件测试网d#_9Byl,T9D 2、 需要立即关闭数据库;
'E/K*LLnUlI"V gb051Testing软件测试网8w]x {f 3、 在启动数据库实例时遇到问题;51Testing软件测试网g"J"weJEp
+y"@1k&wD0 所有正在运行的SQL语句都将立即中止。所有未提交的事务将不回滚。Oracle也不等待目前连接到数据库的用户退出系统。下一次启动数据库时需要实例恢复,因此,下一次启动可能比平时需要更多的时间。51Testing软件测试网8Wc/w7\7`q,b
51Testing软件测试网]
ww,cj"\@!w'DK 表1可以清楚地看到上述四种不同关闭数据库的区别和联系。
'L4r%cbZKnin1u%b051Testing软件测试网^T:X!E0\9M 表1 Shutdown数据库不同方式对比表
&ei^
}sM0
关闭方式 | A | I | T | N |
允许新的连接 | × | × | × | × |
等待直到当前会话中止 | × | × | × | √ |
等待直到当前事务中止 | × | × | √ | √ |
强制CheckPoint,关闭所有文件 | × | √ | √ | √ |
Toa_A*w0mE+m`,J6K0 其中:A-Abort I-Immediate T-Transaction N-Nornal
(WgE _i(j(t3y"Eb O0