ORACLE主要配置檔案介紹

dbasdk發表於2014-07-30

profile檔案或者.bash_profile檔案(系統級環境變數檔案:/home/oracle);

oratab 檔案(oracle自執行檔案:/etc/oratab );

initSID.ora或者spfileSID.ora檔案(資料庫例項初始化檔案:$ORACLE_HOME/dbs/或者$ORACLE HOME\database);

listener.ora、sqlnet.ora檔案和tnsnames.ora 檔案(監聽配置檔案:$ORACLE_HOME/network/admin);

Alert.log檔案(資料庫警告日誌:$ORACLE_BASE/diag/rdbms/db_name/SID/trace);

一、 環境變數檔案 /etc/profile

       系統級的環境變數一般在/etc/profile 檔案中定義,如下所示:

               export ORACLE_BASE=/u01/app/oracle
               export ORACLE_HOME=$ORACLE_BASE/product/8.1.7
               export PATH=$PATH:$ORACLE_HOME/bin
               export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
               export ORACLE_SID=topicis
               export ORACLE_TERM=vt100
               export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
               export NLS_LANG=AMERICAN.ZHS16CGB231280

說明:

        1 配置上述環境變數要注意定義的先後順序 ,如 定義 ORACLE_HOME時用到了 ORACLE_BASE, 那 麼 ORACLE_HOME 的 定 義 應該 在ORACLE_BASE之後;

        2  在使用中文版時 環境變數 NLS_LANG 的值應該設定為AMERICAN.ZHS16CGB231280; 如上所示 在使用英文版時 可以不設定 NLS_LANG 即去掉 export NLS_LANG=... ... 那一行。也可以設定 NLS_LANG 的值為 AMERICAN_AMERICA.US7ASCII。

二、 資料庫自啟動檔案/etc/oratab 

         /etc/oratab 檔案描述目前系統中建立的資料庫例項 以及是否透過 dbstart 和dbshut 來控制該例項的啟動與關閉。如下所示 忽略以#開頭的註釋部分 :
             topicis:/u01/app/oracle/product/8.1.7:Y

       其中 topicis為例項 ID,  /u01/app/oracle/product/8.1.7為ORACLE_HOME目錄,  Y表示允許使用,  dbstart和 dbshut 啟動和關閉該例項資料庫 如果設定為N 表示不透過dbstart 和 dbshut 啟動和關閉例項資料庫topicis,系統要求在安裝完 ORACLE 後要求將該引數修改為 Y,以保證 ORACLE 資料庫自啟動和關閉;

