Linux 系統配置檔案詳細解讀

llmarinen發表於2013-09-03
什麼是系統配置檔案?
  
  核心本身也可以看成是一個“程式”。為什麼核心需要配置檔案?核心需要了解系統中使用者和組的 列表,進而管理檔案許可權(即根據許可權判定特定使用者(UNIX_USERS)是否可以開啟某個檔案)。注意,這些檔案不是明確地由程式讀取的,而是由系統庫 所提供的一個函式讀取,並被核心使用。例如,程式需要某個使用者的(加密過的)密碼時不應該開啟 /etc/passwd 檔案。相反,程式應該呼叫系統庫的 getpw() 函式。這種函式也被稱為系統呼叫。開啟 /etc/passwd 檔案和之後查詢那個被請求的使用者的密碼都是由核心(通過系統庫)決定的。
  
  除非另行指定,Red Hat Linux 系統中大多數配置檔案都在 /etc 目錄中。配置檔案可以大致分為下面幾類:
  
  訪問檔案
  
  /etc/host.conf 告訴網路域名伺服器如何查詢主機名。(通常是 /etc/hosts,然後就是名稱伺服器;可通過 netconf 對其進行更改)
  
  /etc/hosts 包含(本地網路中)已知主機的一個列表。如果系統的 IP 不是動態生成,就可以使用它。對於簡單的主機名解析(點分表示法),在請求 DNS 或 NIS 網路名稱伺服器之前,/etc/hosts.conf 通常會告訴解析程式先檢視這裡。
  
  /etc/hosts.allow 請參閱 hosts_access 的聯機幫助頁。至少由 tcpd 讀取。
  
  /etc/hosts.deny 請參閱 hosts_access 的聯機幫助頁。至少由 tcpd 讀取。
  
  引導和登入/登出
  
   /etc/issue & /etc/issue.net 這些檔案由 mingetty(和類似的程式)讀取,用來向從終端(issue)或通過 telnet 會話(issue.net)連線的使用者顯示一個“welcome”字串。 它們包括幾行宣告 Red Hat 版本號、名稱和核心 ID 的資訊。它們由 rc.local 使用。
  
  /etc/redhat-release 包括一行宣告 Red Hat 版本號和名稱的資訊。由 rc.local 使用。
  
  /etc/rc.d/rc 通常在所有執行級別執行,級別作為引數傳送。 例如,要以圖形(Graphics)模式(X-Server)引導機器,請在命令列執行下面的命令:init 5。執行級別 5 表示以圖形模式引導系統。
  
  /etc/rc.d/rc.local 非正式的。可以從 rc、rc.sysinit 或 /etc/inittab 呼叫。
  
  /etc/rc.d/rc.sysinit 通常是所有執行級別的第一個指令碼。
  
   /etc/rc.d/rc/rcX.d 從 rc 執行的指令碼(X 表示 1 到 5 之間的任意數字)。這些目錄是特定“執行級別”的目錄。 當系統啟動時,它會識別要啟動的執行級別,然後呼叫該執行級別的特定目錄中存在的所有啟動指令碼。例如,系統啟動時通常會在引導訊息之後顯示 “entering run-level 3”的訊息;這意味著 /etc/rc.d/rc3.d/ 目錄中的所有初始化指令碼都將被呼叫。  vnc server配置
1。使用root使用者啟動系統的vncserver服務;
#service vncserver start
2。然後切換到登陸使用者下面,我這裡假設要使用oracle系統帳戶進行遠端登陸
#su - oracle
3。使用oracle使用者輸入以下命令:
\$vncserver
如果是第一次執行,則系統會出現提示資訊,提示你輸入密碼,這是通過終端進行登陸時需要輸入的;
另外,還有一個數字資訊,這個也是需要在終端登陸時輸入的,即冒號後面跟著的一個數字,如:1  ,:2等等,需要記住;
4。在windows客戶端使用vncviewer,輸入如下:xxx.xxx.xxx.xxx:1 或者xxx.xxx.xxx.xxx:2等,後面的數字需要和伺服器端的對應才行;xxx是你伺服器的ip地址了;
[linux as 5]
 軟體要求
