隨筆-28  評論-15  文章-81  trackbacks-0

                                          一、 數(shù)據(jù)庫的啟動(dòng)和關(guān)閉
          1、Oracle Server主要由兩部分組成:Instance和Database。Instance是指一組后臺進(jìn)程/線程和一塊共享內(nèi)存區(qū)域,
          而Database是指存儲在磁盤上的一組物理文件.

          2、Oracle數(shù)據(jù)庫的啟動(dòng)主要包含3個(gè)步驟:
             (1)啟動(dòng)數(shù)據(jù)庫到nomount(未加載)狀態(tài);      startup nomount
             (2)啟動(dòng)數(shù)據(jù)庫到mount(加載)狀態(tài);        alter database mount
             (3)啟動(dòng)數(shù)據(jù)庫到open(打開)狀態(tài);         alter database open

          3、啟動(dòng)的第一步,Oracle首先尋找參數(shù)文件(pfile/spfile),然后根據(jù)參數(shù)文件中的設(shè)置,創(chuàng)建實(shí)例,分配內(nèi)存,
               啟動(dòng)后臺進(jìn)程。

          4、Oracle首先spfile<sid>.ora文件作為啟動(dòng)參數(shù)文件;如果該文件不存在,則選擇spfile.ora,
               然后是init<sid>.ora文件。

          5、在SQL*PLUS中通過show parameter spfile命令來檢查數(shù)據(jù)庫是否使用了spfile文件。

          6、參數(shù)文件中,通常需要最少的參數(shù)是 db_name,設(shè)置了這個(gè)參數(shù)之后,數(shù)據(jù)庫實(shí)例就可以啟動(dòng)。

          7、查看參數(shù)文件缺省路徑:
                 show parameter dump_dest
                 show parameter control_files
                 show parameter db_name    //顯示實(shí)例名
                 show paramter compatible   //顯示兼容

          8、在使用RMAN(Recovery Manager)時(shí)存在更為特殊的情況,Oracle允許在不存在參數(shù)文件的情況下啟動(dòng)一個(gè)實(shí)例,
               數(shù)據(jù)庫的 db_name會被缺省命名為DUMMY

          9、LSNRCTL> status   //查看監(jiān)聽狀態(tài)
              LSNRCTL> start    //啟動(dòng)監(jiān)聽

          10、關(guān)閉數(shù)據(jù)庫 shutdown immediate  而非 shutdown, shutdown 會不正常關(guān)閉
              shutdown   正常關(guān)閉,等待所有的用戶斷開連接
              shutdown immediate  使用這個(gè)命令迫使每個(gè)用戶執(zhí)行完成當(dāng)前的SQL語句后立即斷開連接
              shutdown transactional  執(zhí)行Transaction關(guān)閉,迫使用戶在當(dāng)前執(zhí)行完成后斷開連接
              shutdown abort  終止實(shí)例,停止所有的操作。恢復(fù)破壞的文件,數(shù)據(jù)庫文件不能同其他數(shù)據(jù)庫文件保持一致

          11、啟動(dòng)數(shù)據(jù)庫到mount狀態(tài)
                  SQL>alter database mount;
                在mount數(shù)據(jù)庫過程中,Oracle需要找到控制文件并鎖定控制文件。如果控制文件全部丟失此時(shí)就會報(bào)出如下錯(cuò)誤:
                  ORA-00205:error in identifying controlfile,check alert log for more info

          12、啟動(dòng)數(shù)據(jù)庫open階段
                 SQL>alter database open;

          13、SCN (System Change Number) 系統(tǒng)改變號
              //獲取當(dāng)前SCN  select dbms_flashback.get_system_change_number from dual;

          14、查檢點(diǎn) (Checkpoint)  減少崩潰恢復(fù)(Crash Recovery)時(shí)間

                                              二、參數(shù)及參數(shù)文件

          1、初始化參數(shù)的分類,分為3類:推導(dǎo)參數(shù)、操作系統(tǒng)依賴參數(shù)和可變參數(shù)

          2、推導(dǎo)參數(shù)(Derived Parameters)
              推導(dǎo)參數(shù)通常來自于其他參數(shù)的運(yùn)算,依賴其他參數(shù)得出。所以這類參數(shù)通常不需要修改。如果強(qiáng)制修改,那么修改值會覆蓋推導(dǎo)值。
              常見的此類參數(shù)有很多,例如,SESSION參數(shù),在Oracle文檔中,該參數(shù)按以下公式運(yùn)算得出:
                                                 SESSION = (1.1*PROCESSES) + 5
                   缺省情況下,當(dāng)PROCESSES被修改時(shí),此參數(shù)會自動(dòng)計(jì)算并生效

          3、操作系統(tǒng)依賴參數(shù)
              某些參數(shù)的有效值或取值范圍依賴或者受限于操作系統(tǒng),如db_cache_size參數(shù),設(shè)置Oracle使用的內(nèi)存大小,該參數(shù)的最大值就要
              受限于物理內(nèi)存。這一類參數(shù)通常被稱為操作系統(tǒng)依賴參數(shù)。

          4.可變參數(shù)
              可變參數(shù)通常可以調(diào)整,有些設(shè)置的是限制條件,如OPEN_CURSORS;有的參數(shù)是設(shè)置容量,如DB_CACHE_SIZE等。這類參數(shù)通常可以
              為DBA或最終用戶調(diào)整,從而產(chǎn)生限制性能變化,對Oracle至關(guān)重要。

          5、初始化參數(shù)通常還有一些其他分類方式
               a.按照修改方式劃分,初始化參數(shù)又可以分為靜態(tài)參數(shù)和動(dòng)態(tài)參數(shù)。
                 靜態(tài)參數(shù)只能在參數(shù)文件中修改,在重新啟動(dòng)后方能生效;動(dòng)態(tài)參數(shù)可以動(dòng)態(tài)調(diào)整,調(diào)整后通常可以立即生效。
               b.按照獲取方式不同,初始化參數(shù)又可以分為顯示參數(shù)和隱式參數(shù)。
                 顯示參數(shù)可以通過v$parameter查詢得到;而隱含參數(shù)通常以“_”開關(guān),必須通過查詢系統(tǒng)表方能獲得這些參數(shù)。

          6、SPFILE的搜索順序
               重新啟動(dòng)數(shù)據(jù)庫,使用startup命令,Oracle將會按照以下順序在缺省目錄中搜索參數(shù)文件。
                (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
                創(chuàng)建了spfile,重新啟動(dòng)數(shù)據(jù)庫,Oracle會按順序搜索以上目錄,spfile就會自動(dòng)生效。

          7、警報(bào)日志文件
                控制警報(bào)日志文件位置的初始化參數(shù)是BACKGROUND_DUMP_DEST:
              SQL> show parameter background_dump_dest          
                其缺省文件名為alert_<sid>.log

                                              三、數(shù)據(jù)字典

          1、數(shù)據(jù)字典由4部分組成:內(nèi)部RDBMS(X$)表、數(shù)據(jù)字典表、動(dòng)態(tài)性能(V$)視圖和數(shù)據(jù)字典視圖

          2、數(shù)據(jù)字典表(Data Dictionary Table)用以存儲表、索引、約束以及其它數(shù)據(jù)庫結(jié)構(gòu)的信息。
              這些對象通常以"$"結(jié)尾(如tab$、obj$、ts$等)
             sql.bsq是非常重要的一個(gè)文件,其中包含了數(shù)據(jù)字典表的定義及注釋說明,該文件位于$ORACLE_HOME/rdbms/admin目錄下。

          3、動(dòng)態(tài)性能視圖(Dynamic Performance View) 記錄了數(shù)據(jù)庫運(yùn)行時(shí)信息和統(tǒng)計(jì)數(shù)據(jù)
              從Oracle 8開始,GV$視圖開始被引入,其含義為Global V$,除了一些特例外,每個(gè)V$視圖都有一個(gè)對應(yīng)的GV$視圖存在。

             注意,每個(gè)V$視圖都包含類似語句:
                where inst_id = USERENV('Instance')
                用于限制返回當(dāng)前實(shí)例信息

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

                                            四、內(nèi)存管理

          1、SGA 指系統(tǒng)全局區(qū)(System Global Area)
              一塊用于加載數(shù)據(jù)、對象并保存運(yùn)行狀態(tài)和數(shù)據(jù)庫控制信息的一塊內(nèi)存區(qū)域,在數(shù)據(jù)庫實(shí)例啟動(dòng)時(shí)分配,當(dāng)實(shí)例關(guān)閉時(shí)釋放,
              每個(gè)實(shí)例都擁有自己的SGA區(qū)

          2、數(shù)據(jù)緩沖區(qū) (Buffer Cache) 的大小由初始化參數(shù)db_cache_size (8i中是db_block_size*db_block_buffers)決定


          3、對于SGA各部分設(shè)置,可以從數(shù)據(jù)庫的視圖中查詢得到:
               select * from v$sga;
               show sga

          4、SGA總和受參數(shù)SGA_MAX_SIZE設(shè)置的影響
               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中的最重要和最復(fù)雜的兩個(gè)部分

          1、在Buffer Cache中,Oracle通過幾個(gè)鏈表進(jìn)行內(nèi)存管理,其中最為熟知的是LRU List和Dirty List(也經(jīng)常被稱為Write List,從8i開始,
              因?yàn)樗惴ǖ母淖儯脖环Q為Checkpoint Queue),各種List上存放的是指向具體Buffer的指針。

                                         六、重做(Redo)

          1、重做(Redo)和撤消(Undo)是Oracle的重要特性,用以保證事務(wù)的可恢復(fù)性和可撤消性。

          2、在數(shù)據(jù)庫中,Redo的功能主要通過3個(gè)組件來實(shí)現(xiàn):Redo Log Buffer、LGWR后臺進(jìn)程和Redo Log File(在歸檔模式下,
              Redo Log File最終會寫出為歸檔日志文件)

          3、日志文件的狀態(tài):CURRENT、ACTIVE、INACTIVE和UNUSED
              (1).CURRENT
                    指當(dāng)前的日志文件,該日志文件是活動(dòng)的,當(dāng)前正在被使用的,在進(jìn)行崩潰恢復(fù)時(shí),CURRENT的日志文件是必須的。
              (2).ACTIVE
                    指活動(dòng)的非當(dāng)前日志,該日志可以已經(jīng)完成歸檔也可能沒有歸檔,活動(dòng)的日志文件在Crash恢復(fù)時(shí)會被用到。
              (3).INACTIVE
                    指非活動(dòng)日志,該日志在實(shí)例恢復(fù)時(shí)不再需要,但是在介質(zhì)恢復(fù)時(shí)可能會用到。
                日志是否完成歸檔,可以根據(jù)V$LOG.ARCHIVED字段進(jìn)行判斷
                    select * from v$log;
              (4).UNUSED
                     指該日志從未被定入,這類日志可能是剛被添加到數(shù)據(jù)庫或者在RESETLOGS之后被重置。被使用之后,該狀態(tài)會被改變。

                                     七、等待事件

          1、通過查詢V$EVENT_NAME視圖
              select count(*) from v$evnet_name;

          2、等待事件可以分為空閑(idle)等待和非空閑(non-idle)等待事件
               .空閑事件指Oracle正等待某種工作,在診斷和優(yōu)化數(shù)據(jù)庫的時(shí)候,不用過多注意這部分事件。
               .非空閑等待事件專門針對Oracle的活動(dòng),指數(shù)據(jù)庫任務(wù)或應(yīng)用運(yùn)行過程中發(fā)生的等待,在調(diào)整數(shù)據(jù)庫的時(shí)候應(yīng)該關(guān)注與研究

          posted on 2010-12-20 10:07 譚明 閱讀(417) 評論(0)  編輯  收藏 所屬分類: Oracle DBA

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 石景山区| 西城区| 会东县| 米泉市| 古丈县| 神池县| 龙川县| 天祝| 鄂伦春自治旗| 乐至县| 循化| 柳江县| 湟中县| 桦川县| 白山市| 闵行区| 无极县| 武威市| 江陵县| 句容市| 明星| 岚皋县| 横峰县| 互助| 县级市| 乐安县| 玉树县| 武城县| 长武县| 漳浦县| 县级市| 社会| 莲花县| 惠东县| 独山县| 昔阳县| 藁城市| 开原市| 西乌珠穆沁旗| 博罗县| 东明县|