也谈oracle参数和参数文件

咱们错误修改了oracle系统参数,有的时候会致使数据库没法启动,参数保存在spfile中,咱们没法经过直接编辑这个文件来恢复咱们的误操做,由于 这个文件是个二进制文件,切勿直接更改!可是在之前的版本中有个pfile文件,那个文件是个文本文件,能够直接编辑修改!恢复的思路就是经过spfile文件建立pfile文件,更改完配置之后,再经过pfile文件来建立咱们的spfile文件!
sql

  下面就是详细的操做步骤,以及我在实验的时候遇到的问题!
  1
、修改参数数据库

       SQL> alter system set db_block_buffers=1000 scope=spfile;服务器

System altered.session

  2、停掉数据库并发

       SQL> shutdown immediateoracle

Database closed.app

Database dismounted.ide

ORACLE instance shut down.工具

  3、启动数据库(报错)性能

       SQL> startup

ORA-00824: cannot set sga_target due to existing internal settings, see alert log for more information

  4、经过建立pfile来恢复

       SQL> create pfile from spfile;

File created.

执行这条命令之后我没有找到pfile文件,利用find / -name “pfile*” –print也没找到

在请教了itpub的高手后经过指定路径的办法解决,下面是详细的过程!

SQL> create pfile='/opt/oracle/aaaa.ora' from spfile;

File created.

而后编辑/opt/oracle/aaaa.ora文件,去掉*.db_block_buffers=1000这行!

接着经过pfile文件生成spfile文件

SQL> create spfile from pfile='/opt/oracle/aaaa.ora';

File created.

 5、启动数据库

       SQL> startup

ORACLE instance started.

 

至此spfile文件恢复成功!



学过Oracle的人都知道,Oracle参数对数据库初始化来讲很是重要。 由于Oracle初始化参数可以对数据库约束和资源限制,下面就有关Oracle参数及参数文件设置进行讲述。


初始化参数分为3类: 
推导参数 
操做系统依赖参数 
可变参数


1.推导Oracle参数(derived parameters)

select name,value from v$parameter where name in (‘processes’,’sessions’);


processes参数表明oracle并发链接数,合理设置processes参数是十分重要的,超过最大进程数,dba也没法登陆数据库。


一般在建立数据库时,建议将该参数值修改成500,我机器默认是150

alter system set processes=500 scope=spfile;


重启后看修改过的值

select name,value from v$parameter where name=’processes’;   select * from v$sgastat where name=’processes’;


2.操做系统依赖参数


某些参数的有效值或者取值范围受限于操做系统,好比db_cache_size参数,设置oracle使用的buffer cache内存大小,该参数 
的最大值就要受限于物理内存,这一类参数一般被称为操做系统依赖参数。


3.可变Oracle参数


可变参数包含绝大多数潜在影响系统性能的可调整参数,某些可变参数设置的是限制条件,如open_cursors,有的是设置容量,如 
db_cache_size等


初始化参数的获取 
show parameter sga


使用sql_trace跟踪当前会话

alter session set sql_trace=true;   show parameter sga;   alter session set sql_trace=false;


4.Oracle参数文件
初始化参数文件(initialization parameter files) PFILE,文本文件,可手工修改 
服务器参数文件(server parameter files)         SPFILE,二进制文件,不能手工修改

cd /var/oracle11g/app/dbs   file init.ora   file spfilehugwww.ora


SPFILE文件,对于参数的修改均可以在命令行完成,在sqlplus中经过alter system 修改参数

select sid,name,value from v$spparameter where value is not null;   show spparameter;   show spparameter memory_target;


在经过pfile中调用spfile,使用后设置的参数复盖spfile中的参数设置,是解决spfile中参数设置错误的一种方法


5.修改参数


能够经过alter system或者导入导出来更改spfile的内容 
scope新选项,有3个可选值: 
memory    只改变当前实例,重启数据库后失效 
spfile    只改变spfile的设置,不改变当前实例,重启数据库后生效 
both    同时改变实例及spfile,当前更改当即生效,重启后仍然有效 
在rac环境,能够指定sid=<实例名>





