Oracle DBA 个人笔记

来源:互联网 发布:网络位置类型怎么设置 编辑:程序博客网 时间:2024/04/30 15:44

 一、 数据库的启动和关闭
1、Oracle Server主要由两部分组成:Instance和Database。Instance是指一组后台进程/线程和一块共享内存区域,
而Database是指存储在磁盘上的一组物理文件.

2、Oracle数据库的启动主要包含3个步骤:
   (1)启动数据库到nomount(未加载)状态;      startup nomount
   (2)启动数据库到mount(加载)状态;        alter database mount
   (3)启动数据库到open(打开)状态;         alter database open

3、启动的第一步,Oracle首先寻找参数文件(pfile/spfile),然后根据参数文件中的设置,创建实例,分配内存,
     启动后台进程。

4、Oracle首先spfile<sid>.ora文件作为启动参数文件;如果该文件不存在,则选择spfile.ora,
     然后是init<sid>.ora文件。

5、在SQL*PLUS中通过show parameter spfile命令来检查数据库是否使用了spfile文件。

6、参数文件中,通常需要最少的参数是 db_name,设置了这个参数之后,数据库实例就可以启动。

7、查看参数文件缺省路径:
       show parameter dump_dest
       show parameter control_files
       show parameter db_name    //显示实例名
       show paramter compatible   //显示兼容

8、在使用RMAN(Recovery Manager)时存在更为特殊的情况,Oracle允许在不存在参数文件的情况下启动一个实例,
     数据库的 db_name会被缺省命名为DUMMY

9、LSNRCTL> status   //查看监听状态
    LSNRCTL> start    //启动监听

10、关闭数据库 shutdown immediate  而非 shutdown, shutdown 会不正常关闭
    shutdown   正常关闭,等待所有的用户断开连接
    shutdown immediate  使用这个命令迫使每个用户执行完成当前的SQL语句后立即断开连接
    shutdown transactional  执行Transaction关闭,迫使用户在当前执行完成后断开连接
    shutdown abort  终止实例,停止所有的操作。恢复破坏的文件,数据库文件不能同其他数据库文件保持一致

11、启动数据库到mount状态
        SQL>alter database mount;
      在mount数据库过程中,Oracle需要找到控制文件并锁定控制文件。如果控制文件全部丢失此时就会报出如下错误:
        ORA-00205:error in identifying controlfile,check alert log for more info

12、启动数据库open阶段
       SQL>alter database open;

13、SCN (System Change Number) 系统改变号
    //获取当前SCN  select dbms_flashback.get_system_change_number from dual;

14、查检点 (Checkpoint)  减少崩溃恢复(Crash Recovery)时间

                                    二、参数及参数文件

1、初始化参数的分类,分为3类:推导参数、操作系统依赖参数和可变参数

2、推导参数(Derived Parameters)
    推导参数通常来自于其他参数的运算,依赖其他参数得出。所以这类参数通常不需要修改。如果强制修改,那么修改值会覆盖推导值。
    常见的此类参数有很多,例如,SESSION参数,在Oracle文档中,该参数按以下公式运算得出:
                                       SESSION = (1.1*PROCESSES) + 5
         缺省情况下,当PROCESSES被修改时,此参数会自动计算并生效

3、操作系统依赖参数
    某些参数的有效值或取值范围依赖或者受限于操作系统,如db_cache_size参数,设置Oracle使用的内存大小,该参数的最大值就要
    受限于物理内存。这一类参数通常被称为操作系统依赖参数。

4.可变参数
    可变参数通常可以调整,有些设置的是限制条件,如OPEN_CURSORS;有的参数是设置容量,如DB_CACHE_SIZE等。这类参数通常可以
    为DBA或最终用户调整,从而产生限制性能变化,对Oracle至关重要。

5、初始化参数通常还有一些其他分类方式
     a.按照修改方式划分,初始化参数又可以分为静态参数和动态参数。
       静态参数只能在参数文件中修改,在重新启动后方能生效;动态参数可以动态调整,调整后通常可以立即生效。
     b.按照获取方式不同,初始化参数又可以分为显示参数和隐式参数。
       显示参数可以通过v$parameter查询得到;而隐含参数通常以“_”开关,必须通过查询系统表方能获得这些参数。

