ORACLE數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)1_第1頁(yè)
ORACLE數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)1_第2頁(yè)
ORACLE數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)1_第3頁(yè)
ORACLE數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)1_第4頁(yè)
ORACLE數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)1_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第一部分Oracle數(shù)據(jù)庫(kù)概念與原理、Oracle數(shù)據(jù)庫(kù)概念1?數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)是一套解決信息管理問(wèn)題的工具,是數(shù)據(jù)文件及處理這些數(shù)據(jù)文件的程序的集合。一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)必須實(shí)現(xiàn)在多用戶環(huán)境下可靠地管理大量的數(shù)據(jù),使得很多用戶在并發(fā)處理時(shí)獲得相同的結(jié)果,而且必須具有處理數(shù)據(jù)的高效性、可靠性、安全性和容錯(cuò)性,同時(shí)提供簡(jiǎn)便易用的客戶端用戶操作過(guò)程和應(yīng)用接入。2.Oracle數(shù)據(jù)庫(kù)Oracle數(shù)據(jù)庫(kù)是采用數(shù)據(jù)庫(kù)進(jìn)程和應(yīng)用程序分進(jìn)程處理的Client/Server結(jié)構(gòu)的關(guān)系型數(shù)據(jù)庫(kù),采用大型數(shù)據(jù)庫(kù)的磁盤空間管理形式,支持大量用戶同時(shí)操作相同的數(shù)據(jù),實(shí)現(xiàn)高度可靠性、高度的安全性、高效率和在線備份機(jī)制。Oracle數(shù)據(jù)庫(kù)適合于各種不同的硬件環(huán)境和不同的操作系統(tǒng),且具有接口方便和控制容易的特性,并支持多點(diǎn)實(shí)時(shí)復(fù)制。、Oracle數(shù)據(jù)庫(kù)原理1.Oracle數(shù)據(jù)庫(kù)的基本任務(wù)錄入數(shù)據(jù);⑵存儲(chǔ)數(shù)據(jù);(3)查詢、處理數(shù)據(jù)技術(shù)部工程師培訓(xùn)教材數(shù)據(jù)庫(kù)基礎(chǔ)技術(shù)部工程師培訓(xùn)教材數(shù)據(jù)庫(kù)基礎(chǔ)2.Oracle數(shù)據(jù)庫(kù)的組成結(jié)構(gòu)Oracle按照應(yīng)用情況可以分為核心數(shù)據(jù)(DATA)、操作系統(tǒng)(OperationSystem)、數(shù)據(jù)庫(kù)服務(wù)器部分(OracleServer)、OracleSQLServer程序、Oracle工具(包括SQL*PLUS和很多像Developer2000、designer2000等工具)以及Oracle的各種應(yīng)用。按照Oracle的對(duì)象組成結(jié)構(gòu)來(lái)看,Oracle數(shù)據(jù)庫(kù)由以下幾部分組成:⑴實(shí)例(Instanee):Oracle實(shí)例是一組有自己的系統(tǒng)全局區(qū)和與其相關(guān)數(shù)據(jù)庫(kù)文件的Oracle服務(wù)器進(jìn)程,每個(gè)實(shí)例都有自己的SID(系統(tǒng)識(shí)別符)。⑵對(duì)象(Object):由應(yīng)用程序中的SQL語(yǔ)句引用的表空間、用戶、表、視圖、索引、權(quán)限、DBA(數(shù)據(jù)庫(kù)管理員)等。⑶程序:也是Oracle數(shù)據(jù)庫(kù)的過(guò)程,主要包括客戶過(guò)程(clientprocesses),根據(jù)用戶的要求向服務(wù)器過(guò)程提出需求信息的請(qǐng)求;服務(wù)器過(guò)程serverprocesses),接收用戶過(guò)程發(fā)出的請(qǐng)求,并根據(jù)請(qǐng)求與數(shù)據(jù)庫(kù)通信,完成對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的處理。⑷文件:包括數(shù)據(jù)文件(Datafile),存放所有數(shù)據(jù)庫(kù)有關(guān)的數(shù)據(jù)。日志文件(LogFile),也稱重演日志文件(RedoLogsFile)或事務(wù)記錄文件(TrasactionLogFile),記錄針對(duì)數(shù)據(jù)庫(kù)進(jìn)行的修改操作或各種事務(wù),節(jié)省數(shù)據(jù)庫(kù)直接操作數(shù)據(jù)文件的時(shí)間和次數(shù),提高處理效率??刂莆募–ontrolFile),存放與Oracle數(shù)據(jù)庫(kù)所有文件均相關(guān)的關(guān)鍵信息,Oracle數(shù)據(jù)庫(kù)通過(guò)控制文件保持?jǐn)?shù)據(jù)的一致性,以及恢復(fù)數(shù)據(jù)時(shí)使用哪些重演日志。每個(gè)數(shù)據(jù)庫(kù)至少應(yīng)該有兩個(gè)以上的控制文件和日志文件備份。⑸內(nèi)存結(jié)構(gòu)Oracle的內(nèi)存結(jié)構(gòu)SGA主要是一個(gè)通信器,它是一塊存放系統(tǒng)信息的內(nèi)存區(qū)域,使得通信過(guò)程盡量能夠在內(nèi)存中處理,達(dá)到快速度、高效率。所有用戶進(jìn)程和服務(wù)器進(jìn)程都能夠訪問(wèn)這個(gè)內(nèi)存結(jié)構(gòu)。SGA區(qū)主要分為四塊:DataBufferCache(數(shù)據(jù)高速緩沖區(qū))中存放著Oracle最近使用過(guò)的數(shù)據(jù)庫(kù)數(shù)據(jù)塊,當(dāng)用戶一次訪問(wèn)數(shù)據(jù)時(shí),用戶進(jìn)程從物理磁盤中讀取數(shù)據(jù)后將其放在這個(gè)高速緩沖區(qū),下一次或其他用戶訪問(wèn)時(shí)從緩沖區(qū)讀取,Oracle數(shù)據(jù)庫(kù)根據(jù)數(shù)據(jù)被訪問(wèn)的頻度和緩沖區(qū)的物理大小通過(guò)相應(yīng)的HASH算法將經(jīng)常訪問(wèn)的數(shù)據(jù)保留,而去除不經(jīng)常訪問(wèn)的數(shù)據(jù)塊。DictionaryCache(RowCache,字典高速緩沖區(qū))用于保存數(shù)據(jù)字典中的行,數(shù)據(jù)字典中存放Oracle系統(tǒng)管理時(shí)需要的所有信息,這些信息包括:訪問(wèn)Oracle數(shù)據(jù)庫(kù)的用戶以及他們?cè)L問(wèn)哪些數(shù)據(jù)庫(kù)對(duì)象和這些對(duì)象所放的位置等。RedoLogCache(TransactionLogCache,即重演日志緩沖區(qū)),任何需要事務(wù)在寫入到重演日志之前首先放到緩沖區(qū)中,然后定期將其寫入到重演日志。ShareSQLPool(共享SQL池)相當(dāng)于程序高速緩沖區(qū),所有用戶的經(jīng)過(guò)語(yǔ)法分析的、準(zhǔn)備執(zhí)行的SQL語(yǔ)句都放在此共享池中。Oracle數(shù)據(jù)庫(kù)的數(shù)據(jù)處理流程Oracle數(shù)據(jù)處理流程,下面以簡(jiǎn)單的update操作為例加以說(shuō)明。先經(jīng)過(guò)系統(tǒng)監(jiān)視器(SMON)和過(guò)程監(jiān)視器(PMON)檢測(cè)數(shù)據(jù)庫(kù)運(yùn)行正常,Server進(jìn)程和Clients進(jìn)程運(yùn)行在不同的機(jī)器上,彼此通過(guò)網(wǎng)絡(luò)連接,一個(gè)Oracle實(shí)例運(yùn)行在數(shù)據(jù)庫(kù)Server主機(jī)上,用戶進(jìn)程通過(guò)SQL*Net連接到Server主機(jī),Server根據(jù)UserProcess的請(qǐng)求啟動(dòng)一個(gè)ServerProcess用戶通過(guò)SQL語(yǔ)句向Server發(fā)出查詢或者修改數(shù)據(jù)信息的請(qǐng)求,并且提交。數(shù)據(jù)庫(kù)Server進(jìn)程接到請(qǐng)求后檢測(cè)SGA區(qū)中SharePool中的共享SQL池是否有相同的SQL語(yǔ)句。如果有,Server進(jìn)程檢驗(yàn)用戶的合法性,然后執(zhí)行共享池中的SQL語(yǔ)句;如果沒(méi)有,Server進(jìn)程在共享池中產(chǎn)生一個(gè)新的SQL語(yǔ)句,可以供以后任何進(jìn)程使用,然后執(zhí)行此SQL語(yǔ)句。Server進(jìn)程檢測(cè)所有操作的表是否在共享池,如果在,則直接執(zhí)行下一步;如果不在,從數(shù)據(jù)庫(kù)文件中讀取放到高速緩沖區(qū)中;此時(shí)如果需要擦除緩沖區(qū)中的臟數(shù)據(jù)塊,則需要通過(guò)校驗(yàn)點(diǎn)CKPT進(jìn)行校驗(yàn),再執(zhí)行下一步。將原來(lái)共享池中的數(shù)據(jù)寫入到回滾段(RedoLogBuffer),通過(guò)LGWR在重演日志中生成該事務(wù)的一個(gè)拷貝。通過(guò)DBWR修改數(shù)據(jù)文件(DataFiles),將執(zhí)行成功的信號(hào)返回到SGA區(qū)。將完成的事務(wù)記錄到重演日志中。清除回滾段的信息。完成本次操作。說(shuō)明:以上LCKn為lock(鎖)情況,RECO為RECOVER(恢復(fù))過(guò)程,SNPn為snapshotRefreshProcess(快照刷新進(jìn)程),Qnnn為ParallelQueryProcesses(并行查詢進(jìn)程),ARCH為Archiver(物理熱備份歸檔處理進(jìn)程)第二部分:Oracle數(shù)據(jù)庫(kù)的安裝與建立、Oracle數(shù)據(jù)庫(kù)的安裝以O(shè)RACLE816在AIX操作系統(tǒng)上安裝為例,下面介紹安裝過(guò)程中的一些關(guān)鍵步驟和有關(guān)注意事項(xiàng),詳細(xì)安裝請(qǐng)參考隨機(jī)手冊(cè)。需要運(yùn)行oracle數(shù)據(jù)庫(kù)的機(jī)器在安裝系統(tǒng)時(shí)必須使swap區(qū)為為系統(tǒng)內(nèi)存的2-3倍,建議為3倍。(如果物理內(nèi)存超過(guò)1GB,則兩倍就足夠)建立Oracle軟件的安裝點(diǎn):建議將安裝點(diǎn)統(tǒng)一放在oracle用戶缺省主目錄:/home/oracle下,不需要手工創(chuàng)建安裝點(diǎn)目錄用SMIT建立:GROUP(oracle)和USER(oracle),并將oracle用戶加入到這個(gè)組中如果上面步驟已經(jīng)建立了安裝點(diǎn),將ORACLE用戶主目錄設(shè)置成安裝點(diǎn)目錄,如果沒(méi)有建立了安裝點(diǎn),則可以用缺省主目錄:/home/oracle,然后在用戶主目錄下建立orahome屬主為orcle:oracle,將該目錄作為ORACLE系統(tǒng)主目錄,注意,ORACLE系統(tǒng)主目錄應(yīng)該與環(huán)境變量:ORACLE_HOME保持一致。在AIX操作系統(tǒng)上安裝ORACLE數(shù)據(jù)庫(kù)不需要調(diào)整內(nèi)核參數(shù)。以oracle用戶在X-WINDOWS界面登錄(如果在PC上遠(yuǎn)程安裝,需要用Reflection軟件,記住,不管是在本機(jī)還是在客戶端安裝,均要用采用英文環(huán)境安裝,否則,安裝可能出問(wèn)題!)然后修改兩個(gè)文件:.profile和.dtprofile,將.profile文件修改成:umask022exportTERM=vt100exportDISPLAY=localhost:0.0exportORACLE_BASE=/home/oracleexportORACLE_HOME=$ORACLE_BASE/orahomeexportORACLE_SID=zxinexportPATH=$PATH:$ORACLE_HOME/bin:.exportCLASPATH=JRE_Location:$ORACLE_HOME/jlib:$ORACLE_HOME/product/jlibexportLD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/libexportLIBPATH=$LIBPATH:$ORACLE_HOME/libexportLANG=Zh_CNexportLOCPATH=/usr/lib/nls/locexportNLSPATH=/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/%L/%N.catset-oviPATH=$PATH:/usr/vac/binexportPATHPS1='$PWD$';exportPS1然后將.dtprofile文件中最后一行:#DTSOURCEPROFILE=true前面的#號(hào)去掉在圖形界面中開啟終端窗口:然后用su命令以超級(jí)用戶登錄,運(yùn)行以下命令:mount/cdrom(由于已經(jīng)制作/cdrom文件系統(tǒng),所以可以直接mount,不需要CDROM設(shè)備號(hào))退出圖形界面,右鍵選擇’logout',以oracle用戶重新登錄使環(huán)境變量生效cd/cdrom然后在當(dāng)前目錄下運(yùn)行./runlnstaller開始o(jì)racle的安裝安裝選擇注意事項(xiàng):選擇需要安裝的ORACLE產(chǎn)品:Oracle8iEnterpriceEdition.0選擇安裝類型:custom產(chǎn)品語(yǔ)言中(productlanguage)增加:SimplifiedChinese安裝過(guò)程提示是否要建缺省數(shù)據(jù)庫(kù),選擇NO安裝最后階段根據(jù)提示運(yùn)行root.sh完成用超級(jí)用戶權(quán)限的有關(guān)配置。系統(tǒng)安裝完畢后,生成缺省系統(tǒng)管理員用戶:system和sys,默認(rèn)密碼分別為manager禾口change_on_install。安裝過(guò)程結(jié)束后,安裝程序會(huì)利用Net8進(jìn)行網(wǎng)絡(luò)配置:在圖形界面下按照要求添入本機(jī)IP地址,端口號(hào)和服務(wù)名,系統(tǒng)自動(dòng)生成$ORACLE_HOME/network/admin目錄下的兩個(gè)文件:listener.ora禾口tnsnames.ora以超級(jí)用戶,修改偵聽端口文件:#vi/etc/services,在文件的最后添加:listener11521/tcp#oraclelistenerport1listener21521/tcp#oraclelistenerport2、Oracle數(shù)據(jù)庫(kù)啟動(dòng)和關(guān)閉啟動(dòng)數(shù)據(jù)庫(kù):(1)可以利用寫好的腳本文件自動(dòng)啟動(dòng)%dbstart或者依照以下步驟啟動(dòng):首先以oracle用戶身份啟動(dòng)ServerManager,以數(shù)據(jù)庫(kù)系統(tǒng)管理員用戶連接到數(shù)據(jù)庫(kù),連接到internal.$svrmgrl(命令格式進(jìn)入數(shù)據(jù)庫(kù)管理狀態(tài))SVRMGR>connectinternal(以sysdba身份登錄)(2)啟動(dòng)Oracle實(shí)例(Instanee)、Mount數(shù)據(jù)庫(kù)(database)、打開數(shù)據(jù)庫(kù)SVRMGR>startup(默認(rèn)方式為啟動(dòng)實(shí)例,mount數(shù)據(jù)庫(kù)和打開數(shù)據(jù)庫(kù)步驟打開數(shù)據(jù)庫(kù),即:Startupnomountalterdatabasemountalterdatabaseopen)如果不以默認(rèn)方式啟動(dòng)數(shù)據(jù)庫(kù),可以有以下幾種方式:?啟動(dòng)實(shí)例,mount數(shù)據(jù)庫(kù),但不打開數(shù)據(jù)庫(kù)?啟動(dòng)實(shí)例,mount數(shù)據(jù)庫(kù),打開數(shù)據(jù)庫(kù)?帶參數(shù)文件的方式啟動(dòng)數(shù)據(jù)庫(kù)SVRMGR>startuppfile=/path/pfilename.?打開數(shù)據(jù)庫(kù)后,可以執(zhí)行下述指令來(lái)限制只有擁有”RestrictedSesstion系統(tǒng)特權(quán)的用戶才可以登錄到數(shù)據(jù)庫(kù)SVRMGR>altersystemenablerestrictedsession用下述語(yǔ)句解除該限制:SVRMGR>altersystemdusablerestrictedsession⑶授權(quán)SQLNET可以遠(yuǎn)程訪問(wèn)該數(shù)據(jù)庫(kù),啟動(dòng)Listener進(jìn)程:$1snrctlstart啟動(dòng)ORCLE偵聽后臺(tái)進(jìn)程,如果已經(jīng)啟動(dòng),可以先用:lsnrctlstop關(guān)閉后再啟動(dòng),然后用:tnsping[servicename]檢測(cè)Listener后臺(tái)進(jìn)程是否啟動(dòng)關(guān)閉數(shù)據(jù)庫(kù)⑴先關(guān)閉Oracle的ListenerServer,以O(shè)racle用戶執(zhí)行$1snrctlstop。⑵再關(guān)閉Oracle數(shù)據(jù)庫(kù),進(jìn)入數(shù)據(jù)庫(kù)管理狀態(tài):SVRMGR>connectinternal:SVRMGR>shutdown:(缺省為normal方式,停止接受新的數(shù)據(jù)庫(kù)聯(lián)機(jī)請(qǐng)求,等待當(dāng)前所有聯(lián)機(jī)請(qǐng)求處理完正執(zhí)行的聯(lián)機(jī)程序,等待數(shù)據(jù)所有的Commit和rollback執(zhí)行完成以后關(guān)閉數(shù)據(jù)庫(kù)。)SVRWGR>shtudownimmediate;(停止接受新的數(shù)據(jù)庫(kù)聯(lián)機(jī)請(qǐng)求,立即中斷目前所有聯(lián)機(jī)用戶正執(zhí)行的SQL指令,回滾所有用戶尚未承諾的交易后立即關(guān)閉數(shù)據(jù)庫(kù))SVRMGR>shutdownabort(立即終止一切對(duì)數(shù)據(jù)庫(kù)的所有會(huì)話,關(guān)閉數(shù)據(jù)庫(kù)實(shí)例。此種方式立即關(guān)閉數(shù)據(jù)庫(kù)以后,當(dāng)下一次啟動(dòng)數(shù)據(jù)庫(kù)時(shí)‘Oracle需要做很多修復(fù)數(shù)據(jù)庫(kù)工作,所以啟動(dòng)會(huì)花較長(zhǎng)時(shí)間。)三、建立數(shù)據(jù)庫(kù)1、創(chuàng)建數(shù)據(jù)庫(kù)安裝完數(shù)據(jù)庫(kù)以后,需要根據(jù)應(yīng)用程序的需求建立一個(gè)相應(yīng)能滿足要求的數(shù)據(jù)庫(kù)。創(chuàng)建數(shù)據(jù)庫(kù)的主要步驟如下:(1)通過(guò)應(yīng)用情況設(shè)計(jì)和決定數(shù)據(jù)庫(kù)的內(nèi)容。(2)設(shè)計(jì)數(shù)據(jù)庫(kù)的結(jié)構(gòu)使得數(shù)據(jù)庫(kù)內(nèi)容緊湊和減少碎片(初步創(chuàng)建時(shí)可以使用默認(rèn)設(shè)置)。(3)安裝時(shí)事先定好ORACLE用戶的環(huán)境變量,主要有:ORACLE_SID、ORACLE_HOME和相關(guān)的路徑設(shè)置。(4)從標(biāo)準(zhǔn)例子的init.ora文件中拷貝和編輯參數(shù)文件。必須配置的參數(shù)有db_name(數(shù)據(jù)庫(kù)名稱)、control_files(控制文件名稱和位置,可以有多個(gè))和重做日志文件個(gè)數(shù)等等,其它各項(xiàng)可以在安裝數(shù)據(jù)庫(kù)時(shí)設(shè)置成默認(rèn)參數(shù)。具體有以下參數(shù)值得重視:Db_block_size:該參數(shù)設(shè)置ORACLE數(shù)據(jù)庫(kù)DatabaseBlock的大小,它代表ORACLE數(shù)據(jù)庫(kù)數(shù)據(jù)存取的最小單位,最好是操作系統(tǒng)塊大小的整數(shù)倍為宜,較大的設(shè)置值可以減少大量存取數(shù)據(jù)的時(shí)間,但會(huì)浪費(fèi)磁盤空間,該參數(shù)在創(chuàng)庫(kù)時(shí)一旦設(shè)置,便不能更改,除非重新創(chuàng)建數(shù)據(jù)庫(kù),一般設(shè)置大?。?096或8192Db_block_buffers:該參數(shù)設(shè)置ORACLE數(shù)據(jù)庫(kù)內(nèi)存緩沖區(qū)塊的個(gè)數(shù),該參數(shù)和Db_block_size的乘積即為整個(gè)數(shù)據(jù)高速緩沖區(qū)DatabaseBufferCache的大小,該值要根據(jù)系統(tǒng)物理內(nèi)存情況設(shè)置成一個(gè)比較大的數(shù)Log_checkpoint_timeout:該參數(shù)設(shè)置距上次觸發(fā)checkpoint事件過(guò)多少秒后觸發(fā)下一次checkpoint事件,該值設(shè)大可以減少磁盤I/O的頻繁程度,推薦設(shè)置(缺省設(shè)置):1800[秒]Log_buffer:該參數(shù)設(shè)置RedoLogBuffer的大小,設(shè)大該值,可以減少Redo日志文件磁盤I/O。nls_language:該參數(shù)設(shè)置國(guó)家語(yǔ)言有關(guān)的各種NLS數(shù)據(jù)顯示格式參數(shù),推薦設(shè)置:“SIMPLIFIEDCHINESE”。nls_territory:該參數(shù)設(shè)置國(guó)家慣例有關(guān)的各種NLS數(shù)據(jù)顯示格式參數(shù),推薦設(shè)置:“CHINA”shared_pool_size:該參數(shù)主要包含共享SQL池、字典高速緩沖區(qū),設(shè)大該值可以增加運(yùn)行SQL語(yǔ)句和數(shù)據(jù)字典在內(nèi)存中的占有率,以此增加數(shù)據(jù)庫(kù)SQL語(yǔ)句的執(zhí)行效率,推薦設(shè)置較大的值連接到數(shù)據(jù)庫(kù)的Server端啟動(dòng)svrmgrl,連接成internal狀態(tài)。以nomount方式啟動(dòng)數(shù)據(jù)庫(kù)SVRMGR>startupnomount使用createdatabase的sql命令創(chuàng)建數(shù)據(jù)庫(kù)主要格式:sql>createdatabasedatabasename[controlfile1[controlfile2]]2>[logfile[groupn]filespec][datafilefilespec][maxdatafilesn]3>[archivelog(noarchivelog)]注意:filespec包括文件的位置、名稱、大小。舉例:SVRMGR>createdatabasetest2>datafile7data1/oracle/dbfile/test.dbfsize100Mreuseautoextendon3>next5Mmaxsize200M4>logfilegroup17data1/oracle/dbfile/redo01.log'size30M,5>group27data1/oracle/dbfile/redo02.log'size30M6>charactersetZHS16GBK;為保證數(shù)據(jù)庫(kù)的安全性創(chuàng)建多個(gè)redolog文件和controlfiles文件。增加controlfile文件:SVRMGR>shutdown$cpcontrolfile1controlfile2$編輯initdbname.ora修改有關(guān)control_file=(path/controlfile1,path/controlfile2)的內(nèi)容重新啟動(dòng)數(shù)據(jù)庫(kù)即可完成。增加redolog的個(gè)數(shù),需要修改數(shù)據(jù)庫(kù)完成,舉例:SVRMGR>alterdatabasetestaddlogfilemember2>7data1/oracle/dbfile/redo03.log'togroup1;創(chuàng)建表空間命令和步驟:進(jìn)入svrmgrl狀態(tài),即SVRMGR>connectinternal,命令為createtablespace有關(guān)參數(shù)說(shuō)明:名稱,數(shù)據(jù)文件,位置,大小舉例:(1)創(chuàng)建新的表空間SVRMGR>createtablespacetestspacedatafile7data1/oracle/dbfile/test.dbf2>size100Mreuseautoextendonnext5Mmaxsize200M;(2)增加表空間到已存在的表空間SVRMGR>altertablespacetestspaceadddatafile7data1/oracle/dbfile/test1.dbf2>size20Mreuseautoextendonnext5Mmaxsize100M;(9)創(chuàng)建用戶(user)、授權(quán)(grant)、創(chuàng)建角色(role)Oracle數(shù)據(jù)庫(kù)安裝完成以后就有兩個(gè)系統(tǒng)用戶system和sys,如果需要?jiǎng)?chuàng)建其他用戶,首先以system用戶連接,默認(rèn)密碼為managersqlplussystem/manager(1)創(chuàng)建用戶:基本命令:sql>createuserusernameidentified{bypasswrd|externaly}2>[defaulttablespacetbname1][temporarytablespacetbname2]3>[quota10Montbspacename1][quota2Monsystem]4>profiledefault;舉例:創(chuàng)建用戶:sql>createuserjokeidentifiedbyabcd1234;創(chuàng)建用戶:sql>createuserjoke1idetifiedby1234abcdefault2>tablespacetestspacetemporaytablespacetemp_ts3>quota100Montestspacequota30Monsystem4>profiledefault;修改密碼:sql>alteruserjokeidentifiedby1234cdef;修改用戶:sql>alteruserjokeidentifiedby1234cdefdefault2>tablespacedata_tstemporarytablespacetemp_ts3>quota120Mondata_tsprofiledefault;刪除用戶:sql>dropuserjoke[cascade];(cascade選項(xiàng)代表連同用戶所有的對(duì)象一起刪除)(2)授權(quán)(grant):包括授予系統(tǒng)權(quán)限和授予用戶權(quán)限系統(tǒng)權(quán)限:命令格式:sql>grant{systemprivilege|role}[,{systemprivilege|role},...]2>to{user|role}[,{user|role}]...[withadminoption]授予權(quán)限sql>revoke{systemprivilege|role}[,{systemprivilege|role}...]2>from{user|role}[,{user|role}]...收回權(quán)限舉例:sql>grantsystemprivilegetojoke;sql>revokesystemprivilegefromjoke;對(duì)象權(quán)限:命令格式:sql>grantobjectprivilege[(column[,column])]onobjectto{user|role}2>[withgrantoption]用戶可授予的權(quán)限包括:all,alter,delete,execute,index,insert,references,select,update用戶授權(quán)的對(duì)象包括:表、視圖、序列、過(guò)程、函數(shù)、包、快照或者這些對(duì)象的同義詞。舉例:sql>grantselectonCOMFORTtojoke(目前的連接用戶授予joke對(duì)表COMFORT的select訪問(wèn)權(quán)限。)sql>grantallonSOMEFORTtojokewithgrantoption(目前的連接用戶授予joke對(duì)視圖SOMEFORT的所有權(quán)限,包括joke可以將其轉(zhuǎn)授予其他用戶或角色)sql>grantallonSOMEFORTtorole_jokewithgrantoption(將權(quán)限授予角色role_joke)創(chuàng)建角色(role)角色的含義是具有同種權(quán)限的用戶集,類似于UNIX系統(tǒng)的組的概念,即可以將相關(guān)的權(quán)限授予角色,然后將相關(guān)的角色授予相關(guān)的用戶,則此類用戶就會(huì)擁有與角色相同的權(quán)限,不用一個(gè)一個(gè)地授予。一共有三種標(biāo)準(zhǔn)的角色:①連接角色(ConnectRole),臨時(shí)用戶,尤其是那些不需要建表的用戶,一般給予他們connectrole,其他權(quán)限必須另外授予。②資源角色(ResourceRole),對(duì)經(jīng)常性訪問(wèn)數(shù)據(jù)庫(kù)或者更成熟的用戶可以授予resourcerole,這些用戶可以創(chuàng)建自己的表、序列、過(guò)程等對(duì)象。③數(shù)據(jù)庫(kù)管理員角色(DBARole),擁有所有的系統(tǒng)權(quán)限。命令格式:sql>createrolename[{notidentified|identified}]2>[{bypassword|externally}]舉例:sql>createrolemanageridentifiedexternally;sql>createroleclerkidentifiedbyaaabbb1;修改密碼:sql>alterroleclerkidentifiedbybbbccc1;授予角色權(quán)限命令和授予用戶一樣,角色的權(quán)限還可以授予用戶,關(guān)系圖所示。建表、建視圖、建索引表由表名、列、和數(shù)據(jù)類型三部分組成,對(duì)有createtable,createindex權(quán)限的用戶都可建表,建索引權(quán)限。(1)簡(jiǎn)單命令和語(yǔ)法:sql>createtabletable_name(column_namedatatype[{null|notnull}|{constraintconstraint-nameunique|primarykey}];sql>createviewview_nameasselect{*|column}fromtable_namewherecondition;sql>create[unique|bitmap]indexindex_nameontable_name(column_name[,column_name](2)舉例?建表(createtable)①直接創(chuàng)建表:sql>createtableacctinfo(2>acctdatechar(10)notnull,3>acctuservarchar(IO)notnull,4>acctstartvarchar(20)notnull,5>acctendvarchar(20)notnull,6>acctuseintnotnull,7>accthalfintnuII,8>acctipvarchar(20)notnull,9>primarykey(acctuser,acctip))10>TABLESPACETEST_SP;根據(jù)已經(jīng)存在的表創(chuàng)建新表sql>createtableacctnewasselectacctdate,acctuser,acctuse2>whereacctip='4:?建視圖(createview)sql>createviewacct_viewasselectacctuser,acctip,acctusefromacctinfo2>whereacctuse>500and(acctip='4'oracctip='5');?建索引createindex舉例sql>createindexacctindexlonacctinfo(acctip);sql>createindexacctindex2onacctinfo(acctuse,acctuser);sql>createindexacctindex3onacctinfo(acctdate,acctuser,acctuse,acctip);?修改表:sql>altertableacctinfomodify(2>acctbakvarchar2(300)null);?刪除表:sql>droptableacctinfo;?刪除表內(nèi)容而保留其結(jié)構(gòu)sql>truncatetableacctinfo;備注:以上建表和建索引部分可以通過(guò)寫成腳本文件執(zhí)行來(lái)完成

