日期:2014-05-16  浏览次数:20479 次

oracle 多个例程,启动具体例程 startup pfile
如果环境是AIX系统,安装了oracle,具有多个例程(实例instance),有一个默认的实例,启动其他实例怎么办?
如果说存在orcl1,orcl2,orcl3,单个例程,默认的为orcl1,如果启动orcl2怎么办?
一般大家用shutdown或则shutdown immediate来关闭数据库,然后用startup来启动数据库,但是如果像上面那种环境,存在多个
例程,而你想启动的例程不是默认例程,比如上面说的orcl2例程,怎么启动?
第一种方式:
将操作系统环境中的默认例程也就是ORACLE_SID修改为orcl2,然后启动
第二种方式:
采用startup 后跟参数pfile的方式,但是pfile中的文件必须是oracle初始化的文本参数文件,而不是服务器参数文件。
扫盲:
oracle的配置参数存于参数文件中,有两种参数文件,一种是文本参数文件,叫做pfile(parameter file),
另外一种是spfile(server parameter file),pfile可以用编辑软件修改,spfile为二进制文件(oracle为了保护参数而设置的),不能手动修改。
当你用startup启动例程时,oracle寻找默认的例程参数文件,
有一个寻找的顺序spfile$ORACLE_SID.ora->spfile.ora->init$Oracle_SID.ora(oracle11g的顺序,之前版本可能不同),
如果你想启动具体的例程,需要跟参数,startup pfile=‘*****.ora’,ora中配置了db_name,也就决定了你要启动哪个例程。
但是一定要记住,这种方式指定的文件为文本参数文件,而并非spfile。网上还有中说法,startup spfile=‘*****.ora’,这完全是
自我想象出来的方式,oracle没有这种语法,唉,网上查资料注意陷阱。。。。。

既然oracle有两种参数文件,一种为pfile,另外一种为spfile,spfile为二进制文件,头部和尾部的内容无法查看,中间的内容可以查看。
但是如果你的环境中不存在pfile,只存在spfile,如何startup pfile方式启动例程?
1.修改系统默认例程,但是一般服务器是大家公用的,这种系统级别的修改,建议大家不要去尝试,否则后果自负
2.oracle有个命令,但是只能是dba权限的才有,就是根据spfile来创建pfile,create pfile='' from spfile='',根据spfile中的内容,创建
出pfile,然后你就可以用pfile进行启动例程了,并且,如果spfile中有错误的配置,你还可以在pfile中进行修改。还有一个命令
反过来,从pfile来创建spfile,你有了pfile,然后create spfile='' from pfile=''。

笔者曾经遇到过一个问题:
AIX的环境中有三个例程,我要启动非默认的例程,但是该例程并没有pfile,只有spfile,当初也是了下startup pfile='**spfile.ora',出现错误:
LRM-00123: invalid character 7 found in the input file
ORA-01078: failure in processing system parameters
网上搜了好久,有人遇到同样的问题,大部分都没有解决,就从装oracle了,其实大家只要修改启动参数文件为pfile即可。