6、SPFILE的搜索顺序
     重新启动数据库,使用startup命令,Oracle将会按照以下顺序在缺省目录中搜索参数文件。
      (1) spfile<ORACLE_SID>.ora,其缺省目录如下:
            UNIX: $ORACLE_HOME/dbs/
            NT: %ORACLE_HOME%\database
      (2) spfile.ora,其缺省目录如下:
            UNIX: $ORACLE_HOME/dbs/
            NT: %ORACLE_HOME%\database
      (3) init<ORACLE_SID>.ora, 其缺省目录如:
            UNIX: $ORACLE_HOME/dbs/
            NT: %ORACLE_HOME%\database
      创建了spfile,重新启动数据库,Oracle会按顺序搜索以上目录,spfile就会自动生效。

7、警报日志文件
      控制警报日志文件位置的初始化参数是BACKGROUND_DUMP_DEST:
    SQL> show parameter background_dump_dest           
      其缺省文件名为alert_<sid>.log

                                    三、数据字典

1、数据字典由4部分组成:内部RDBMS(X$)表、数据字典表、动态性能(V$)视图和数据字典视图

2、数据字典表(Data Dictionary Table)用以存储表、索引、约束以及其它数据库结构的信息。
    这些对象通常以"$"结尾(如tab$、obj$、ts$等)
   sql.bsq是非常重要的一个文件,其中包含了数据字典表的定义及注释说明,该文件位于$ORACLE_HOME/rdbms/admin目录下。

3、动态性能视图(Dynamic Performance View) 记录了数据库运行时信息和统计数据
    从Oracle 8开始,GV$视图开始被引入,其含义为Global V$,除了一些特例外,每个V$视图都有一个对应的GV$视图存在。

   注意,每个V$视图都包含类似语句:
      where inst_id = USERENV('Instance')
      用于限制返回当前实例信息

4、Oracle的X$表信息可以从v$fixed_table中查到:
    SQL> select count(*) from v$fixed_table where name like 'X$%';

                                  四、内存管理

1、SGA 指系统全局区(System Global Area)
    一块用于加载数据、对象并保存运行状态和数据库控制信息的一块内存区域,在数据库实例启动时分配,当实例关闭时释放,
    每个实例都拥有自己的SGA区

2、数据缓冲区 (Buffer Cache) 的大小由初始化参数db_cache_size (8i中是db_block_size*db_block_buffers)决定


3、对于SGA各部分设置,可以从数据库的视图中查询得到:
     select * from v$sga;
     show sga

4、SGA总和受参数SGA_MAX_SIZE设置的影响
     show parameter sga_max_size
    Variable Size 包括 shared_pool_size、java_pool_size和large_pool_size部分

                                五、Buffer Cache 与 Shared Pool 原理
   Buffer Cache 与 Shared Pool是SGA中的最重要和最复杂的两个部分

1、在Buffer Cache中,Oracle通过几个链表进行内存管理,其中最为熟知的是LRU List和Dirty List(也经常被称为Write List,从8i开始,
    因为算法的改变,也被称为Checkpoint Queue),各种List上存放的是指向具体Buffer的指针。

                               六、重做(Redo)

1、重做(Redo)和撤消(Undo)是Oracle的重要特性,用以保证事务的可恢复性和可撤消性。

2、在数据库中,Redo的功能主要通过3个组件来实现:Redo Log Buffer、LGWR后台进程和Redo Log File(在归档模式下,
    Redo Log File最终会写出为归档日志文件)

3、日志文件的状态:CURRENT、ACTIVE、INACTIVE和UNUSED
    (1).CURRENT
          指当前的日志文件,该日志文件是活动的,当前正在被使用的,在进行崩溃恢复时,CURRENT的日志文件是必须的。
    (2).ACTIVE
          指活动的非当前日志,该日志可以已经完成归档也可能没有归档,活动的日志文件在Crash恢复时会被用到。
    (3).INACTIVE
          指非活动日志,该日志在实例恢复时不再需要,但是在介质恢复时可能会用到。
      日志是否完成归档,可以根据V$LOG.ARCHIVED字段进行判断
          select * from v$log;
    (4).UNUSED
           指该日志从未被定入,这类日志可能是刚被添加到数据库或者在RESETLOGS之后被重置。被使用之后,该状态会被改变。

                           七、等待事件

1、通过查询V$EVENT_NAME视图
    select count(*) from v$evnet_name;

2、等待事件可以分为空闲(idle)等待和非空闲(non-idle)等待事件
     .空闲事件指Oracle正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件。
     .非空闲等待事件专门针对Oracle的活动,指数据库任务或应用运行过程中发生的等待,在调整数据库的时候应该关注与研究