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

                                          一、 數據庫的啟動和關閉
          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的活動,指數據庫任務或應用運行過程中發生的等待,在調整數據庫的時候應該關注與研究

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

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


          網站導航:
           
          主站蜘蛛池模板: 塔城市| 方正县| 张家界市| 张家港市| 拉孜县| 台北县| 青铜峡市| 平罗县| 武定县| 中方县| 吉林省| 张掖市| 青铜峡市| 东乡县| 克拉玛依市| 秦皇岛市| 罗田县| 沙雅县| 孝义市| 广东省| 玉田县| 德安县| 泽库县| 邯郸市| 永安市| 松潘县| 盐源县| 思南县| 彰化市| 微博| 资溪县| 宜都市| 两当县| 安西县| 淳化县| 桂阳县| 开化县| 酉阳| 罗甸县| 寿光市| 黄大仙区|