zoukankan      html  css  js  c++  java
  • 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方式关闭数据库使最快的一种方式。

    一般操作

     

    Linux:

    切换用户 su - oracle

     使Oracle用户配置文件生效 source ~/.bash_profile

    export ORACLE_SID=$ORACLE_SID

    启动监听 lsnrctl start

    登录sqlplus 然后连接一个实例    sqlplus /nolog    conn / as sysdba

     或者直接 :登录sqlplus sqlplus / as sysdba

    startup

    shutdown immediate

    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 命令——48 watch (转)
    linux 命令——47 iostat (转)
    linux 命令——46 vmstat(转)
    linux 命令——45 free(转)
    linux 命令——44 top (转)
    linux 命令——43 killall(转)
    linux 命令——42 kill (转)
    linux 命令——41 ps(转)
    linux 命令——40 wc (转)
    Java for LeetCode 068 Text Justification
  • 原文地址:https://www.cnblogs.com/hopeiscoming/p/13470411.html
Copyright © 2011-2022 走看看