Oracle数据库的启动要经历3个阶段。sql
阶段一:启动实例(Start An Instance)--nomount数据库
阶段二:装载数据库(Mount The Database)--mount安全
阶段三:打开数据库(Open The Database)--opensession
①读取参数文件(Initialization Parameter File, PFILE或者Server Parameter Files, SPFILE)oracle
②Oracle根据参数文件中的参数,分配系统全局区(System Global Area,SGA)rest
③启动后台进程(DBWR:数据库写入进程,LGWR:日志写入进程,CKPT:检查点进程,SMON:系统监控进程,PMON:进程监控进程,ARCH归档进程等)。日志
这些内存和后台进程组合起来组成实例(Oracle Instance)。进程
参数文件(PFILE或者SPFILE)还指定了控制文件(Control File)的位置。事务
打开控制文件(Control File),从控制文件中得到数据文件(Data File)和联机日志文件(Redo Log File)的名字和位置。这时候,Oracle已经把实例和数据库关联起来。对于普通用户,数据库仍是不可访问。内存
Oracle打开数据文件(Data Files)和联机日志文件(Redo Log File)。这时候,数据库可使用。普通能够登陆数据库,对数据库进行操做。
STARTUP NOMOUNT;
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN;
STARTUP (至关于上面三个过程依次进行)
STARTUP PFILE='C: \oracle\product\10.2.0\db_1\dbs\PFILEORCL.ORA';
在限制模式下,只有CREATE SESSION和RESTRICTED SESSION权限的用户能够访问数据库。
①若是数据库是关闭的
STARTUP RESTRICT;
②若是数据库是开启的
ALTER SYSTEM enable restricted session;
①若是数据库是关闭的
STARTUP open read only;
②若是数据库是开启的
ALTER DATABASE OPEN read only;
在直读模式下,数据文件和日志文件都禁止写操做。整个数据库是只读的。
可是容许数据库恢复(Database Recovery)及其余不会产生回滚的操做。
STARTUP OPEN RECOVER;
STARTUP FORCE
这个命令先调用SHUTDOWN ABORT来关闭数据库,而后在用STARTUP命令,按照正常方式启动数据库。STARTUP把数据库的关闭和启动两个过程合二为一。
①若是数据库处于NOMOUNT状态
1) SELECT open_mode FROM v$database;
SELECT open_mode FROM v$database
*
第1行出现错误:
ORA-01507: ??????
2)SELECT status FROM v$instance;
STATUS
------------------------
STARTED
②若是数据库处于MOUNT状态
1)SELECT open_mode FROM v$database;
OPEN_MODE
----------
MOUNTED
2)SELECT status FROM v$instance;
OPEN_MODE
----------
MOUNTED
③若是数据库处于OPEN状态
1)SELECT open_mode FROM v$database;
OPEN_MODE
----------
READ WRITE
2)SELECT status FROM v$instance;
STATUS
------------
OPEN
Oracle的关闭也要经历三个阶段:
阶段1:关闭数据库(Close The Database)
阶段2:卸载数据库(Unmount The Database)
阶段3:关闭实例(Shut Down The Instance)
Oracle首先把SGA中的数据写到数据文件和联机日志文件中。而后,Oracle关闭全部的数据文件和联机日志文件。这时候,数据库已经不能够访问。
这个阶段完成后,控制文件仍然处在打开状态。
数据库完成以后,Oracle将分离数据库和实例之间的联系,这个阶段叫作“卸载数据库”或者叫“UNMOUNT数据库”。
这个阶段仅仅是卸载数据库,实例仍然存活在内存中。
这个阶段完成后,控制文件被关闭。
这是关闭数据库的最后一个阶段,这个阶段Oracle将从内存中移出SGA和终止正在进行的后台进程(Background Processes)。至此,数据库关闭已经完成。
使用NORMAL方式关闭数据库时,
(1)容许新的用户注登陆数据库。
(2)要等全部的用户自动退出Oracle之后,Oracle才关闭数据库。因此,若是数据库存在一个用户,那么,Oracle就一直等待,直到这个用户退出,Oracle才关闭数据库。
(3)SHUTDOWN NORMAL是最慢的一种数据库关闭方式。
使用IMMEDIATE方式关闭数据库时,
(1)新的用户不能登陆数据库;
(2)未提交的事务将会被回滚(ROLLED BACK)
(3)Oracle不会等待全部的用户(链接)退出数据库。
特色:
(1) 以IMMEDIATE方式关闭数据库不须要实例恢复(Instance Recovery);
(2) SHUTDOWN IMMEDIATE是最安全的关闭方式;
注:推荐使用这种方式关闭数据库。
以TRANSACTIONAL方式关闭数据库时,会发生下面的事情:
(1)不容许新的用户登陆数据库;
(2)不容许创建新的事务(New Transactions);
(3)全部的事务(transactions)完成之后才关闭数据库;
(4)一个用户(会话)执行完手里的事务(transactions)后将被强行断开与数据库的联机。
特色:
(1)这种关闭方式不会使客户端的数据丢失。
(2)这种关闭方式不须要实例恢复(Instance Recovery);
以ABORT方式关闭数据库时,
(1)不容许启动新的链接(New Connections)和新的事务(New Transactions);
(2)客户端的SQL语句(Client SQL Statements)马上终止;
(3)未提交的事务不被回滚(Rollback);
(4)Oracle马上终止全部链接(会话)。
特色:
(1)只有数据库出现问题时候,才使用这种方式关闭数据库;
(2)这是一种最不安全的关闭方式,数据库重启时须要实例恢复(Oracle后台进程);
(3)以ABORT方式关闭数据库使最快的一种方式。
(1)cmd->
lsnrctl start ->
net start oracleservice%ORACLE_SID% ->
set ORACLE_SID=%ORACLE_SID%
sqlplus / as sysdba
startup
shutdown immediate
(2)cmd-> lsnrctl start
再到在 “服务” 中启动 oracleservice%ORACLE_SID% 服务
set ORACLE_SID=%ORACLE_SID%
sqlplus / as sysdba
startup
shutdown immediate
su - oracle
lsnrctl start
export ORACLE_SID=$ORACLE_SID
sqlplus / as sysdba
startup
shutdown immediate