waid 发表于 2018-9-11 08:09:17

也谈oracle参数和参数文件

  我们错误修改了oracle系统参数,有的时候会导致数据库无法启动,参数保存在spfile中,我们无法通过直接编辑这个文件来恢复我们的误操作,因为 这个文件是个二进制文件,切勿直接更改!但是在以前的版本中有个pfile文件,那个文件是个文本文件,可以直接编辑修改!恢复的思路就是通过spfile文件创建pfile文件,更改完配置以后,再通过pfile文件来创建我们的spfile文件!
  下面就是详细的操作步骤,以及我在实验的时候遇到的问题!
  1、修改参数

  SQL>>
  System>  2、停掉数据库
  SQL> shutdown immediate
  Database closed.
  Database dismounted.
  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’>  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
  完成!


页: [1]
查看完整版本: 也谈oracle参数和参数文件