oracle数据库_参数,跟踪文件--笔记

oracle数据库由两部分组成:数据库和实例。
数据库是指磁盘构成数据库的物理文件的集合。共有8种:参数文件(parameter file),跟踪文件(trace file),
警告文件(alert file),数据文件(data file),临时文件(temp file),控制文件(control file),重做日志文件(redo log file)
密码文件(password file)。
--------oracle 10G开始,又增加了两种新的可选文件类型。
    修改跟踪文件(change tracking file):它可以建立真正的增量备份,与数据库备份和恢复有关。
    闪回日志文件(flashback log file):这些文件存储数据库块的”前映像“,以便完成新增加的flashback database命运。
   
实例则是数据库运行所需内存结构及后台进程的集合。
以上文件,重要的是数据文件和重做日志文件。因为只要有着两个文件,就算其他文件没有了,也可以恢复出需要的数据。

但这里主要讲:
    参数文件。
    跟踪文件。
    控制文件。
    重做日志文件。
    数据文件。

-----------参数文件。
    参数文件的作用?
    参数文件的存储位置?
    如何查看参数文件?
    如何设置参数文件?该如何设置才是最优?
    如何修复参数文件-(spfile)?

    参数文件的作用(以下是教材的原话)
    oracle的参数文件定义了许多数据库启动时需要使用的重要参数。数据库启动时首先读取参数文件,
    根据各参数值,分配各个内存区的大小,配置后台进程,定位在数据库运行时各种文件。
    修改参数文件可以调优数据库运行状态。
    
    oracle参数文件有两种:
    pfile与spfile
    pfile文件是文本文件,名称:init<ORACLE_SID>.ora, 9I之前的产物,可用记事本,vim编辑。(oracle_sid是变量值)
    spfile文件是二进制文件,名称:spfile<ORACLE_SID>.ora, 用oracle命令才能修改其参数。
    oracle数据库会优先使用spfile文件。
    

    ------------若想查看当前数据库使用了哪些参数文件,你可以试一试:
    -----show parameter spfiel  (system级用户下)
    
    参数文件存储的位置?
    无论在window还是Unux下,都可以用这样的命令查询:
    ------show parameter spfiel
    或-
    ---select name,value from v$parameter where name='spfile';

    
    如果我的参数文件突然损坏了,该如何修复呢?
    --pfile损坏,用spfile修复pfile
    create pfile from spfile;
    --spfile损坏,用pfile修复spfile
    create spfile from pfile;
    
    若是spfile文件和pfile一起损坏,那也没事,也能通过命令修复。
    Unix上:
    [oracle@yzh ~]$ cd $ORACLE_HOME/dbs
    [oracle@yzh dbs]$ strings spfile$ORACLE_SID.ora
    myoracle.__db_cache_size=167772160
    myoracle.__java_pool_size=4194304
    myoracle.__large_pool_size=4194304
    myoracle.__oracle_base='/home/app/oracle'#ORACLE_BASE set from environment
    
    window上:
    用写字板打开spfile文件,把里面的内容粘贴到spfile<oracle_sid>.ora中即可。



    如何查询参数文件中的内容呢?参数文件中定义了哪些参数呢?
    两个数据字典视图记录着参数文件的参数。
    
    ---v$parameter      记录着当前会话中生效的参数值
    ---v$system_parameter      记录整个实例生效的参数值。

    ----查询语句;
    select name,value from v$parameter where name like '列名';    
    或------
    show parameter sort_area_size -----show parameter 命令会自动在参数名称添加%通配符。
    上面的命令等价于
    show paremeter %sort_area_size%    -----匹配中间有sort_area_size字符串的行。

    如何设置修改参数文件呢?
    两种命令,作用也不同。
    alter session --   可以修改部分参数,作用当前会话。
    --v$parameter中的isses_modifiable列如果为true,则可用alter session修改    

    alter system --   可以修改所有参数,作用整个实例。
    --v$parameter中的issys_modifiable列如果为false,immediate,deferred,
    则可用alter system修改,添加选项子句,可以指定生效时间。    
    
    v$parameter中的isses_modifiable列选项子句有:false,immediate,deferred.
        false: 
            执行alter system命令时,需加上 scope=spfile。修改后的值,重启数据库之后生效。
            例:SQL> alter system set sort_area_size=655555 scope=spfile;
    
        innediate:
            执行alter system命令时,不加选项(等于加 scope=both),会修改当前参数值,会修改spfile文件,且    
            重启oracle后生效。
            执行alter system命令时,添加scope=memory,只修改当前运行值。
            执行alter system命令时,添加scope=spfile,只修改spfiel,重启后生效。
        
        deferred:
            需要添加deferred和scope=spfile。
            执行alter system时,添加deferred,修改的值在下一个会话生效,值会存入spfile,重启之后也会生效。    
            执行alter system时,添加scope=spfile,修改的值只会在重启之后生效。


