Oracle数据库的启动与关闭

转至:https://www.cnblogs.com/laoluoits/p/10985621.html

Oracle数据库的启动

Oracle数据库的启动要经历3个阶段。

阶段一:启动实例(Start An Instance)--nomount

阶段二:装载数据库(Mount The Database)--mount

阶段三:打开数据库(Open The Database)--open

1.启动实例

①读取参数文件(Initialization Parameter File, PFILE或者Server Parameter Files, SPFILE)

②Oracle根据参数文件中的参数,分配系统全局区(System Global Area,SGA)

③启动后台进程(DBWR:数据库写入进程,LGWR:日志写入进程,CKPT:检查点进程,SMON:系统监控进程,PMON:进程监控进程,ARCH归档进程等)。

这些内存和后台进程组合起来组成实例(Oracle Instance)。

参数文件(PFILE或者SPFILE)还指定了控制文件(Control File)的位置。

2.装载数据库

打开控制文件(Control File),从控制文件中获得数据文件(Data File)和联机日志文件(Redo Log File)的名字和位置。这时候,Oracle已经把实例和数据库关联起来。对于普通用户,数据库还是不可访问。

3.打开数据库

Oracle打开数据文件(Data Files)和联机日志文件(Redo Log File)。这时候,数据库可以使用。普通可以登录数据库,对数据库进行操作。

4.分步启动Oracle

STARTUP NOMOUNT;

ALTER DATABASE MOUNT;

ALTER DATABASE OPEN;

5.直接启动Oracle

STARTUP (相当于上面三个过程依次进行)

6.使用特定初始化参数文件(Initialization Parameter File, FILE)启动数据库

STARTUP PFILE='C: oracleproduct10.2.0db_1dbsPFILEORCL.ORA';

7.把数据库启动到限制模式(RESTRICT)

在限制模式下,只有CREATE SESSION和RESTRICTED SESSION权限的用户可以访问数据库。

①如果数据库是关闭的

STARTUP RESTRICT;

②如果数据库是开启的

ALTER SYSTEM enable restricted session;

8.以只读模式(Read Only)打开数据库

①如果数据库是关闭的

STARTUP open read only;

②如果数据库是开启的

ALTER DATABASE OPEN read only;

在直读模式下,数据文件和日志文件都禁止写操作。整个数据库是只读的。

但是允许数据库恢复(Database Recovery)及其他不会产生回滚的操作。

9.把数据库启动到回复模式(RECOVER)

STARTUP OPEN RECOVER;

10.重启数据库(RESET)

STARTUP FORCE

这个命令先调用SHUTDOWN ABORT来关闭数据库,然后在用STARTUP命令,按照正常方式启动数据库。STARTUP把数据库的关闭和启动两个过程合二为一。

11.如何知道数据库处于何种状态

①如果数据库处于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)

1.关闭数据库

Oracle首先把SGA中的数据写到数据文件和联机日志文件中。然后,Oracle关闭所有的数据文件和联机日志文件。这时候,数据库已经不可以访问。

这个阶段完成后,控制文件仍然处在打开状态。

2.UNMOUNT数据库

数据库完成之后,Oracle将分离数据库和实例之间的联系,这个阶段叫做“卸载数据库”或者叫“UNMOUNT数据库”。

这个阶段仅仅是卸载数据库,实例仍然存活在内存中。

这个阶段完成后,控制文件被关闭。

3.关闭实例

这是关闭数据库的最后一个阶段,这个阶段Oracle将从内存中移出SGA和终止正在进行的后台进程(Background Processes)。至此,数据库关闭已经完成。

4. SHUTDOWN NORMAL

使用NORMAL方式关闭数据库时,

(1)允许新的用户注登录数据库。

(2)要等所有的用户自动退出Oracle以后,Oracle才关闭数据库。所以,如果数据库存在一个用户,那么,Oracle就一直等待,直到这个用户退出,Oracle才关闭数据库。

(3)SHUTDOWN NORMAL是最慢的一种数据库关闭方式。