其他所需程式包的版本(或更高版本):
        gcc-2.96-124
        make-3.79
        binutils-2.11
        openmotif-2.1.30-11
        glibc-2.2.4-31
要檢視系統上安裝了這些程式包的哪些版本,執行以下命令:
rpm -q gcc make binutils openmotif glibc setarch
p4198954_21_linux.zip 在執行 runInstaller 之前打.
rpm -ivh compat-oracle-rhel4-1.0-5.i386.rpm     (p4198954_21_linux.zip)
 (不打PATH也可以)
安裝 libaio-0.3.102-1.i386.rpm 和libaio-devel0.3.102-1.i386.rpm
  在Red Hat Enterprise Linux 介質的第三張 CD
  以 root 使用者身份執行以下命令:
rpm -ivh /mnt/cdrom/RedHat/RPMS/ libaio-0.3.102-1.i386.rpm

建立資料庫安裝的準備工作:
1,建立user/group;
groupadd dba
groupadd oinstall
useradd oracle -g oinstall -G dba
passwd oracle
如果nobody使用者不存在(id nobody命令檢視),則建立:
useradd nobody
2,建立oracle安裝資料夾(sample);
mkdir -p /opt/oracle/10.2.0.1 /opt/oracle/oradata /opt/oracle/archivelog
chown -R oracle.oinstall  /opt/oracle
chmod 755 -R /opt/oracle
2, 配置環境變數;
要使用 Oracle 產品,應該或必須設定幾個環境變數。
如果您在同一伺服器上安裝了多個 Oracle 產品或資料庫,則 ORACLE_HOME、ORACLE_SID 和 PATH 變數可能會更改。
ORACLE_BASE 變數不應更改,並可以在需要時在您的登入配置檔案中設定它。Oracle 提供了一個稱作 oraenv 的實用程式來設定其他變數。
對於資料庫伺服器,建議設定以下環境變數:
使用root使用者:
 
vi /home/oracle/.bash_profile
以下是配置檔案的內容
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/10.2.0.1
ORACLE_SID=ge01
PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH     
TNS_ADMIN=\$ORACLE_HOME/network/admin
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID  TNS_ADMIN NLS_LANG LANG
   
4, 設定系統引數;
 Oracle 資料庫 10g 需要以下所示的核心引數設定。
 一般情況下可以設定最大共享記憶體為實體記憶體的一半,如果實體記憶體是 2G,則可以設定最大共享記憶體為 1073741824,
如上;如實體記憶體是 1G,則可以設定最大共享記憶體為 512 * 1024 * 1024 = 536870912;以此類推。在redhat上最大共享記憶體不建議超過
  4*1024*1024*1024-1=4294967295
切換到root使用者:
su root
 修改vi /etc/sysctl.conf, 新增:
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
修改後執行"/sbin/sysctl -p"命令使得核心改變立即生效;
B) 設定oracle對檔案的要求:
編輯檔案:vi /etc/security/limits.conf 加入以下語句:
oracle           soft    nproc           2047
oracle           hard    nproc           16384
oracle           soft    nofile          1024
oracle           hard    nofile          65536
編輯檔案:vi /etc/pam.d/login 加入以下語句(可能應該加在最後一條規則之前):session    required     /lib/security/pam_limits.so設定oraInst.loc檔案:
[root@enterprice64 ~]#vi /etc/oraInst.loc 
inventory_loc=/opt/oracle/oraInventory
inst_group=oinstall
[root@enterprice64 ~]#chown oracle.oinstall /etc/oraInst.loc
確保/etc/oraInst.loc中包含上面的資訊,且Oracle包含訪問許可權。
5.解壓縮Oracle10G的安裝檔案 :
 使用Oracle使用者登陸:
