配置自动还原管理
Oracle维护用于取消对数据库所做更改的信息。这种信息由事务处理操作的记录组成,总称为“还原”。Oracle是使用还原操作来会退有效的事务处理、恢复中断的事务处理、提供读取一致性,以及从逻辑错误中进行恢复。自动还原管理是基于还原表空间(undo tablespaces)的。
Oracle以前的版本使用回退段来存储还原,也称为手动还原管理模式。这些回退段的空间管理十分复杂,因此从Oracle 10g开始废弃了这种存储还原的方法。自动还原管理可消除管理回退段空间的复杂性,并使读者可以随意掌控还原保留多长时间后才能被覆盖。在自动还原管理模式中,还原数据被保存在还原表空间中。
登录到Oracle Enterprise Manager,打开“服务器”页面,在“数据库配置”栏目中单击“自动还原管理”超链接,打开“自动还原管理”页面,如图所示。默认的还原保留时间为15分钟,当前实例的还原表空间为UNDOTBS1,大小为100MB,支持自动扩展。以上参数都可以手动调整。在页面的下方还有系统提供的还原管理建议案。
初始化参数文件
决定Oracle数据库服务器的启动和运行状态的重要参数和值都保存在参数文件中。数据库每次启动时,都会读取参数文件以确定内存、进程的配置情况。
参数文件分为两种:pfile和spfile,两种参数文件都可以用于启动数据库。pfile是文本文件,可以使用编辑工具查看或修改其中的参数,而spfile是二进制文件,只能使用命令修改其中的参数。
- pfile文件的默认名称为init%ORACLE_SID%.ora,默认路径为%ORACLE_HOME%\database;
- spfile文件的名称为spfile%ORACLE_SID%.ora;
- 两者都存在时,Oracle默认使用spfile启动数据库。
动态参数与静态参数
动态参数:使用命令修改参数值后,如果不用重新启动数据库就能马上生效,则这种参数称为动态参数。
静态参数:如果使用命令修改参数值后,需要重启数据库,则这种参数称为静态参数。
可以通过查询v$parameter的ISSYS_MODIFIABLE列的值是TRUE或FALSE来确定一个初始化参数是否为动态参数。
使用pfile
使用pfile时,动态参数可以通过输入SQL命令:alter system set parameter=value
修改,但是新值只对当前运行状态生效,而不会修改初始化参数文件。而要修改静态参数则要通过文本编辑工具修改pfile实现。
下面介绍一些常用的初始化参数。
(1)全局数据库名称
- DB_NAME:定义本地数据库名称,如DB_NAME=orcl。
- DB_DOMAIN:定义了网络结构的域信息,如DB_DOMAIN=mydomain.com
当创建数据库时,DB_NAME被记录在数据库的数据文件、重做日志文件和控制文件中。如果数据库实例启动时初始化参数中DB_NAME的值与控制文件中的数据库名称不同,则数据库无法启动。
(2)定义闪回恢复区
闪回恢复区时Oracle数据库用来存储和管理与备份/恢复相关的文件的位置。它区分于数据库区,数据库区是管理当前数据库文件(数据文件、控制文件和在线重做日志文件等)的位置。
- DB_RECOVERY_FILE_DEST:定义闪回恢复区的位置。可以是目录。文件系统或自动存储管理(ASM)磁盘组。
- DB_RECOVERY_FILE_DEST_SIZE:指定闪回恢复区的最大字节数。只有DB_RECOVERY_FILE_DEST有效时才能指定此参数。
(3)指定控制文件
- CONTROL_FILES:为数据库指定控制文件名
如果在初始参数文件中没有CONTROL_FILES,则Oracle数据库使用默认的文件名来创建控制文件。
(4)指定数据块大小
- DB_BLOCK_SIZE:指定数据库的标准数据块大小。
(5)管理SGA
- SGA_MAX_SIZE:指定SGA最大内存数量。
- SGA_TARGET:指定SGA的实际大小。设置此项后SGA的组件大小将被自动设置,包括SHARED_POOL_SIZE、LARGE_POOL_SIZE、JAVA_POOL_SIZE、DB_POOL_SIZE和STREAMS_POOL_SIZE等。
(6)设置最大进程数量
- PROCESS:决定了操作系统中可以连接到Oracle数据库的最大进程数量。
(7)指定还原空间的管理方法
- UNDO_MANAGEMENT:设置是否启动自动还原管理模式,默认为MANUAL。
如果一个数据库实例启动了自动还原管理模式,则系统会选择一个还原表空间来存储还原数据。初始化参数UNDO_TABLESPACE用于指定当前实例的还原表空间。
使用spfile
使用spfile时,初始化参数都是使用命令:alter system set parameter=value
修改,动态参数可以直接使用命令修改,当前运行状态及spfile文件中的值都会被修改。静态参数在修改时,要附加scope=spfile子句,只能修改spfile文件中的值,需要重启数据库才能生效。
使用spfile的情况下,用SQL命令修改初始化参数的值,可以附加下面几个选项:
- scope=memory:只修改当前运行状态而不修改spfile文件中的值,适用于动态参数。
- scope=spfile:不修改当前运行状态,只修改spfile,只有重启数据库,重新读取spfile,新值才会生效。适用于动态及参数文件,而静态参数只能使用这种方式修改。
- scope=both:当前运行状态及spfile中的参数值都会被修改,只适用于动态参数,这也是默认选项。
下面是使用这3个选项修改初始化参数的一些示例:
SQL>alter system set timed_statistic=false scope=memory;
SQL>alter system set timed_statistic=false scope=spfile;
SQL>alter system set timed_statistic=false scope=both;
初始化参数管理
1.使用Oracle Enterprise Manager查看和设置初始化参数
使用SYS用户以SYSDBA的身份登录到Oracle Enterprise Manager,打开“服务器”页面,在“数据库配置”栏目中单击“初始化参数”超链接,打开“初始化参数”管理页面。下面所示页面只能修改动态参数。
2.使用SHOW PARAMETERS语句显示初始化参数
除了使用Oracle Enterprise Manager外,还可以使用SHOW PARAMETERS语句显示初始化参数,语法如下:
SHOW PARAMETERS [<开头字符串>]
【示例】执行下面的命令可以查看所有以db开头的初始化参数。
SQL> SHOW PARAMETERS db;
NAME TYPE VALUE
------------------------------------ ---------------------- --------------------
db_16k_cache_size big integer 0
db_2k_cache_size big integer 0
db_32k_cache_size big integer 0
db_4k_cache_size big integer 0
db_8k_cache_size big integer 0
db_block_buffers integer 0
db_block_checking string FALSE
db_block_checksum string TYPICAL
db_block_size integer 8192
db_cache_advice string ON
db_cache_size big integer 0
......
**2.使用VPARAMETER包含很多字段,其中比较常用的字段如表所示:
字段名 | 数据类型 | 说明 |
---|---|---|
NUM | NUMBER | 参数编号 |
NAME | VARCHAR(80) | 参数名 |
TYPE | NUMBER | 参数类型 |
VALUE | VARCHAR(512) | 参数值 |
DISPLAY_VALUE | VARCHAR(512)以用户友好的方式显示参数值 | |
DESCRIPTION | VARCHAR(255) | 参数的描述信息 |
【示例】查看所有以db开头的出事化参数
SELECT NAME,VALUE,DISPALY_VALUE FROM V$PARAMETER WHERE NAME LIKE '%db%';
使用SHUTDOWN命令关闭数据库实例
1.正常关闭数据库实例
正常关闭数据库实例语法如下:
SHUTDOWN NORMAL
正常关闭数据库的执行情况如下:
- 提交SHUTDOWN NORMAL命令后,Oracle数据库不再接受新的连接。
- 数据库会一直等待当前连接到数据库的用户都断开连接后,再关闭数据库实例。因此通常执行SHUTDOWN NORMAL命令都需要等待很长时间,一般不采用这种方式来关闭数据库。
2.以事务处理方式关闭数据库实例
以事务处理方式关闭数据库实例语法如下:
SHUTDOWN TRANSACTIONAL
在执行事务处理关闭时,数据库将不允许建立新的连接,也不允许开始新的事务。当前所有事务处理完成后,仍然连接到当前实例的客户端将被断开。
3.立即关闭数据库实例
直接使用SHUTDOWN NORMAL命令都需要等待很长时间。在下面的情况下,可以选择立即关闭数据库实例。
- 初始化自动备份。
- 如果电源将在比较长的时间内被切断。
- 如果数据库或者数据库应用程序发生异常,而管理员无法联系到用户退出登录或者用户无法退出登录。
以SHUTDOWN立即关闭数据库实例语法如下:
SHUTDOWN INMEDIATE
在执行立即关闭过程中,数据库将不允许建立新的连接,也不允许开始新的事务,所有未提交的事务都会被执行回滚操作。对于比较复杂的事务,回滚操作可能持续很长时间,因此立即关闭操作的执行时间也许并不像名字中所描述的那么快。
4.中止关闭数据库实例
如果数据库服务器的电源很快就要被切断,或者数据库实例启动时出现异常,则可以使用中止关闭方式关闭数据库,语法如下:
SHUTDOWN ABORT
在执行立即关闭过程中,数据库将不允许建立新的连接,也不允许开始新的事务。所有正在执行的客户端SQL语句将被立即终止,没有提交的事务也不会被回滚,立即切断所有在线用户的连接。因此,中止关闭是最快速的关闭Oracle数据库的方式。
在执行STARTUP命令时,数据库将从默认位置读取服务器参数文件SPFILE。数据库首先查找spfileORACLE_SID.ora。
2.以指定的初始化参数来启动实例
在有些情况下,需要临时使用非默认的初始化参数文件中的配置信息来启动数据库实例。在STARTUP命令中使用PFILE子句可以指定启动数据库实例时使用的初始化参数。命令格式如下:
STARTUP PFILE = 初始化参数文件
【示例】这里假定使用服务器初始化参数文件D:\app\Administrator\product\11.2.0\dbhome_1\dbs\init.ora启动数据库实例。
首先创建一个文本初始化参数文件,只包含SPFILE参数,用于指定非默认的服务器初始化参数文件。
SPFILE = F:\app\Administrator\product\11.1.0\db_1\dbs\init.ora
将文件保存为D:\app\Administrator\product\11.2.0\dbhome_1\dbs\spf_init.ora,文件名和睦路可以根据需要选择。
以系统管理员身份连接到SQL Plus。如果数据库实例处于启动状态,可以使用SHUTDOWN命令将其关闭,然后执行下面的命令:
STARTUP PFILE = D:\app\Administrator\product\11.2.0\dbhome_1\dbs\spf_init.ora
6.以限制模式启动数据库实例
在以下情形需要以限制模式启动数据库实例。
- 执行数据导入或导出操作(此时不应该有其他普通用户访问数据库,以免导致数据不一致)。
- 使用SQL*Loader提取外部数据库中的数据。
- 需要暂时拒绝普通用户访问数据库。
- 进行数据库移植或者升级操作。
使用STARTUP RESTRICT语句可以以限制模式启动数据库实例,此时只有拥有RESTRICT SESSION权限的用户才可以访问数据库。
7.在数据库启动时开始介质恢复
如果需要执行介质恢复,则可以使用STARTUP RECOVER语句启动一个数据库实例,并自动启动恢复程序。
执行STARTUP RECOVER命令的效果相当于首先执行RECOVER DATABASE命令,然后启动数据库实例。