----------------------------------安装客户端--------------------------------------
讲PLSQL如何安装使用
############################参数文件################################
数据库启动到nomount 加载 spfile 【作用:加载实例后,数据库的一些环境参数在这设置】
spfile文件位置:$ORACLE_HOME/dbs
spfile 命名规则:spfileSID.ora【oracle默认优先使用】
pfile 命名规则:initSID.ora 【它可以看成spfile的备胎】
使用规则:
if(spfile存在) then 使用spfile
else if 使用pfile
else 库出错;
编辑规则:
spfile 二进制文件,不能直接vi修改(在库打开的状态:alter system set 参数=值 scope=both/spfile)
pfile 文本文件,可以直接vi修改
查看当前参数文件使用情况: show parameter spfile;
创建pfile:create pfile from spfile; 【查看一下】
创建spfile:create spfile from pfile; 【查看一下】
【实验一、模拟spfile损坏】
会话1:用spfile 创建 pfile、
会话2:找到新创建的pfile并改名、删除spfile
会话1:startup force; 【看报错????】 exit退出
会话2:找到新创建的pfile并改名,修改成原来正确的名称
会话1:startup 【恢复正常了】 show parameter spfile;【spfile没有了,默认使用pfile】 create spfile from pfile;
会话2:进入 $ORACLE_HOME/dbs 目录,查看spfile回来了
总结:当数据库正常的情况下,可以备份一份pfile,当参数文件出现问题时,可以再还原回来!!!!
【实验二、模拟spfile和pfile全损坏】
会话2:进入 $ORACLE_HOME/dbs 目录 删除spfile和pfile
会话1:startup force; 【看报错????】 exit; 退出吧
【问题来了,现在spfile和pfile全没了,还没有备份,怎么办????】
1、在网上找一份 pfile文件,然后 vi pfile文件,自己修改一下,把网上找的参数配置到里面!
2、进入 bdump目录,找到alert日志 【数据库每次启动加载,都会记录参数文件的配置参数】/oracle/app/admin/ecom/bdump
回到 $ORACLE_HOME/dbs ,手工vi pfile文件,把alert日志中的参数粘入
processes = 150
__shared_pool_size = 83886080
__large_pool_size = 4194304
__java_pool_size = 4194304
__streams_pool_size = 0
sga_target = 285212672
control_files = /oracle/app/oradata/ecom/control01.ctl, /oracle/app/oradata/ecom/control02.ctl, /oracle/app/oradata/ecom/control03.ctl
db_block_size = 8192
__db_cache_size = 188743680
compatible = 10.2.0.1.0
db_file_multiblock_read_count= 16
db_recovery_file_dest = /oracle/app/flash_recovery_area
db_recovery_file_dest_size= 2147483648
undo_management = AUTO
undo_tablespace = UNDOTBS1
remote_login_passwordfile= EXCLUSIVE
db_domain = ----------------------------------------------【删除不报错】
dispatchers = (PROTOCOL=TCP) (SERVICE=ecomXDB)----------------【删除不报错】
job_queue_processes = 10
background_dump_dest = /oracle/app/admin/ecom/bdump
user_dump_dest = /oracle/app/admin/ecom/udump
core_dump_dest = /oracle/app/admin/ecom/cdump
audit_file_dest = /oracle/app/admin/ecom/adump
db_name = ecom
open_cursors = 300
pga_aggregate_target = 94371840
会话1:
startup force; 【能启动不???】
ORA-01078:failure in processing system parameters
LRM-00116:syntax error at 'dispatchers' following '=' 【根据提示去pfile中查看】
startup force; 【正常了,现在当前使用的是pfile】
面试:人家会问pfile什么用???
新版本中10g以后,默认使用spfile,修改库相关参数: alter system set 参数=值
正常运行情况下,pfile是没啥大用。
但是数据库出问题了,不能进入数据库了,如何修改数据库的一些值呢?只能依靠pfile了
所以pfile的地位还是重要的
【实验三、spfile无意中修改错了、pfile不存在了】
会话1:
show parameter spfile;【spfile没有,默认使用pfile】
create spfile from pfile;
startup force;
alter system set processes=10;【ORA-02095: specified initialization parameter cannot be modified 不可动态修改】
原因:当前使用的是spfile,processes被动态加载了,正在被使用中,不让你去更新!!!
alter system set processes=10 scope=spfile;【processes被修改到spfile中,但当前的值没有修改,重启数据库后才能生效】
show parameter processes;【验证结果,当前有没有修改???】
会话2:
$ORACLE_HOME/dbs 删除pfile文件
会话1:
startup force; 【启动不了,上面把进程数据修改成10了,实例启动后只能加载10个进程!!!默认oracle启动的进程就会超过10个,所以启动不了】
会话2:strings spfile 【查看 processes 设置值】
问题???如何解决,修改 processes值就成了!!! 可是spfile二进制不能修改啊???这时pfile的作用又体现了!!!
解决:
回到 $ORACLE_HOME/dbs ,手工vi pfile文件,把alert日志中的参数粘入
processes = 150
__shared_pool_size = 79691776
__large_pool_size = 4194304
__java_pool_size = 4194304
__streams_pool_size = 0
sga_target = 285212672
control_files = /oracle/app/oradata/TEST/control01.ctl, /oracle/app/oradata/TEST/control02.ctl, /oracle/app/oradata/TEST/control03.ctl
db_block_size = 8192
__db_cache_size = 192937984
compatible = 10.2.0.1.0
db_file_multiblock_read_count= 16
db_recovery_file_dest = /oracle/app/flash_recovery_area
db_recovery_file_dest_size= 2147483648
undo_management = AUTO
undo_tablespace = UNDOTBS1
remote_login_passwordfile= EXCLUSIVE
db_domain = ----------------------------------------------【删除不报错】
dispatchers = (PROTOCOL=TCP) (SERVICE=TESTXDB) ---------------【删除不报错】
job_queue_processes = 10
background_dump_dest = /oracle/app/admin/TEST/bdump
user_dump_dest = /oracle/app/admin/TEST/udump
core_dump_dest = /oracle/app/admin/TEST/cdump
audit_file_dest = /oracle/app/admin/TEST/adump
db_name = TEST
open_cursors = 300
pga_aggregate_target = 94371840
会话1:
exit;
startup; 【还是报错啊???? 因为当前默认使用的是spfile,把spfile删除】
exit;
startup force;
总结:
spfile和pfile文件中修改的参数,还有很多,以后大家会学到更多!!!
好了, 这就是pfile和spfile的作用!!!