su - oracle
在/home/oracle 上傳和解壓縮10201_database_linux32.zip:
unzip 10201_database_linux32
6.開始安裝oracle
L i n u x 命令列環境下安裝(也可以在圖形介面下安裝)
使用Oracle使用者登陸:
su - oracle
根據希望安裝的資料庫版本型別選擇Silent安裝模式的response_file檔案的類似,比如:enterprise.rsp、standard.rsp還是custom.rsp。
這裡選擇enterpise.rsp型別,安裝盤中的database/response目錄下對應的response檔案拷貝出來,根據檔案裡面的提示對輸入值進行修改。
比如這個例子中對如下的引數進行設定:
UNIX_GROUP_NAME="oinstall"
FROM_LOCATION="/home/oracle/database/stage/products.xml"
ORACLE_BASE="/opt/oracle"
ORACLE_HOME="/opt/oracle/10.2.0.1"
ORACLE_HOME_NAME="OraDbHome1"
SHOW_INSTALL_PROGRESS_PAGE= true
SHOW_END_OF_INSTALL_MSGS= true
COMPONENT_LANGUAGES={"zh_CN"}
s_nameForDBAGrp= "dba"
s_nameForOPERGrp="dba"
INSTALL_TYPE="EE"
n_configurationOption=3
RESTART_SYSTEM=false
RESTART_REMOTE_SYSTEM=false
注意,所有的字串需要放在雙引號中,注意大小寫。數字和布林變數直接寫就可以。
由於這裡沒有選擇建立資料庫而只安裝軟體,因此沒有設定資料庫相關的配置引數。
[oracle@enterprice64 data]\$ chmod 700 enterprise.rsp
面可以開始SILENT安裝了:
注意,響應檔案需要使用絕對路徑。
cd /home/oracle/database
[oracle@enterprice64 database]\$ ./runInstaller -silent -responseFile /home/oracle/enterprise.rsp
用root執行如下指令碼:
/opt/oracle/10.2.0.1/oraInventory/orainstRoot.sh
/opt/oracle/10.2.0.1/root.sh
不過這裡Oracle存在一個bug,在root.sh指令碼中,自動將OUI_SILENT引數設定為TRUE,而後的檢查中,
如果發現這個值為TRUE,那麼這個指令碼執行會自動退出了。這裡需要手工將其修改為false,
最後使用root執行一下\$ORACLE_HOME/root.sh指令碼就可以了。
根據提示按 Enter 就可以了。
這樣就在字元下成功安裝了。
通過SILENT模式安裝資料庫之後,下面繼續使用SILENT模式進行資料庫的建立,
仍然是拷貝安裝目錄下的/home/oracle/database/response/dbca.rsp到安裝目錄,並進行編譯,
根據資料庫建立方式的不同編輯不同的資料庫庫選項。
比如在本次安裝過程中設定了下列引數:
RESPONSEFILE_VERSION = "10.0.0"
OPERATION_TYPE = "createDatabase"
GDBNAME = "ge01"
SID = "ge01"
TEMPLATENAME = "New_Database.dbt"
SYSPASSWORD = "georacle"
SYSTEMPASSWORD = "georacle"
DATAFILEDESTINATION ="/opt/oracle/oradata/"
RECOVERYAREADESTINATION="/opt/oracle/flash_recovery_area"
STORAGETYPE=FS
CHARACTERSET = "ZHS16GBK"
MEMORYPERCENTAGE = "40"
SCRIPTDESTINATION ="/opt/oracle/admin/ora10g/scripts"
EMCONFIGURATION=”LOCAL”
SYSMANPASSWORD = "georacle"
DBSNMPPASSWORD = "georacle"
其中最後1項不是必須的,這個的目的是在建立資料庫的同時生成指令碼。
下面就可以開始SILENT模式的資料庫建立了:
[oracle@enterprice64 database]\$ dbca -silent -responseFile /home/oracle/dbca.rsp
用root執行如下指令碼:
/opt/oracle/10.2.0.1/oraInventory/orainstRoot.sh
最後可以利用netca來SILENT方式設定網路部分,同樣的方法設定netca.rsp:
RESPONSEFILE_VERSION="11.1"
CREATE_TYPE= "CUSTOM"
SHOW_GUI=false
LOG_FILE=""/opt/oracle/10.2.0.1/network/tools/log/netca.log""
INSTALLED_COMPONENTS={"server","net8","javavm"}
INSTALL_TYPE=""typical""
LISTENER_NUMBER=1
LISTENER_NAMES={"LISTENER"}
LISTENER_PROTOCOLS={"TCP;1521"}
LISTENER_START=""LISTENER""
NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}
設定的引數包括上面的部分,然後就可以使用netca啟動silent配置:
[oracle@enterprice64 database]\$ netca /silent /responsefile  /home/oracle/netca.rsp
----------------------------------------------------------------靜默解除安裝Oracle資料庫ge01
dbca -silent -deleteDatabase -sourceDB    [-sysDBAUserName     -sysDBAPassword ]
例如:dbca -silent -deleteDatabase -sourceDB ge01 -sysDBAUserName sys -sysDBAPassword georacle
<source>
靜默解除安裝Oracle資料庫軟體
 
