阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle的参数文件

124次阅读
没有评论

共计 4275 个字符,预计需要花费 11 分钟才能阅读完成。

1.参数文件

          Oracle 数据库相关的参数文件有很多,但是最重要的是数据库的参数文件,如果没有这个参数文件,甚至无法启动数据库。

          数据库的参数文件通常称为初始化文件 (init file),或init.ora 文件。这是因为历史上它的默认名就是 init<ORACLE_SID>.ora。这所以称为“历史上”的默认名,原因是Oracle Database 9i Release 1 以来,对于存储数据库的参数设置,引入了一个很大改进的新方法:服务器参数文件(server parameter file),简称为SPFILE。这个文件的默认名为spfile<ORACLE_SID>.ora

          如果没有参数文件,就无法启动 Oracle 数据库。所有参数文件相当重要,到了 Oracle Database 9i Release 2(9.2 及以上版本 ),备份和恢复工具——恢复管理器(Recovery Manager,RMAN) 认识到了这个文件的重要性,允许把服务器参数文件包括在备份集中 ( 而不是遗留的 init.ora 参数文件类型 )。不过由于init.ora 参数文件中是一个纯文本文件,可以用任何文本编辑器创建,所以这个文件不需要你花大力气去“保卫”。只要知道文件中的内容,完全可以重新创建 ( 例如,如果能访问数据库的警告日志,就可以从中获得参数文件的信息)

1.1 什么是参数

          简单地说,可以把数据库参数想成是一个键 / 值对。如 db_name 参数,可以简单的存储为 db_name=orcl,这里的“键”是db_name,“值”是orcl。要得到一个实例参数的当前值,可以查询V$ 视图 V$PARAMETER。另外,还可以在SQL*Plus 中使用 SHOW PARAMETER 命令来查看。

  1. sys@ORCL>select value from v$parameter where name=‘db_block_size’;

  2. VALUE

  1. ————————————————————————————————–

  1. 8192

  1. sys@ORCL>show parameter db_block_s

  2. NAME                                    TYPE                              VALUE

  1. —————————————————————————————————

  1. db_block_size                                integer                              8192

v$parameter能够得到更多的信息,但 show parameter 命令更简单,而且还会自动“通配”,上边中输入了db_block_s,自动在前面和后面加了%

          注意:不同版本的 Oracle 上,参数个数会不同,不同的操作系统上可能也会增加另外的参数。

          可以用两种方式来设置各个参数值:只设置当前实例的参数值或永久性的设置。要确保参数文件包含你期望的值,使用遗留的 init.ora 参数文件时,这是一个手动过程。要永久的修改一个参数值 ( 即使服务器重启这个新设置也有效 ),就必须手动地编辑和修改init.ora 参数文件。如果是服务器参数文件,则只需要一条命令就能轻松完成。

1.2  init.ora参数文件

这个文件的命名约定默认为:

init$ORACLE_SID.ora      (Unix enviroment variable)

init%ORACLE_SID%.ora      (Windows enviroment variable)

默认存放的目录

$ORACLE_HOME/dbs        (Unix)

%ORACLE_HOME%\DATABASE  (Windows)

参数文件不必放在特定的位置上。启动一个实例时,可以在启动命令上使用 pfile=filename 选项。

1.3  服务器参数文件

          在访问和维护实例参数设置方面,SPFILEOracle 做出的一个重要改变。有了SPFILE,可以消除传统参数文件存在的两个严重问题。

  • 可以杜绝参数文件的繁殖。SPFILE问题存储在数据库服务器上;必须存在于服务器主机本身,不能放在客户机上。参参数设置来说,这样就可以有一个“信息来源”。

  • 无需在数据库之外使用文本编辑器手动地维护参数文件 ( 实际上,更确切的说法是不能手动地维护 )。利用ALTER SYSTEM 命令,完全可以直接将值写入SPFILE。管理员不必手动的查找和维护所有参数文件。

        这个文件的命名约定默认为:

$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora          (Unix environment variable)

%ORACLE_HOME%\database\spfile%ORACLE_SID%.ora  (Windows environment variable)

强烈使用默认位置,否则会影响 SPFILE 的简单性。如果不在默认位置,就必须告诉 Oracle 去哪里找SPFILE

1.转换为SPFILE

假设有一个数据库,使用了 inti.ora 参数文件,转换为 SPFILE 非常简单,使用 CREATE SPFILE 命令

假设使用 init.ora 参数文件,而且这个 init.ora 参数文件确实在服务器的默认位置上,那么只需要发出 CREATE SPFILE 命令,并重启实例就行了