5.SHUTDOWN IMMEDIATE

使用IMMEDIATE方式关闭数据库时,

(1)新的用户不能登录数据库;

(2)未提交的事务将会被回滚(ROLLED BACK)

(3)Oracle不会等待所有的用户(连接)退出数据库。

特点:

(1) 以IMMEDIATE方式关闭数据库不需要实例恢复(Instance Recovery);

(2) SHUTDOWN IMMEDIATE是最安全的关闭方式;

注:推荐使用这种方式关闭数据库。

6. SHUTDOWN TRANSACTIONAL

以TRANSACTIONAL方式关闭数据库时,会发生下面的事情:

(1)不允许新的用户登录数据库;

(2)不允许建立新的事务(New Transactions);

(3)所有的事务(transactions)完成以后才关闭数据库;

(4)一个用户(会话)执行完手里的事务(transactions)后将被强行断开与数据库的联机。

特点:

(1)这种关闭方式不会使客户端的数据丢失。

(2)这种关闭方式不需要实例恢复(Instance Recovery);

7. SHUTDOWN ABORT

以ABORT方式关闭数据库时,

(1)不允许启动新的连接(New Connections)和新的事务(New Transactions);

(2)客户端的SQL语句(Client SQL Statements)立刻终止;

(3)未提交的事务不被回滚(Rollback);

(4)Oracle立刻终止所有连接(会话)。

特点:

(1)只有数据库出现问题时候,才使用这种方式关闭数据库;

(2)这是一种最不安全的关闭方式,数据库重启时需要实例恢复(Oracle后台进程);

(3)以ABORT方式关闭数据库使最快的一种方式。

一般操作

Windows:

(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

Linux:

su - oracle

lsnrctl start

export ORACLE_SID=$ORACLE_SID

sqlplus / as sysdba

startup

shutdown immediate

作者: 千里和他的软件测试

出处: http://www.cnblogs.com/laoluoits/

如果您看了本篇博客,觉得对您有所收获,请点击右下角的 [推荐]

如果您对本文有意见或者建议,欢迎 [留言]

感谢您的阅读,请关注我的后续博客 

转至:https://www.cnblogs.com/laoluoits/p/10985621.html

Oracle数据库的启动

Oracle数据库的启动要经历3个阶段。

阶段一:启动实例(Start An Instance)--nomount

阶段二:装载数据库(Mount The Database)--mount

阶段三:打开数据库(Open The Database)--open

1.启动实例

①读取参数文件(Initialization Parameter File, PFILE或者Server Parameter Files, SPFILE)

②Oracle根据参数文件中的参数,分配系统全局区(System Global Area,SGA)

③启动后台进程(DBWR:数据库写入进程,LGWR:日志写入进程,CKPT:检查点进程,SMON:系统监控进程,PMON:进程监控进程,ARCH归档进程等)。

这些内存和后台进程组合起来组成实例(Oracle Instance)。

参数文件(PFILE或者SPFILE)还指定了控制文件(Control File)的位置。

2.装载数据库

打开控制文件(Control File),从控制文件中获得数据文件(Data File)和联机日志文件(Redo Log File)的名字和位置。这时候,Oracle已经把实例和数据库关联起来。对于普通用户,数据库还是不可访问。

3.打开数据库

Oracle打开数据文件(Data Files)和联机日志文件(Redo Log File)。这时候,数据库可以使用。普通可以登录数据库,对数据库进行操作。

4.分步启动Oracle

STARTUP NOMOUNT;

ALTER DATABASE MOUNT;

ALTER DATABASE OPEN;

5.直接启动Oracle

STARTUP (相当于上面三个过程依次进行)

6.使用特定初始化参数文件(Initialization Parameter File, FILE)启动数据库

STARTUP PFILE='C: oracleproduct10.2.0db_1dbsPFILEORCL.ORA';

7.把数据库启动到限制模式(RESTRICT)

在限制模式下,只有CREATE SESSION和RESTRICTED SESSION权限的用户可以访问数据库。

①如果数据库是关闭的

STARTUP RESTRICT;

②如果数据库是开启的

ALTER SYSTEM enable restricted session;

8.以只读模式(Read Only)打开数据库

①如果数据库是关闭的

STARTUP open read only;

②如果数据库是开启的

ALTER DATABASE OPEN read only;

在直读模式下,数据文件和日志文件都禁止写操作。整个数据库是只读的。

但是允许数据库恢复(Database Recovery)及其他不会产生回滚的操作。

9.把数据库启动到回复模式(RECOVER)

STARTUP OPEN RECOVER;

10.重启数据库(RESET)

STARTUP FORCE

这个命令先调用SHUTDOWN ABORT来关闭数据库,然后在用STARTUP命令,按照正常方式启动数据库。STARTUP把数据库的关闭和启动两个过程合二为一。

11.如何知道数据库处于何种状态

①如果数据库处于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)

