Oracle存储结构之参数文件


Oracle的参数文件非常之多,但最重要的当属数据库参数文件。而数据库参数文件有pfile和spfile两类。pfile需手动修改,是文本文件;spfile是二进制文件,可动态更改。

之所以会有spfile,原因有:

1)可以杜绝参数文件的繁殖。我们知道,在客户端若要启动数据库,则需要pfile。spfile总是存在于数据库的服务端主机本身,不能置于客户端,从而保证了信息的一致性;

2)spfile可以用alter system命令修改到spfile里面,不需要手动更改。

通常,为了保证简单性,oracle建议,把spfile默认存储。

没有参数文件,就无法启动一个oracle数据库。可见,数据库参数文件还是蛮重要的。我们可以用v$parameter视图来查询参数值,或者show parameter也行哈。个人感觉show parameter比较好用,因为它可以通配,默认%参数值%;而v$parameter的优点,则可以查出多个字段,比较准确定位我们要的信息。

oracle在nomount阶段的任务就是读取参数文件,在$ORACLE_HOME/dbs下查找,寻找的顺序是spfile<ORACLE_SID>.ora, spfile.ora , init<ORACLE_SID>.ora

接下来我们来谈谈spfile和pfile的几个常见操作。

  关于几个spfile的操作如下:
  1)转换为spfile:(在nomount状态下操作)
  show parameter spfile; --查看是否使用了spfile
  create spfile from pfile; --注意使用默认位置存储
  startup force; --重新启动
  show parameter spfile;

  2)设置spfile中的值
  alter system set parameter=value <comment='text'> <deferred>
       <scope=memory|spfile|both>
       <sid='sid|*'>
  comment:注释。在v$parameter里面的update_comment字段可查。
  deferred:为新建立的会话生效
  scope:作用域。

  3)取消spfile的设置
  alter system reset parameter <scope=memory|spfile|both> sid=<'sid|*'>
  这里的sid是必选的。单实例可用默认值sid=‘*’

  4)从spfile创建pfile
  create pfile=filename from spfile;

  5)修正被破坏的spfile
  借助告警日志的内容创建pfile,再用create spfile转换一个spfile

  我们对于pfile的使用大概有两种:http://www.bkjia.com
  1)用pfile来启动数据库
  startup pfile=‘filename’;
  2)用pfile来创建spfile
  create spfile from pfile=‘filename’;

 

下面我们贴一个spfile的全部内容,并大概看一下里面的东西。

  以下是spfile的内容,我们大致来看看:
  [oracle@localhost dbs]$ strings spfileorcl.ora
orcl.__db_cache_size=176160768
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=54525952
orcl.__streams_pool_size=0
/*********************我是分割线***********/
以上这段是对SGA的分配
/*********************我是分割线***********/
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.background_dump_dest='/u01/app/oracle/admin/orcl/bdump'  /*告警日志的位置*/
*.compatible='10.2.0.1.0'  /*版本*/
*.control_files='/u01/app/oracle/oradata/ORCL/controlfile/o1_mf_7xzsjpnk_.ctl','/u01/app/oracle/flash_recovery_area/ORCL/controlfile/o1_mf_7xzsjq6j_.ctl'  /*控制文件的位置*/
*.core_dump_dest='/u01/app/oracle/admin/orcl/cdump'
*.db_block_size=8192         /*数据库默认数据块的大小*/
*.db_create_file_dest='/u01/app/oracle/oradata'
*.db_domain='oracle.com'
*.db_file_multiblock_read_count=16
*.db_name='orcl'              /* 数据库名称,数据库启动的最小参数*/
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=81788928
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'   /*口令文件的可选参数*/
.sga_target=243269632
*.undo_management='AUTO'   /*undo表空间的管理方式*/
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/app/oracle/admin/orcl/udump'  /*跟踪文件的存放位置,比如你设置了alter system set SQL_TRACE=true,那么它的内容的会保存在这里*/

相关内容