Oracle 的参数文件

从指定目录中的 init.ora 参数文件中创建 SPFILE 使用:create spfile from pfile=’/path/to/init.ora’;

在集群环境中,通过使用 Oracle RAC,所有实例共享同一个SPFILE,这个SPFILE 可以包含所有参数设置,甚至各个实例特有的设置都可以放在这一个 SPFILE 中。所有实例共享的参数设置都以 *. 开头。单个实例特有的参数设置都以实例名 (Oracle SID) 为前缀。

2.设置 SPFILE 中的参数值

SPFILE是二进制文件,它们不能用文本编辑器来编辑,在 linux 上可以使用 strings 命令查看内容。要修改参数值就需要使用 ALTER SYSTEM 命令。语法如下

alter system set parameter = value <comment=’text’> <deferred>< scope=memory|spfile|both> <sid=’sid|*’>

默认情况下,ALTER SYSTEM SET命令会更新当前运行的实例,并且修改SPFILE,即默认为scope=both

  • parameter=value 这个赋值提供了参数名以及参数的新值。例如,pga_aggregate_target=1024M     会把 pga_aggregate_target 参数设置为1024MB

  • comment=’text 是一个与此参数设置相关的可选注释。这个注释会出现在 V$PARAMETER 视图的 UPDATE_COMMENT 字段中。如果使用了相应选项允许同时保存对 SPFILE 的修改,注释会写入 SPFILE, 而且即便服务器重启也依然保留,所以将来重启数据库时会看到这个注释。

  • deferred 指定系统修改是否只对以后的会话生效 ( 对当前建立的会话无效,包括执行些修改的会话 )。默认情况下,ALTER SYSTEM 命令会立即生效,但有些参数不能“立即”修改,只能为新建立的会话修改这些参数。使用 select name from     v$parameter where issys_modifiable=’DEFERRED’; 查询哪些参数必须使用deferred

  • SCOPE=MEMORY|SPFILE|BOTH 指示了这个参数设置的“作用域”。

    • SCOPE=MEMORY 只在实例中修改,数据库重启后将不再保存。下一次重启数据库时,设置还是修改前的样子。

    • SCOPE=SPFILE 只修改 SPFILE 中的值。数据库重启并再次处理 SPFILE 之前,这个修改不会生效。有些参数只能使用这个选项来修改,例如,processes参数就必须使用 SCOPE=SPFILE,因为我们无法修改活动实例的processes 值。

    • SCOPE=BOTH 指内存和 SPFILE 中都会完成参数修改。这是使用 SPFILE 时默认的作用域值。如果使用 init.ora 参数文件,默认为SCOPE=MEMORY,也是唯一合法值。

  • sid=’sid|*’ 主要用于集群环境,默认值为sid=’*’

Oracle 的参数文件

3.取消 SPFILE 中的值设置

如果想从 SPFILE 中删除某个参数设置,则需要使用 ALTER SYSTEM 命令的 RESET 子句来执行。

alter system reset parameter <scope=memory|spfile|both> sid=’sid|*’

Oracle 的参数文件

4.SPFILE 创建PFILE

与前面提到的 CREATE SPFILE 相反,创建 PFILE 使用 CREATE PFILE … FROM SPFILE。这个命令根据二进制的SPFILE 创建一个纯文本文件,可以被文本编辑器编辑,并且以后可以用来启动数据库。使用这个命令的原因

  • 创建一个“一次性的”参数文件,用户启动数据库来完成维护,其中有一些特殊的设置。所以可以使用这个命令创建 PFILE。编辑得到的PFILE,修改所需要设置。然后启动数据库,使用PFILE=<FILENAME> 选项指定要使用这个 PFILE 而不是SPFILE。完成后,可以正常的启动数据库又会使用SPFILE

  • 维护修改历史,在注释中记录修改。过去,请多 DBA 会在参数文件中加大量的注释来记录修改历史。

Oracle 的参数文件

5.修正被破坏的SPFILE

Unix平台上可以使用 strings 命令提取所有设置

Windows平台上则需要用 write.ext(WordPad,写字板) 打开这个文件

如果 SPFILE 真的被丢失了,可以从警告日志恢复参数文件的信息。每次启动数据库时警告日志都会包含如下一部分内容,通过这一部分内容,可以很容易地创建一个 PFILE,再用CREATE SPFILE 命令将其转换为一个新的SPFILE

Oracle 的参数文件

更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138684.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计4275字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中