Oracle 数据库入门(三)数据库运行状态维护

数据库启动

Oracle 数据库的启动过程分为三个阶段,分别是启动实例、加载数据库以及打开数据库

  1. 启动实例

    根据数据库初始化参数文件创建数据库实例,分配 SGA 内存区域,并启动一系列后台进程和服务器进程。启动实例阶段需要访问数据库初始化参数文件,但并不需要访问控制文件以及数据文件,因此当控制文件以及数据文件出现问题时可以在该阶段进行修复

  2. 装载数据库

    从数据库文件中获取数据库名称、数据文件以及重做日志文件的位置等信息,为打开数据库做准备,如果控制文件损坏则无法装载数据库

  3. 打开数据库

    打开所有处于联机状态的数据文件和重做日志文件,如果出现任何一个文件打开错误,数据库将返回错误信息并需要进行恢复处理

在SQL Plus 中,启动数据库使用 startup 命令

/*
 *	nomount: 表示启动实例不装载数据库
 *	mount: 表示启动实例、装载数据库并保持数据库的关闭状态
 *	open: 表示启动实例、装载并打开数据库,这个是默认选项
 *	force: 表示强行关闭数据库并重新启动
 *	restrict: 用于以受限制的方式启动数据库,只允许部分特权用户访问数据库
 *	pfile: 用于显式指定启动实例时所使用的数据库初始化参数文件
 */
startup [nomount|mount|open|force] [restrict] [pfile=filename]
startup open

数据库关闭

Oracle 数据库的关闭过程与启动过程是相反的,首先关闭数据文件和重做日志文件,然后卸载数据库并关闭控制文件,最后关闭数据库实例、释放内存资源,停止数据库服务进程和后台进程

/*
 1. normal: 以正常方式关闭数据库,执行后数据库将拒绝任何新的连接请求。在数据库关闭前,Oracle 数据库将等待目前连接的所有用户断开连接后才开始关闭
 2. transactional: 执行该命令后数据库将拒绝任何新的连接请求和事务运行,并且在所有活动的事务完成后才关闭数据库,该命令可以在最短时间内关闭数据库,同时还可以保证当前所有活动事务可以正常提交
 3. immediate: 当前正在处理的事务立即中断,未提交的事务全部回滚。系统不等待所有连接用户退出而是强制断开所有用户连接,然后执行检查点,将变更数据全部写回数据文件,最后关闭数据库
 4. abort: 非正常关闭数据库,系统立即终止所有用户连接,中断所有事务运行,最后关闭数据库。未完成事务不会回滚,数据库也不会执行检查点操作,下次启动数据库必须执行实例恢复
*/
shutdown [normal|transactional|immediate|abort]

数据库运行状态转换

数据库在运行时可以根据管理以及维护需要,对数据库的运行状态进行转换

  1. 启动状态转换

    数据库在启动时,可以从nomount 状态转换为 mount 状态,同时 mount 状态可以转换至 open 状态。这种状态转换常用于修复控制文件、数据文件或者重做日志文件在启动时出现的问题

    startup nomount
    alter database mount;
    alter database open;
    
  2. 读写状态转换

    数据库启动时被设置为只读状态(read only),用户只能查询数据,不能修改数据库文件,需重新启动设置为可读写(read write)状态才能修改

    alter database open read only;
    alter database open read write;
    
  3. 受限与非受限状态

    数据库正常运行时为非受限状态,允许各类用户进行连接操作,当设置为受限状态(restricted),只有 create session 和 restricted session 系统权限或者具有 sysdba 和 sysoper 系统权限的用户才能连接到数据库​。非受限状态允许所有用户的连接操作

    alter system enable restricted session;
    alter system disable restricted session;
    
  4. 静默与非静默状态转换

    当数据库处于静默状态(quiesce)时,只有 DBA 用户 sys 和 system 才能在数据库执行查询、更新等操作,其他用户只能在非静默状态(unquiesce)下才能进行数据库执行等相关操作

    alter system quiesce restricted;
    alter system unquiesce;
    
  5. 挂起与非挂起状态转换

    数据库处于挂起状态(suspend),所有对物理文件的 I/O 操作请求都被暂停执行,当数据库退出挂起状态(resume)才能够执行。它与静默状态的区别在于它并不禁止非 DBA 用户的数据库操作,只是暂停所有用户的 I/O 操作

    alter system suspend;
    alter system resume;
    

服务器初始化参数文件管理

服务器初始化参数文件是支持数据库运行的重要配置文件,数据库启动需根据初始化参数的设置分配 SGA 并启动后台进程,如果初始化文件损坏则无法启动

