SLES 10安裝Oracle10gR2筆記 1、 數據庫安裝 1. 安裝C/C++ Compiler gcc --version驗證是否安裝 2. 驗證Service Pack版本 SPident –v 3. 修改/etc/hosts #127.0.0.1 localhost 192.168.0.123 localhost 4. 安裝先決程序包 能夠在安裝操做系統是選擇Oracle Base Server或者安裝以下程序包: #rpm -ivh orarun-1.9-21.2.x86_64.rpm 5. 設置oracle用戶 修改/etc/passwd的oracle用戶的/bin/false爲/bin/bash,或先刪除用戶重建。並設置oracle用戶密碼: # groupadd oinstall # groupadd dba # useradd oracle -g oinstall -G dba # passwd oracle 6. 設置oracle用戶環境變量(/etc/profile.d/oracle.sh) PATH=$PATH:$HOME/bin LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/lib # added for install oracle10g export ORACLE_BASE=$HOME export ORACLE_HOME=$ORACLE_BASE/product/10.2/db_1 export ORACLE_SID=testdb # deleted after install oracle10g export TNS_ADMIN=$ORACLE_HOME/network/admin export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" export PATH=$PATH:$ORACLE_HOME/bin:. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:. export DISPLAY=:0.0 unset USERNAME unset LANG 7. 設置內核參數 /usr/sbin/rcoracle start 8. 驗證oracle信息 oracle@devtest:~> id uid=1001(oracle) gid=103(oinstall) groups=103(oinstall),104(dba) 9. 安裝oracle 在~oracle/database/install/oraparam.ini的[Certified Versions]行加入SuSE-10後執行./ runInstaller 或者執行./runInstaller -ignoreSysPrereqs 10. 設置GUI顯示 #xhost + $xhost + 並設置環境變量 export DISPLAY=:0.0 11. 新建數據庫 dbca 12. 監聽器配置(LISTENER) >netmgr或netca 配置Listening Locations和Database Services項。 而後重啓監聽程序 >lsnrctl start 13. 配置Service Naming >netca 14. 登錄測試 >sqlplus /nolog sql>conn system/oracle@testdb 15. 安裝問題處理 16. emca script 錯誤 分析解答: 出現此類問題,通常要求檢查主機名與Hosts文件對應是否吻合,特別是大小寫檢查常常大意致使運行dbca 建立數據庫過程當中報錯。出現此類問題後,能夠經過如下步驟解決: $ su - oracle $ emca -deconfig dbcontrol db -repos drop #刪除EM資料檔案庫 $ emca -repos create #建 EM 資料檔案庫 $ emca -config dbcontrol db #置數據的 Database Control 過上述步驟後,若是正常,EM管理控制檯可正常使用,運行Http://IPAdrees:1158/em 若是運行ca -repos create 後出現異常,則檢查Oracle local_listener是否爲空,不然清空後再運行。 2、 建立數據庫 1. 新建數據庫 系統數據文件目錄:/oradata/system 用戶歸檔日誌目錄:/oradata/logarch 用戶數據文件目錄:/oradata/userdata 執行dbca新建數據庫 2. 數據庫啓動腳本startdb.sh #!/bin/sh sqlplus /nolog <<EOF connect / as sysdba; startup; EOF lsnrctl start 3. 數據庫關閉腳本shutdb.sh #!/bin/sh lsnrctl stop sqlplus /nolog <<EOF connect / as sysdba; shutdown transactional; EOF 3、 Oracle Data Guard配置(10g) 1. primary數據庫配置 1) 確認primary處於歸檔模式 SQL>archive log list; 2) 將primary設置爲歸檔模式 SQL>alter database force logging; 3) 建立standby控制文件 SQL> alter database create standby controlfile as '/oradata/system/tzdb/standby.ctl'; 4) 查看是否存在密碼文件,不存在則建立 ls $ORACLE_HOME/dbs/orapwtzdb orapwd file='orapwtzdb' password='1qaz!QAZ' entries='30' 5) 建立standby redo log SQL> alter database add standby logfile group 4 ('/oradata/system/tzdb/stdby_redo01.log') size 50m; SQL> alter database add standby logfile group 5 ('/oradata/system/tzdb/stdby_redo02.log') size 50m; SQL> alter database add standby logfile group 6 ('/oradata/system/tzdb/stdby_redo03.log') size 50m; SQL> alter database add standby logfile group 7 ('/oradata/system/tzdb/stdby_redo04.log') size 50m; 6) 建立primary數據庫客戶端初始化參數文件 此處須要修改多處,爲了方便,先建立並修改pfile,而後經過pfile重建spfile,固然也可經過alter system set命令直接修改spfile: SQL> create pfile='/oradata/system/tzdb/inittzdb.ora' from spfile; 修改上述primary的客戶端參數文件/oradata/system/tzdb/inittzdb.ora,增長以下參數: #----------------------------------------- #新增配置參數 #----------------------------------------- DB_UNIQUE_NAME=tzdba LOG_ARCHIVE_CONFIG='DG_CONFIG=(tzdba,tzdbb)' LOG_ARCHIVE_DEST_1='LOCATION=/oradata/logarch/tzdb VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=tzdba' LOG_ARCHIVE_DEST_2='SERVICE=tzdbb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=tzdbb' LOG_ARCHIVE_DEST_STATE_1=ENABLE LOG_ARCHIVE_DEST_STATE_2=ENABLE #ARCHIVE_LAG_TARGET=300 #----------------------------------------- #配置standby角色的參數用於角色轉換 #----------------------------------------- FAL_SERVER=tzdbb FAL_CLIENT=tzdba STANDBY_FILE_MANAGEMENT=AUTO 經過pfile重建spfile SQL>shutdown immediate; SQL>create spfile from pfile='/oradata/system/tzdb/inittzdb.ora'; 7) 驗證listenner和service name配置並測試 lsnrctl stop lsnrctl start tnsping tzdba tnsping tzdbb 2. standby數據庫配置 1) 複製primary的以下文或目錄件到standby主機的相應目錄 $ORACLE_HOME/admin 包括數據文件 控制文件 產生的standby控制文件 在線日誌文件 密碼文件 參數文件(inittzdb.ora) 2) 恢復standby的控制文件 cp standby.ctl control01.ctl cp standby.ctl control02.ctl cp standby.ctl control03.ctl 3) 修改standby主機的sqlnet.ora,增長以下參數 SQLNET.EXPIRE_TIME=2 4) 修改初始化參數文件(/oradata/system/tzdb/inittzdb.ora) 增長以下參數,注意同時修改*_dest的路徑 #----------------------------------------- #新增配置參數 #----------------------------------------- DB_UNIQUE_NAME=tzdba LOG_ARCHIVE_CONFIG='DG_CONFIG=(tzdba,tzdbb)' LOG_ARCHIVE_DEST_1='LOCATION=/oradata/logarch/tzdb VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=tzdba' LOG_ARCHIVE_DEST_2='SERVICE=tzdbb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=tzdbb' LOG_ARCHIVE_DEST_STATE_1=ENABLE LOG_ARCHIVE_DEST_STATE_2=ENABLE #ARCHIVE_LAG_TARGET=300 #----------------------------------------- #配置standby角色的參數用於角色轉換 #----------------------------------------- FAL_SERVER=tzdbb FAL_CLIENT=tzdba STANDBY_FILE_MANAGEMENT=AUTO 經過該pfile建立spfile SQL> create spfile from pfile='/oradata/system/tzdb/inittzdb.ora'; 5) 啓動standby到mount SQL>startup mount; 6) 啓動redo應用 SQL>alter database recover managed standby database disconnect from session; 8) Oracle Data Guard測試驗證 3. 查看同步狀況 先鏈接到primary數據庫,而後查看 show parameter instance_name; alter system switch logfile; select max(sequence#) from v$archived_log; 鏈接到standby數據庫,而後查看 show parameter instance_name; select max(sequence#) from v$archived_log; 暫停redo應用,此時仍會接手歸檔日誌,但不該用,直到恢復到應用模式。 alter database recover managed standby database cancel; 查看standby的歸檔日誌是否已被應用到數據文件 select sequence#,applied from v$archived_log order by sequence#; 4、 Standby數據庫平常維護 1. 關閉standby數據庫 shutdown immediate; 2. 啓動standby數據庫到恢復模式 startup nomount; alter database mount standby database; alter database recover managed standby database disconnect from session; 3. 啓動standby數據庫到只讀模式 startup nomount; alter database mount standby database; alter database open read only; 4. 將standby數據庫從恢復模式切換到只讀模式 alter database recover managed standby database cancel; alter database open read only; 5. 將standby數據庫從只讀模式切換到恢復模式 alter database recover managed standby database disconnect from session;