`
caihorse
  • 浏览: 140886 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

oracle 实例与数据库

阅读更多

1、“实例”(instance)和“数据库”(database)定义。

 

 

ORACLE实例 = 进程 + 进程所使用的内存(SGA)

实例是一个临时性的东西,你也可以认为它代表了数据库某一时刻的状态。

数据库 = 重做文件 + 控制文件 + 数据文件 + 临时文件

数据库是永久的,是一个文件的集合。

 

2、ORACLE实例和数据库之间的区别

 

 

1)临时性和永久性

2)实例可以在没有数据文件的情况下单独启动 startup nomount , 通常没什么意义。

3)一个实例在其生存期内只能装载(alter database mount)和打开(alter database open)一个数据库

4)一个数据库可被许多实例同时装载和打开(即RAC,真正应用集群(Real Application Clusters,RAC)),RAC环境中实例的作用能够得到充分的体现。

 

 

大多数情况下,实例和数据库之间存在一种一对一的关系。可能正因如此,才导致人们很容易将二者混淆。从大多数人的经验看来,数据库就是实例,实例就是数据库。

不过,在许多测试环境中,情况并非如此。在我的磁盘上,可以有5个不同的数据库。测试主机上任意时间点只会运行一个Oracle实例,但是它访问的数据库每天都可能不同(甚至每小时都不同),这取决于我的需求。只需有不同的配置文件,我就能装载并打开其中任意一个数据库。在这种情况下,任何时刻我都只有一个“实例”,但有多个数据库,在任意时间点上只能访问其中的一个数据库。

所以,你现在应该知道,如果有人谈到实例,他指的就是Oracle的进程和内存。提到数据库时,则是说保存数据的物理文件。可以从多个实例访问一个数据库,但是一个实例一次只能访问一个数据库。一个实例在其生存期中最多只能装载和打开一个数据库。

 

3、基本概念说明

 

 

A、oracle 数据库启动分为三个部分:

 


       1)启动实例    startup nomount:读取参数文件,分配内存空间,启动后台进程,打开跟踪文件和报警文件

       2)装载数据库 startup mount:打开控制文件

       3)打开数据库  startup open:打开数据文件和重做日志文件

       nomount:只启动实例 ;mount:启动实例,并装载数据库; open:启动实例,装载并打开数据库。

    

B、oracle 数据库关闭分为三个部分:


       1)关闭数据库:将日志缓存中的内容写入重做日志文件,将脏数据写入数据文件,关闭重做日志文件和数据文件

       2)卸载数据库:关闭控制文件

       3)终止实例:收回内容,终止后台进程

     C、STARTUP 命令:


         STARTUP OPEN:STARTUP缺省的参数就是OPEN,打开数据库,允许数据库的访问。当前实例的控制文件中所描述的所有文件都  已经打开。
        STARTUP MOUNT:MOUNT数据库,仅仅给DBA进行管理操作,不允许数据库的用户访问。仅仅只是当前实例的控制文件被打开,数据文件未打开。
        STARTUP NOMOUNT:仅仅通过初始化文件,分配出SGA区,启动数据库后台进程,没有打开控制文件和数据文件。不能任何访问数据库。
        STARTUP PFILE= filename:以filename为初始化文件启动数据库,不是采用缺省初始化文件。
        STARTUP FORCE:中止当前数据库的运行,并开始重新正常的启动数据库。
        STARTUP RESTRICT:只允许具有RESTRICTED SESSION权限的用户访问数据库。
        STARTUP RECOVER:数据库启动,并开始介质恢复

     D、shutdown 命令


          SHUTDOWN有四个参数:NORMAL、TRANSACTIONAL、IMMEDIATE、ABORT。缺省不带任何参数时表示是NORMAL。
          SHUTDOWN NORMAL:不允许新的连接、等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。
          SHUTDOWN TRANSACTIONAL:不允许新的连接、不等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。
          SHUTDOWN IMMEDIATE:不允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。没有结束的事务是自动rollback的。启动时不需要实例恢复。
          SHUTDOWN ABORT:不允许新的连接、不等待会话结束、不等待事务结束、不做检查点且没有关闭数据文件。启动时自动进行实例恢复。

    E 、 alter database 命令  

 

             转化启动模式与修改数据库状态,模式的修改只能由低到高

             1). alter database mount  :为实例装载数据库

             2). alter database open :打开数据库

             3). 当数据库处于mount状态时,改变数据库的运行方式

             3.1) 改变归档模式

             A. archive log list :检查归档模式

             B. alter database archivelog | noarchivelog :修改归档模式

            3.2) 改变读写方式

             alter database open read only  

           4). 暂停和重新开始数据库

             4.1) alter system suspend

             4.2) alter system resume

           5). 启用和禁用受限会话模式

            5.1) alter system enable restricted session

            5.2) alter system disable restricted session

      

4、运行环境执行说明

 
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             155192196 bytes
Database Buffers          448790528 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。


SQL> select status from v$instance;

STATUS
------------
OPEN

已选择 1 行。

SQL> select open_mode from v$database;

OPEN_MODE
----------
READ WRITE

已选择 1 行。


 SQL> alter database close;

数据库已更改。

SQL> select status from v$instance;

STATUS
------------
MOUNTED

已选择 1 行。

SQL> select open_mode from v$database;

OPEN_MODE
----------
MOUNTED

已选择 1 行。

 

“alter database close;”操作并没有将数据库的实例关闭,仅仅是将数据库的状态从“OPEN”状态带到了“MOUNT”状态。

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-16196: 以前曾打开和关闭过数据库

一个实例在其生存期中最多只能装载和打开一个数据库。要是再打开这个数据库,必须先丢弃这个实例。此时如果想要重新使用该数据库,只有:关闭数据库并重新开启。


SQL> shutdown ;
ORA-01109: 数据库未打开


已经卸载数据库。
ORACLE 例程已经关闭。
SQL>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics