果冻想
认真玩技术的地方

Oracle学习笔记——初始化参数

软件的配置文件

基本上每个软件都有一些配置信息;在Windows系统中,很多软件都将这些配置信息写入注册表中;而在Linux系统中,则是在/etc目录下生成一个配置文件。

这些配置文件无非就是记录一些参数值,在软件启动的时候读取这些参数值,对软件进行初始化。同理,对于Oracle来说,也存在着这么个配置文件,里面记录了一些初始化参数,在Oracle启动的时候,会读取这个配置文件中的数据对Oracle进行初始化。这篇文章就对Oracle启动过程中使用到的这个参数文件进行重点讲解与分析。

Oracle的启动“配置文件”

在《Oracle学习笔记——数据库启动原理》这篇文章中也说到了,Oracle的启动分为三步,在第一步启动实例的时候,需要读取配置文件,决定分配多大的内存,那这个配置文件是“何许人也”呢?

在Oracle中,有两种类型的初始化配置文件,更多的时候,我们把这两种初始化配置文件叫做初始化参数文件。Oracle有许许多多的初始化参数,这些参数用于对整个数据库的资源、用户访问、进程等信息进行控制。而这些初始化参数就保存在这个初始化参数文件中,我们可以进行读取,甚至修改。在Oracle中,这两种类型的初始化参数文件分别是:

  1. PFILE文件;
  2. SPFILE文件;

这两种初始化参数文件中记录的内容是一模一样的,只是文件格式不一样罢了,PFILE文件就是一个文本文件,而SPFILE则是一个二进制文件。

下面就分别对这两种初始化参数文件进行总结。

PFILE文件

PFILE文件和很多的配置文件一样,就是一个简单的文本文件,使用你的文本编辑器就可以打开。可能包含以下信息:

orcl.__db_cache_size=201326592
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__oracle_base='C:\Oracle11g'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=281018368
orcl.__sga_target=528482304
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=310378496
orcl.__streams_pool_size=0
*.audit_file_dest='C:\Oracle11g\admin\orcl\adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
...    

这就是PFILE文件中的一些参数信息,以key=value的形式记录。

SPFILE文件

SPFILE是一个二进制文件,如果直接打开的话,是不可阅读的。在打开数据库的情况下,我们可以运行以下命令检查当前使用的是SPFILE,还是PFILE。

 SHOW PARAMETER PFILE;

当以SPFILE文件启动数据库时,则会显示出SPFILE的信息。以此我们就可以得到SPFILE的路径。

修改初始化参数

初始化参数文件中的参数是为了对数据库的资源,进程,内存等信息进行限制的,避免不了要对这些参数进行修改,以达到最优的性能。

对于PFILE文件,可以直接使用文本编辑器打开,直接编辑,简单明了。但是存在一个问题,在数据库运行时,DBA不能永久修改初始化参数的值。要想永久修改初始化参数的值,DBA需要先关闭数据库,对参数文件PFILE进行修改,然后用修改后的PFILE重新启动数据库。

当使用SPFILE文件时,修改初始化参数的SQL命令为:

-- key表示需要修改的参数名称
-- value表示修改以后的新值
-- COMMENT表示对该字段进行的注释
-- DEFERRED表示指定修改是在下次启动实例时再生效
-- SCOPE表示修改应用的范围
    -- MEMORY表示仅仅是内存中,不写入SPFILE;下次实例启动时,修改就被丢弃
    -- SPFILE表示写入SPFILE中,但并不立即应用到当前实例中,下次启动实例时再生效
    -- BOTH(默认)表示立即生效并且写入SPFILE中
-- SID表示修改应用的实例,如果指定*(默认选项),则是应用到所有实例

ALTER SYSTEM SET <key>=<value> <COMMENT=’text’> <DEFERRED> <SCOPE=MEMORY | SPFILE | BOTH> <SID=’SID’|*>

但是对于SPFILE文件的修改,灵活性则非常的大。

  • 我们可以永久的修改初始化参数文件而不用重启数据库;
  • 我们可以临时的修改初始化参数文件,重新启动则会丢失修改;
  • 我们可以仅对本次会话修改初始化参数文件,会话结束则丢失修改。

使用PFILE生成SPFILE文件

初始化参数文件是一个非常重要的文件,它是DBA经过不断的调优而配置得来的,里面参数的价值千金,所以对于初始化参数的备份是必不可少的。至于备份我就不多说了,无非就是拷贝一份。如果现在我的手头只有PFILE文件,而没有SPFILE文件,那么如何生成一份SPFILE呢?

我们可以通过SQL命令,使用PFILE文件生成SPFILE文件。命令如下:

 CREATE SPFILE='<指定生成的SPFILE文件路径>' FROM PFILE='<指定PFILE文件路径>';

使用SPFILE文件生成PFILE文件

如果我的手头只有SPFILE文件,那么我如何生成PFILE文件呢?同理,我们可以使用SPFILE来生成PFILE,命令如下:

-- 从指定SPFILE文件创建PFILE
CREATE PFILE='<指定生成的PFILE文件路径>' FROM  SPFILE='<指定SPFILE文件路径>';

-- 从当前实例所使用的SPFILE文件创建PFILE
CREATE  PFILE='<指定生成的PFILE文件路径>' FROM SPFILE;

使用初始化参数文件启动数据库

Oracle在启动实例的时候会读取初始化参数文件中的信息,如果我的手头现在有多个初始化参数文件,我想从指定的一个初始化参数文件启动数据库,那么如何从指定的初始化参数文件启动数据库呢?

数据库的STARTUP命令中可以指定从哪个PFILE来启动,但是只能指定PFILE, 不能指定SPFILE文件。

-- 指定SPFILE文件启动,出错
SQL> STARTUP SPFILE='C:\MYSPFILE.ORA';
SP2-0714: 无效的        STARTUP 选项组合

-- 指定PFILE文件启动,正常启动
SQL> STARTUP PFILE='C:\mypfile.ora';
ORACLE 例程已经启动。

Total System Global Area  535662592 bytes
Fixed Size                  1375792 bytes
Variable Size             327156176 bytes
Database Buffers          201326592 bytes
Redo Buffers                5804032 bytes
数据库装载完毕。
数据库已经打开。

总结

学习Oracle真的是一个漫长的过程。各种知识点,虽然有些知识学了,实践的机会很少;但是对于理解其它的知识点是非常有帮助的。

果冻想,认真玩技术的地方。

2015年5月20日 于呼和浩特。

赞(33) 打赏
未经允许不得转载:果冻想 » Oracle学习笔记——初始化参数
关注微信公众号
关注微信公众号和果冻一起分享你的疑惑与心得。
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

玩技术,我们是认真的

联系我们关于果冻

请我喝杯咖啡也是不错的

支付宝扫一扫打赏

微信扫一扫打赏