October 10, 2005
Oracle9i新特点-从自动备份中恢复spfile和控制文件
作者:eygle
出处:http://blog.eygle.com
本文发表于itpub技术丛书《Oracle数据库DBA专题技术精粹》,未经许可,严禁转载本文.
六. SPFILE的备份与恢复
在本文开篇我们提到,Oracle把Spfile也纳入到Rman的备份恢复策略当中,如果你配置了控制文件自动备份(autoback),那么Oracle会
在数据库发生重大变化(如增减表空间)时自动进行控制文件及Spfile文件的备份。
下面我们来看一下这个过程:
a. 设置控制文件自动备份:
|
[oracle@jumper oracle]$ rman target / Recovery Manager: Release 9.2.0.3.0 - Production Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved. connected to target database: HSJF (DBID=1052178311) RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; using target database controlfile instead of recovery catalog RMAN> exit |
这个设置可以在数据库中通过如下方式查询得到:
[oracle@jumper bdump]$ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.3.0 - Production on Sat Jan 17 01:08:05 2004 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: SQL> select * from v$rman_configuration;
|
b. 记录数据库变化
|
SQL> create tablespace eygle Tablespace created.
|
如果新创建一个表空间,这时候检查alert<sid>.log文件,你可以在其中发现这样的备份信息:
Sat Jan 17 00:55:57 2004 |
如果使用rman进行备份,在提示中你可以看到如下信息:
RMAN> configure controlfile autobackup on; old RMAN configuration parameters: RMAN> run allocated channel: ch1 Starting backup at 02-DEC-03 Starting Control File and SPFILE Autobackup at 02-DEC-03 released channel: ch1
|
我们简单看一下自动备份的控制文件及spfile文件的格式及命名规则:
c-IIIIIIIIII-YYYYMMDD-QQ
c ------------------------控制文件
IIIIIIIIII---------DBID
YYYYMMDD------------时间戳
QQ----------------------序号00-FF,16进制表示
c. 使用自动备份恢复spfile文件
[oracle@jumper bdump]$ rman target / Recovery Manager: Release 9.2.0.3.0 - Production Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved. connected to target database: HSJF (DBID=1052178311) RMAN> restore spfile to '/tmp/spfileeygle.ora' from autobackup; Starting restore at 17-JAN-04 using target database controlfile instead of recovery catalog RMAN> exit Recovery Manager complete.
|
你同样可以通过这种方法恢复控制文件,示例如下:
[oracle@jumper bdump]$ rman target / Recovery Manager: Release 9.2.0.3.0 - Production Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved. connected to target database: HSJF (DBID=1052178311) RMAN> restore controlfile to '/tmp/control01.ctl' from autobackup; Starting restore at 17-JAN-04 using target database controlfile instead of recovery catalog RMAN> exit Recovery Manager complete.
|
Oracle9i自动备份控制文件的功能给我们带来了极大的收益,通过自动备份,在数据库出现紧急状况的时候,你可能可以从这个自动备份中获得更
为有效及时的控制文件.
缺省的,这个自动备份功能是关闭的,你可以用我们上面提到的方法打开该功能.
Posted by eygle at 7:59 PM | Comments (0)
Oracle9i新特点-判断是否使用了spfile
作者:eygle
出处:http://blog.eygle.com
本文发表于itpub技术丛书《Oracle数据库DBA专题技术精粹》,未经许可,严禁转载本文.
五. 是否使用了spfile
判断是否使用了SPFILE,可以使用以下方法:
1.查询v$parameter动态视图,如果以下查询返回空值,那么你在使用pfile.
SQL> SELECT name,value FROM v$parameter WHERE name='spfile'; NAME
|
2.或者你可以使用SHOW命令来显示参数设置,如果以下结果value列返回空值,那么说明你在使用pfile:
|
SQL> SHOW PARAMETER spfile NAME TYPE |
3.查询v$spparameter视图
如果以下查询返回0值,表示你在使用pfile,否则表明你使用的是spfile:
SQL> SELECT COUNT(*) FROM v$spparameter WHERE value IS NOT NULL; |
或者使用以下查询,如果true值返回非0值,那么说明我们使用的是spfile.
SQL> select isspecified, count(*) from v$spparameter group ISSPECIFIED COUNT(*)
|
更为直接的:
|
SQL> select decode(count(*), 1, 'spfile', 'pfile' ) USED USED
|
Posted by eygle at 7:59 PM | Comments (0)
Oracle9i新特点-在spfile中设置Event事件
作者:eygle
出处:http://blog.eygle.com
本文发表于itpub技术丛书《Oracle数据库DBA专题技术精粹》,未经许可,严禁转载本文.
七. 设置Events事件
Events事件是Oracle的重要诊断工具及问题解决办法,很多时候需要通过Events设置来屏蔽或者更改Oracle的行为,下面我们来看一下怎样修改spfile,增加Events事件设置:
SQL> alter system set event='10841 trace name context forever' scope=spfile; System altered. SQL> startup force; Total System Global Area 101782380 bytes NAME TYPE VALUE
|
顺便提一句,10841事件是用于解决Oracle9i中JDBC Thin Driver问题的一个方法,如果你的alert.log文件中出现以下错误提示:
Wed Jan 7 17:17:08 2004
|
那么,很不幸,你很可能是遇到了bug: 1725012
通过设置以上事件,可以屏蔽和解决这个ORA-00600错误.
具体你可以参考Metalink相关文档。
八. 导出SPFILE文件
SPFILE文件可以导出为文本文件,使用导出、创建过程你可以向SPFILE中添加参数。
SQL> create pfile='e:\initeyglen.ora' from spfile; 文件已创建。 SQL> shutdown immediate
|
Initeyglen.ora文件的内容
*.aq_tm_processes=1
*.background_dump_dest='e:\oracle\admin\eyglen\bdump'
*.compatible='9.2.0.0.0'
*.control_files='e:\oracle\oradata\eyglen\control01.ctl',
'e:\oracle\oradata\eyglen\control02.ctl',
'e:\oracle\oradata\eyglen\control03.ctl'
*.core_dump_dest='e:\oracle\admin\eyglen\cdump'
*.db_block_size=8192
*.db_cache_size=25165824
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='eyglen'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=eyglenXDB)'
*.fast_start_mttr_target=300
*.hash_join_enabled=TRUE
*.instance_name='eyglen'
*.java_pool_size=33554432
*.job_queue_processes=10
*.large_pool_size=8388608
*.open_cursors=300
*.pga_aggregate_target=25165824
*.processes=150
*.query_rewrite_enabled='FALSE'
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=50331648
*.sort_area_size=524288
*.sql_trace=FALSE
*.star_transformation_enabled='FALSE'
*.timed_statistics=TRUE
*.undo_management='AUTO'
*.undo_retention=10800
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='e:\oracle\admin\eyglen\udump'
然后我们可以使用这个pfile,或者手动修改其中的参数以启动数据库。
我们修改这个pfile,增加一行
*.log_archive_start=true
使用这个PFILE启动数据库
SQL> startup pfile='e:\initeyglen.ora' Total System Global Area 135338868 bytes NAME TYPE
|
然后我们可以使用新的PFILE创建SPFILE
SQL> create spfile from pfile='e:\initeyglen.ora'; |
重新启动数据库,新的SPFILE生效。
SQL> startup Total System Global Area 135338868 bytes NAME TYPE NAME TYPE
|
九. 关于920的PFILE
在$ORACLE_BASE\admin\db_name\spfile下,你很可能可以看到一个类似这样[init.ora.192003215317]名字的文件,这就是初始化
参数文件,只是跟上了时间戳。
对于Oracle920,缺省的就使用spfile启动,但是这个spfile不是凭空而来,而是根据这个文件创建而来,你可以去掉这个长后缀,就是标准的
pfile文件了。
如果手动创建数据库,可以看到以下的过程:
SQL> create spfile='e:\oracle\ora10G\database\spfilesunny.ora' |
文件已创建。
如果你想要使用pfile启动数据库,那么你可以把spfile改名,NT缺省位于$ORACLE_HOME\database下,这样Oracle就不会使用这个spfile了 。
你使用create pfile from spfile命令创建的pfile,也应该在这个目录下
以下是一个完整的例子:
|
E:\Oracle\Ora9iR2\database 的目录 2003-02-26 10:49 1,028 INITeyglen.ORA E:\Oracle\Ora9iR2\database>sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 2月 26 11:16:29 2003 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. SQL> connect / as sysdba Total System Global Area 135338868 bytes NAME TYPE SQL> host dir *.ora E:\Oracle\Ora9iR2\database 的目录 2003-02-26 10:49 1,028 INITeyglen.ORA SQL> startup Total System Global Area 135338868 bytes NAME TYPE SQL> SQL> shutdown immediate Total System Global Area 135338868 bytes NAME TYPE |
Posted by eygle at 7:59 PM | Comments (0)
Oracle9i新特点:SPFILE的使用
作者:eygle
出处:http://blog.eygle.com
本文发表于itpub技术丛书《Oracle数据库DBA专题技术精粹》,未经许可,严禁转载本文.
简介:
本文是关于Oracle9i spfile的一篇文字,这是Oracle9i的一个新特性,虽然是很小的一个改进,但是却体现了Oracle在安全性和可靠性上的一个提高,
通过rman备份或者控制文件的自动备份,Oracle把spfile纳入到整个备份恢复体系当中。
本文对spfile的使用和修改等作了详细描述,对于其备份恢复也给出了相应的例子,希望大家能够从这篇文章中受益,从Oracle的这个新特性中获得收益。
在Oracle9i中,一个新的文件被引入-spfile,spfile用于服务器端,管理初始化参数。
在9i以前,Oracle使用pfile存储初始化参数设置,这些参数在实例启动时被读取,任何修改需要重起实例才能生效,使用spfile你可以使用ALTER SYSTEM
或者ALTER SESSION来动态修改那些可动态修改的参数,所有更改可以立即生效,你可以选择使更改只应用于当前实例还是同时应用到spfile。这就使
得所有对spfile的修改都可以在命令行完成,我们可以彻底告别手工修改初始化参数文件,这就大大减少了人为错误的发生。
SPFILE是一个二进制文件,可以使用RMAN进行备份,这样实际上Oracle把参数文件也纳入了备份恢复管理。
除了第一次启动数据库需要PFILE(然后可以根据PFILE创建SPFILE),我们可以不再需要PFILE,ORACLE强烈推荐使用spfile,应用其新特性来存储和
维护初始化参数设置。
一. 创建SPFILE
缺省的,ORACLE使用PFILE启动数据库,SPFILE必须由PFILE创建,新创建的SPFILE在下一次启动数据库时生效,CREATE SPFILE需要SYSDBA或者
SYSOPER的权限:
语法如下:
CREATE SPFILE[='SPFILE-NAME'] FROM PFILE[='PFILE-NAME']
|
例:
|
SQL> create spfile from pfile; |
缺省的,spfile创建到系统缺省目录
(Unix: $ORACLE_HOME/dbs; NT: $ORACLE_HOME\database)
如果SPFILE已经存在,那么创建会返回以下错误:
|
SQL> create spfile from pfile;
|
这也可以用来判断当前是否使用了SPFILE文件。
然而意外的时,Oracle并没有向其他文件一样,在运行期间保持锁定,让我们作以下试验:
|
SQL> host rename SPFILEEYGLEN.ORA SPFILEEYGLEN.ORA.BAK SQL> alter system set db_cache_size=24M scope=both; E:\Oracle\Ora9iR2\database 的目录 2003-02-10 14:35 2,048 PWDeyglen.ORA SQL> alter system set db_cache_size=24M scope=spfile; SQL> host rename SPFILEEYGLEN.ORA.BAK SPFILEEYGLEN.ORA SQL> alter system set db_cache_size=24M scope=spfile;
|
估计Oracle以后会想办法来锁定这个文件。
二. 使用SPFILE
重新启动数据库,使用startup命令,Oralce将会按照以下顺序在缺省目录中搜索参数文件:
a. spfile${ORACLE_SID}.ora
缺省目录
UNIX: ${ORACLE_HOME}/dbs/
NT: ${ORACLE_HOME}\database
b. spfile.ora
缺省目录
UNIX: ${ORACLE_HOME}/dbs/
NT: ${ORACLE_HOME}\database
c. init${ORACLESID}.ora
缺省目录
UNIX: ${ORACLE_HOME}/dbs/
NT: ${ORACLE_HOME}\database or
${ORACLE_HOME}\admin\db_name\pfile\
创建了spfile,重新启动数据库,Oracle会按顺序搜索以上目录,spfile就会自动生效。
Posted by eygle at 7:52 PM | Comments (1)
Oracle9i新特点-如何修改Spfile的参数
作者:eygle
出处:http://blog.eygle.com
本文发表于itpub技术丛书《Oracle数据库DBA专题技术精粹》,未经许可,严禁转载本文.
三. 使用pfile/spfile启动数据库
如果你想使用pfile启动数据库,你可以在启动时指定pfile或者删除spfile.
SQL> startup pfile='E:\Oracle\admin\eyglen\pfile\init.ora';
|
你不能以同样的方式指定spfile,但是可以创建一个包含spfile参数的pfile文件,指向spfile.
SPFILE是一个自Oracle9i引入的初始化参数,类似于IFILE参数。 SPFILE参数用于定义非缺省路径的spfile文件。
你可以在PFILE链接到SPFILE文件,同时在PFILE中定义其他参数,如果参数重复设置,后读取的参数将取代先前的设置。
PFILE参数的使用,例如:
这是我们使用SPFILE启动的情况
|
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter log_archive_start
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
log_archive_start boolean
TRUE
SQL> show parameter spfile
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
spfile string
%ORACLE_HOME%\DATABASE\SPFILE%
ORACLE_SID%.ORA
SQL>
|
我们修改PFILE文件内容如下:
|
#Pfile link to SPFILE SPFILE= 'E:\Oracle\Ora9iR2\database\SPFILEEYGLEN.ORA' log_archive_start = false |
可以预见这个log_archive_start参数设置将会代替SPFILE中的设置:
SQL> startup pfile='e:\initeyglen.ora'
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter spfile
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
spfile string
E:\Oracle\Ora9iR2\database\SPF
ILEEYGLEN.ORA
SQL> show parameter log_archive_start
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
log_archive_start boolean
FALSE
|
然后我们可以使用ALTER SYSTEM方式将修改固定到SPFILE.
|
SQL> alter system set log_archive_start=false scope=spfile; 系统已更改。
|
所以你也可以通过如上方式在启动时修改初始化参数。比我们在本文最后介绍的导入导出方法要简便的多。
四. 修改参数
可以通过ALTER SYSTEM或者导入导出来更改SPFILE的内容。
ALTER SYSTEM增加了一个新选项:SCOPE。SCOPE参数有三个可选值:MEMORY ,SPFILE , BOTH
MEMORY:只改变当前实例运行
SPFILE:只改变SPFILE的设置
BOTH:改变实例及SPFILE
1. SCOPE=MEMORY
SQL> show parameter timed_statistics
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
timed_statistics boolean
TRUE
SQL> ALTER SYSTEM SET timed_statistics=FALSE SCOPE=MEMORY;
系统已更改。
SQL> show parameter timed_statistics
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
timed_statistics boolean
FALSE
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter timed_statistics
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
timed_statistics boolean
TRUE
|
2. SCOPE=SPFILE
SQL> show parameter timed_statistics
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
timed_statistics boolean
TRUE
SQL> ALTER SYSTEM SET timed_statistics=FALSE SCOPE=SPFILE;
系统已更改。
SQL> show parameter timed_statistics
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
timed_statistics boolean
TRUE
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter timed_statistics
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
timed_statistics boolean
FALSE
SQL>
|
3. SCOPE = BOTH
使用BOTH选项实际上等同于不带参数的ALTER SYSTEM语句。
注意:如果修改静态参数,那么需要指定SPFILE参数,否则将会报错。
SQL> show parameter timed_statistics
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
timed_statistics boolean
FALSE
SQL> ALTER SYSTEM SET timed_statistics=TRUE SCOPE=BOTH;
系统已更改。
SQL> show parameter timed_statistics
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
timed_statistics boolean
TRUE
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter timed_statistics
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
timed_statistics boolean
TRUE
SQL> ALTER SYSTEM SET sql_trace=FALSE SCOPE=BOTH;
ALTER SYSTEM SET sql_trace=FALSE SCOPE=BOTH
*
ERROR 位于第 1 行:
ORA-02095: 无法修改指定的初始化参数
SQL> ALTER SYSTEM SET sql_trace=FALSE SCOPE=SPFILE;
系统已更改。
|
4.你也可以在数据库shutdown时创建和修改spfile,例如:
SQL> show sga
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> create pfile from spfile;
文件已创建。
SQL> create spfile from pfile;
文件已创建。
SQL>
|
所以spfile的修改是相当容易的.
Posted by eygle at 7:52 PM | Comments (0)
Oracle10gR2 New Feature:CVU(Cluster Verification Utiltiy)
作者:eygle
出处:http://blog.eygle.com
Oracle10gR2新增了一个工具-Cluster Verification Utiltiy (cluvfy),用以在部署RAC环境的不同阶段进行环境及所有重要组件的检查。这个工具随Oracle10gR2发布,但是也可以被用于Oracle10gR1。
CVU所检查的范围非常广泛,涉及从初始的硬件安装到安装完成以及所有中间阶段的组建安装及配置。
但是cluvfy只对安装阶段及组件进行检查验证,不涉及调整、监控已经Cluster内在状况检查。
直接键入cluvfy可以获得提示输出:
[oracle@raclinux1 bin]$ cluvfy
USAGE:
cluvfy [ -help ]
cluvfy stage { -list | -help }
cluvfy stage {-pre|-post} |
使用stage选项可以对不同安装阶段进行环境及pre、post检查:
[oracle@raclinux1 bin]$ cluvfy stage -list
USAGE:
cluvfy stage {-pre|-post} |
使用comp选项进行组件检查:
[oracle@raclinux1 bin]$ cluvfy comp -list USAGE: cluvfy comp |
使用cluvfy进行crsinst post安装检查:
[oracle@raclinux1 bin]$ cluvfy stage -post crsinst -n raclinux1 Performing post-checks for cluster services setup Checking node reachability... Node reachability check passed from node "raclinux1". Checking user equivalence... User equivalence check passed for user "oracle". Checking Cluster manager integrity... Checking CSS daemon... Daemon status check passed for "CSS daemon". Cluster manager integrity check passed. Checking cluster integrity... Cluster integrity check passed Checking OCR integrity... Checking the absence of a non-clustered configuration... All nodes free of non-clustered, local-only configurations. Uniqueness check for OCR device passed. Checking the version of OCR... OCR of correct Version "2" exists. Checking data integrity of OCR... Data integrity check for OCR passed. OCR integrity check passed. Checking CRS integrity... Checking daemon liveness... Liveness check passed for "CRS daemon". Checking daemon liveness... Liveness check passed for "CSS daemon". Checking daemon liveness... Liveness check passed for "EVM daemon". Checking CRS health... CRS health check passed. CRS integrity check passed. Checking node application existence... Checking existence of VIP node application (required) Check passed. Checking existence of ONS node application (optional) Check passed. Checking existence of GSD node application (optional) Check passed. Post-check for cluster services setup was successful. |
检查crs组件安装:
[oracle@raclinux1 bin]$ cluvfy comp crs Verifying CRS integrity Checking CRS integrity... Checking daemon liveness... Liveness check passed for "CRS daemon". Checking daemon liveness... Liveness check passed for "CSS daemon". Checking daemon liveness... Liveness check passed for "EVM daemon". Checking CRS health... CRS health check passed. CRS integrity check passed. Verification of CRS integrity was successful. |
Posted by eygle at 10:25 AM | Comments (0)
