【Oracle笔记】3.Oracle的启动与关闭


 Oracle的启动与关闭
一、启动与关闭过程
       启动(startup):shutdown→nomount(例程启动)→mount→open
       关闭(shutdown):open→mount→nomount→shutdown
二、启动例程(nomount)
      启动例程让数据库处于nomount状态一般用于创建数据库或重新创建控制文件过程中
      启动例程包括下列任务
            按下列顺序从$ORACLE_HOME/dbs读取初始化文件:
                  首先读取spfileSID.ora
                  如果找不到,则读取spfile.ora
                  如果仍然找不到,则读取initSID.ora
                  可以使用startup制定pfile参数以覆盖缺省行为
            分配SGA
            启动后台进程
            打开alertSID.log
三、加载数据库(mount)
       启动例程并加载数据库,但不要打开数据库让数据库处于mount状态一般用于执行特定的维护操作:例如重命名数据库文件,启用和禁用重做日志归档选项,执行完全数据库恢复。
       加载数据库包括以下任务
             使数据库与以前启动的例程关联
             定位并打开参数文件中指定的控制文件
             读取控制文件以获取数据文件和重做日志文件的名称和状态。但是在此时不进行数据文件和重做日志文件是否存在的检查。
四、打开数据库(open)
       打开数据库让数据库处于open状态任何有效的用户都可以连接到数据库并执行一般的数据访问
       打开数据库包括一下任务
             打开联机数据文件
             打开联机重做日志文件
             oracle服务器验证所有数据文件和重做日志文件是否可以打开并检查数据的一致性,如果需要,系统监视(SMON)后台进程将启动例程恢复操作。
五、startup命令
         若要启动例程,可使用以下命令
           startup 【force】 【restrict】 【pfile=filename】 【open 【recover】 【database】 | mount | nomount 】
         其中:
             open:使用户能够访问数据库
             mount:为某些DBA活动加载数据库,但不允许用户访问数据库
             nomount:创建SGA并启动后台进程,但不允许访问数据库
             pfile=filename:允许使用非缺省参数文件配置例程
             force:执行正常启动前终止运行的例程(一般情况不建议使用,有可能造成数据库损坏,并无法启动)
             restrict:只允许觉有restrict session权限的用户访问数据库
             recover:在数据库启动时开始进行介质恢复(一般情况下不建议使用,容易丢数据)
六、alter databasa命令
       要将数据库从nomount更改为mount阶段或者从mount更改为open阶段,请使用alter database命令
       alter database {mount | open}
       若要纺织数据被用户事务修改,可以以只读模式打开数据库
       alter database open 【read write | read only】
       read write:以读写模式打开数据库,以便用户生成重做日志
       read only:将用户限制为只能执行只读事务,纺织用户生成重做日志
       此模式可用于
           执行查询
           使用本地管理的表空间执行磁盘排序
           使数据文件(而不是表空间)脱机和联机
           执行脱机数据文件和表空间的恢复
七、以受限模式打开数据库
        当执行结构维护或数据库导入导出时,以受限模式启动数据库,这样,只有具有restrict session权限的用户才可以使用数据库。使用alter system SQL命令也可以将数据库设为受限模式:
        alter system 【{enable | disable} restricted session】
        enable:仅允许具有restricted session权限的用户在以后登陆
        disable:禁用restrict session以允许没有该权限的用户可以登陆
        将例程置于受限模式后,可以使用一下命令来终止所有当前会话
        alter system kill session ‘integer1,integer2’
        integer1:V$session视图中的SID列的值
        integer2:V$session视图中的serial#列的值
        执行该命令后,PMON会执行一下操作
        回退用户当前事务
        释放所有当前持有的表或行锁定
        释放用户当前保留的所有资源
八、关闭数据库
        关闭数据库这一操作将导致对所有物理结构进行操作系统脱机备份,并使修改过的静态初始化参数在重新启动后生效,有四种模式:abort、immediate、transactional、normal
         关闭数据库必须以sysoper或sysdba身份使用一下命令操作
         shutdown 【normal | transactional | immediate | abort】
九、干净的关闭数据库
         使用正常关闭(normal)、事务处理关闭(transactional)、立即关闭(immediate)等操作能干净的关闭数据库,干净的关闭数据库的流程
             在关闭过程中将数据库缓冲区告诉缓存的内容写入数据文件
             回退未提交的更改
             释放资源
             在启动过程中没有发生例程恢复
         正常关闭
             正常关闭(normal)是缺省的关闭模式。正常的护具看关闭在下列情况下进行
                  未建立新连接
                  oracle服务器等待所有用户断开后才完成关闭
                  数据库和重做缓存区(redo log buffer)中的内容已写入磁盘
                  后台进程终止,SGA已从内存中删除
                  oracle在关闭例程前将关闭并卸载数据库
                  下次启动将不要求例程恢复     
              事务处理关闭(transactional)防止客户机丢失工作,在下列情况下进行
                  没有客户机可以在此特定例程上启动新事物
                  当客户机结束正在进行的事务时,断开客户机
                  当所有事务都已完成后立即关闭
                  下次启动将不要求例程恢复
              立即关闭(immediate)在下列情况下进行
                   由oracle处理的当前SQL语句未完成
                   oracle服务器不等待当前连接到数据库的用户断开
                   oracle回退活动的事务并断开所有连接的用户
                   oracle在关闭例程前将关闭并卸载数据库
                   下次启动将不要求例程恢复
十、不正常关闭数据库
          使用关闭终止(abort)操作关闭数据库一般用在正常和立即关闭数据库不起作用时,操作所经历的步骤为:
                在关闭过程中发生修改的缓存区内容不写入数据文件
                不回退未提交的更改
                使用关闭终止强制关闭数据会造成数据库不一致
                在启动过程中会使用重做日志重新应用更改
                使用撤销段回退未提交的更改
                释放资源
                这种操作容易造成数据库故障,导致再无法开启,不建议使用
          使用该操作一般用于以下几种情况
                oracle服务器所处理的当前SQL语句被立即终止。
                oracle不等待当前连接数据库的用户断开
                数据库和重做缓冲区中的内容不写入磁盘
                未提交的事务不回退
                在不关闭文件的情况下例程被终止
                数据库不关闭或被卸载
                下次启动要求恢复例程,该操作将自动进行
                建议不要备份处于不一致状态的数据库

相关内容