Linux 系統配置檔案詳細解讀
什麼是系統配置檔案?
核心本身也可以看成是一個“程式”。為什麼核心需要配置檔案?核心需要了解系統中使用者和組的 列表,進而管理檔案許可權(即根據許可權判定特定使用者(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 setarchp4198954_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 nobody2,建立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/oracle2, 配置環境變數;
要使用 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 靜默解除安裝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 ZHS16GBK2.其他用預設設定!
注意:安裝過程中會提示以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 setSQL> 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
ZHS16GBK8. 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=ge01dmpfile=gedb_`date +%F`.dmp
logfile=gedb_`date +%F`.log
restoredblog=restoredb_`date +%F`.log
WORK_DIR=~/dbbackupcd \$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
核心本身也可以看成是一個“程式”。為什麼核心需要配置檔案?核心需要了解系統中使用者和組的 列表,進而管理檔案許可權(即根據許可權判定特定使用者(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 setarchp4198954_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 nobody2,建立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/oracle2, 配置環境變數;
要使用 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 靜默解除安裝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 ZHS16GBK2.其他用預設設定!
注意:安裝過程中會提示以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 setSQL> 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
ZHS16GBK8. 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
export PATH=\$ORACLE_HOME/bin:\$PATH:
export NLS_LANG=AMERICAN_AMERICA.zhs16gbk
export LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_SID=ge01dmpfile=gedb_`date +%F`.dmp
logfile=gedb_`date +%F`.log
restoredblog=restoredb_`date +%F`.log
WORK_DIR=~/dbbackupcd \$WORK_DIR
exp USERID=gedb/gegedb@
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_
其中,
預設情況下,監聽器名為: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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux檔案系統詳解Linux
- Linux 檔案系統詳解Linux
- Struts配置檔案詳細講解
- resin配置檔案的詳細解釋
- MyBatis 核心配置檔案詳細內容詳解MyBatis
- Android的.so檔案詳細解讀Android
- Linux 建立檔案系統及掛載檔案系統詳解一薦Linux
- 檔案系統(五):exFAT 檔案系統原理詳解
- linux網路卡配置檔案詳解Linux
- 細說GNU/Linux系統的檔案及檔案系統(轉)Linux
- WINDOWS系統檔案詳解Windows
- 詳解 Linux 中的虛擬檔案系統Linux
- linux的啟動配置檔案inittab檔案詳解Linux
- 分享Linux下的sudo及其配置檔案/etc/sudoers詳細配置Linux
- 檔案系統(十一):Linux Squashfs只讀檔案系統介紹Linux
- Nginx配置檔案詳細說明Nginx
- Linux etc目錄配置檔案詳解Linux
- LINUX top命令詳細解讀Linux
- Windows系統檔案詳解(轉)Windows
- Linux系統網路檔案配置Linux
- Linux網路卡配置檔案 引數詳解Linux
- Linux中./configure檔案配置詳解Linux
- redis 配置檔案詳解Redis
- haproxy配置檔案詳解
- redis配置檔案詳解Redis
- SSH配置檔案詳解
- zookeeper配置檔案詳解
- nginx配置檔案詳解Nginx
- WCF配置檔案詳解
- Linux檔案系統變成只讀Linux
- Linux系統中的/etc/shadow檔案超詳細內容解析Linux
- Linux檔案系統損壞後的修復技巧詳細介紹Linux
- Linux系統檢視檔案地址常用的命令詳解!Linux
- Linux系統常見檔案大小常用的命令詳解!Linux
- Linux教程-系統管理-/etc下的檔案詳解(轉)Linux
- linux系統配置及相關檔案Linux
- NFS網路檔案系統詳解NFS
- FAT32 檔案系統詳解