1.关闭数据库

Oracle首先把SGA中的数据写到数据文件和联机日志文件中。然后,Oracle关闭所有的数据文件和联机日志文件。这时候,数据库已经不可以访问。

这个阶段完成后,控制文件仍然处在打开状态。

2.UNMOUNT数据库

数据库完成之后,Oracle将分离数据库和实例之间的联系,这个阶段叫做“卸载数据库”或者叫“UNMOUNT数据库”。

这个阶段仅仅是卸载数据库,实例仍然存活在内存中。

这个阶段完成后,控制文件被关闭。

3.关闭实例

这是关闭数据库的最后一个阶段,这个阶段Oracle将从内存中移出SGA和终止正在进行的后台进程(Background Processes)。至此,数据库关闭已经完成。

4. SHUTDOWN NORMAL

使用NORMAL方式关闭数据库时,

(1)允许新的用户注登录数据库。

(2)要等所有的用户自动退出Oracle以后,Oracle才关闭数据库。所以,如果数据库存在一个用户,那么,Oracle就一直等待,直到这个用户退出,Oracle才关闭数据库。

(3)SHUTDOWN NORMAL是最慢的一种数据库关闭方式。

5.SHUTDOWN IMMEDIATE

使用IMMEDIATE方式关闭数据库时,

(1)新的用户不能登录数据库;

(2)未提交的事务将会被回滚(ROLLED BACK)

(3)Oracle不会等待所有的用户(连接)退出数据库。

特点:

(1) 以IMMEDIATE方式关闭数据库不需要实例恢复(Instance Recovery);

(2) SHUTDOWN IMMEDIATE是最安全的关闭方式;

注:推荐使用这种方式关闭数据库。

6. SHUTDOWN TRANSACTIONAL

以TRANSACTIONAL方式关闭数据库时,会发生下面的事情:

(1)不允许新的用户登录数据库;

(2)不允许建立新的事务(New Transactions);

(3)所有的事务(transactions)完成以后才关闭数据库;

(4)一个用户(会话)执行完手里的事务(transactions)后将被强行断开与数据库的联机。

特点:

(1)这种关闭方式不会使客户端的数据丢失。

(2)这种关闭方式不需要实例恢复(Instance Recovery);

7. SHUTDOWN ABORT

以ABORT方式关闭数据库时,

(1)不允许启动新的连接(New Connections)和新的事务(New Transactions);

(2)客户端的SQL语句(Client SQL Statements)立刻终止;

(3)未提交的事务不被回滚(Rollback);

(4)Oracle立刻终止所有连接(会话)。

特点:

(1)只有数据库出现问题时候,才使用这种方式关闭数据库;

(2)这是一种最不安全的关闭方式,数据库重启时需要实例恢复(Oracle后台进程);

(3)以ABORT方式关闭数据库使最快的一种方式。

一般操作

Windows:

(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

Linux:

su - oracle

lsnrctl start

export ORACLE_SID=$ORACLE_SID

sqlplus / as sysdba

startup

shutdown immediate