系統介紹
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.
安裝完畢。



















