Oracle启动和关闭浅析

 

1、先说下Oracle的启动和关闭方式

Oracle启动三种方式也是三种状态:

startup nomount

startup mount

startup   open (=startup )                             //open is default mode;

四种关闭命令:

shutdown normal(=shutdown)                       //normal is default mode;

发出该命令后,所有新的连接都将再不允许连接到数据库。在数据库关闭之前,Oracle将等待目前连接的所有用户都从数据库中退出后才开始关闭数据库。采用这种方式关闭数据库,在下一次启动时不必进行所有的实例恢复。但需要注意一点的是,采用这种方式,也许关闭一个数据库需要几天时间,也许更长。

shutdown immediate

这是我们常用的一种关闭数据库的方式,想非常快地关闭数据库,但又想让数据库干净的关闭,常采用这种方式。 当前正在被Oracle处理的SQL语句即时中断,系统中所有没有提交的事务全部回滚。如果系统中存在一个非常长的未提交的事务,采用这种方式关闭数据库也需要一段时间(该事务回滚时间)。系统不等待连接到数据库的所有用户退出系统,强行回滚当前所有的活动事务,然后断开所有的连接用户。

shutdown transactional

      该选项仅在Oracle 8i后才能使用。该命令常用来计划关闭数据库,他使当前连接到系统且正在活动的事务执行完毕,运行该命令后,所有新的连接和事务都是不允许的。在所有活动的事务完成后,数据库将和SHUTDOWN IMMEDIATE同样的方式关闭数据库。

shutdown abort

这是关闭数据库的最后一招,类似与主机断电。也是在没有所有办法关闭数据库的情况下才不得不采用的方式,一般不要采用。如果下列情况出现时能考虑采用这种方式关闭数据库。

1)、 数据库处于一种非正常工作状态,不能用shutdown normal或shutdown immediate这样的命令关闭数据库;

2)、 需要即时关闭数据库;

3)、 在启动数据库实例时遇见问题;

所有正在运行的SQL语句都将即时中止。所有未提交的事务将不回滚。Oracle也不等待目前连接到数据库的用户退出系统。下一次启动数据库时需要实例恢复,因此,下一次启动可能比平时需要更多的时间。

             关闭方式                                              A      I       T       N 

            允许新的连接                                        ×    ×    ×    ×

            等待直到当前会话中止                          ×    ×    ×    √

            等待直到当前事务中止                          ×    ×    √    √

            强制CheckPoint,关闭所有文件             ×    √    √    √

2、启动过程。

几种启动状态的关系

startup mount=(startup nomount) ---->(alter database mount)

startup normal=(startup nomount) ---->(alter databse mount)------>(alter databse open)

试分析整个启动过程:

SQL> startup nomount;                                      //启动instance(sga内存区+bg process)
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              71304548 bytes
Database Buffers           92274688 bytes
Redo Buffers                2945024 bytes
SQL>

SQL> select instance_name from v$instance

INSTANCE_NAME
--------------------------------
yhs

startup nomount的时候需要读取二进制文件spfile(ORACLE_HOME\database\SPFILESID.ORA),如果SPFILE文件不存在将读取同目录下的pfile(inityhs.ora)文件.如果这两个文件损坏将不能正常启动,这个时候可以手写一个pfile文件来启动数据库,然后再修改参数,重新创建spfile(create spfile from pfile).

注意:nomount状态可以进行CREATE DATABASE 和CREATE CONTROLFILE操作

SQL> alter database mount;

数据库已更改。

SQL>

修改数据库到mount状态,这个时候需要用到控制文件control file,

 nomount状态下可以访问V$动态视图,如:v$instance,v$database,v$sql等
这个时候v$instance、v$tablespace、v$sql结构信息从何而来?


SQL> alter database mount;
数据库已更改。

修改数据库到mount状态,这个时候需要用到控制文件control file,如果控制文件损坏将不能正常启动。
在mount状态下可以修改archive和noarchive模式。
在mount状态下可以访问对象v$tablespace

 1.对数据文件进行改名操作 2.添加,删除,重命名重做日志文件 3.恢复数据库 4.改变数据库归档模式在这个模式下已经不能进行创建新的数据库跟重建控制文件了,因为已经打开了控制文件只能对它进行修改了。

SQL> select * from v$tablespace;

       TS# NAME                           INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---
         0 SYSTEM                         YES NO  YES
         1 UNDOTBS1                       YES NO  YES
         2 SYSAUX                         YES NO  YES
         4 USERS                          YES NO  YES
         3 TEMP                           NO  NO  YES
         6 EXAMPLE                        YES NO  YES
         7 TEST_DATA                      YES NO  YES
         8 RMAN_USER                      YES NO  YES
         9 RMAN_TEMP                      NO  NO  YES
        10 TEST1K                         YES NO  YES
        11 TEST2K                         YES NO  YES

已选择11行。

SQL> alter database open;

数据库已更改。

这个时候就是正常开启状态了。在这个过程中打开的数据文件,日志文件,允许用户存取数据库.

open模式是在mount模式下执行了数据文件,重做日志文件的打开操作。在这个模式下DBA不能进行在nomount模式跟mount模式下的各种操作。

强行启动数据库:

startup force(就是加了force这个关键字) 指定初始化参数文件启动数据库转换启动模式:

中止当前数据库的运行,并开始重新正常的启动数据库。

SQL>startup nomount

SQL>alter database mount

SQL>alter database open

转换启动只可以从底的模式转换到高的模式不能从高的转换到低的,但是可以用force关键字强行转换启动。

以受限方式打开数据库:

SQL>startup restrict

只允许具有RESTRICTED SESSION权限的用户访问数据库

 DBA对数据库进行以下管理的时候数据库必须处于受限方式:

1.执行数据的导入或者导出操作

2.使用SQL*Loader执行数据装载操作

3.禁止一般用户访问数据库

4.进行数据库移植或升级操作以受限方式打开数据库,一般用户登陆数据库会被拒绝。

在非受限方式下转换成受限方式:

SQL>alter system enable restricted session;

在受限方式下转换成非受限方式:

SQL> conn hr/hr@yhs;
ERROR:
ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege

警告: 您不再连接到 ORACLE。

注意:sys可以连接,因为其最大权限不在限制范围之内.

SQL>alter system disable restricted session;

在转换为受限方式之前oracle可能有用户正连接到数据库上,最好终止这些用户的会话。命令: SQL>alter system kill session 'SID,SERIAL#'; 其中SID表示会话ID,是会话标识符;SERIAL#表示会话序列号,用于区别会话,可以使用下列语句查询:

SQL>select sid,serial#,username,type from v$session;

以只读方式打开数据库在mount模式下执行命令:

SQL>alter database open read only;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值