在9i之前,参数文件只有一种,它是文本格式的,称为pfile,在9i及以后的版本中,新增了服务器参数文件,称为spfile,它是二进制格式的。这两种参数文件都是用来存储参数配置以供oracle读取的,但也有不同点

SPFILE 是存储于服务器端的二进制文件,无论是本地或远程启动数据库都可以读取该文件进行初始化,并且对初始化参数的修改可以选择永久保存在该文件

  1. 创建初始化参数文件

    使用 create spfile 命令根据文本初始化参数文件或内存中的当前参数设置情况创建服务器初始化参数

    /*
     *	spfile 参数用于指定创建的服务器初始化参数文件名称及存储路径,如果没有设置则使用默认的文件名称及存储路径
     *	pfile 参数用于指定文本初始化参数文件名称及存储路径,如果文本初始化参数存放于默认位置则可以不设置 pfile 的参数值
     *	memory 选项用于基于当前内存中参数设置情况创建服务器参数文件
    /*
    create spfile [='spfile_name'] from pfile [='pfile_name']|memory
    create spfile='D:\initorcl_1.ora' from pfile;
    carete spfile='D:\initorcl_2.ora' from memory;
    
  2. 修改初始化参数

    在 Oracle 数据库中包含上百个初始化参数,涉及数据库属性、文件属性以及 SGA 内存设置等多个类别。在 SQL Plus 中,用户可以通过 show parameter 命令查看当前用户会话使用的参数设置情况,并通过 show spparameter 命令查看服务器初始化参数文件中的所有参数设置情况

    用户在数据库使用过程中,可以根据需要使用 alter session 或 alter system 语句修改初始化参数,其中使用 alter session 修改的参数只对当前会话有效,即是对会话级参数的修改,而使用 alter system 语句修改的参数对当前实例的所有会话有效,即是对实例级参数的修改

    //该语句只能用于修改动态性能视图 v$parameter 中 isses_modifiable 列值为 true 的初始化参数,而且修改后参数值只在当前会话中生效
    alter session set parameter_name=paramter_value
    //如果当前实例使用的是文本初始化参数文件,使用 alter system 语句修改的初始化参数只对当前实例有效,不会保存修改结果到文本初始化参数文件中
    //如果当前实例使用的是服务器初始化参数文件,使用 alter system 语句修改的初始化参数可以保存到服务器初始化参数文件中,可以永久生效
    //Oracle 的初始化参数分为动态参数以及静态参数两种,动态参数修改后可以立即生效而静态参数修改后需要保存到服务器初始化参数文件中,下次重新启动数据库才能生效
    alter system set parameter_name=parameter_value [scope=spfile|memory|both]
    //当 scope=spfile 时,适合修改动态参数和静态参数,修改后的参数值需要重启数据库才能生效
    alter system set open_cursors=400 scope=spfile;
    //当 scope=memory 时,只适合修改内存中的动态参数,修改后的参数值在当前实例中立即生效,但重启数据库后恢复为修改前参数值
    alter system set open_cursors=400 scope=memory;
    //当 scope=both 时,只适合修改动态参数,修改后参数值在当前实例中立即生效,并且修改结果保存到服务器参数文件中,重启数据库后仍然有效
    alter system set open_cursors=300 scope=both;
    

导出服务器初始化参数文件

当需要备份服务器初始化参数文件或查看当前所有服务器初始化参数的设置情况时,可以考虑导出服务器初始化参数文件为文本初始化参数文件

//pfile_name 用于指定导出的文本初始化参数文件存储路径及名称
//spfile_name 用于指定需要导出的服务器初始化参数文件存储路径及名称,如果不使用 spfile_name 参数,则导出默认的服务器初始化参数文件
create pfile[='pfile_name'] from spfile[='spfile_name']
create pfile='D:\initorcl1.ora' from spfile;
//还可以使用 create pfile 命令直接将内存中的服务器初始化参数的当前值导出为文本初始化参数文件
create pfile='D:\initorcl.ora' from memory;

恢复服务器初始化参数文件

服务器初始化参数文件如果损坏或者丢失,则可能导致数据库无法启动,因此需要进行服务器初始化参数文件的恢复操作

  1. 当数据库还处于运行状态时,可以执行 create spfile from memory 语句,即利用内存中的参数数据恢复服务器初始化参数文件。如果存在文本初始化参数文件,还可以使用 create spfile from pfile 语句恢复服务器初始化参数文件

  2. 当数据库已经无法启动时,可以先根据 Oracle 告警日志文件中保存的初始化参数构建文本初始化参数文件,然后再使用 create spfile from pfile 语句恢复服务器初始化参数文化

你可能感兴趣的:(数据库)