執行以下命令靜默解除安裝Oracle資料庫軟體
\$./runInstaller -silent -deinstall -removeallfiles -removeAllPatches "REMOVE_HOMES={\$ORACLE_HOME}" -responseFile ~/enterprise.rsp
---------------------------------------------------------------------------------------(一)圖形介面開始安裝:
1.以oracle使用者登入X-WINDOWS系統,進行Oracle的安裝(遠端安裝需開啟XDM):
[ linux 5}
export DISPLAY=
cd /opt/database (或者你解壓縮安裝程式包的目錄)
./runInstaller 或者./runInstaller   -ignoreSysPrereqs
過一會兒就會出現Oracle的X安裝介面
注意:
1、選擇advance install
2、資料庫home設定為/opt/oracle/10.2.0.1
3、資料庫全域性名稱設定為ge01
4、資料庫字符集選Simplified Chinese ZHS16GBK
2.其他用預設設定!
注意:安裝過程中會提示以root使用者登陸執行一些指令碼 ,執行後再按“ok”按鈕繼續安裝。

3、登陸並啟動資料庫的操作。
su - oracle
[oracle@oracle oracle]\$ lsnrctl start
[oracle@oracle oracle]\$ sqlplus /nolog
SQL*Plus: Release 9.2.0.0 - Production on Sat Mar 12 22:58:53 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> connect / as sysdba
Connected.
SQL> startup; 啟動資料庫
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL> shutdown immediate ;關閉資料庫 (OR "dbshut" command)
Database closed.
Database dismounted.
ORACLE instance shut down.
4, dbstart指令碼修改
資料庫建立完成後,修改vi /etc/oratab,把ge01:/opt/oracle/10.2.0.1:N那一行最後的N改成Y,
修改vi /opt/oracle/10.2.0.1/bin/dbstart中ORACLE_HOME_LISTNER=/opt/oracle/10.2.0.1
然後執行dbstart啟動資料庫資料庫可能無法啟動,報告Can’t find init file …的錯誤,需要複製一個初始化檔案:
cp /opt/oracle/admin/ge01/pfile/init.ora.* /opt/oracle/10.2.0.1/dbs/initge01.ora
重新執行dbstart就可以了。
可以執行dbshut 停止ORACLEvi /etc/rc.local 加入下面一行 起動ORACLE ON system boot
su - oracle -c "lsnrctl start"
su - oracle -c "dbstart"
5. 為了root方便管理,可以寫一個啟動指令碼
vi /etc/init.d/ora10g
 