三、 資料庫例項初始化引數檔案spfileSID.ora(或者spfile.ora 或者initSID.ora,可透過show parameter pfile進行查詢

     每個資料庫例項都有一個初始化引數檔案,其預設存放的路徑為$ORACLE_BASE/admin//pfile,其名稱為 init.ora。如 topicis例項對應 的引數檔案為 inittopicis.ora,預設存放路徑為$ORACLE_BASE/admin/topicis/pfile。

     在啟動的第一步,oracle首先尋找引數檔案,然後根據引數檔案中的設定,建立例項(Instance),分配記憶體,啟動後天程式。

     初始化引數檔案是一個包含例項配置引數的文字檔案,這些引數被設定為特定的值,用於初始化Oracle 例項的多數記憶體和程式設定。

     oracle首先spfileSID.ora檔案作為初始化引數檔案,其次分別選擇spfile.ora、initSID.ora。如果都不存在,將無法建立和啟動Instance。

     在引數檔案中,至少需要的引數是DB_NAME。

     以下是一些主要引數的說明:

     1 例項的資料庫名稱 db_name = "topicis"

      2 例項名稱  instance_name = topicis

      3 資料庫控制檔案的名稱和位置 (也可以透過show parameter control_files查詢)

              control_files = ("/u02/app/oracle/topicis/control01.ctl","/u02/app/oracle/topicis/control02.ctl","/u02/app/oracle/topicis/control03.ctl")
      

       4 排程作業佇列的 SNP 程式的數量以及 SNP 程式覺醒時間間隔 秒

              JOB_QUEUE_PROCESSES=2
              JOB_QUEUE_INTERVAL=60

      5 儲存追蹤和告警檔案的路徑(可以透過show parameter dump_dest查詢)

              user_dump_dest 指定記錄 Oracle 使用者程式產生的追蹤和告警資訊的檔案的存放路徑;
              background_dump_dest 指定記錄 Oracle 後臺程式產生的追蹤和告警資訊的檔案的存放路徑;
              core_dump_dest指定Oracle執行所產生的coredump 資訊的檔案的存放路徑。

              background_dump_dest = /u02/app/oracle/admin/topicis/bdump
              core_dump_dest = /u02/app/oracle/admin/topicis/cdump
              user_dump_dest = /u02/app/oracle/admin/topicis/udump

      6 UTL_FILE_DIR 引數

              UTL_FILE_DIR = *

              UTL_FILE_DIR 引數指定一個或多個目錄用於 Oracle 應用的檔案 I/O 如備份資料到檔案,將該值設定為 * 表示可供 Oracle 應用進行檔案 I/O操作的目錄為任意目錄 因此 只要空間允許 可以將備份資料存放到任意目錄下。

四、 監聽配置檔案

        為了使得外部程式,如topicis後臺程式,能夠訪問 Oracle 資料庫,必須配置 Oracle 網路伺服器環境,配置 Oracle 網路伺服器環境是透過配置 listener.ora sqlnet.ora 和tnsnames.ora 共三個檔案來進行的

        監聽配置檔案 listener.ora 的存放路徑為 $ORACLE_HOME/network/admin

        以下是一個示例

              LISTENER =                          #監聽器名稱
                 (DESCRIPTION_LIST =

                   (DESCRIPTION =

                     (ADDRESS_LIST =
                       (ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC))
                     )
                     (ADDRESS_LIST =
                       (ADDRESS =(PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
                     )
                   )

                   (DESCRIPTION =
                     (PROTOCOL_STACK =
                       (PRESENTATION = GIOP)
                       (SESSION = RAW)
                     )

                     (ADDRESS =
              (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 2481))
                     )
                )

SID_LIST_LISTENER =
###命名規則 SID_LIST_+上面定義的監聽器名稱,該段用於定義監聽器的服務 即為哪些資料庫例項提供監聽服務
(SID_LIST =
     (SID_DESC =
       (SID_NAME = PLSExtProc1)
       (ORACLE_HOME = /u01/app/oracle/product/8.1.7)
       (PROGRAM = extproc)
     )

     (SID_DESC =
       (GLOBAL_DBNAME = topicis)
       (ORACLE_HOME = /u01/app/oracle/product/8.1.7)
       (SID_NAME =topicis)
     )

     (SID_DESC =
       (GLOBAL_DBNAME = oid)
       (ORACLE_HOME = /u01/app/oracle/product/8.1.7)
       (SID_NAME = oid)
     )
)

1 listener.ora 檔案中定義一個監聽器 其預設的名稱為 LISTENER。這個監聽器預設以tcp/ip為協議地址且埠號為1521執行,在CAMS應用中監聽檔案定義的監聽器就使用這個預設名字,並且使用預設的協議tcp/ip和預設的埠號1521。 
待配置好監聽檔案以及隨後說明的 sqlnet.ora 和tnsnames.ora 檔案之後 就可以用以下命令將監聽檔案中定義的監聽器啟動起來: $ lsnrctl start

停止監聽器的命令為$ lsnrctl stop;監測監聽器當前狀態的命令為$ lsnrctl status。
當 lsnrctl status 命令有如下輸出結果:

     STATUS of the LISTENER
     ------------------------
     Alias                  LISTENER
     Version                 TNSLSNR for Linux: Version 8.1.7.4.0 - Production
     Start Date               17-JAN-2004 19:00:08
     Uptime                  31 days 15 hr. 27 min. 59 sec

就說明監聽器正在執行,否則說明監聽器已經停止了。

2 如(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))所示的一個IPC 協議地址的監聽 是為了外部程式呼叫用的 在資料庫安裝時自動設定不需要改動

3 在監聽檔案後部還有一個SID_LIST_LISTENER 段 該段用於定義監聽器的服務,即為哪些資料庫例項提供監聽服務 以 topicis例項為例,其對應的服務資訊為:

   (SID_DESC =
    (GLOBAL_DBNAME =topicis) #資料庫名
     (ORACLE_HOME = /u01/app/oracle/product/8.1.7)
    (SID_NAME =topicis) #資料庫例項名
)

五、 sqlnet.ora 檔案

              sqlnet.ora 檔案的存放路徑為$ORACLE_HOME/network/admin 以下是一個示例

NAMES.DEFAULT_DOMAIN = localdomain
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)

說明:
NAMES.DEFAULT_DOMAIN 指定網路域名;
NAMES.DIRECTORY_PATH指定當解析客戶端連線識別符號時命名方法;
naming metthods 採用的優先順
序從左至右遞減。

六、 tnsnames.ora 檔案

tnsnames.ora 檔案的存放路徑為 $ORACLE_HOME/network/admin。以下是一個示例:

OID.LOCALDOMAIN =
(DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT =1521))
     )
     (CONNECT_DATA =
       (SERVICE_NAME = oid)
     )
)
topicis.LOCALDOMAIN =
(DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT =1521))
     )
     (CONNECT_DATA =
       (SERVICE_NAME = topicis)
     )
)
INST1_HTTP.LOCALDOMAIN =
(DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT =1521))
     )
     (CONNECT_DATA =
       (SERVER = SHARED)
       (SERVICE_NAME = MODOSE)
       (PRESENTATION = )
     )
   )

EXTPROC_CONNECTION_DATA.LOCALDOMAIN =
   (DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
     )
     (CONNECT_DATA =
       (SID = PLSExtProc1)
       (PRESENTATION = RO)
     )
   )

 說明:
tnsnames.ora 檔案中定義一個或多個網路服務 net service,topicis例項對應的網路服務為

topicis.LOCALDOMAIN =
(DESCRIPTION =
   (ADDRESS_LIST =
    (ADDRESS =
      (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    )
   (CONNECT_DATA =
    (SERVICE_NAME =topicis)
   )
)

注意 這裡 ADDRESS項包含三個子引數 PROTOCOL HOST 和 PORT,要確保在監聽檔案中也有對應的一個 ADDRESS項也包含同樣的三個子引數,並且子引數的值對應都相等。另外 這裡 SERVICE_NAME的值必需確保與監聽檔案中某 SID_DESC項下的 SID_NAME引數的值相等。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-1242548/,如需轉載,請註明出處,否則將追究法律責任。

相關文章