系統介紹
ORACLE資料庫系統是美國ORACLE公司(甲骨文)提供的以分散式資料庫為核心的一組軟體產品,是目前最流行的客戶/伺服器(CLIENT/SERVER)或B/S體系結構的資料庫之一。比如SilverStream就是基於資料庫的一種中間件。ORACLE資料庫是目前世界上使用最為廣泛的資料庫管理系統。
伺服器
Oracle Server是一個對象一關係資料庫管理系統。它提供開放的、全面的、和集成的信息管理方法。每個Server由一個 Oracle DB和一個 Oracle Server實例組成。它具有場地自治性(Site Autonomy)和提供數據存儲透明機制,以此可實現數據存儲透明性。每個 Oracle資料庫對應唯一的一個實例名SID,Oracle資料庫伺服器啟動後,一般至少有以下幾個用戶:Internal,它不是一個真實的用戶名,而是具有SYSDBA優先權的Sys用戶的別名,它由DBA用戶使用來完成資料庫的管理任務,包括啟動和關閉資料庫;Sys,它是一個 DBA用戶名,具有最大的資料庫操作許可權;System,它也是一個 DBA用戶名,許可權僅次於 Sys用戶。
客戶端
為資料庫用戶操作端,由套用、工具、SQL* NET組成,用戶運算元據庫時,必須連線到一伺服器,該資料庫稱為本地資料庫(Local DB)。在網路環境下其它伺服器上的 DB稱為遠程資料庫(Remote DB)。用戶要存取遠程 DB上的數據時,必須建立資料庫鏈。
Oracle資料庫的體系結構包括物理存儲結構和邏輯存儲結構。由於它們是相分離的,所以在管理數據的物理存儲結構時並不會影響對邏輯存儲結構的存取。
支持平台
在2001年發布的Oracle9i之前,甲骨文公司把他們的資料庫產品廣泛的移植到了不同的平台上。甲骨文公司鞏固了一小部分的作業系統平台。
截止至2015年01月,甲骨文公司的Oracle10g/11g/12c支持以下的作業系統和硬體:
·AppleMacOSXServer:PowerPC
·HPHP-UX:PA-RISC,Itanium
·HPTru64UNIX:Alpha
·HPOpenVMS:Alpha,Itanium
·IBMAIX5L:IBMPOWER
·IBMz/OS:zSeries
·Linux:x86,x86-64,PowerPC,zSeries,Itanium
·MicrosoftWindows:x86,x86-64,Itanium
·SunSolaris:SPARC,x86,x86-64
特點
1、完整的數據管理功能:
1)數據的大量性
2)數據的保存的持久性
3)數據的共享性
4)數據的可靠性
2、完備關係的產品:
1)信息準則---關係型DBMS的所有信息都應在邏輯上用一種方法,即表中的值顯式地表示;
2)保證訪問的準則
3)視圖更新準則---只要形成視圖的表中的數據變化了,相應的視圖中的數據同時變化
4)數據物理性和邏輯性獨立準則
3、分散式處理功能:
ORACLE資料庫自第5版起就提供了分散式處理能力,到第7版就有比較完善的分散式資料庫功能了,一個ORACLE分散式資料庫由oraclerdbms、sql*Net、SQL*CONNECT和其他非ORACLE的關係型產品構成。
4、用ORACLE能輕鬆的實現數據倉庫的操作。
這是一個技術發展的趨勢,不在這裡討論。
資料庫管理及開發工具
·Navicat for Oracle是一套專為Oracle設計的強大資料庫管理及開發工具。它可以用於任何版本的Oracle資料庫,並支援大部份Oracle的功能,包括觸發器、索引、檢視等。
·Toad for Oracle是一款老牌的Oracle開發管理工具,比任何一款Oracle開發管理工具功能更多,並針對使用者不同的角色有多個分支版本。版本包括:Toad DBA Suite for Oracle是一款專門為Oracle DBA管理Oracle資料庫工具, Toad Development Suite for Oracle是一款專門為Oracle開發工具, Toad DBA Suite for Oracle – Exadata Edition是一款專門為Oracle Exadata一體伺服器及Oracle資料庫管理工具, Toad DBA Suite for Oracle - RAC Edition是一款專門為Oracle搭建集群RAC的DBA管理工具
比較
在了解了ORACLE資料庫後,我們有必要對ORACLE和Sybase SQL Server的比較, Oracle採用的是並行伺服器模式,而Sybase SQL Server採用的是虛擬伺服器模式,它沒有將一個查詢分解成多個子查詢,再在不同的CPU上同時執行這些子查詢。我們可以說在對稱多處理方面Oracle的性能優於Sybase的性能。業務量往往在系統運行後不斷提高,如果資料庫數量達到GB以上時,我們在提高系統的性能方面可以從兩方面入手,一種是提高單台伺服器的性能,還有就是增加伺服器數目。基於此,如果我們是提高單台伺服器的性能,選擇Oracle 資料庫較好,因為它們能在對稱多CPU的系統上提供並行處理。相反,由於Sybase的導航伺服器使網上的所有用戶都註冊到導航伺服器並通過導航服務提出數據訪問請求,導航伺服器則將用戶的請求分解,然後自動導向由它所控制的多台SQL Server,從而在分散數據的基礎上提供並行處理能力,我們可以選擇它。這些都是在其他條件和環境相同的情況下比較的,這樣才有可比性。在數據的分布更新方面,Oracle採用的是基於伺服器的自動的2PC(兩階段提交),而Sybase採用的則是基於客戶機DB-Library或CT-Library的可程式的2PC,因此我們在選擇資料庫方面,必須根據需要進行選擇,比如,從事的社會保險軟體的開發,考慮到數據量大,並發操作比較多,實時性要求高,我們後台基本採取的是ORACLE資料庫。Oracle伺服器由Oracle資料庫和Oracle實例組成。Oracle實例由系統全局區記憶體結構和用於管理資料庫的後台進程組成。
就業前景
從就業與擇業的角度來講,計算機相關專業的大學生從事oracle方面的技術是職業發展中的最佳選擇。
其一、就業面廣:ORACLE幫助拓展技術人員擇業的廣度,全球前100強企業99家都在使用ORACLE相關技術,中國政府機構,大中型企事業單位都能有ORACLE技術的工程師崗位,大學生在校期間興趣廣泛,每個人興趣特長各異,不論你想進入金融行業還是電信行業或者政府機構,ORACLE都能夠在你的職業發展中給你最強有力的支撐,成為你最貼身的金飯碗。
其二、技術層次深:如果期望進入IT服務或者產品公司(類似畢博、DELL、IBM等),Oracle技術能夠幫助提高就業的深度。Oracle技術已經成為全球每個IT公司必選的軟體技術之一,熟練掌握Oracle技術能夠為從業人員帶來技術套用上的優勢,同時為IT技術的深入套用起到非常關鍵的作用。掌握Oracle技術,是IT從業人員了解全面信息化整體解決方案的基礎。
其三、職業方向多:Oracle資料庫管理方向、Oracle開發及系統架構方向、Oracle數據建模數據倉庫等方向.
邏輯結構
它由至少一個表空間和資料庫模式對象組成。這裡,模式是對象的集合,而模式對象是直接引用資料庫數據的邏輯結構。模式對象包括這樣一些結構:表、視圖、序列、存儲過程、同義詞、索引、簇和資料庫鏈等。邏輯存儲結構包括表空間、段和範圍,用於描述怎樣使用資料庫的物理空間。
總之,邏輯結構由邏輯存儲結構(表空間,段,範圍,塊)和邏輯數據結構(表、視圖、序列、存儲過程、同義詞、索引、簇和資料庫鏈等)組成,而其中的模式對象(邏輯數據結構)和關係形成了資料庫的關係設計。
段(Segment):
是表空間中一個指定類型的邏輯存儲結構,它由一個或多個範圍組成,段將占用並增長存儲空間。
其中包括:
數據段:用來存放表數據;
索引段:用來存放表索引;
臨時段:用來存放中間結果;
回滾段:用於出現異常時,恢復事務。
範圍(Extent):是資料庫存儲空間分配的邏輯單位,一個範圍由許多連續的數據塊組成,範圍是由段依次分配的,分配的第一個範圍稱為初始範圍,以後分配的範圍稱為增量範圍。
數據塊(Block):
是資料庫進行IO操作的最小單位,它與作業系統的塊不是一個概念。oracle資料庫不是以作業系統的塊為單位來請求數據,而是以多個Oracle資料庫塊為單位。
檔案結構
資料庫的物理存儲結構是由一些多種物理檔案組成,主要有數據檔案、控制檔案、重做日誌檔案、歸檔日誌檔案、參數檔案、口令檔案、警告檔案等。
控制檔案:存儲實例、數據檔案及日誌檔案等信息的二進制檔案。alter system set control_files=‘路徑’。V$CONTROLFILE。
數據檔案:存儲數據,以.dbf做後綴。一句話:一個表空間對多個數據檔案,一個數據檔案只對一個表空間。dba_data_files/v$datafile。
日誌檔案:即Redo Log Files和Archivelog Files。記錄資料庫修改信息。ALTER SYSTEM SWITCH LOGFILE; 。V$LOG。
參數檔案:記錄基本參數。spfile和pfile。
警告檔案:show parameter background_dump_dest---使用共享伺服器連線
跟蹤檔案:show parameter user_dump_dest---使用專用伺服器連線
恢復技術
恢復意義
當我們使用一個ORACLE資料庫時,總希望資料庫的內容是可靠的、正確的,但由於計算機系統的故障(硬體故障、網路故障、進程故障和系統故障)影響資料庫系統的操作,影響資料庫中數據的正確性,甚至破壞資料庫,使資料庫中全部或部分數據丟失。因此當發生上述故障後,希望能重新建立一個完整的資料庫,該處理稱為資料庫恢復。恢復子系統是資料庫管理系統的一個重要組成部分。恢復處理隨時隨地所發生的故障類型所影響的結構而變化。
恢複方法
IMPORT方法:
利用IMPORT,將最後一次EXPORT出來的數據檔案IMPORT到新的資料庫中,這種方式可以將任何資料庫對象恢復到它被導出時的狀態,此後的變化將無法挽回。IMPORT的命令可以互動式進行,各參數的具體含義見Oracle EXP/IMP參數詳解。這種方式適用於沒有採用archive 模式的環境。
安全的恢複方法:
如果資料庫運行在archive 模式下,那么一旦資料庫損壞則可以通過冷備份(熱備份)和歸檔備份將資料庫恢復到斷點狀態。
資料庫控制檔案恢復(假設所有控制檔案均被破壞):
資料庫基於檔案系統: 利用作業系統的tar、cp等命令即可。
資料庫基於裸設備:dd if=$ORACLE_BASE/con.bak of=/dev/rdrd/drd1 seek=12
資料庫數據檔案恢複數據及索引表空間、系統表空間的恢復:回拷相關的資料庫檔案和該數據檔案備份以來所有生成的所有邏輯日誌檔案並執行如下命令:
svrmgrl > startup mount
svrmgrl > alter database recover automatic
如果控制檔案被破壞,則:
svrmgrl > alter database recover using backup controfile; 按照提示輸入log檔案名稱和redolog檔案名稱
svrmgrl > alter database open resetlogs;
資料庫臨時檔案和回滾表空間的恢復:簡單地offline drop 並重建即可 。
注意:如果資料庫不運行在archive 模式下,則恢復只能恢復到上次備份時的狀態。
安裝過程
一、準備安裝
基本都是按部就班。
使用的OS版本:OEL4
[oracle@ractestorcl]$cat/etc/redhat-release
EnterpriseLinuxEnterpriseLinuxASrelease4(OctoberUpdate5)
[oracle@ractestorcl]$cat/etc/enterprise-release
EnterpriseLinuxEnterpriseLinuxASrelease4(OctoberUpdate5)
安裝程式路徑:
/mnt/Oracle11g_linux_x86_64/database
創建用戶
groupadd-g1001dba
groupadd-g1002oinstall
useradd-u10000-gdba-Goinstall,dba-d/home/oracle-s/bin/bashoracle
chownRoracle:dba/home/oracle
usermod-gdba-Goinstall,dbaoracle
使用的.bash_profile
exportORACLE_BASE=/home/oracle
exportORACLE_HOME=$ORACLE_BASE/11g
exportORA_CRS_HOME=$ORACLE_BASE/crs
exportORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
exportORACLE_SID=orcl1
exportPATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:${PATH}:$HOME/bin
exportPATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
exportPATH=${PATH}:$ORACLE_BASE/common/oracle/bin
exportORACLE_TERM=xterm
exportTNS_ADMIN=$ORACLE_HOME/network/admin
exportORA_NLS10=$ORACLE_HOME/nls/data
exportLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib:$ORACLE_HOME/
oracm/lib:$ORACLE_HOME/lib
exportLIBPATH=$LIBPATH:$ORA_CRS_HOME/lib:$ORACLE_HOME/lib
exportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/jlib:$ORACLE_HOME
/network/jlib:$ORACLE_HOME/JRE
exportTHREADS_FLAG=native
exportTEMP=/tmp
exportTMPDIR=/tmp
exportNLS_LANG=american_america.WE8ISO8859P1
exportDISPLAY=10.198.90.55:2
aliassysdba="sqlplus'/assysdba'"
exportEDITOR=vi
修改的核心參數:
kernel.shmall=2097152
kernel.shmmax=2147483648
kernel.shmmni=4096
fs.file-max=65536
net.ipv4.ip_local_port_range=102465000
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
使用xclock檢查display正確:
代碼:
[oracle@ractest~]$xclock
[oracle@ractest~]$/mnt/Oracle11g_linux_x86_64/database
[oracle@ractest~]$cd/mnt/Oracle11g_linux_x86_64/database
[oracle@ractestdatabase]$ls-l
total10
drwxr-xr-x41003oinstall96Mar2318:45doc
drwxr-xr-x51003oinstall1024Mar2318:45install
drwxr-xr-x21003oinstall1024Mar2318:45response
-rwxr-xr-x11003oinstall1251Mar2318:45runInstaller
drwxr-xr-x121003oinstall1024Mar2318:45stage
-rw-r--r--11003oinstall4638Mar2318:45welcome.html
[oracle@ractestdatabase]$./runInstaller
StartingOracleUniversalInstaller...
Checkinginstallerrequirements...
Checkingoperatingsystemversion:mustberedhat-3,SuSE-9,
redhat-4,UnitedLinux-1.0,asianux-1orasianux-2
Passed
Allinstallerrequirementsmet.
PreparingtolaunchOracleUniversalInstallerfrom
/tmp/OraInstall2007-06-28_02-26-12AM.Pleasewait...
[oracle@ractestdatabase]$OracleUniversalInstaller,Version11.1.0.2.0Production
Copyright(C)1999,2007,Oracle.Allrightsreserved.
OracleUniversalInstaller,Version11.1.0.2.0Production
Copyright(C)1999,2007,Oracle.Allrightsreserved.
啟動圖形以後選擇basic&n
選擇oraclebase的時候,oracle不推薦使用userhome作為oraclebase,這裡我選yes忽略
進行prerequirements檢查的時候,安裝程式認為swap不足,我選擇YES忽略
執行提示腳本,安裝完畢
代碼:
[oracle@ractestdatabase]$
[oracle@ractestdatabase]$su-root
Password:
[root@ractest~]#/home/oracle/oraInventory/orainstRoot.sh
Changingpermissionsof/home/oracle/oraInventoryto770.
Changinggroupnameof/home/oracle/oraInventorytodba.
Theexecutionofthescriptiscomplete
[root@ractest~]#/home/oracle/11g/root.sh
RunningOracle11groot.shscript...
Thefollowingenvironmentvariablesaresetas:
ORACLE_OWNER=oracle
ORACLE_HOME=/home/oracle/11g
Enterthefullpathnameofthelocalbindirectory:[/usr/local/bin]:
Copyingdbhometo/usr/local/bin...
Copyingoraenvto/usr/local/bin...
Copyingcoraenvto/usr/local/bin...
Creating/etc/oratabfile...
Entrieswillbeaddedtothe/etc/oratabfileasneededby
DatabaseConfigurationAssistantwhenadatabaseiscreated
Finishedrunninggenericpartofroot.shscript.
Nowproduct-specificrootactionswillbeperformed.
Finishedproduct-specificrootactions.
安裝完畢。