9i以前使用静态参数文件,位置$ORACLE_HOME/dbs
1:文本文件
2:只在nomount状态时打开,读取文件内参数后关闭
3:只能用编辑器修改任何参数
4:修改参数后需要重启才能生效
查找顺序:initSID.ora---->init.ora
oracle9i开始,oracle引入了动态参数文件spfile,
1:在nomount后一直打开,里面的部分参数是可以动态调整的,调整后立即生效。这区别于pfile。
2:rman可以自动备份spfile。
3:二进制文件,不能修改,否则会破坏这个文件。
查找顺序:spfileSID.ora---->spfile.ora---->initSID.ora---->init.ora
show parameter spfile
都是查看数据库使用的是pfile还是spfile。
修改spfile需要使用命令修改,并且数据库启动到nomount状态。
create pfile from spfile;命令可以再数据库没有启动的状态下执行。
动态参数文件中参数的修改只能使用 ALTER SYSTEM SET 命令进行修改
ALTER SYSTEM SET parameter_name=parameter_value[comment=‘注释......’] scope=[memory|spfile|both] [sid=‘sid’|’*’]
只是修改内存|只是修改spfile|同时修改spfile和内存默认是both(动态参数可以使用三种方式,静态参数只能使用spfile方式)
默认是’*’,在RAC环境中有意义
一个常见错误的解决流程
错误了的修改了spfile里面的参数,数据库启动失败,因为没有办法直接修改spfile,该怎么办?
1、sql>create pfile=‘/u01/app/oracle/initoraclr10g.ora’ from spfile
2、手工的在pfile里面编辑和修改错误的参数
3、sql>create spfile from pfile=‘=‘/u01/app/oracle/initoraclr10g.ora’
4、sql>startup
创建spfile,pfile的时候可以指定另外的路径:
create spfile=‘/oracle/bak/spfileolit.bak’from pfile='/oracle/db/dbs/initolit.ora';
实例的启动和关闭
1、nomount阶段
1、寻找参数文件
2、打开参数文件
3、打开告警日志alterSID.log(路径$ORACLE_BASE/ADMIN/SID/bdump)
4、在这个阶段可以重建控制文件
2、mount阶段
根据参数文件中控制文件的路径和名字,打开所有的控制文件(默认有三个控制文件)
如果有一个控制文件不能打开,那么不能进入mount状态
从控制文件中读取数据文件、日志文件的路径和名字,不校验这些文件是否真的存在
3、open阶段
根据控制文件中对数据文件、日志文件的记录,打开所有的文件
有一个文件不能打开,就不能进入这个状态
实例的关闭
1:abort
类似突然掉电
内存被清空、内存中的数据没有写入数据文件
事务被立即中断
没有提交、没有回滚
2:immediate
强制中断当前正在运行的所有事务,回滚这些事务
回滚完毕,强制中断所有的连接
将实例中的所有数据写入数据文件
3:transactional
等待正在运行的事务,一直到他们提交或者回滚
所有事务主动结束以后(提交或者回滚),强行中断连接
将实例里面的数据写入数据文件
清空缓存
如果有事务一直没有提交或者回滚,实例无法关闭
4:normal
等待事务的主动提交或者回滚
等待用户主动断开连接
如果有一个用户没有断开连接,那么数据库无法关闭
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/27064837/viewspace-732987/ ,如需转载,请注明出处,否则将追究法律责任。