• day06_ 客户端、参数文件故障,pfile,spfile


    ----------------------------------安装客户端--------------------------------------

    讲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的作用!!!





  • 相关阅读:
    MyEclipse10破解后续~~~~破解不成功
    Java分为三个体系JavaSE,JavaEE,JavaME 它们的区别以及java的各个版本?
    评分模型的检验方法和标准&信用评分及实现
    单点登录原理与简单实现
    MongoDB 3.2 从安装到使用。
    MongoDB笔记1:Windows下安装MongoDB
    MongoDB笔记2: MongoDB开启用户名密码验证
    MongoDB 官方C#驱动 封装 DbHelper
    五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
    常用验证 正则表达式
  • 原文地址:https://www.cnblogs.com/xiaoxiao5ya/p/c86ed662c0dbd104c205b4e2bad0833a.html
Copyright © 2020-2023  润新知