Oracle 11g笔记——数据库启动

一、数据库启动原理
    1、启动实例(Start An Instance)
       当启动实例时,Oracel会读取一个参数文件,这个文件可以是初始化参数文件(Initializaion Paramenter File, PFILE),也可以是服务器端参数文件(Server Paramenter Files, SPFILE),通常,把两都都和称为参数文件。
Oralce根据参数文件中的参数,分配相应大小的一片内存区域叫系统全局区(System Global Area, SGA),然后启动一系列的后台进程(SMON、PMON、ARCH等),SGA与进程组成实例。
实例是用来驱动数据库的,一台机器上可同时运行多个实例,每个实例有自己的名字SID。RAC环境中多个实例可同时驱动一个数据库。
实例启动完成后,数据库处于NOMOUNT状态,数据库还没有和实例关联。此时数据库不可访问,这个阶段主要用于数据库的编护(如重建控制文件)。
参数文件(PFILE或SPFILE)还指定上了控制文件(Control File)的位置。
        PFILE是文本文件,SPFILE是二进制文件,它们是两种完全不同的文件,不能在命令行中时显式使用SPFILE来启动数据库。
        如:SQL>STARTUP 默认使用SPFILE启动数据库,注:需要有SYSDBA权限
            SQL>STARTUP PFILE='/oracle/app/oracle/product/10.1.0/db_1/dbs/initorcl.ora';
        重建SPFILE:CREATE SPFILE FROM PFILE='D:\oracle\app\oracle\product\10.1.0\db_1\dbs\initorcl.ora';

    2、装载数据库(Mount The Database)
Oracle根据参数文件(PFILE或SPFILE)中的参数(CONTRIL_FILES)找到控制文件(Contril File),然后打开控制文件。从控制文件中获得数据文件(Datafile)和联机日志文件(Redo Log File)的名字及位置。这时Oracle已将实例(Instance)和数据库关联起来,对于普通用户来说,数据库还是不可访问。
处于MOUNT阶段的数据库,主要用于数据库的维护(如:恢复数据库等)

    3、打开数据库(Open The Daabase)
当打开数据库的时候,Oracle打开数据文件(Datafile)和联机日志文件(Redo Log File)。这时,数据库可以使用。普通用户可登录数据库,对数据库进行操作。




1、数据启动到NOMOUNT状态,只启动实例
   C:>STARTUP NOMOUNT
   ORACLE instance started.
   Total System Global Area 289406976 bytes
   Fixed Size 1248600 bytes
   Variable Size                92275368 bytes
   Database Buffers             192937984 bytes
2、数据启动到MOUNT状态,在启动STARTUP之后指定启动选项MOUNT,MOUNT状态不仅打开了实例,还打开了控制文件,从控制文件中读取了数据文件和联机日志文件的名称和位置。
   注:启动到MOUNT的状态的过程,还包括启动到NOMOUNT的过程
   C:>STARTUP MOUNT
   ORACLE instance started.
   Total System Global Area 289406976 bytes
   Fixed Size 1248600 bytes
   Variable Size                92275368 bytes
   Database Buffers             192937984 bytes   
   Redo Buffers                 2945024 bytes

   注:将数据库从Nomount状态变为MOUNT状态:
   C:>ALTER DATABASE MOUNT




打开数据库:
1、若数据库是关闭的:

   SQL>STARTUP

2、若数据库是NOMOUNT:
   SQL>ALTER DATABASE MOUNT
   SQL>ALTER DATABASE OPEN
3、若数据库是MOUNT:
   SQL>ALTER DATABASE OPEN
4、一步步启动数据库:
   SQL>STARTUP NOMOUNT;   
   SQL>ALTER DATABASE MOUNT;
   SQL>ALTER DATABASE OPEN;
5、利用特定的初始化参数文件启动数据库,initorcl.ora为初始化参数(PFILE)的文件名。
   SQL>STARTUP PFILE='/oracle/app/oracle/product/10.1.0/db_1/dbs/initorcl.ora';
   ORACLE instance started.
   Total System Global Area 289406976 bytes
   Fixed Size 1248600 bytes
   Variable Size                92275368 bytes
   Database Buffers             192937984 bytes   
   Redo Buffers                 2945024 bytes 
   Database Mounted.
   Database Opened.
6、将数据库启动到限制模式(RESTRICT),作用:
   (1)执行数据的导入/导出(import/export)
   (2)执行数据的装载(SQL*Loader)
   (3)阻止某些用户访问数据
   (4)执行某些升级和迁移操作
   a、若数据库已关闭:
    SQL>STARUP RESTRICT;
    ORACLE instance started.
    Total System Global Area 289406976 bytes
    Fixed Size 1248600 bytes
    Variable Size                92275368 bytes
    Database Buffers             192937984 bytes   
    Redo Buffers                 2945024 bytes 
    Database Mounted.
    Database Opened.
   b、若数据库已启动:
    SQL>ALTER SYSTEM enable restricted session;

7、以只读模式(Rready Only)打开数据库
   只读模式下,数据文件和联机日志文件都禁止写操作,整个数据库是只读的。允许执行数据库恢复(Database Recovery)及其它不会产生回滚的操作。
  (1)如果数据库没有启动:
      SQL>STARUP OPEN READ ONLY;
      查看数据库是否以只读方式打开:
      SQL>SELECT open_mode From V$database;
  (2)若数据库处于MOUNT状态:
      SQL>Alter database open read only;
8、如何把数据库启动到恢复模式(RECOVER),用于数据库的介质恢复
      SQL>STARTUP OPEN RECOVER;
9、重新启动数据库(RESET)
   SQL>STARTUP FORCE;
   STARTUP FORCE命令先调用STARTUP ABORT来关闭数据库,然后再用STARTUP命令,按照正常方式启动数据库。
   注:此命令会执行实例恢复的过程,在系统正常的情况下,不推荐使用这个命令,还是应该按照正常的顺序启动/关闭数据库。
10、查看数据库状态:
   (1)NOMOUNT状态
    SQL>SELECT OPEN_MODE FROM V$DATABASE;  显示:ORA-01507: database not mounted
    SQL>SELECT STATUS FROM V$instance;     显示为:STARTED
    以上两条记录说明:实例已启动,但没有Mounted,所以为Nomount状态
    NOMOUNT状态时,打开数据库要经过两步,不能直接打开数据库:
    SQL>ALTER DATABASE MOUNT;
    SQL>ALTER DATABASE OPEN;
   (2)MOUNT状态
    SQL>SELECT OPEN_MODE FROM V$DATABASE;  显示:mounted
    SQL>SELECT STATUS FROM V$instance;     显示为:mounted
    以上两条记录说明:为MOUNT状态       
   (3)OPEN打开状态 
    SQL>SELECT OPEN_MODE FROM V$DATABASE;  显示:READ WRITE
    SQL>SELECT STATUS FROM V$instance;     显示为:OPEN
    以上两条记录说明:为OPEN状态    

ORA-02778: Name given for the log directory is invalid
说明BACKGROUND_DUMP_DEST指向的目录不存在。
1、建立新目录:/wxx/oracle/dbump,并设读写权限
2、修改初始化参数文件(PFILE),使BACKGROUND_DUMP_DEST=/wxx/oracle/dbump
3、重启数据库
警报文件(Alert File)
跟踪文件(Trace File)

你可能感兴趣的:(Oracle 11g笔记——数据库启动)