#!/bin/bash
#
# chkconfig: 2345 91 19
# description: starts the oracle listener and instance
status() {
    pid=`ps -ef | grep ora_pmon | grep -v grep | awk '{print \$8}'`
    if [ "X\$pid" = "X" ]
    then
        echo "oracle10g is not running."
        exit 1
    else
        echo "oracle10g is running."
        exit 0
    fi
}
case "\$1" in
    start)
        #startup the listener and instance
        echo -n "oracle begin to startup: "
        su - oracle -c "lsnrctl start"
        su - oracle -c dbstart
        echo "oracle10g started"
        ;;
    stop)
        # stop listener, apache and database
        echo -n "oracle begin to shutdown:"
        su - oracle -c "lsnrctl stop"
        su - oracle -c dbshut
        echo "oracle10g shutdowned"
        ;;
    reload|restart)
        \$0 stop
        \$0 start
        ;;
    'status')
        status
        ;;
     *)
        echo "Usage: ora10g [start|stop|reload|restart]"
        exit 1
esac
exit 0
存為ora10g後,然後
chmod a+x /etc/init.d/ora10g
即可在以後以root身份執行/etc/rc.d/init.d/ora10g start |stop 來管oracle的啟動和停止了。
如果要將這個指令碼加入到系統中使其可開機執行,那麼要執行以下命令:
chkconfig --level 35 ora10g on
 
