服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 数据库技术 > Oracle技术 > Oracle开发 > 查看文档

通过pfile修改oracle中非dynamic parameter

oracle9i中,很多系统参数是动态的,即我们通过alter system set *** scope ***可以实时的修改这些值。通过scope,我们可以指定这次修改的范围、生效时间,如下:

scope=memory:只修改内存中的参数,重起后恢复到修改前的值。

scope=both:同时修改内存和spfile中的参数值,重起后继续有效。

scope=spfile:只修改spfile中的值,对于但前实例不起作用,重起后方生效。

对于本文中要讨论的non-dynamic-parameter, 他们是无法通过上述方式来修改的。错误如下:

sql> alter system set utl_file_dir=d:\tmp;

alter system set utl_file_dir=d:\tmp

*

error at line 1:

ora-02095: specified initialization parameter cannot be modified

那么我们如何修改这些值呢? 要修改这些值,我们可以通过修改pfile内容,重起实例来实现。下面我们看看修改这样的参数,需要哪些步骤,

1:如果没有pfile的话,我们首先需要根据当前实例生成pfile, 连接(要求以dba的角色,否则没有权限)上该实例,执行如下的sql,

sql> connect system/coffee@testdb as sysdba

sql> create pfile='d:\oracle\admin\testdb\pfile\inittestdb.ora' from spfile;

2:关闭数据库,修改pfile中的对应参数,比如要修改utl_file_dir,我们可以在其中加入,

sql> shutdown immediate

database closed.

database dismounted.

oracle instance shut down.

找到inittestdb.ora,并添加如下内容(根据你要修改的参数)

*.utl_file_dir='d:\oracle\admin\testdb\utl_file_dir'

3:根据新生成的pfile生成spfile,并重起实例

sql> create spfile from pfile='d:\oracle\admin\testdb\pfile\inittestdb.ora';

sql> startup

oracle instance started.

total system global area 126950220 bytes

fixed size 453452 bytes

variable size 109051904 bytes

database buffers 16777216 bytes

redo buffers 667648 bytes

database mounted.

database opened.

4:参看修改是否成功,

sql> show parameter utl_file_dir

name type value

------------------------------------ ----------- ------------------------------

utl_file_dir string d:\oracle\admin\testdb\utl_file_dir

可以看到,这个参数我们修改成功了。以此类推,我们可以用同样的方法去修改其它non-dynamic-parameter,如果你手里有现成的pfile,第一步就可以省了。不过建议还是去做一下,这样可以保证我们的pfile是最新的。

扫描关注微信公众号