日期:2014-05-16  浏览次数:20370 次

数据库实例与启动和关闭
    oracle实例由一系列后台进程和内存结构组成。为了能够访问数据库,必须先启动实例。启动实例时,oracle会先分配一片叫系统全局区的内存区域(SGA),并启动后台进程。SGA用于存放数据库信息,这些信息被后台进程所共享。

    而数据库是物理存储。一个数据库可以被一个实例驱动,也可以被多个实例驱动。多个实例同时驱动一个数据库,叫集群(RAC)).

    内存是实例的组成部分,oracle的内存有PGA和SGA组成,PGA是程序全局区,其中包括服务器的信息和控制信息,它不被共享。当多个用户同时访问一个实例时,SGA对所有用户是共享的。

启动数据库分为3个过程:
1.启动实例(NOMOUNT状态);
2.装载数据库(MOUNT状态);
3.打开数据库(OPEN状态);

关闭数据库也分为3个阶段:
1.关闭数据库;
2.卸载数据库(unmount状态);
3.关闭实例;

启动、关闭数据库都必须有sysdba权限



1.数据库处于不同状态,打开数据库的方法也不一样
如果数据库是关闭的,直接使用startup命令,则打开到open状态;
如果数据库是nomount状态,则使用alter database mount,然后再使用alter database open,
才能打开数据库;

2.startup mount带参数,则把数据库自动到mount状态;

3.如何知道当前数据库处于什么状态?
select status from v$instance;

是started时,为nomount状态;
是mounted时,为mount状态;
是open时,为open状态;


4.重新启动数据库
以sysdba身份登录数据库,执行startup force命令,选项force表示重新启动数据库。
在启动数据库时,不仅要有sysdba权限,而且还要以sysdba身份登录。

5.ORACLE_SID 是系统变量,用来设置要连接到的实例。linxu、xp系统都用这个变量来代表默认登陆的数据库实例名;

6.判断数据库是否启动,2种方法
1).通过sqlplus以sysdba身份登录,如果出现idle instance表明没有启动;

2).ps -ef | grep ora 看有没有实例的后台进程

7.关闭数据库

shutdown immediate是最安全的方式关闭数据
1).新的用户不能注册;
2).未提交的事务将回滚;
3).oracle不会等待所有用户退出;