6, 關於資料庫刪除重新安裝的問題:
1 . 去除 /usr/local/bin 目錄 下的 coraenv dbhome oraenv
2 . 去除 /etc/oratab , /etc/oracle
3 . 去掉安裝 目錄 /opt/oracle 目錄下的 product admin oradata oralnventor 目錄 。
# userdel -r oracle
# groupdel dba oinstall
rm -rf /tmp/ora*
rm -rf /opt/oracle/*
rm -rf /opt/ORCLfmap
rm -f /etc/ora*
rm -f /usr/local/bin/oraenv
rm -f /usr/local/bin/coraenv
rm -f /usr/local/bin/dbhome

7.修改Oracle10g資料庫字符集
SQL> connect sys/oracle as sysdba
SQL> startup mount
SQL> alter session set sql_trace=true;
Session altered.SQL> alter system enable restricted session;System altered.SQL> alter system set job_queue_processes=0;System altered.SQL> alter system set aq_tm_processes=0;System altered.SQL> alter database open;Database altered.SQL> set linesize 120;
SQL> alter database character set zhs16gbk;
alter database character set zhs16gbk
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
SQL> ALTER DATABASE character set INTERNAL_USE zhs16gbk; # 使用INTERNAL_USE可以跳過超集的檢查,ALTER DATABASE character set INTERNAL_USE Database altered.SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP
SQL> select name,value\$ from props\$ where name like '%NLS%';
NLS_CHARACTERSET
ZHS16GBK
8. oracle database異機備份指令碼
su - oracle
mkdir /home/oracle/dbbackup
(1)vi /home/oracle/dbbackup/bachupdb.sh
#!/bin/bash
#As oracle user, chmod 744 /home/oracle/dbbackup/DBbackuprecover.sh
#crontab -e 35 1 * * * /home/oracle/dbbackup/DBbackuprecover.sh >/dev/null 2>&1
#@tip: modify local database's home directory
#@tip is remote database ip address
export ORACLE_HOME=/opt/oracle/10.2.0.1
export PATH=\$ORACLE_HOME/bin:\$PATH:
export NLS_LANG=AMERICAN_AMERICA.zhs16gbk
export LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_SID=ge01
dmpfile=gedb_`date +%F`.dmp
logfile=gedb_`date +%F`.log
restoredblog=restoredb_`date +%F`.log
WORK_DIR=~/dbbackup
cd \$WORK_DIR
exp USERID=gedb/gegedb@/ge01 file=\$dmpfile log=\$logfile  wner=gedb
if [ 0 -eq "\$?" ]
     then
         sqlplus / as sysdba @user.sql 
         imp USERID=gedb/gegedb file=\$dmpfile log=./\$restoredblog fromuser=gedb  touser=gedb
         find  ./*.dmp -type f -mtime +7 -exec rm {} ;
         find  ./*.log -type f -mtime +30 -exec rm {} ;
         exit 0
      else
         echo "backup error,quit!" > \$logfile
         exit 1
fi
 
#@tip ip地址修改為要備份的oracle的主機地址
exp USERID=gedb/gedb@10.248.1.5/ge01 file=\$dmpfile log=\$logfile  wner=gedb direct=y
  (2)更改指令碼許可權:
     chown oracle.oinstall backupdb.sh
     chmod 744 backupdb.sh   
    
 
 (3)以oracle user role
    crontab -e
    35 2 * * * /home/oracle/dbbackup/backupdb.sh
9. restore oracle backup
(1) 先建立gedb使用者和授權:
  su - oracle
  sqlplus / as sysdba @createUser.sql 
(2)imp USERID=gedb/gegedb file=110.dmp fromuser=gedb touser=gedb
  如果要第二次IMP操作要先刪除使用者gedb,再新建使用者gedb,這樣imp才不會出錯.
  DROP USER gedb CASCADE;
  CREATE USER gedb  IDENTIFIED BY gegedb;
  GRANT UNLIMITED TABLESPACE TO gedb;
  GRANT CONNECT TO gedb;
  GRANT RESOURCE TO gedb;
  GRANT DBA TO gedb;
 
10. oracle優化
SQL> alter system set "_kgl_large_heap_warning_threshold"=8388608 scope=spfile ; (ONLY FOR 10.2.0.1.0 )
SQL> shutdown immediate
SQL> startup
 
  
11.BUG FIX
(1)10g EM亂碼之快速解決
[oracle@danaly ~]\$ cd \$ORACLE_HOME/jdk/jre/lib
[oracle@danaly lib]\$ ls font*zh_CN*
font.properties.zh_CN.Redhat font.properties.zh_CN.Redhat2.1
font.properties.zh_CN.Sun font.properties.zh_CN_UTF8.Sun
[oracle@danaly lib]\$ cd \$ORACLE_HOME/jre/1.4.2/lib/
[oracle@danaly lib]\$ ls font*zh_CN*
font.properties.zh_CN.Redhat font.properties.zh_CN.Redhat2.1
font.properties.zh_CN.Sun font.properties.zh_CN_UTF8.Sun
我們只要用合適的中文字符集檔案替換預設檔案即可,我選擇使用font.properties.zh_CN.Redhat來替換預設字型定義檔案: [oracle@danaly lib]\$ cp font.properties.zh_CN.Redhat font.properties 替換之後需要清理一下Cache,重啟EM即可. Cache路徑通常位於: \$ORACLE_HOME/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs 清除所有gif檔案即可.然後重新啟動EM(2)10201上一個嚴重的BUG
環境 10201,AIX53
但據ORACLE解釋,在任何作業系統版本都有此問題。
現象:監聽器啟動後,隔一段時間(長短不定),就會出現無法
連線: 若是用10201版本的SQLPLUS,則會出現 NO LISTENER。
9207 版本的SQLPLUS,則會出現:沒反應,HANG住。
原因:10201 版本上的一個BUG:4518443。其會自動建立一個子
監聽器,當出現此情況時,監聽器將會掛起。
/opt/oracle/product/10g/network/log/listener.log有如下語句:
WARNING: Subscription for node down event still pending
檢查是否真因為此BUG造成此現象:
\$ ps -ef | grep tnslsnr
ora10g 8909 1 0 Sep 15 ? 902:44 /u05/10GHOME/DBHOME/bin/tnslsnr sales -inherit
ora10g 22685 8909 0 14:19:23 ? 0:00 /u05/10GHOME/DBHOME/bin/tnslsnr sales –inherit
正常情況只有一個監聽器,而此BUG則會出現兩個監聽器。
解決方法:
打補丁4518443
或者在listener.ora 檔案里加入:
SUBSCRIBE_FOR_NODE_DOWN_EVENT_=OFF
其中, 是資料庫的監聽器的名稱。如:
預設情況下,監聽器名為:LISTENER 。則語句就是:
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF
同時:
cd \$ORACLE_HOME/opmn/conf
mv ons.config ons.config.orig
重啟監聽程式:
lsnrctl stop
lncrctl start

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

相關文章