SPFILE服务器端参数文件
Oracle 9i提供了一个二进制服务器参数文件(spfile)来管理初始化参数,这是一个另人激动的新特性。通过spfile,我们就可以使用alter system或者alter session命令动态地改变所有的参数,尽管有些静态参数不能够马上生效,但是可以修改到spfile中,将在数据库下次重新启动后生效。
在BJMI安全审计子系统中,除了启动数据库本身的审计功能外,我们还需要在应用层为审计管理员提供一个开启/关闭审计特性的接口,因此需要我们在应用程序级别可以修改audit_trail参数,而audit_trail为静态参数,只能修改到spfile,否则会报错,因此我们需要建立SPFILE,可以通过如下方式建立SPFILE。
SQL> startup pfile=‘C:\Oracle\admin\bjmigyj\pfile\init.ora';
SQL> create spfile from pfile;
这样,spfile就建立成功了,但是不能以同样的方式指定spfile来启动数据库,Oracle 9i提供了一种变通的方法,即可以创建一个包含spfile参数的pfile文件,指向spfile,如下是一个pfile文件的内容:
#pfile link to spfile spfile= 'C:\Oracle\Ora90\database\SPFILEBJMIGYJ.ORA'
这样,我们在启动时指定pfile,实际上就实现了以spfile文件启动数据库的操作,同时,在该pfile文件中,还可以指定其他的参数,如果出现与spfile中重复的参数设置,那么,后出现的参数设置将覆盖先前的设置。
采用如上方式启动数据库后,你就可以使用alter system命令来改变任一初始化参数。
SQL> alter system set audit_trail = ‘DB’ scope=spfile;
这里,需要对重要的scope参数引起注意。scope参数具有三个值:
1. spfile: 在spfile中改变一个参数而不影响当前的实例。
2. memory:仅将改变应用于当前实例。
3. both:立即执行改变,并永久地使用改变。
在使用spfile启动数据库后,我们就可以在系统应用层通过业务逻辑来实现对audit_trail参数的修改,该修改将在下一次重新启动数据库后生效。从而,我们可以不手动修改init.ora文件,并在应用系统层实现对审计开关的控制。如下所示将在数据库重新启动后关闭审计开关:
PreparedStatement ps = db.getConnnection().prepareStatement("
alter system set audit_trail='NONE' scope=spfile");
ps.execute();