用法:

1).scope=memory   show parameter db_cache_ad   alter system set db_cache_advice=off scope=memory;   show parameter db_cache_ad


重启数据库后更改失效


2)

.scope=spfile   alter system set db_cache_advice=off scope=spfile;   show parameter db_cache_ad


当前实例不受影响,重启后生效


3).

scope=both   alter system set db_cache_advice=off scope=both;   alter system set db_cache_advice=off;   show parameter db_cache_ad


不带scope参数和scope=both是同样的,若是修改的是静态参数,那么须要指定spfile参数,不能指定both参数,不然会报错 
如:

alter system set sql_trace=false scope=both;   alter system set sql_trace=false scope=spfile;


6.在关闭数据库状态修改spfile


若是错误修改了参数致使数据库没法启动,则能够经过建立pfile文件,修改其中的参数,再由pfile建立spfile的方式解决,最后由 
spfile正常启动数据库,经过这种方式,能够快速修正spfile中的错误参数定义


故障演示,修改db_block_buffers=1000致使数据库不能启动

startup;   alter system set db_block_buffers=1000 scope=spfile;   shutdown immediate;   startup;


解决方法:

create pfile from spfile;   !vi /var/oracle11g/app/dbs/inithugwww.ora   将包含db_block_buffers=1000的那行删除   create spfile from pfile;   startup;





7.其余


重置spfile中设置的参数 
alter system reset parameter=memory|spfile|both>


判断是否使用了spfile 
若是查询返回空值,那么说明在使用pfile 
方法1: 
select name,value from v$parameter where name=’spfile’; 
方法2: 
show parameter spfile


指定pfile文件启动实例 
startup pfile=$ORACLE_HOME/dbs/inityang.ora


8.spfile的备份与恢复


oracle把spfile也放到rman的备份恢复策略当中,若是配置了控制文件自动备份,oracle会在数据库发生重大变化时自动进行 
控制文件及spfile文件的备份。 
1)设置控制文件自动备份

rman target /   configure controlfile autobackup on;


查询: 
sql>select * from v$rman_configuration;


2)更改自动备份的位置 
rman>configure controlfile autobackup format for device type disk to ‘/var/oracle11g/obak/control%F’


3)检查自动备份 
sql>select * from v$backup_spfile; 
rman target / 
list backup of spfile;


4)记录数据库变化 
create tablespace yang datafile ‘/var/oracle11g/app/base/oradata/hugwww/yang01.dbf’ size 5M;


5)测试 
rman target / 
restore spfile to ‘/tmp/spfileyang.ora’ from autobackup; 
restore controlfile to ‘/tmp/control01.ctl’ from autobackup;


ls -ltr /tmp/*


若是数据库没法mount,是不能使用以上方法恢复自动备份的控制文件或者参数文件,可手工临时编辑一个pfile文件启动 
实例,便可进行spfile恢复


注意:自动备份功能缺省是关闭的,强烈推荐你们用上面的方法打开这个功能。





9.oracle11g参数文件恢复

从oracle11g开始,恢复实例参数引入了一个新的命令 
create from memory; 
create spfile=’/tmp/spfile.ora’ from memory;|pfile>


10.如何设置events事件 
events事件是oracle重要的诊断工具及问题解决办法,不少时候须要经过events设置来屏蔽或更改oracle的行为

alter system set event=’10841 trace name context forver’ scope=spfile;   startup force;   show parameter event


取消event参数设置

show parameter event   alter system reset event scope=spfile sid=’*';   startup force;   show parameter event


从oracle10g开始,修改数据库的归档模式不须要设置log_archive_start参数,经过如下方法设置:

sqlplus "/as sysdba"   archive log list;   alter database archivelog;   alter database open;   archive log list;


注意:鉴于告警日志文件的重要做用,当数据库出现故障时,经过咱们最早的处理步骤是检查日志文件,以便发现相关错误信息,快 
速找到问题所在,这是dba必须明确的一个知识点 
位置: 
show parameter background_dump_dest;


显示错误号的意思,用以下命令 
$oerr ora 30012


完成!

相关文章
相关标签/搜索