-----------跟踪文件。
    
    以下内容包括:
    跟踪文件的作用。    
    跟踪文件存储在哪?
    ADR错误诊断文件有哪些?存放在哪?
    
    
    跟踪文件的作用:
    跟踪文件可以提供调试信息,诊断信息,运行状态信息。服务器遇到错误时,会生产大量的跟踪文件,里面记录着诊断信息。
    
    跟踪文件存储在哪?
    oracle 11G之后,引入了自动诊断资料档案的概念,ADR(Automatic Diagnostic Repository),管理这些跟踪文件。
    --可以通过v$diag_info视图查个究竟。
    例:select name,value from v$diag_info;
    
    一般的,ADR文件存放的位置由Diagnostic_dest参数设定。
    ----oracle 若设置了oracle_base变量,则存放位置为$ORACLE_BASE;
    ----若oracle没有设置oracle_base变量,则存放为$ORACLE_HOMR/log;
    例:(我的oracle设置了ORACLE_BASE变量)
    SQL>show parameter diagno

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    diagnostic_dest                      string      /home/app/oracle

    
    
    ADR中的另外文件有?
    SQL> show parameter dump_dest

    NAME                                     TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    background_dump_dest                 string      /home/app/oracle/diag/rdbms/orcl/myoracle/trace
                                                             
    core_dump_dest                       string      /home/app/oracle/diag/rdbms/orcl/myoracle/cdump
                                                         
    user_dump_dest                       string      /home/app/oracle/diag/rdbms/orcl/myoracle/trace
                                                         

    前台和后台进程跟踪文件:前,后台进程产生的跟踪信息,存储于 $ORACLE_BASE/diag/rdbms/orcl/$ORACLE_SID/trace
    警告文件:(最常用到的跟踪文件)文本形式的警告文件,存储于$ORACLE_BASE/diag/rdbms/orcl/$ORACLE_SID/trace
    核心转储文件:存储于$ORACLE_BASE/diag/rdbms/orcl/$ORACLE_SID/cdump
    意外事件转储文件:存储于$ORACLE_BASE/diag/rdbms/orcl/$ORACLE_SID/incident/incdit_n

    跟踪文件于转储文件的区别:
    跟踪文件是较为连续的输出,而转储是响应事件而进行一次性输出,核心是特定端口的二进制内存存储。(不理解。)

    最常用的跟踪文件--警告文件!
    警告文件(alert file):是数据库整个生命周期的记录,包括每次启动及关闭时间,启动过程,日志切换,
               创建表空间操作,各种错误发生时间与错误原因等信息。
  
      ---说到这里,应该说说,oracle 11G引进的一个专门管理alert,trace,dump文件的工具--adrci工具。
    ---adrci工具的参数文件由--homepath定义。
    ---这个工具可以快速查询错误相关的所有trace文件,并将这些文件打包到一个zip文件,
        以便将问题相关的信息提供给Oracle的技术支持。(便利呀!)

    以Linux为例,简单说说adrci工具的使用。
    [oracle@yzh ~]$ adrci
    ADRCI: Release 11.2.0.1.0 - Production on Sun Oct 19 06:20:28 2014
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    ADR base = "/home/app/oracle"
    ----进入adrci命令操作界面。(我Linux的$PATH变量设置好了adrci二进制文件的路径。)
    ----adrci命令行是严格区分大小写。
    
    adrci> help
     HELP [topic]
      Available Topics:
         CREATE REPORT
           ECHO
            EXIT
            HELP
            HOST
            IPS
            PURGE
            RUN
            SET BASE
            SET BROWSER
            SET CONTROL
            SET ECHO
            SET EDITOR
            SET HOMES | HOME | HOMEPATH
            SET TERMOUT
            SHOW ALERT
            SHOW BASE
            SHOW CONTROL
            SHOW HM_RUN
            SHOW HOMES | HOME | HOMEPATH
            SHOW INCDIR
            SHOW INCIDENT
            SHOW PROBLEM
            SHOW REPORT
            SHOW TRACEFILE
            SPOOL
     There are other commands intended to be used directly by Oracle, type
     "HELP EXTENDED" to see the list
    ---help命令列出adrci的命令用法。

    --如我想知道,某个警告文件的存储位置:(通过选项可以所需的警告文件。)
    adrci> SHOW alert
    Choose the alert log from the following homes to view:
    1: diag/rdbms/orcl/myoracle
    2: diag/tnslsnr/yzh/listener
    Q: to quit
    Please select option:

    当前会话跟踪文件(default trace file):
    为了诊断数据库问题,有时需要导出数据块内容和某写文件内容,导入当前的用户的跟踪文件中,(即转储文件中)。
    当前会话跟踪文件的命名规律:<oracle_sid>_ora_<process_id>.trc
  

      --举例来说明。(以教材为例)
    ----重建控制文件,生成了转储文件:
    SQL> alter database backup controlfile to trace;
    -----通过v$diag_info定位转储文件位置。
    SQL> select name,value from v$diag_info where name='Default Trace File';
    ----若没有权限查看v$diag_info呢?怎样得到当前会话跟踪文件的位置呢?
    ---通过tracefile_identifier给转储文件加个“标志”。
    SQL> alter session set tracefile_identifier='mytrace';     -----给转储文件命名里添加上“mytrace”
    ---查询
    SQL> !ls /home/app/oracle/diag/rdbms/orcl/myoracle/trace/*mytrace*
    ls: 无法访问/home/app/oracle/diag/rdbms/orcl/myoracle/trace/*mytrace*: 没有那个文件或目录

    
  


posted @ 2015-01-16 12:40  豆腐不怕卤水的经历  阅读(386)  评论(0编辑  收藏  举报