第三部分.ORACLE數(shù)據(jù)庫(kù)的應(yīng)用數(shù)據(jù)庫(kù)的應(yīng)用處理部分主要包括對(duì)數(shù)據(jù)庫(kù)表的查詢、修改、插入、刪除、建立臨時(shí)表、修改表的基本操作,通過(guò)數(shù)據(jù)庫(kù)應(yīng)用部分才能達(dá)到管理數(shù)據(jù)信息,處理各種數(shù)據(jù),完成相應(yīng)的數(shù)據(jù)處理和信息管理工作。查詢查詢查詢,select主要命令和語(yǔ)法:sql>select/*+index(index_name)*/[all|distinct|unique]select_list2>[fromtable_name]3>[wheresearch_conditions]4>[groupby[al]aggregate_free_expression[,aggregate_free_expression]....]5>[havingsearch_conditions]6>[orderbytable_name.column_name]7>[unionanother_select_querylist];關(guān)鍵字和選項(xiàng)all缺省值,指示結(jié)果含所有的行;distinct|unique結(jié)果中含有非重復(fù)行;select_list包含一項(xiàng)或多項(xiàng)以下內(nèi)容:*,表示按照createtable的順序排列的所有列,Column_name1,column_name2,...可以使用常量,算術(shù)表達(dá)式等。From決定select命令使用那些表和視圖,一般必須有這一項(xiàng);Where需要查詢的條件Orderby按照不同的列排序Groupby按照不同的列歸類Having與Groupby結(jié)合用,按指定條件過(guò)濾已經(jīng)分類的查詢UNION表示聯(lián)合多步查詢舉例:(1)基本查詢查詢所有表BCOL_REG_ACCT中的所有數(shù)據(jù):sql>select*frombcol_reg_acct;查詢BCOL_REG_ACCT中的兩列,登錄日期LOGIN_DATE和起始時(shí)間START_TIME:sql>selectLOGIN_DATE,START_TIMEfromBCOL_REG_ACCT;查詢所有LOGIN_DATE='JUN-20-1998'的兩列LOGIN_DATE和用戶用戶名LOGIN_NAME:sql>selectLOGIN_DATE,LOGIN_NAMEfromBCOL_REG_ACCT2>whereLOGIN_DATE='JUN-20-1998';查詢出所有用戶名LOGIN_NAME為abcde,登錄日期大于'JUN-20-1998'的所有三列LOGIN_DATE丄OGIN_NAME,START_TIME,并且按照登錄日期的順序排列:sql>selectLOGIN_DATE,LOGIN_NAME,START_TIMEfromBCOL_REG_ACCT2>whereLOGIN_NAME='abcde'andLOGIN_DATE>'JUN-20-1998'3>orderbyLOGIN_DATE;非等值條件查詢,查詢出所有用戶名以abc開頭,登錄時(shí)間界于JUN-10-1998和JUN-20-1998之間,連接時(shí)長(zhǎng)不等于5000的所有列,并以LOGIN_NAME反向排序:sql>select*fromBCOL_REG_ACCT2>whereLOGIN_NAMElike'abc%'3>andLOGIN_DATEbetween'JUN-10-1998'and'JUN-20-1998'4>andCONNECT_DUR!=50005>orderbyLOGIN_NAMEdesc;使用空值(NULL)查詢:查詢出LOGIN_NAME,LOGIN_DATE,如果為空值則以JUA-01-1998代替,START_TIME符合LOGIN_NAME不為空,且START_TIME為空的列。sql>selectLOGIN_NAME,nvl(LOGIN_DATE,JUA-01-1998),START_TIME2>fromBCOL_REG_ACCT3>whereLOGIN_NAMEisnotNULL4>andSTART_TiMEisNULL;基于值集的查詢,查詢出用戶名LOGIN_NAME在abcde,abcdf,abcdg,abcdh中,且日期LOGIN_DATE大于'JUN-20-1998'和小于'MAY-20-1998'的所有列并且按照LOGIN_DATE的順序排列,并按照LOGIN_DATE歸類,即每天為一類數(shù)據(jù)。Sql>select*fromBCOL_REG_ACCT2>whereLOGIN_NAMEin('abcde','abcdf,'abcdg','abcdh')3>and(acctdate>='06/20/1998'oracctdate<'05/20/1998')4>orderbyacctdate,groupbyacctdate;使用表達(dá)式查詢出符合留入字節(jié)樹大于1000的所有連接時(shí)長(zhǎng)(CONNECT_DUR)和留入字節(jié)數(shù)與加上1000再除以100的數(shù)值:sql>selectCONNECT_DUR,(BYTES_IN+1000)/100fromBCOL_REG_ACCT2>whereBYTES_IN>1000;查詢出BYTES_IN大于100*10即1000且節(jié)點(diǎn)號(hào)等于10的LOGIN_NAME空格加上NODE_ID加上兩個(gè)空格再加上(BYTES_IN+1000)/100的值:sql>selectLOGIN_NAME||''||NODE_ID||''||(BYTES_IN+1000)/1002>fromBCOL_REG_ACCTwhereBYTES_IN>100*10andnode_id=10;使用特殊的偽列查詢1周以后的日期從一個(gè)特殊的系統(tǒng)表dual。偽列主要有如下幾種:sequence.CURRVAL:上一次有序列產(chǎn)生器產(chǎn)生的序列名值。只有當(dāng)前實(shí)例會(huì)話中從該序列中選擇過(guò)一次值,這個(gè)偽列才會(huì)有效。LEVEL:查詢的深度,適用于特殊的樹查詢。Sequence.NEXTVAL:使得每次的檢索都返回下一個(gè)值ROWID:表示數(shù)據(jù)行確切的存儲(chǔ)位置。其格式是一個(gè)三個(gè)16進(jìn)制的結(jié)構(gòu)AAAAAAAA.BBBB.CCCC,AAAAAAA為該行的塊號(hào),BBBB是數(shù)據(jù)塊內(nèi)部的行號(hào),而CCCC則是數(shù)據(jù)庫(kù)中的文件IDROWNUM:被檢索數(shù)據(jù)行的序列號(hào)SYSDATE:當(dāng)前日期和時(shí)間UID:當(dāng)前用戶的標(biāo)識(shí)IDUSER:用戶登錄數(shù)據(jù)庫(kù)的用戶名sql>selectsysdate+7fromdual;sql>selectUSER.sequence.currvalfromdual;使用列和表的別名、查詢中的多表連接以及使用子查詢和distinct去掉重復(fù)記錄查詢查詢出BCOL_REG_ACCT表中的LOGIN_NAME,LOGIN_DATE,CONNECT_DUR列和ANODE_NODEINFO中的NODE_ID列,符合兩個(gè)表中的NODE_ID列相等并且LOGIN_NAME在表AUSR_ACCOUNTINFO的列LOGIN_NAME中且名字以abc開頭且沒(méi)有重名的條件,按照ANODE_NODEINFO表中的NODE_ID排序:sql>selectb.LOGIN_NAME,bLOGIN_DATE,c.NODE_ID,b.CONNECT_DUR2>fromBCOL_REG_ACCTb,ANODE_NODEINFOc3>whereb.NODE_ID=c.NODE_ID4>andb.LOGIN_NAMEin5>(selectdistinetLOGIN_NAMEfromAUSR_ACCOUNTINFO6>whereLOGIN_NAMElike'abc%')7>orderbyc.NODE_ID;Union、Intersect和Minus等操作符連接的多步查詢查詢出兩各表中滿足各自條件的用戶名,UNION即兩個(gè)查詢的并集:sql>selectLOGIN_NAMEfromBCOL_REG_ACCT2>whereCONNECTION_DUR>5OOO3>andLOGIN_NAMElike'abc%'4>UNION5>selectLOGIN_NAMEfromAUSR_ACCOUNTINFO6>whereLOGIN_NAMElike'%abc%'7>andNODE_ID=8;類似地,INTERSECT返回出現(xiàn)在所有單個(gè)查詢結(jié)果中都存在的數(shù)據(jù)行(即兩個(gè)查詢結(jié)果的交集);MINUS返回只出現(xiàn)在第一個(gè)查詢結(jié)果中且不出現(xiàn)在第二個(gè)查詢結(jié)果中的數(shù)據(jù)行(即兩個(gè)查詢的差集)。復(fù)雜查詢①遞歸查詢:構(gòu)造樹的遞歸查詢:樹查詢是在標(biāo)準(zhǔn)的select語(yǔ)句中增加兩個(gè)新子句完成。.CONNECTBY子句定義表中的各個(gè)行是如何互相聯(lián)系的,connectby子句中也可以加入更多的條件語(yǔ)句來(lái)刪除沒(méi)有必要的樹的分枝。.STARTWITH子句定義數(shù)據(jù)行查詢的初始起點(diǎn)??梢远x不同的起點(diǎn)來(lái)實(shí)現(xiàn)向上或者向下瀏覽。以下例子connectby指定半價(jià)時(shí)間必須等于前面已經(jīng)選擇過(guò)的連接時(shí)長(zhǎng)。Startwith子句指定從用戶名為abc的用戶開始。Sql>selectLOGIN_NAME,CONNECT_DUR,DISCOUNT_DUR2>fromBCOL_REG_ACCT3>connectbyDISCOUNT_DUR=priorCONNECT_DUR-4>startwithLOGIN_NAME='abc:外連接查詢:外連接即是在被連接的表中數(shù)據(jù)中加入一個(gè)空行來(lái)匹配沒(méi)有與其匹配的數(shù)據(jù),以下例子中第三行的(+)即是外連接查詢,將沒(méi)有匹配的行加入一行空行。sql>selectb.LOGIN_NAME,a.NODE_ID2>fromBCOL_REG_ACCTb,ANODE_NODEINFOa3>whereb.NODE_ID(+)=a.NODE_ID4>orderbyb.LOGTN_NAME,a.NODE_ID;相關(guān)子查詢:相關(guān)子查詢就是在其where條件中引用了主查詢中表的子查詢:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論