第一篇:oracle畢業(yè)論文
目 錄
摘要........................................................................................................................................................iii Abstract...............................................................................................................................................iv 第一章 緒論.........................................................................................................................................1 1.1 國(guó)內(nèi)外研究動(dòng)態(tài)..................................................................................................................1 1.2 容災(zāi)備份系統(tǒng)的現(xiàn)狀分析...............................................................................................1 第二章 數(shù)據(jù)庫(kù)備份方案...................................................................................................................3 2.1 備份文件...............................................................................................................................3 2.1.1 定義...............................................................................................................................3 2.1.2 主要的內(nèi)容...................................................................................................................4 2.1.3 優(yōu)先級(jí)別.......................................................................................................................4 2.1.4文件之間的轉(zhuǎn)化............................................................................................................4 2.2 備份恢復(fù)方案......................................................................................................................4 2.2.1 備份恢復(fù)的分類(lèi)...........................................................................................................5 2.2.2 備份方案的介紹...........................................................................................................5 2.3 數(shù)據(jù)庫(kù)的備份策略.............................................................................................................5 2.3.1 概述...............................................................................................................................5 第三章 備份與恢復(fù)功能設(shè)計(jì)與實(shí)現(xiàn)............................................................................................6 3.1 冷備份(脫機(jī)備份).........................................................................................................6 3.1.1 定義...............................................................................................................................6 3.1.2 優(yōu)點(diǎn)與缺點(diǎn)...................................................................................................................6 3.1.3 步驟...............................................................................................................................6 3.1.4 備份恢復(fù)功能設(shè)計(jì)與實(shí)現(xiàn)...........................................................................................8 3.2 熱備份恢復(fù)(聯(lián)機(jī)備份恢復(fù))....................................................................................10 3.2.1定義..............................................................................................................................10 3.2.2 優(yōu)點(diǎn)與缺點(diǎn).................................................................................................................10 3.2.3 備份設(shè)計(jì)與實(shí)現(xiàn).........................................................................................................10 第四章 總結(jié).......................................................................................................................................38 參考文獻(xiàn)..............................................................................................................................................39
-i-
謝 辭.....................................................................................................................................................41
-ii-
Oracle database 備份與恢復(fù)
摘要:隨著信息化的發(fā)展,數(shù)據(jù)對(duì)我們?nèi)粘I钪杏兄e足輕重的影響。生活不能缺少數(shù)據(jù),因此數(shù)據(jù)的備份和恢復(fù)在當(dāng)前至關(guān)重要。它能保證數(shù)據(jù)的完整性、安全性、一致性。它也使數(shù)據(jù)在非正常情況下丟失后,還能恢復(fù)到事故前的狀態(tài),確保損失最少,風(fēng)險(xiǎn)最少。
本文主要介紹在Linux服務(wù)器端,通過(guò)oracle數(shù)據(jù)庫(kù)的SQL*plus工具,對(duì)oracle數(shù)據(jù)庫(kù)進(jìn)行冷備份恢復(fù)(脫機(jī)備份)和熱備份恢復(fù)(聯(lián)機(jī)備份),分別對(duì)數(shù)據(jù)庫(kù)的參數(shù)文件,控制文件,數(shù)據(jù)文件,日志文件進(jìn)行備份與恢復(fù)。通過(guò)模擬不同情況下,數(shù)據(jù)庫(kù)文件丟失的情況下,對(duì)數(shù)據(jù)庫(kù)進(jìn)行完全恢復(fù)和不完全恢復(fù)。本文主要詳細(xì)闡述了不完全恢復(fù)時(shí)需要注意的要點(diǎn)和不完全恢復(fù)的特點(diǎn)。通過(guò)本文對(duì)備份恢復(fù)情況的研究,可以編寫(xiě)相關(guān)的數(shù)據(jù)庫(kù)備份恢復(fù)腳本,簡(jiǎn)化備份步驟,希望能實(shí)現(xiàn)Linux操作系統(tǒng)下,數(shù)據(jù)庫(kù)自動(dòng)備份與恢復(fù)。
關(guān)鍵詞:oracle;備份;恢復(fù)
-iii-
Oracle database backup and recovery
Abstract:With the development of information,the data has an important influence in our daily life.Our life can’t lack of data,so that data backup and recovery in current is very important.It can guarantee the integrity,the consistency and security of the data.It also can ensure that the data can return to normal statue after lose data.This paper describes the Linux server, oracle database through SQL * plus tools, cold oracle database backup and recovery(offline backup)and hot backup and recovery(online backup), respectively, the parameters of the database files, control files, data files the log files are backed up and restored.By simulating different scenarios, the database files are missing in the case, the database is fully recovered and incomplete recovery.This paper elaborates incomplete recovery points to be noted and incomplete recovery features.Through this case study on backup and recovery, you can write relevant database backup and recovery scripts, simplify backup step, hoping to achieve the Linux operating system, automatic database backup and recovery.Key words:oracle;backup;recovery
-iv-
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
外部原因失效時(shí),相同日志組的鏡像日志一起失效。
2.1.2 主要的內(nèi)容
Pfile:系統(tǒng)的參數(shù)文件,可用vim,vi等編輯器進(jìn)行修改,其文件名一般是init
System01.dbf:記錄系統(tǒng)運(yùn)行的信息,包含所有的數(shù)據(jù)字典,PL/SQL程序代碼及其他系統(tǒng)信息。
Sysaux01.dbf:system01.dbf文件的輔助文件,存放數(shù)據(jù)庫(kù)系統(tǒng)活動(dòng)的工具,例如LogMiner。
Undotbs01.dbf:存放系統(tǒng)運(yùn)行時(shí)的回退信息,即DML操作后的舊數(shù)據(jù)信息。Users01.dbf:新建用戶(hù)未指定存儲(chǔ)空間時(shí),默認(rèn)數(shù)據(jù)存放的文件。Example01.dbf:存放事例數(shù)據(jù)信息。
2.1.3 優(yōu)先級(jí)別
Oracle 啟動(dòng)讀取參數(shù)文件的順序,如果個(gè)文件都不存在,則Oracle會(huì)報(bào)錯(cuò): spfile
從spfile來(lái)生成pfile create pfile from spfile ,執(zhí)行完畢后,pfile將$ORACLE_HOME/dbs/init$ORACLE_SID.ora也可以指定pfile 的路徑:create pfile = ‘
第 4 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
2.2.1 備份恢復(fù)的分類(lèi)
按照備份恢復(fù)的方式,可以分為邏輯備份、冷備份(脫機(jī)備份)、熱備份,其中,熱備份和冷備份合稱(chēng)為物理備份。按照備份的工具,可以分為EXP/IMP備份、操作系統(tǒng)備份RMAN、第三方工具備份,如VERITAS等。
2.2.2 備份方案的介紹
邏輯備份是指只備份數(shù)據(jù)庫(kù)中的數(shù)據(jù)但不記錄數(shù)據(jù)物理位置的一種備份。導(dǎo)出為數(shù)據(jù)庫(kù)作一個(gè)二進(jìn)制的備份,并且這個(gè)備份只能由其姐妹程序imp來(lái)讀取
操作系統(tǒng)備份包括冷備份和熱備份。操作系統(tǒng)備份和上面的邏輯備份有本質(zhì)的區(qū)別,它將拷貝整個(gè)的數(shù)據(jù)文件。冷備份在文件級(jí)備份開(kāi)始前數(shù)據(jù)庫(kù)必須徹底關(guān)閉。熱備份是當(dāng)數(shù)據(jù)庫(kù)打開(kāi)時(shí)的操作系統(tǒng)備份。
Recovery Manager(RMAN)是一個(gè)使DBA能很方便地對(duì)數(shù)據(jù)庫(kù)執(zhí)行備份和恢復(fù)任務(wù)的oracle應(yīng)用工具,能夠提供DBA對(duì)企業(yè)數(shù)據(jù)庫(kù)備份與恢復(fù)操作的集中控制。
2.3 數(shù)據(jù)庫(kù)的備份策略
2.3.1 概述
爭(zhēng)取的備份策略不僅能保證數(shù)據(jù)庫(kù)服務(wù)器的7*24小時(shí)的高性能的運(yùn)行,還能保證備份與恢復(fù)的快速性與可靠性。采用多級(jí)備份就是為了減少每天備份所需要的時(shí)間,而保證系統(tǒng)有良好的恢復(fù)性?;謴?fù)時(shí)間與備份時(shí)間要有一個(gè)權(quán)衡。比如只要進(jìn)行一個(gè)數(shù)據(jù)庫(kù)的全備份,然后就只備份歸檔也可以保證能把數(shù)據(jù)庫(kù)恢復(fù)到最新的狀態(tài),但是這樣的恢復(fù)時(shí)間將是不可容忍的。
第 5 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
第三章 備份與恢復(fù)功能設(shè)計(jì)與實(shí)現(xiàn)
3.1 冷備份(脫機(jī)備份)
3.1.1 定義
冷備份(脫機(jī)備份)是當(dāng)數(shù)據(jù)庫(kù)的一切可以被讀取和寫(xiě)入的數(shù)據(jù)庫(kù)物理文件(參數(shù)文件、控制文件,數(shù)據(jù)文件等)具有一樣的系統(tǒng)改變號(hào)(SCN)時(shí)才能進(jìn)行的數(shù)據(jù)庫(kù)的一致性備份,數(shù)據(jù)庫(kù)保持在同一狀態(tài)的唯一方法是將數(shù)據(jù)庫(kù)正常關(guān)閉,因此只在數(shù)據(jù)庫(kù)正常關(guān)閉情況下的備份才算是一致性備份。
冷備份既適用于archivelog模式,也適用于noarchivelog模式。
3.1.2 優(yōu)點(diǎn)與缺點(diǎn)
優(yōu)點(diǎn):
快速并且相對(duì)簡(jiǎn)單的備份方法(因?yàn)閮H僅需要拷貝文件)。容易恢復(fù)至某個(gè)時(shí)間點(diǎn)上(僅需將文件拷貝回去)。低度維護(hù),高度安全。缺點(diǎn):
單獨(dú)使用時(shí),只能提供到“某一時(shí)間點(diǎn)上”的恢復(fù)。在冷備份過(guò)程中,數(shù)據(jù)庫(kù)必須是關(guān)閉狀態(tài)。
3.1.3 步驟
(1)、查看數(shù)據(jù)庫(kù)文件物理位置。
第 6 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
圖 2.1 數(shù)據(jù)文件
圖2.2 控制文件
第 7 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
圖2.3 日志文件
圖2.4 參數(shù)文件
(2)關(guān)閉運(yùn)行的數(shù)據(jù)庫(kù)。
(3)備份參數(shù)文件,控制文件,數(shù)據(jù)文件,日志文件到指定目錄下。
3.1.4 備份恢復(fù)功能設(shè)計(jì)與實(shí)現(xiàn)
(1)建立測(cè)試表test,并且插入數(shù)據(jù)‘1’,恢復(fù)后,數(shù)據(jù)應(yīng)該還是存在的
圖2.5 創(chuàng)建測(cè)試表
圖2.6(2)關(guān)閉數(shù)據(jù)庫(kù),執(zhí)行備份
圖2.7 執(zhí)行冷備份
(3)插入另外一條數(shù)據(jù)‘2’,恢復(fù)時(shí)應(yīng)該丟失的數(shù)據(jù)
第 8 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
圖2.8 插入驗(yàn)證信息
(4)關(guān)閉數(shù)據(jù)庫(kù),刪除所有的文件:數(shù)據(jù)文件,控制文件,參數(shù)文件,日志文件
圖2.9 刪除文件
(5)啟動(dòng)數(shù)據(jù)庫(kù)
圖2.10 啟動(dòng)數(shù)據(jù)庫(kù)
(6)恢復(fù)冷備份的文件到各自的文件夾
圖2.11 冷備份的恢復(fù)
(7)驗(yàn)證冷備份的恢復(fù),數(shù)據(jù)‘2’丟失,只有數(shù)據(jù)‘1’,備份后插入的數(shù)
第 9 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
據(jù)不存在。
圖2.12 驗(yàn)證恢復(fù)
3.2 熱備份恢復(fù)(聯(lián)機(jī)備份恢復(fù))
3.2.1定義
數(shù)據(jù)庫(kù)熱備份是指數(shù)據(jù)庫(kù)在啟動(dòng)運(yùn)行的狀態(tài)下,對(duì)數(shù)據(jù)庫(kù)的控制文件、參數(shù)文件、數(shù)據(jù)文件等進(jìn)行備份操作。熱備份是用戶(hù)管理備份恢復(fù)的一種方式,也是除了RMAN備份之外比較經(jīng)常使用的一種備份方式。
熱備份僅僅適用于archivelog狀態(tài)。
3.2.2 優(yōu)點(diǎn)與缺點(diǎn)
優(yōu)點(diǎn):
可以在表空間或數(shù)據(jù)文件級(jí)備份,備份的時(shí)間短。備份時(shí)數(shù)據(jù)庫(kù)仍可以使用。
可達(dá)到秒級(jí)恢復(fù)(恢復(fù)到某一時(shí)間點(diǎn)上)缺點(diǎn):
不能出錯(cuò),否則備份數(shù)據(jù)不可用。備份方法相對(duì)復(fù)雜,難于維護(hù)。
3.2.3 備份設(shè)計(jì)與實(shí)現(xiàn)
凍結(jié)塊頭-->控制SCN在備份時(shí)不發(fā)生變化 進(jìn)行物理拷貝
第 10 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
解凍塊頭-->讓SCN可以變化(當(dāng)對(duì)SCN解凍后,系統(tǒng)會(huì)自動(dòng)更新SCN至最新的狀態(tài))查看是否在自動(dòng)歸檔模式:
圖2.13 非歸檔模式
如果不是則啟動(dòng)自動(dòng)歸檔模式:
圖2.14 啟動(dòng)歸檔模式
第 11 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
圖2.15 在線備份數(shù)據(jù)文件
圖2.16 在線備份控制文件
圖2.17 備份參數(shù)文件和重做日志歸檔文件
完全恢復(fù):
(1)用戶(hù)表空間數(shù)據(jù)文件受損
A、查看數(shù)據(jù)庫(kù)是否運(yùn)行在歸檔模式,確保能把數(shù)據(jù)完全恢復(fù),如果不是,則設(shè)置為自動(dòng)歸檔模式
圖2.18 歸檔模式
第 12 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
B、在用戶(hù)表空間創(chuàng)建測(cè)試表,并且插入測(cè)試數(shù)據(jù)
圖2.19 插入驗(yàn)證數(shù)據(jù)
C、對(duì)users表空間數(shù)據(jù)文件進(jìn)行熱備份
圖2.20 備份用戶(hù)空間
D、插入熱備份后的另外一條數(shù)據(jù),驗(yàn)證熱備份完全恢復(fù)
圖2.21 插入測(cè)試數(shù)據(jù)
第 13 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
E、關(guān)閉數(shù)據(jù)庫(kù),刪除用戶(hù)表空間文件,模擬出錯(cuò)
圖2.22 模擬故障
查表v$recover_file,用戶(hù)數(shù)據(jù)文件需要恢復(fù)
圖2.23 查看需要回復(fù)的數(shù)據(jù)文件
如果實(shí)際中,數(shù)據(jù)庫(kù)需要對(duì)外服務(wù),但是用戶(hù)數(shù)據(jù)文件尚未修復(fù),可以選擇先把數(shù)據(jù)文件離線再進(jìn)行修復(fù)。
圖2.24 離線數(shù)據(jù)文件
第 14 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
圖2.25 恢復(fù)離線的數(shù)據(jù)文件
F、查看驗(yàn)證熱備份的數(shù)據(jù),確認(rèn)是否完全恢復(fù),重做數(shù)據(jù)文件到當(dāng)前的時(shí)間點(diǎn),確保備份后的數(shù)據(jù)還在,前提是要處于歸檔模式,切歸檔重做文件都沒(méi)被刪除
圖2.26 查看熱備份的效果
(2)用戶(hù)表空間數(shù)據(jù)文件受損且無(wú)備份的恢復(fù) 第一種情況,先刪除數(shù)據(jù)文件,在觸發(fā)檢查點(diǎn)
第 15 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
A、創(chuàng)建用戶(hù)表空間做測(cè)試
圖2.27 創(chuàng)建測(cè)試數(shù)據(jù)
B、刪除用戶(hù)表空間,模擬故障,表格還在的原因是因?yàn)閿?shù)據(jù)已經(jīng)緩存到內(nèi)存了,查找內(nèi)容實(shí)際是在內(nèi)存找
圖2.28 模擬故障
C、當(dāng)觸發(fā)檢查點(diǎn),內(nèi)存數(shù)據(jù)會(huì)寫(xiě)盤(pán),然而查找數(shù)據(jù)的話,沒(méi)改變數(shù)據(jù)內(nèi)容,寫(xiě)盤(pán)的時(shí)候不需要修改內(nèi)容,故數(shù)據(jù)文件test.dbf不存在也不會(huì)報(bào)錯(cuò),但是再查找表的內(nèi)容的時(shí)候,要從磁盤(pán)讀,因此發(fā)現(xiàn)了數(shù)據(jù)文件不存在
圖2.29 數(shù)據(jù)文件故障
第 16 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
D、關(guān)閉系統(tǒng),然后啟動(dòng)后發(fā)現(xiàn),數(shù)據(jù)文件處于recover狀態(tài)
圖2.30 recover狀態(tài)的數(shù)據(jù)文件
E、創(chuàng)建丟失的數(shù)據(jù)文件,恢復(fù)文件的內(nèi)容
圖2.31 創(chuàng)建需要的文件
圖2.32 查看數(shù)據(jù)文件狀態(tài)
第 17 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
F、驗(yàn)證數(shù)據(jù)是否還是存在,數(shù)據(jù)還在的條件是,歸檔日志文件存在的時(shí)間要比表空間創(chuàng)建的時(shí)間要久遠(yuǎn),才有重做日志文件支持完全恢復(fù)。
圖2.33 驗(yàn)證恢復(fù)
第二種情況:先觸發(fā)檢查點(diǎn),在刪除數(shù)據(jù)文件
圖2.34 情況二
第 18 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
圖2.34 數(shù)據(jù)文件需要恢復(fù)
圖2.35 恢復(fù)后的數(shù)據(jù)
(3)System表空間數(shù)據(jù)文件或者大量數(shù)據(jù)文件受損 A、對(duì)system表空間進(jìn)行熱備份
圖2.35 熱備份
第 19 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
B、刪除system數(shù)據(jù)文件,模擬數(shù)據(jù)文件損壞
圖2.36 刪除數(shù)據(jù)文件
C、把熱備份的數(shù)據(jù)文件重新拷回去,恢復(fù)系統(tǒng)數(shù)據(jù)文件
圖2.37 恢復(fù)數(shù)據(jù)文件
(4)回滾文件損壞的恢復(fù)
A、查看回滾表空間的相關(guān)信息(回滾文件可以在線刪除)
圖2.38 回滾表空間信息
B、刪除undo數(shù)據(jù)文件,啟動(dòng)數(shù)據(jù)庫(kù)
圖2.39 模擬故障
第 20 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
圖2.40 故障
C、把回滾數(shù)據(jù)文件離線,啟動(dòng)數(shù)據(jù)庫(kù)
圖2.41 離線數(shù)據(jù)文件
D、創(chuàng)建一個(gè)新的回滾表空間,并修改參數(shù)undo_tablespace,使undotbs1能成功刪除
圖2.42 創(chuàng)建回滾表空間
圖2.43 創(chuàng)建修改回滾表空間
第 21 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
E、創(chuàng)建測(cè)試表test
圖2.44 創(chuàng)建測(cè)試數(shù)據(jù)
F、關(guān)閉數(shù)據(jù)庫(kù),發(fā)現(xiàn)數(shù)據(jù)庫(kù)一直關(guān)閉不了,掛起了,查看警告文件
圖2.45 關(guān)機(jī)掛起
第 22 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
圖2.46 查看跟蹤文件
G、啟動(dòng)數(shù)據(jù)庫(kù)
圖2.47 故障
H、修改參數(shù)文件pfile,增加一行
圖2.48 修改SPFILE
圖2.48 啟動(dòng)數(shù)據(jù)庫(kù)
(5)臨時(shí)文件損壞的修復(fù) A、當(dāng)控制文件不需要重建的時(shí)候
第 23 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
圖2.49 模擬故障
B、控制文件重建的時(shí)候,因?yàn)榭刂莆募膭?chuàng)建不包含temp的路徑,若創(chuàng)建時(shí)指定會(huì)報(bào)錯(cuò),故在啟動(dòng)數(shù)據(jù)庫(kù)后要手工綁定。
圖2.50 模擬故障2
圖2.51 查看臨時(shí)表空間
圖2.52 大查詢(xún)
圖2.53 手工創(chuàng)建臨時(shí)表空間
不完全恢復(fù)
(1)基于time時(shí)間的恢復(fù)
基于時(shí)間的恢復(fù)能將數(shù)據(jù)庫(kù)通過(guò)不完全恢復(fù),到過(guò)去的某一時(shí)間點(diǎn),經(jīng)常被用在誤操作導(dǎo)致的刪除數(shù)據(jù),在備機(jī)上將數(shù)據(jù)庫(kù)恢復(fù)至被刪除時(shí)間點(diǎn)之前的狀態(tài),然后把該表導(dǎo)出到正式環(huán)境,以挽回丟失數(shù)據(jù)。
第 24 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
A、建立測(cè)試表test,插入測(cè)試數(shù)據(jù)
圖2.54 創(chuàng)建測(cè)試數(shù)據(jù)表
B、熱備份除temp表空間以外所有的數(shù)據(jù)文件,雖然恢復(fù)的數(shù)據(jù)在users表空間,但是不完全恢復(fù)基于時(shí)間的恢復(fù),所有的表空間數(shù)據(jù)文件都應(yīng)該恢復(fù)到同一個(gè)時(shí)間點(diǎn)上,因此,需要備份所有數(shù)據(jù)文件。
圖2.55 熱備份所有文件
第 25 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
C、繼續(xù)插入測(cè)試數(shù)據(jù),熱備份后的數(shù)據(jù),如果僅僅恢復(fù)備份,數(shù)據(jù)應(yīng)該不存在,查看數(shù)據(jù)丟失之前的時(shí)間點(diǎn),用于不完全恢復(fù)的時(shí)間參考。
圖2.54 繼續(xù)創(chuàng)建測(cè)試數(shù)據(jù)
D、刪除測(cè)試數(shù)據(jù)表,關(guān)閉數(shù)據(jù)庫(kù),拷回?zé)醾浞?,啟?dòng)到mount狀態(tài),根據(jù)時(shí)間點(diǎn)恢復(fù)。
圖2.55
E、重新以resetlogs方式打開(kāi)數(shù)據(jù)庫(kù),查看丟失數(shù)據(jù)是否存在。
圖2.56 驗(yàn)證
(2)基于改變scn的恢復(fù)
第 26 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
基于改變scn號(hào)(system change number)的恢復(fù)可以將數(shù)據(jù)庫(kù)不完全恢復(fù)到過(guò)去的某一個(gè)scm改變點(diǎn),也常用于在誤操作刪除數(shù)據(jù)后,在備用機(jī)上將數(shù)據(jù)庫(kù)恢復(fù)到刪除scn之前,然后把表導(dǎo)出到正式的環(huán)境,挽回丟失的數(shù)據(jù)。
圖2.57
圖2.58
第 27 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
圖2.59(3)控制文件損壞的恢復(fù) *單個(gè)控制文件被破壞
由于數(shù)據(jù)庫(kù)的三個(gè)控制文件都是相互備份的,因此,當(dāng)損壞一個(gè)數(shù)據(jù)文件的時(shí)候,可以從另外的兩個(gè)數(shù)據(jù)文件拷貝創(chuàng)建新的數(shù)據(jù)文件,名字相同即可?;蛘甙裵file中控制文件的數(shù)量改變?yōu)閮蓚€(gè),重新以pfile啟動(dòng)數(shù)據(jù)庫(kù)
圖2.60
第 28 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
圖2.61 *多個(gè)控制文件被破壞
在很多個(gè)控制文件都被破壞的情況下,如果沒(méi)有對(duì)控制文件做備份,那么只能通過(guò)重建控制文件生成。在創(chuàng)建控制文件的時(shí)候,應(yīng)該很清楚的了解到每一個(gè)數(shù)據(jù)文件,日志文件的具體位置,確保在重建數(shù)據(jù)文件之后,數(shù)據(jù)庫(kù)的正確性,并且,在重建控制文件的時(shí),是不包含temp01.dbf數(shù)據(jù)文件的,只能在打開(kāi)數(shù)據(jù)庫(kù)后,進(jìn)行temp表空間的重新建立,以達(dá)到temp表空間的使用。
圖2.62
第 29 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
圖2.63(4)日志文件損壞的恢復(fù)
*正常關(guān)機(jī)情況下非當(dāng)前聯(lián)機(jī)日志文件被破壞
第 30 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
正常關(guān)閉DB時(shí)緩存均已寫(xiě)盤(pán),且logfile已歸檔,故僅需clear logfile 重新生成丟失的非當(dāng)前日志文件即可,無(wú)數(shù)據(jù)丟失;若日志未歸檔,必須加unarchived參數(shù),才會(huì)允許重新生成日志文件,并標(biāo)志所有備份失效,應(yīng)該重做全備份。
圖2.64
圖2.65 *正常關(guān)機(jī)情況下當(dāng)前聯(lián)機(jī)(或所有)日志文件被破壞
第 31 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
正常關(guān)閉DB時(shí)緩存均已寫(xiě)盤(pán),且logfile已歸檔,因此僅需until cancel 取消系統(tǒng)查找當(dāng)前聯(lián)機(jī)日志,并且resetlogs重新生成對(duì)視的當(dāng)前聯(lián)機(jī)日志文件即可,無(wú)數(shù)據(jù)丟失。
圖2.66
圖2.67
第 32 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
*DB運(yùn)行時(shí)或非正常關(guān)機(jī)的情況下已歸檔active日志文件被破壞
圖2.68 系統(tǒng)suggestion提示文件正確即可回車(chē)確認(rèn)使用該文件進(jìn)行重做,提示錯(cuò)誤則可手工輸入filename使用指定文件進(jìn)行重做,這兩種重做都是單步進(jìn)行的,重做完本歸檔或者日志文件后,又會(huì)繼續(xù)提示指定用來(lái)重做的下一個(gè)歸檔或日志文件,而auto則自動(dòng)尋找所有歸檔或日志文件進(jìn)行重做,非單步進(jìn)行,后續(xù)歸檔或日志文件的重做無(wú)提示等待確認(rèn)
圖2.69
第 33 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
前一個(gè)歸檔或日志文件已經(jīng)完成恢復(fù)重做,不再需要,且再次提示的用于后續(xù)恢復(fù)的歸檔文件是錯(cuò)誤的而應(yīng)該使用當(dāng)前日志文件進(jìn)行恢復(fù),因此手工輸入當(dāng)前日志文件名進(jìn)行恢復(fù)。
因active日志已經(jīng)被歸檔,因此oracle數(shù)據(jù)庫(kù)可以到歸檔文件或者current日志文件中找到需要的數(shù)據(jù),以進(jìn)行實(shí)例恢復(fù),次過(guò)程沒(méi)有數(shù)據(jù)丟失,最后resetlogs用來(lái)重新生成已經(jīng)丟失的歸檔active的日志文件。
*DB運(yùn)行時(shí)或非正常關(guān)機(jī)情況下未歸檔active或current日志文件被破壞
圖2.70
圖2.71
第 34 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
圖2.72 因active/current日志并沒(méi)有被歸檔,所以數(shù)據(jù)庫(kù)沒(méi)辦法到歸檔日志中找到需要數(shù)據(jù)進(jìn)行數(shù)據(jù)庫(kù)的實(shí)例恢復(fù),數(shù)據(jù)文件在沒(méi)有歸檔active或current日志文件上不一致,并且沒(méi)辦法使用已經(jīng)丟失的沒(méi)有歸檔文檔active或當(dāng)前日志文件把數(shù)據(jù)文件重做到一致的時(shí)間點(diǎn)上,只可以通過(guò)全備份進(jìn)行不完全恢復(fù),將所有數(shù)據(jù)文件時(shí)間點(diǎn)重做到最后一個(gè)可用日志文件中的最后一條重做記錄處,其后丟失的未歸檔active或當(dāng)前日志文件通過(guò)resetlogs重新生成而未進(jìn)行重做,故有數(shù)據(jù)丟失,但數(shù)據(jù)仍一致的,所有數(shù)據(jù)文件均處于最后一個(gè)日志文件中最后一條重做記錄所對(duì)應(yīng)的時(shí)間點(diǎn)處。
第 35 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
*DB運(yùn)行時(shí)或非正常關(guān)機(jī)情況下未歸檔active或current日志文件被破壞(無(wú)備份)
圖2.73
圖2.74
第 36 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
圖2.75
圖2.76 因current/active日志并沒(méi)有歸檔,因此數(shù)據(jù)庫(kù)沒(méi)辦法到歸檔日子文件中找到需要的數(shù)據(jù)進(jìn)行實(shí)例恢復(fù),數(shù)據(jù)文件在沒(méi)有歸檔active或current當(dāng)前日志文件上是不一致的,并且沒(méi)有全備份重做恢復(fù)到相同的時(shí)間點(diǎn)上面,只能通過(guò)設(shè)置_allow_resetlogs_corruption=true隱含參數(shù),并resetlogs重新生成丟失的未歸檔active或current日志文件,使數(shù)據(jù)庫(kù)在不一致情況下啟動(dòng)以便備出數(shù)據(jù),這種操作會(huì)有數(shù)據(jù)丟失。
第 37 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
第四章 總結(jié)
保證oracle數(shù)據(jù)庫(kù)的安全是系統(tǒng)安全的重要組成部分,必須要設(shè)計(jì)完善的數(shù)據(jù)庫(kù)備份和恢復(fù)方案。Oracle提供的各種工具結(jié)合起來(lái)使用能夠使數(shù)據(jù)庫(kù)的備份和恢復(fù)變得簡(jiǎn)單。在實(shí)際的oracle數(shù)據(jù)庫(kù)的備份和恢復(fù)中,會(huì)有許多不同的和復(fù)雜的情況出現(xiàn),針對(duì)不同的情況,要本著使數(shù)據(jù)具有最大的可恢復(fù)性和恢復(fù)時(shí)間最短的原則去進(jìn)行數(shù)據(jù)庫(kù)的恢復(fù),這需要大量的實(shí)驗(yàn)和經(jīng)驗(yàn)積累。
第 38 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
參考文獻(xiàn)
[1] Thomas Kyte.Expert One-on-One[M].Apress,2003.8 [2] Benjamin Rosenzweig,Elena Silvestrova Rakhimov.Oracle PLSQL實(shí)例精解第4版[M].Prentice Hall PTR,2009.6 [3] Thomas Kyte.Expert Oracle Database Architecture 2nd Edition[M].Apress,2010.7 [4] Administrator's Guide.oracle公司
[5] Backup and Recovery Advanced User's Guide.oracle公司 [6] Backup and Recovery Basics.oracle公司
[7] 李丙洋.涂抹oracle--三思筆記之一步一步學(xué)oracle[M]中國(guó)水利水電出版社,2010.1 [8] Karen Morton.Oracle SQL高級(jí)編程[M].人民郵電出版社,2011.11 [9] 梁敬彬,梁敬弘.收獲不止oracle[M].電子工業(yè)出版社,2013.5 [10] 蓋國(guó)強(qiáng).循序漸進(jìn)oracle數(shù)據(jù)庫(kù)管理、優(yōu)化與備份恢復(fù)[M].人民郵電出版社,2011.8 [11] Lan Abramson,Micheael Abbey,Michael J.Corey,竇朝輝.oracle database 11g:初學(xué)者指南[M].清華大學(xué)出版社,2010-01 [12] 蓋國(guó)強(qiáng).oracle dba手記3:數(shù)據(jù)庫(kù)性能優(yōu)化與內(nèi)部原理解析[M].電子工業(yè)出版社,2011.9 [13] K Gopalakrishnan,賈洪峰,梁濤,郭紹明.oracle database 11g Rac手冊(cè)[M].清華大學(xué)出版社,2012.6 [14] John Beresniewicz,Adrian Billington,Martin Buchi.oracle PL/SQL實(shí)戰(zhàn)[M].人民郵電出版社,2012.11 [15] 蒙邵良,oracle dba高效入職指南[M].清華大學(xué)出版社,2012.1 [16] 郭鄭州,陳軍紅.oracle 完全學(xué)習(xí)手冊(cè)[M].清華大學(xué)出版社,2011.1 [17] 包光磊.臨危不懼:oracle 11g 數(shù)據(jù)庫(kù)恢復(fù)技術(shù)[M].電子工業(yè)出版社,2012.7 [18] Robert G.Freeman,Matthew Hart,王念濱,陳子陽(yáng).oracle database 11g Rman備份與恢復(fù)[M].清華大學(xué)出版社,2011.4
第 39 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
[19] Edward Whalen,陳曙暉.基于Linux平臺(tái)的oracle database 10g管理[M].清華大學(xué)出版社,2007.1
[20] 林樹(shù)澤,歷鐵帥,何會(huì)軍.oracle 數(shù)據(jù)庫(kù)管理之道[M].清華大學(xué)出版社,2012.7
第 40 頁(yè)
共 41 頁(yè)
南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)
謝 辭
論文工作接近尾聲,本科學(xué)習(xí)生涯即將結(jié)束。我要感謝大學(xué)期間老師、同學(xué)們對(duì)我的幫助和指導(dǎo),特別是在論文寫(xiě)作期間,譚敏生院長(zhǎng)對(duì)我的論文指導(dǎo)跟審查,使我的論文得以順利完成。
最后我想談?wù)勥@篇論文和系統(tǒng)存在的不足。這篇論文的寫(xiě)作以及修改過(guò)程,也是我認(rèn)識(shí)到自己知識(shí)與經(jīng)驗(yàn)缺乏的過(guò)程。雖然我盡可能地收集資料,竭盡所能運(yùn)用自己所學(xué)的知識(shí)進(jìn)行論文寫(xiě)作,但是我的論文還存在許多不足之處,有待改進(jìn)。由于本人水平有限,對(duì)某些概念和方法的理解還不是很深刻,以致文章的闡述缺乏足夠的說(shuō)服力,請(qǐng)各位評(píng)委老師批評(píng)指正。通過(guò)這次論文的寫(xiě)作,我個(gè)人在信息檢索、閱讀寫(xiě)作、基礎(chǔ)知識(shí)、溝通能力等方面都得到了一定程度的提高。這是我很欣慰的地方。但是,這篇論文的寫(xiě)作以及分析的過(guò)程,也是我越來(lái)越認(rèn)識(shí)到自己知識(shí)與分析能力薄弱的過(guò)程。雖然,我盡可能地收集材料,竭盡所能運(yùn)用自己所學(xué)的知識(shí)進(jìn)行的論文寫(xiě)作和分析,但論文還是存在許多不足之處分析不透徹或者建議不具體,在以后的研究中還需要努力。所以請(qǐng)各位老師多批評(píng)指正,讓我在今后的學(xué)習(xí)與工作中做到更好。
第 41 頁(yè)
共 41 頁(yè)
第二篇:oracle語(yǔ)法
第一篇 基本操作
--解鎖用戶(hù) alter user 用戶(hù) account unlock;--鎖定用戶(hù) alter user 用戶(hù) account lock;alter user scott account unlock;
--創(chuàng)建一個(gè)用戶(hù)yc 密碼為a create user 用戶(hù)名 identified by 密碼; create user yc identified by a;
--登錄不成功,會(huì)缺少create session 權(quán)限,賦予權(quán)限的語(yǔ)法 grant 權(quán)限名 to 用戶(hù); grant create session to yc;
--修改密碼 alter user 用戶(hù)名 identified by 新密碼; alter user yc identified by b;
--刪除用戶(hù) drop user yc;
--查詢(xún)表空間
select *from dba_tablespaces;--查詢(xún)用戶(hù)信息
select *from dba_users;--創(chuàng)建表空間
create tablespace ycspace datafile 'E:oracleappproduct11.2.0dbhome_1oradataycspace.dbf' size 2m autoextend on next 2m maxsize 5m offline;
--創(chuàng)建臨時(shí)表空間
create temporary yctempspace tempfile 'E:oracleappproduct11.2.0dbhome_1oradataycspace.dbf' size 2m autoextend on next 2m maxsize 5m offline;
--查詢(xún)數(shù)據(jù)文件
select *from dba_data_files;
--修改表空間
--
1、修改表空間的狀態(tài)
--默認(rèn)情況下是online,只有在非離線情況下才可以進(jìn)行修改
alter tablespace ycspace offline;--離線狀態(tài),不允許任何對(duì)象對(duì)該表空間的使用,使用情況:應(yīng)用需要更新或維護(hù)的時(shí)候;數(shù)據(jù)庫(kù)備份的時(shí)候 alter tablespace ycspace read write;--讀寫(xiě)狀態(tài) alter tablespace ycspace online;alter tablespace ycspace read only;--只讀,可以查詢(xún)信息,可以刪除表空間的對(duì)象,但是不能創(chuàng)建對(duì)象和修改對(duì)象。使用情況:數(shù)據(jù)存檔的時(shí)候
--
2、修改表空間的大小--增加文件的大小
alter database datafile 'E:oracleappproduct11.2.0dbhome_1oradataycspace.dbf' resize 10m;--增加數(shù)據(jù)文件
alter tablespace ycspace add datafile 'E:oracleappproduct11.2.0dbhome_1oradataadd.dbf' size 2m;
--刪除表空間的數(shù)據(jù)文件
alter tablespace 表空間的名字 drop datafile 數(shù)據(jù)文件名;
--刪除表空間
drop tablespace ycspace;
--刪除表空間且表空間中的內(nèi)容和數(shù)據(jù)文件
drop tablespace ycspace including contents and datafiles;
--指定表空間 的 創(chuàng)建用戶(hù)的語(yǔ)法
create user yc1 identified by a default tablespace ycspace temporary tablespace temp;
--刪除用戶(hù) drop user yc1;
--權(quán)限
--賦予創(chuàng)建會(huì)話的權(quán)限 grant create session to yc1;
--創(chuàng)建一個(gè)表
create table studentInfo(sid int, sname varchar2(10));
--賦予yc1用戶(hù)創(chuàng)建表的權(quán)限 grant create table to yc1;--賦予yc1使用表空間的權(quán)限 grant unlimited tablespace to yc1;
--系統(tǒng)權(quán)限
--對(duì)象權(quán)限
--插入
insert into studentInfo values(2,'abcd');--查詢(xún)
select *from studentInfo;--修改
update studentInfo set sid=1;--刪除
delete studentInfo;drop table studentInfo;--系統(tǒng)權(quán)限刪除表
--賦權(quán)的語(yǔ)法
--系統(tǒng)權(quán)限
grant 權(quán)限名(系統(tǒng)權(quán)限或?qū)ο髾?quán)限,角色,all)to 用戶(hù)(角色,public)with admin option;
--對(duì)象權(quán)限
grant 權(quán)限名(系統(tǒng)權(quán)限或?qū)ο髾?quán)限,角色,all)on 用戶(hù)(角色,public)with grant option;
--收權(quán)語(yǔ)法--系統(tǒng)權(quán)限
revoke 權(quán)限名(系統(tǒng)權(quán)限或?qū)ο髾?quán)限,角色,all)from 用戶(hù)(角色,public)with admin option;--對(duì)象權(quán)限
revoke 權(quán)限名(系統(tǒng)權(quán)限或?qū)ο髾?quán)限,角色,all)from 用戶(hù)(角色,public)with grant option;
--賦予創(chuàng)建用戶(hù)的權(quán)限并且把這個(gè)權(quán)限傳遞下去,即yc1可以給別人賦權(quán) grant create user to yc1 with admin option;
--收回權(quán)限,只能收回scottd ,不能收回由scott賦權(quán)的yc1的權(quán)限 revoke create user from scott;
--查看用戶(hù)所具有的權(quán)限 select *from user_sys_privs;
--對(duì)象權(quán)限詳解 select * from emp;--使用yc1來(lái)查詢(xún)scott里面的emp表 select * from scott.emp;
--賦予yc1查詢(xún)emp表和插入的權(quán)限 grant select on emp to yc1;grant insert on emp to yc1;grant update(empno,ename)on emp to yc1;
grant delete on emp to yc1;
--對(duì)scott的emp表添加數(shù)據(jù)
insert into scott.emp(empno,ename)value(111,'acv');update scott.emp set ename='yc'where empno=111;
--賦予查詢(xún)、賦予刪除、添加、修改 grant select on 表名 to 用戶(hù)
--grant select,delete,update,insert on 表名 to 用戶(hù) grant select,delete,update,insert on emp to yc1;grant all on dept to yc1;--all代表所有的對(duì)象權(quán)限
select *from scott.emp;
select *from scott.dept;insert into scott.dept values(50,'企事業(yè)文化部','bumen');
--查看角色
--dba:數(shù)據(jù)庫(kù)管理員,系統(tǒng)最高權(quán)限,可以創(chuàng)建數(shù)據(jù)結(jié)構(gòu)(表空間等)--resource:可以創(chuàng)建實(shí)體(表、視圖),不可以創(chuàng)建數(shù)據(jù)庫(kù)的結(jié)構(gòu)
--connect:連接的權(quán)限,可以登錄數(shù)據(jù)庫(kù),但是不可以創(chuàng)建實(shí)體和不可以創(chuàng)建數(shù)據(jù)庫(kù)結(jié)構(gòu)
select *from role_sys_privs;
grant connect to yc1;
--將可以連接的角色賦予給yc1,則yc1就是應(yīng)該可以連接數(shù)據(jù)庫(kù)的人,類(lèi)似于 create session。create table StuInfos(sid int);
select *from StuInfos;
create table stuInfo(sid int primary key ,--主鍵 primary key 非空且唯一(主鍵約束)sname varchar2(10)not null,--姓名不能為空,(非空約束)sex char(2)check(sex in('男','女')),--(檢查約束),check, age number(3,1)constraint ck_stuInfo_age check(age>10 and age<100),--也可以用varchar ;age between 10 and 100 ,在10和100之間,是一個(gè)閉區(qū)間 tel number(15)unique not null,--唯一約束,address varchar2(200)default '什么鬼')
insert into stuInfo values(3,'大大','男',18,4321543,default);insert into stuInfo values(1,'張三','男',10);select *from stuInfo;
drop table stuInfo;
create table classInfo(cid int primary key,--班級(jí)id cname varchar2(20)not null unique--班級(jí)名)create table stuInfo(sid int primary key, sname varchar2(20), cid int constraint fofk_stuInfo_cid references classInfo(cid)on delete cascade)insert into classInfo values(1,'1班');insert into classInfo values(2,'2班');insert into classInfo values(3,'3班');insert into classInfo values(4,'4班');
select *from classInfo;select *from stuInfo;
insert into stuInfo values(1001,'張三',2);insert into stuInfo values(1002,'張四',4);
update classInfo set cid=1 where cid=8;
drop table stuInfo;--要先刪除這個(gè) drop table classInfo;--再刪除這個(gè)
delete classInfo where cid=4;--同時(shí)刪除這兩個(gè)表中的4
--刪除用戶(hù)的時(shí)候
drop user yc1 [cascade]--刪除用戶(hù)的同時(shí)把它創(chuàng)建的對(duì)象都一起刪除
--修改表
--
1、添加表中字段
--alter table 表名 add 字段名 類(lèi)型
alter table classInfo add status varchar2(10)default '未畢業(yè)'
--
2、修改已有字段的數(shù)據(jù)類(lèi)型
--alter table 表名 modify 字段名 類(lèi)型 alter table classInfo modify status number(1)
--
3、修改字段名
--alter table 表名 rename column 舊字段名 to 新的字段名 alter table classInfo rename column cname to 班級(jí)名;
--
4、刪除字段--alter table 表名 drop column 字段名 alter table classInfo drop column status;
--
5、修改表名
--rename 舊表名 to 新表名 rename classInfo to 班級(jí)信息;
--刪除表
--
1、截?cái)啾硇矢?,每刪除一次會(huì)產(chǎn)生一次日志
2、截?cái)鄷?huì)釋放空間,而delete不會(huì)釋放空間
--刪除表結(jié)構(gòu)和數(shù)據(jù) drop table 表名;--刪除表中所有數(shù)據(jù) truncate table classInfo;delete classInfo;
create table classInfo(cid int primary key,--班級(jí)id cname varchar2(20)not null unique ,--班級(jí)名 stasuts varchar2(100));select *from classInfo;
--數(shù)據(jù)的操作
--增加數(shù)據(jù)語(yǔ)法
--insert into 表名[(列名,....)] values(對(duì)應(yīng)的數(shù)據(jù)的值);
insert into classInfo values(1,'一班','未畢業(yè)');--需要按照表結(jié)構(gòu)的順序插入 insert into classInfo values(4,'六班','未畢業(yè)');insert into classInfo(cname,cid)values('二班',2);--需要按照括號(hào)中的順序插入,但是 not null primary key 必須插入的。
insert into classInfo(cname,cid)values('三班',3);
--刪除的語(yǔ)法
--delete 表名 [where 條件] delete classInfo where cid>=2;
--修改記錄的語(yǔ)法
--update 表名 set [字段='值' ] [where 條件] update classInfo set cname='三班';--會(huì)修改所有該字段 update classInfo set cname='四班' where cid=1;update classInfo set cname='五班', stasuts ='未畢業(yè)' where cid=3;
--alter table classInfo drop constraint SYS_C0011213;
--添加多個(gè)時(shí)可以使用序列--用序列來(lái)做自動(dòng)增長(zhǎng)
create sequence seq_classInfo_cid start with 1001 increment by 1;
insert into classInfo values(seq_classInfo_cid.Nextval,'七班','未畢業(yè)');insert into classInfo values(seq_classInfo_cid.Nextval,'八班','未畢業(yè)');insert into classInfo values(seq_classInfo_cid.Nextval,'九班','未畢業(yè)');insert into classInfo values(seq_classInfo_cid.Nextval,'十班','未畢業(yè)');
create table classInfo2(cid int primary key,--班級(jí)id cname varchar2(20)not null unique ,--班級(jí)名 stasuts varchar2(100));select *from classInfo2;drop table classInfo2;
insert into classInfo2 select *from classInfo;insert into classInfo(cname,cid)select cname,cid from classInfo;alter table classInfo2 drop constraint SYS_C0011213;
select seq_classInfo_cid.nextval from dual;select seq_classInfo_cid.Currval from dual;
--直接創(chuàng)建一個(gè)新表,并拿到另一個(gè)表其中的數(shù)據(jù) create table newTable as select cname,cid from classInfo;create table newTable1 as select *from classInfo;
select *from newTable;select *from newTable1;insert into newTable1 values(1008,'dg','');
直接在使用scott登陸,進(jìn)行查詢(xún)操作
----------------------簡(jiǎn)單查詢(xún)
select *from emp;
select empno as id,ename as name from emp;
select empno 編號(hào),ename 姓名 from emp;
--去除重復(fù)
select job from emp;select distinct job from emp;select job,deptno from emp;select distinct job,deptno from emp;
--字符串的連接
select '員工編號(hào)是' ||empno || '姓名是' ||ename ||'工作是'||job from emp;
--乘法
select ename,sal *12 from emp;--加減乘除都類(lèi)似
---------限定查詢(xún)
--獎(jiǎng)金大于1500的
select *from emp where sal>1500;--有獎(jiǎng)金的
select *from emp where comm is not null;--沒(méi)有獎(jiǎng)金的
select *from emp where comm is null;--有獎(jiǎng)金且大于1500的
select *from emp where sal>1500 and comm is not null;--工資大于1500或者有獎(jiǎng)金的
select *from emp where sal>1500 or comm is not null;--工資不大于1500且沒(méi)獎(jiǎng)金的
select *from emp where sal<=1500 and comm is null;select *from emp where not(sal >1500 or comm is not null);--工資大于1500但是小于3000的
select *from emp where sal>1500 and sal<3000;select *from emp where sal between 1500 and 3000;--between是閉區(qū)間,是包含1500和3000的
--時(shí)間區(qū)間
select *from emp where hiredate between to_date('1981-01-01','yyyy-MM-dd')and to_date('1981-12-31','yyyy-MM-dd');--查詢(xún)雇員名字
select *from emp where ename='SMITH';--查詢(xún)員工編號(hào)
select *from emp where empno=7369 or empno=7499 or empno=7521;select *from emp where empno in(7369,7499,7521);select *from emp where empno not in(7369,7499,7521);--排除這3個(gè),其他的都可以查
--模糊查詢(xún)
select *from emp where ename like '_M%';--第2個(gè)字母為M的 select *from emp where ename like '%M%';select *from emp where ename like '%%';--全查詢(xún)
--不等號(hào)的用法
select * from emp where empno!=7369;select *from emp where empno<> 7369;
--對(duì)結(jié)果集排序--查詢(xún)工資從低到高
select *from emp order by sal asc;select *from emp order by sal desc,hiredate desc;--asc 當(dāng)導(dǎo)游列相同時(shí)就按第二個(gè)來(lái)排序--字符函數(shù)
select *from dual;--偽表 select 2*3 from dual;select sysdate from dual;--變成大寫(xiě)
select upper('smith')from dual;--變成小寫(xiě)
select lower('SMITH')from dual;--首字母大寫(xiě)
select initcap('smith')from dual;--連接字符串
select concat('jr','smith')from dual;--只能在oracle中使用 select 'jr' ||'smith' from dual;--推薦使用--截取字符串
select substr('hello',1,3)from dual;--索引從1開(kāi)始--獲取字符串長(zhǎng)度 select length('hello')from dual;--字符串替換
select replace('hello','l','x')from dual;--把l替換為x-------通用函數(shù)--數(shù)值函數(shù)--四舍五入
select round(12.234)from dual;--取整的四舍五入 12 select round(12.657,2)from dual;--保留2位小數(shù) select trunc(12.48)from dual;--取整
select trunc(12.48675,2)from dual;--保留2位小數(shù)--取余
select mod(10,3)from dual;--10/3取余 =1
--日期函數(shù)
--日期-數(shù)字=日期 日期+數(shù)字=日期 日期-日期=數(shù)字
--查詢(xún)員工進(jìn)入公司的周數(shù)
select ename,round((sysdate-hiredate)/7)weeks from emp;--查詢(xún)所有員工進(jìn)入公司的月數(shù)
select ename,round(months_between(sysdate,hiredate))months from emp;--求三個(gè)月后的日期
select add_months(sysdate,6)from dual;select next_day(sysdate,'星期一')from dual;--下星期 select last_day(sysdate)from dual;--本月最后一天
select last_day(to_date('1997-1-23','yyyy-MM-dd'))from dual;
--轉(zhuǎn)換函數(shù) select ename , to_char(hiredate,'yyyy')年,to_char(hiredate,'mm')月,to_char(hiredate,'dd')日 from emp;
select to_char(10000000,'$999,999,999')from emp;
select to_number('20')+to_number('80')from dual;--數(shù)字相加
--查詢(xún)員工年薪
select ename,(sal*12+nvl(comm,0))yearsal from emp;--空和任何數(shù)計(jì)算都是空
--Decode函數(shù),類(lèi)似if else if(常用)
select decode(1,1,'one',2,'two','no name')from dual;--查詢(xún)所有職位的中文名 select ename, decode(job, 'CLERK', '業(yè)務(wù)員', 'SALESMAN', '銷(xiāo)售', 'MANAGER', '經(jīng)理', 'ANALYST', '分析員', 'PRESIDENT', '總裁', '無(wú)業(yè)')from emp;
select ename, case when job = 'CLERK' then '業(yè)務(wù)員' when job = 'SALESMAN' then '銷(xiāo)售' when job = 'MANAGER' then '經(jīng)理' when job = 'ANALYST' then '分析員' when job = 'PRESIDENT' then '總裁' else '無(wú)業(yè)' end from emp;
-----------------------------
--多表查詢(xún)
select *from dept;select *from emp,dept order by emp.deptno;select *from emp e,dept d where e.deptno=d.deptno;select e.*,d.dname,d.loc from emp e,dept d where e.deptno=d.deptno;
--查詢(xún)出雇員的編號(hào),姓名,部門(mén)編號(hào),和名稱(chēng),地址
select e.empno,e.ename,e.deptno,d.dname,d.loc from emp e,dept d where e.deptno=d.deptno;
--查詢(xún)出每個(gè)員工的上級(jí)領(lǐng)導(dǎo)
select e.empno,e.ename,e1.empno,e1.ename from emp e,emp e1 where e.mgr=e1.empno;
select e.empno,e.ename,d.dname from emp e,dept d ,salgrade s, emp e1 where e.deptno=d.deptno and e.sal between s.losal and s.hisal and e.mgr=e1.empno;
select e.empno,e.ename,e1.empno,e1.ename from emp e,emp e1 where e.mgr=e1.empno(+);
--外連接
select *from emp order by deptno;--查詢(xún)出每個(gè)部門(mén)的員工 /* 分析:部門(mén)表是全量表,員工表示非全量表,在做連接條件時(shí),全量表在非全量表的哪端,那么連接時(shí)全量表的連接條件就在等號(hào)哪斷 */--左連接
select * from dept d,emp e where d.deptno=e.deptno(+)order by e.deptno;--右連接
select * from emp e,dept d where e.deptno(+)=d.deptno order by e.deptno;
-----------------------------作業(yè)
--查詢(xún)與smith相同部門(mén)的員工姓名和雇傭日期 select *from emp t where t.deptno=(select e.deptno from emp e where e.ename='SMITH')and t.ename<> 'SMITH';
--查詢(xún)工資比公司平均工資高的員工的員工號(hào),姓名和工資 select t.empno,t.ename,t.sal from emp t where t.sal>(select avg(sal)from emp);
--查詢(xún)各部門(mén)中工資比本部門(mén)平均工資高的員工號(hào),姓名和工資 select t.empno,t.ename,t.sal from emp t,(select avg(e.sal)avgsal,e.deptno from emp e group by e.deptno)a where t.sal>a.avgsal and t.deptno=a.deptno;--查詢(xún)姓名中包含字母u的員工在相同部門(mén)的員工的員工號(hào)和姓名 select t.empno,t.ename from emp t where t.deptno in(select e.deptno from emp e where e.ename like '%U%')and t.empno not in(select e.empno from emp e where e.ename like '%U%');
--查詢(xún)管理者是king的員工姓名和工資 select t.ename,t.sal from emp t where t.mgr in(select e.empno from emp e where e.ename='KING');
--------------------------sql1999語(yǔ)法
select *from emp join dept using(deptno)where deptno=20;select *from emp natural join dept;select *from emp e join dept d on e.deptno=d.deptno;select *from dept;select *from dept d left join emp e on d.deptno=e.deptno;select *from dept d,emp e where d.deptno=e.deptno(+);
---分組
select count(empno)from emp group by deptno;select deptno,job,count(*)from emp group by deptno,job order by deptno;select *from EMP for UPDATE;
--group by 后面有的字段,select后才可以有,group by后面沒(méi)有的字段,select后面絕對(duì)不能有
select d.dname, d.loc, count(e.empno)from emp e, dept d where e.deptno = d.deptno group by d.dname, d.loc;
---------子查詢(xún)
select *from emp t where t.sal>(select *from emp e where e.empno=7654);
select rownum ,t.* from emp t where rownum <6;
--pagesize 5 select *from(select rownum rw,a.* from(select *from emp)a where rownum <16)b where b.rw>10;select *from(select *from emp)where rownum>0;--索引
create index person_index on person(p_name);
--視圖
create view view2 as select *from emp t where t.deptno=20;select *from view2;
-------------pl/sql--plsql是對(duì)sql語(yǔ)言的過(guò)程化擴(kuò)展-----declare begin dbms_output.put_line('hello world');end;-------declare age number(3);marry boolean := true;--boolean不能直接輸出 pname varchar2(10):= 're jeknc';begin age := 20;dbms_output.put_line(age);if marry then dbms_output.put_line('true');else dbms_output.put_line('false');end if;dbms_output.put_line(pname);end;
--常量和變量
--引用變量,引用表中的字段的類(lèi)型
Myname emp.ename%type;--使用into來(lái)賦值
declare pname emp.ename%type;begin select t.ename into pname from emp t where t.empno=7369;dbms_output.put_line(pname);end;
--記錄型變量
Emprec emp%rowtype;--使用into來(lái)賦值
declare Emprec emp%rowtype;begin select t.* into Emprec from emp t where t.empno=7369;dbms_output.put_line(Emprec.empno || ' '||Emprec.ename||' '||Emprec.job);end;
--if分支
語(yǔ)法1:
IF 條件 THEN 語(yǔ)句1;語(yǔ)句2;END IF;語(yǔ)法2:
IF 條件 THEN 語(yǔ)句序列1; ELSE 語(yǔ)句序列 2; END IF; 語(yǔ)法3:
IF 條件 THEN 語(yǔ)句;ELSIF 條件 THEN 語(yǔ)句;ELSE 語(yǔ)句;END IF;--1 declare pname number:=# begin if pname = 1 then dbms_output.put_line('我是1');else dbms_output.put_line('我不是1');end if;end;--2 declare pname number := # begin if pname = 1 then dbms_output.put_line('我是1');elsif pname = 2 then dbms_output.put_line('我是2');else dbms_output.put_line('我不是12');end if;end;
--loop循環(huán)語(yǔ)句 語(yǔ)法2: Loop EXIT [when 條件];…… End loop
--1 declare pnum number(4):=0;
begin while pnum < 10 loop dbms_output.put_line(pnum);pnum := pnum + 1;end loop;end;
--2(最常用的循環(huán))declare pnum number(4):=0;begin loop exit when pnum=10;pnum:=pnum+1;dbms_output.put_line(pnum);end loop;end;--3 declare pnum number(4);begin for pnum in 1..10 loop dbms_output.put_line(pnum);end loop;end;
-----游標(biāo) 語(yǔ)法:
CURSOR 游標(biāo)名 [(參數(shù)名 數(shù)據(jù)類(lèi)型,參數(shù)名 數(shù)據(jù)類(lèi)型,...)] IS SELECT 語(yǔ)句;例如:cursor c1 is select ename from emp;
declare cursor c1 is select * from emp;emprec emp%rowtype;begin open c1;loop fetch c1 into emprec;exit when c1%notfound;dbms_output.put_line(emprec.empno || ' ' || emprec.ename);end loop;close c1;--要記得關(guān)閉游標(biāo) end;
--------例外
--異常,用來(lái)增強(qiáng)程序的健壯性和容錯(cuò)性--no_data_found(沒(méi)有找到數(shù)據(jù))--too_many_rows(select …into語(yǔ)句匹配多個(gè)行)--zero_pide(被零除)--value_error(算術(shù)或轉(zhuǎn)換錯(cuò)誤)--timeout_on_resource(在等待資源時(shí)發(fā)生超時(shí))
--寫(xiě)出被0除的例外程序 declare pnum number(4):= 10;begin pnum := pnum / 0;exception when zero_pide then dbms_output.put_line('被0除了');when value_error then dbms_output.put_line('算術(shù)或轉(zhuǎn)換錯(cuò)誤');when others then dbms_output.put_line('其他異常');end;
--自定義異常
--No_data exception;--要拋出raise no_data;
declare cursor c1 is select * from emp t where t.deptno = 20;no_data exception;emprec emp%rowtype;begin open c1;loop fetch c1 into emprec;if c1%notfound then raise no_data;else dbms_output.put_line(emprec.empno || ' ' || emprec.ename);end if;end loop;close c1;
exception when no_data then dbms_output.put_line('無(wú)員工');when others then dbms_output.put_line('其他異常');end;
--存儲(chǔ)過(guò)程 語(yǔ)法:
create [or replace] PROCEDURE 過(guò)程名[(參數(shù)名 in/out 數(shù)據(jù)類(lèi)型)] AS begin PLSQL子程序體; End;
或者
create [or replace] PROCEDURE 過(guò)程名[(參數(shù)名 in/out 數(shù)據(jù)類(lèi)型)] is begin PLSQL子程序體; End 過(guò)程名;
-----創(chuàng)建一個(gè)存儲(chǔ)過(guò)程helloworld create or replace procedure helloworld is begin dbms_output.put_line('hello world');end helloworld;
------創(chuàng)建一個(gè)漲工資的
create or replace procedure addsal(eno in emp.empno%type)is emprec emp%rowtype;begin select * into emprec from emp t where t.empno = eno;
update emp t set t.sal = t.sal + 100 where t.empno = eno;dbms_output.put_line('漲工資前是' || emprec.sal || ',漲工資后是' ||(emprec.sal + 100));end addsal;
-----------------java代碼調(diào)用存儲(chǔ)過(guò)程和函數(shù)--存儲(chǔ)過(guò)程--create or replace procedure acc_yealsal(eno in emp.empno%type,yearsal out number)is pcomm emp.comm%type;psal emp.sal%type;begin select t.sal,t.comm into psal,pcomm from emp t where t.empno=eno;yearsal :=psal*12 +nvl(pcomm,0);end;----存儲(chǔ)函數(shù)
create or replace function 函數(shù)名(Name in type, Name in type,...)return 數(shù)據(jù)類(lèi)型 is 結(jié)果變量 數(shù)據(jù)類(lèi)型;begin
return(結(jié)果變量);end函數(shù)名;--存儲(chǔ)函數(shù)計(jì)算年薪
create or replace function accf_yearsal(eno in emp.empno%type)return number is Result number;psal emp.sal%type;pcomm emp.comm%type;begin select t.sal, t.comm into psal, pcomm from emp t where t.empno = eno;Result := psal * 12 + nvl(pcomm, 0);return(Result);end accf_yearsal;
-------觸發(fā)器
--觸發(fā)語(yǔ)句:增刪改: 語(yǔ)法:
CREATE [or REPLACE] TRIGGER 觸發(fā)器名 {BEFORE | AFTER} {DELETE | INSERT | UPDATE [OF 列名]} ON 表名
[FOR EACH ROW [WHEN(條件)] ] begin PLSQL 塊 End 觸發(fā)器名
---插入一個(gè)新員工則觸發(fā)
create or replace trigger insert_person after insert on emp begin dbms_output.put_line('插入新員工');end;select *from emp;insert into emp values(1001,'李四','管理',7902,sysdate,100,100,20);
--raise_application_error(-20001, '不能在非法時(shí)間插入員工')
--================================ SQL> @ E:powerDesignerA_腳本user.sql--導(dǎo)入腳本文件
select *from H_USER;
insert into h_user valuer(sequserid.nextval,'a','a',sysdate,'北京',1);
--數(shù)據(jù)庫(kù)建模
--一對(duì)多:多的一端是2,箭頭指向的是表1,即少的一端
--在實(shí)體類(lèi)中一的一端的實(shí)體類(lèi)有多的一端的實(shí)體類(lèi)的集合屬性
--使用powerDesiger進(jìn)行數(shù)據(jù)庫(kù)建模,然后將數(shù)據(jù)導(dǎo)入,導(dǎo)入到plsql中進(jìn)行使用
--------------------連接遠(yuǎn)程數(shù)據(jù)庫(kù)--方法1,修改localhost的地址 ORCL =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl.lan)))--方法2--或者直接在登陸界面在database中輸入遠(yuǎn)程數(shù)據(jù)庫(kù)的ip地址和端口號(hào)進(jìn)行遠(yuǎn)程登陸 1.create user username identified by password;//建用戶(hù)名和密碼oracle ,oracle
2.grant connect,resource,dba to username;//授權(quán) grant connect,resource,dba,sysdba to username;
3.connect username/password//進(jìn)入。
4.select table_name,column_name from user_tab_columns where table_name='TABLE_NAME';//查詢(xún)表中的表名,字段名等等。最后的table_name要大寫(xiě)。
5.如何執(zhí)行腳本SQL文件? SQL>@PATH/filename.sql;
7.查詢(xún)用戶(hù)下的所有表 select distinct table_name from user_tab_columns;===僅顯示一列表名。
8.如何搜索出前N條記錄?
select * from tablename where rownum 9.查找用戶(hù)下的所有表:select * from tab;--查詢(xún)?cè)撚脩?hù)下的所有表及視圖(顯示表名tname,類(lèi)型tabname和clusterid) 2、顯示當(dāng)前連接用戶(hù) SQL> show user –不能用在sql窗口 只能用在command命令窗口。 3、查看系統(tǒng)擁有哪些用戶(hù) SQL> select * from all_users; 4、新建用戶(hù)并授權(quán) SQL> create user a identified by a;(默認(rèn)建在SYSTEM表空間下) SQL> grant connect,resource to a; 5、連接到新用戶(hù) SQL> conn a/a –或者是connect a/a 6、查詢(xún)當(dāng)前用戶(hù)下所有對(duì)象 SQL> select * from tab;--table或是view 7、建立第一個(gè)表 SQL> create table a(a number); 8、查詢(xún)表結(jié)構(gòu) SQL> desc a 9、插入新記錄 SQL> insert into a values(1); 10、查詢(xún)記錄 SQL> select * from a; 11、更改記錄 SQL> update a set a=2; 12、刪除記錄 SQL> delete from a; 13、回滾 SQL> roll; SQL> rollback; 14、提交 SQL> commit; select * from (select t.*,dense_rank()over(order by cardkind)rank from cardkind t) where rank = 2; 46.如何在字符串里加回車(chē)? select 'Welcome to visit'||chr(10)||'www.CSDN.NET' from dual;--‘||chr(10)||’作為換行符 53.如何使select語(yǔ)句使查詢(xún)結(jié)果自動(dòng)生成序號(hào)? select rownum COL from table;--主要就是oracle中引入了rownum 54.如何知道數(shù)據(jù)褲中某個(gè)表所在的tablespace? select tablespace_name from user_tables where table_name='TEST';--table_name名稱(chēng)要大寫(xiě)。 select * from user_tables中有個(gè)字段TABLESPACE_NAME,(oracle); select * from dba_segments where …; 55.怎么可以快速做一個(gè)和原表一樣的備份表? create table new_table as(select * from old_table); 59.請(qǐng)問(wèn)如何修改一張表的主鍵? alter table aaa drop constraint aaa_key; alter table aaa add constraint aaa_key primary key(a1,b1); 60.改變數(shù)據(jù)文件的大小? 用 ALTER DATABASE....DATAFILE....; 手工改變數(shù)據(jù)文件的大小,對(duì)于原來(lái)的 數(shù)據(jù)文件有沒(méi)有損害。 61.怎樣查看ORACLE中有哪些程序在運(yùn)行之中? 查看v$session表 62.怎么可以看到數(shù)據(jù)庫(kù)有多少個(gè)tablespace? select * from dba_tablespaces; 72.怎樣查看哪些用戶(hù)擁有SYSDBA、SYSOPER權(quán)限? SQL>conn sys/change_on_install –登不上去 SQL>select * from V_$PWFILE_USERS;76.如何顯示當(dāng)前連接用戶(hù)? SHOW USER 77.如何查看數(shù)據(jù)文件放置的路徑 ? col file_name format a50 SQL> select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id; 79.如何改變一個(gè)字段初始定義的Check范圍? SQL> alter table xxx drop constraint constraint_name; 之后再創(chuàng)建新約束: SQL> alter table xxx add constraint constraint_name check(); 83.如何執(zhí)行腳本SQL文件? SQL>@所在的文件路徑 /filename.sql;例如放在E盤(pán)的根目錄下則應(yīng)該是 @E:a.sql;回車(chē)就OK了。 84.如何快速清空一個(gè)大表? SQL>truncate table table_name; 85.如何查有多少個(gè)數(shù)據(jù)庫(kù)實(shí)例? SQL>SELECT * FROM V$INSTANCE; 86.如何查詢(xún)數(shù)據(jù)庫(kù)有多少表? SQL>select * from all_tables; 87.如何測(cè)試SQL語(yǔ)句執(zhí)行所用的時(shí)間? SQL>set timing on; SQL>select * from tablename; 89.字符串的連接 SELECT CONCAT(COL1,COL2)FROM TABLE; SELECT COL1||COL2 FROM TABLE; 90.怎么把select出來(lái)的結(jié)果導(dǎo)到一個(gè)文本文件中? SQL>SPOOL C:ABCD.TXT; SQL>select * from table; SQL >spool off; 91.怎樣估算SQL執(zhí)行的I/O數(shù) ? SQL>SET AUTOTRACE ON; SQL>SELECT * FROM TABLE; OR SQL>SELECT * FROM v$filestat; 可以查看IO數(shù) 92.如何在sqlplus下改變字段大小? alter table table_name modify(field_name varchar2(100)); 改大行,改小不行(除非都是空的) 93.如何查詢(xún)某天的數(shù)據(jù)? select * from a where trunc(日期字段)=to_date('2003-05-02','yyyy-mm-dd');若是date型數(shù)據(jù) insert into bsyear values(to_date('20130427','yyyymmdd'));或者是insert into bsyear values('27-4月-2013'); 94.sql 語(yǔ)句如何插入全年日期? create table BSYEAR(d date);insert into BSYEAR select to_date('20030101','yyyymmdd')+rownum-1 from all_objects where rownum <= to_char(to_date('20031231','yyyymmdd'),'ddd');--在表后直接插入365行數(shù)據(jù)日期。 緊急插入幾條重要的: 如何在Oracle中復(fù)制表結(jié)構(gòu)和表數(shù)據(jù) 1.復(fù)制表結(jié)構(gòu)及其數(shù)據(jù): create table table_name_new as select * from table_name_old 2.只復(fù)制表結(jié)構(gòu): create table table_name_new as select * from table_name_old where 1=2;或者: create table table_name_new like table_name_old 3.只復(fù)制表數(shù)據(jù): 如果兩個(gè)表結(jié)構(gòu)一樣: insert into table_name_new select * from table_name_old 如果兩個(gè)表結(jié)構(gòu)不一樣: insert into table_name_new(column1,column2...)select column1,column2...from table_name_old 創(chuàng)建帶主鍵的表: create table stuInfo(stuID int primary key,stuName varchar2(20),age int);或是不直接增加主鍵 alter table stuInfo add constraint stuInfo _PK primary key(stuID) 95.如果修改表名? alter table old_table_name rename to new_table_name; 97.如何知道用戶(hù)擁有的權(quán)限? SELECT * FROM dba_sys_privs;--一個(gè)權(quán)限對(duì)應(yīng)一條數(shù)據(jù),這樣對(duì)于同一個(gè)用戶(hù)就有多條數(shù)據(jù)了。 98.從網(wǎng)上下載的ORACLE9I與市場(chǎng)上賣(mài)的標(biāo)準(zhǔn)版有什么區(qū)別? 從功能上說(shuō)沒(méi)有區(qū)別,只不過(guò)oracle公司有明文規(guī)定;從網(wǎng)站上下載的oracle產(chǎn)品不得用于商業(yè)用途,否則侵權(quán)。 101.如何搜索出前N條記錄? SELECT * FROM empLOYEE WHERE ROWNUM < n ORDER BY empno;Select * from a where rownum 104.如何統(tǒng)計(jì)兩個(gè)表的記錄總數(shù)? select(select count(id)from aa)+(select count(id)from bb)總數(shù) from dual;--總數(shù)那是沒(méi)有單引號(hào)的,雙引號(hào)可以。 106.如何在給現(xiàn)有的日期加上2年?(select add_months(sysdate,24)from dual;--2015/4/27 9:28:52 110.tablespace 是否不能大于4G? 沒(méi)有限制.111.返回大于等于N的最小整數(shù)值? SELECT CEIL(N)FROM DUAL; 112.返回小于等于N的最小整數(shù)值? SELECT FLOOR(N)FROM DUAL; 113.返回當(dāng)前月的最后一天? SELECT LAST_DAY(SYSDATE)FROM DUAL; ; 115.如何找數(shù)據(jù)庫(kù)表的主鍵字段的名稱(chēng)? SQL>SELECT * FROM user_constraints WHERE CONSTRAINT_TYPE='P' and table_name='TABLE_NAME';--我沒(méi)有查出來(lái)。 116.兩個(gè)結(jié)果集互加的函數(shù)? SQL>SELECT * FROM BSEMPMS_OLD INTERSECT SELECT * FROM BSEMPMS_NEW; SQL>SELECT * FROM BSEMPMS_OLD UNION SELECT * FROM BSEMPMS_NEW; SQL>SELECT * FROM BSEMPMS_OLD UNION ALL SELECT * FROM BSEMPMS_NEW; 117.兩個(gè)結(jié)果集互減的函數(shù)? SQL>SELECT * FROM BSEMPMS_OLD MINUS SELECT * FROM BSEMPMS_NEW; 139.如何查找重復(fù)記錄? SELECT * FROM TABLE_NAME WHERE ROWID!=(SELECT MAX(ROWID)FROM TABLE_NAMe WHERE TABLE_NAME.COL1=D.COL1 AND TABLE_NAME.COL2=D.COL2); 140.如何刪除重復(fù)記錄? DELETE FROM TABLE_NAME WHERE ROWID!=(SELECT MAX(ROWID)FROM TABLE_NAME D WHERE TABLE_NAME.COL1=D.COL1 AND TABLE_NAME.COL2=D.COL2); 162.如何知道表在表空間中的存儲(chǔ)情況? select segment_name,sum(bytes),count(*)ext_quan from dba_extents where tablespace_name='&tablespace_name' and segment_type='TABLE' group by tablespace_name,segment_name;--把&tablespace_name改成相應(yīng)的表空間名稱(chēng)。 Oracel 中常使用的語(yǔ)法(部分) Oracel 中常使用的語(yǔ)法 2、顯示當(dāng)前連接用戶(hù) :SQL> show user3、查看系統(tǒng)擁有哪些用戶(hù) :SQL> select * from all_users; 4、新建用戶(hù)并授權(quán):SQL> create user a identified by a;(默認(rèn)建在SYSTEM表空間下) SQL> grant connect,resource to a; 5、連接到新用戶(hù) :SQL> conn a/a6、查詢(xún)當(dāng)前用戶(hù)下所有對(duì)象:SQL> select * from tab; 7、建立第一個(gè)表 :SQL> create table a(a number); 8、查詢(xún)表結(jié)構(gòu)SQL> desc a9、插入新記錄SQL> insert into a values(1); 10、查詢(xún)記錄SQL> select * from a; 11、更改記錄SQL> update a set a=2; 12、刪除記錄SQL> delete from a; 13、回滾SQL> roll;或SQL> rollback; 14、提交SQL> commit; 用戶(hù)授權(quán): GRANT ALTER ANY INDEX TO “user_id ” GRANT “dba ” TO “user_id ”; ALTER USER “user_id ” DEFAULT ROLE ALL 創(chuàng)建用戶(hù): CREATE USER “user_id ” PROFILE “DEFAULT ” IDENTIFIED BY “ DEFAULT TABLESPACE ”USERS “ TEMPORARY TABLESPACE ”TEMP “ ACCOUNT UNLOCK;GRANT ”CONNECT “ TO ”user_id “; 用戶(hù)密碼設(shè)定: ALTER USER ”CMSDB “ IDENTIFIED BY ”pass_word “ 表空間創(chuàng)建: CREATE TABLESPACE ”table_space “ LOGGING DATAFILE 'C:ORACLEORADATAdbstable_space.ora' SIZE 5M ---------- 1、查看當(dāng)前所有對(duì)象:SQL > select * from tab; 2、建一個(gè)和a表結(jié)構(gòu)一樣的空表 SQL > create table b as select * from a where 1=2; SQL > create table b(b1,b2,b3)as select a1,a2,a3 from a where 1=2; 3、察看數(shù)據(jù)庫(kù)的大小,和空間使用情況 SQL > col tablespace format a20 SQL > select b.file_id文件ID,b.tablespace_name表空間,b.file_name物理文件名,b.bytes總字節(jié)數(shù),(b.bytes-sum(nvl(a.bytes,0)))已使用,sum(nvl(a.bytes,0))剩余,sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比 from dba_free_space a,dba_data_files b where a.file_id=b.file_id group by b.tablespace_name,b.file_name,b.file_id,b.bytes order by b.tablespace_name / dba_free_space--表空間剩余空間狀況 dba_data_files--數(shù)據(jù)文件空間占用情況 4、查看現(xiàn)有回滾段及其狀態(tài) : SQL > col segment format a30 SQL > SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS; 5、查看數(shù)據(jù)文件放置的路徑 :SQL > col file_name format a50 SQL > select tablespace_name,file_id,bytes/1024/1024,file_name fromdba_data_files order by file_id; 6、顯示當(dāng)前連接用戶(hù) :SQL > show user7、把SQL*Plus當(dāng)計(jì)算器 :SQL > select 100*20 from dual; 8、連接字符串:SQL > select 列1 | |列2 from 表1; SQL > select concat(列1,列2)from 表1; 9、查詢(xún)當(dāng)前日期和時(shí)間: SQL > select to_char(sysdate,'yyyy-mm-dd,hh24:mi:ss')from dual; 10、用戶(hù)間復(fù)制數(shù)據(jù):SQL > copy from user1 to user2 create table2 using select * from table1; 11、視圖中不能使用order by,但可用group by代替來(lái)達(dá)到排序目的SQL > create view a as select b1,b2 from b group by b1,b2; 12、通過(guò)授權(quán)的方式來(lái)創(chuàng)建用戶(hù) :SQL > grant connect,resource to test identified by test; SQL > conn test/test13、查出當(dāng)前用戶(hù)所有表名: select unique tname from col; --------- /* 向一個(gè)表格添加字段 */alter table alist_table add address varchar2(100); /* 修改字段 屬性 字段為空 */alter table alist_table modify address varchar2(80); /* 修改字段名字 */ create table alist_table_copy as select ID,NAME,PHONE,EMAIL, QQ as QQ2,/*qq 改為qq2*/ ADDRESS from alist_table;drop table alist_table; rename alist_table_copy to alist_table /* 修改表名 */ 空值處理,有時(shí)要求列值不能為空 :create table dept(deptno number(2)not null, dname char(14), loc char(13)); 在基表中增加一列: alter table dept add(headcnt number(3)); 修改已有列屬性 :alter table dept modify dname char(20); 注:只有當(dāng)某列所有值都為空時(shí),才能減小其列值寬度。只有當(dāng)某列所有值都為 空時(shí),才能改變其列值類(lèi)型。 只有當(dāng)某列所有值都為不空時(shí),才能定義該列為not null。 例:alter table dept modify(loc char(12));alter table dept modify loc char(12); alter table dept modify(dname char(13),loc char(12)); 查找未斷連接 : select process,osuser,username,machine,logon_time ,sql_text from v$session a,v$sqltext b where a.sql_address=b.address; --- 1.以USER_開(kāi)始的數(shù)據(jù)字典視圖包含當(dāng)前用戶(hù)所擁有的信息, 查詢(xún)當(dāng)前用戶(hù)所擁有的表信息: select * from user_tables; 2.以ALL_開(kāi)始的數(shù)據(jù)字典視圖包含ORACLE用戶(hù)所擁有的信息, 查詢(xún)用戶(hù)擁有或有權(quán)訪問(wèn)的所有表信息: select * from all_tables; 3.以DBA_開(kāi)始的視圖一般只有ORACLE數(shù)據(jù)庫(kù)管理員可以訪問(wèn):select * from dba_tables; 4.查詢(xún)ORACLE用戶(hù): conn sys/change_on_installselect * from dba_users; conn system/manager;select * from all_users; 5.創(chuàng)建數(shù)據(jù)庫(kù)用戶(hù):CREATE USER user_name IDENTIFIED BY password;GRANT CONNECT TO user_name;GRANT RESOURCE TO user_name; 授權(quán)的格式: grant(權(quán)限)on tablename to username; 刪除用戶(hù)(或表):drop user(table)username(tablename)(cascade); 6.向建好的用戶(hù)導(dǎo)入數(shù)據(jù)表 : IMP SYSTEM/MANAGER FROMUSER = FUSER_NAME TOUSER = USER_NAME FILE = C:EXPDAT.DMPCOMMIT = Y 7.索引: create index [index_name] on [table_name](”column_name ") 一、SQL SERVER的理解 SQL SERVER服務(wù)器就像一棟大樓,大樓里的機(jī)房就像服務(wù)器的數(shù)據(jù)庫(kù),機(jī)房里的電腦如同數(shù)據(jù)庫(kù)里的表 1、登錄用戶(hù)可以登錄服務(wù)器——可以進(jìn)大樓 2、登錄用戶(hù)成為數(shù)據(jù)庫(kù)用戶(hù)才能進(jìn)指定的數(shù)據(jù)庫(kù)——進(jìn)入大樓的人給了某個(gè)機(jī)房的鑰匙 才能進(jìn)入機(jī)房 3、登錄用戶(hù)有權(quán)限使用表——進(jìn)入機(jī)房的人有電腦的密碼才能使用電腦 二、ORACLE的理解 ORACLE服務(wù)器(全局?jǐn)?shù)據(jù)庫(kù))就像一個(gè)商場(chǎng),商場(chǎng)的每一家公司是表空間,公司的業(yè)務(wù)是表 1、數(shù)據(jù)庫(kù)由多個(gè)表空間組成——商場(chǎng)里有多家公司組成2、表空間由段組成——公司要有自己的經(jīng)營(yíng)業(yè)務(wù),可以只有一個(gè)業(yè)務(wù),就是一個(gè)表空 間中只有一個(gè)段,可以有多個(gè)業(yè)務(wù),就是一個(gè)表空間有多個(gè)段 3、段由區(qū)組成——單個(gè)業(yè)務(wù)的細(xì)分類(lèi)別。例如有家公司經(jīng)營(yíng)三個(gè)業(yè)務(wù),賣(mài)書(shū),賣(mài)家電,賣(mài)衣服,則每個(gè)業(yè)務(wù)就是一個(gè)段。而每個(gè)業(yè)務(wù)又有細(xì)分,比如賣(mài)書(shū)的話要進(jìn)行分類(lèi)了。計(jì)算機(jī)區(qū),人文區(qū),小說(shuō)區(qū)等,每一區(qū)都要放上書(shū)架存放書(shū)籍,則書(shū)架就是oracle塊,存放數(shù)據(jù)的三、數(shù)據(jù)庫(kù),表空間,用戶(hù)(指定默認(rèn)表空間),表統(tǒng)統(tǒng)由管理員管理 四、在OEM中管理數(shù)據(jù)庫(kù)的步驟 1、創(chuàng)建 1)存儲(chǔ)——表空間——?jiǎng)?chuàng)建表空間(TOMSPACE)(類(lèi)似于在SQL中創(chuàng)建數(shù)據(jù)庫(kù),通??梢允÷裕褂媚J(rèn)表空間為USERS,臨時(shí)表空間為T(mén)EMP) 2)首先展開(kāi)安全性——?jiǎng)?chuàng)建新用戶(hù)(TOM,指定表空間)(類(lèi)似于在SQL中指定 數(shù)據(jù)庫(kù)用戶(hù)) 3)創(chuàng)建表——指定方案(用戶(hù))和表空間(列名不要帶<>) 4)設(shè)置約束 5)輸入信息:方案——用戶(hù)名——表——右擊——查看 /編輯目錄… 2、修改 1)方案——用戶(hù)名——表 2)修改表結(jié)構(gòu),添加約束 3、刪除: 右擊表——移去 五、注意事項(xiàng) 1、剛創(chuàng)建的用戶(hù)不會(huì)出現(xiàn)在方案中,只有創(chuàng)建了一個(gè)表指定方案和表空間,該用戶(hù)的方案名就會(huì)出現(xiàn)在方案中,此時(shí)就可以方便為該方案創(chuàng)建其他表 1)新創(chuàng)建的用戶(hù)能在SQLPLUS中登錄,為什么不能在企業(yè)管理器中登錄呢? 解答:需要授予 SELECT ANY DIRECTORY權(quán)限才能正常登錄企業(yè)管理器,但沒(méi)有其他權(quán)限 2)可以對(duì)創(chuàng)建的用戶(hù)在安全性中賦予角色權(quán)限,如DBA,則該用戶(hù)就是數(shù)據(jù)庫(kù)管理 員 3)SYS用戶(hù)主要用來(lái)維護(hù)系統(tǒng)信息和管理實(shí)例,只能以SYSOPER或SYSDBA角 色登錄 4)安裝oracle的用戶(hù)自動(dòng)為ora-dba權(quán)限,自動(dòng)是sys用戶(hù),所以在登錄時(shí)不需要 用戶(hù)名和密碼,只要選中以sysdba登錄。其他用戶(hù)登錄計(jì)算機(jī)系統(tǒng),在使用oracle 時(shí)就是正常登錄狀態(tài)了。 2、向表中添加日期數(shù)據(jù):時(shí)間格式為DD-MM-YYYY怎么修改呢?如何插入時(shí)間數(shù) 據(jù) 1)先在SQLPLUS中SELECT SYSDATE FROM DUAL;就知道日期的格式 2)alter session set NLS_DATE_FORMAT='YYYY-MM-DD';修改當(dāng)前輸入格式 3)oracle中的默認(rèn)格式是:‘dd-mm-yyyy’ ;修改語(yǔ)句:alter session set nls_date_format='yyyy-mm-dd';修改后輸入和顯示都為指定格式,缺點(diǎn)是只對(duì)當(dāng)前會(huì)話起作用 假如你是要永久修改的話,改注冊(cè)表: regedit->hkey_local_machine->oracle->homeo-> NLS_DATE_FORMAT值YYYY-MM-DD(經(jīng)驗(yàn)證不管用) 默認(rèn)日期:50年之前是當(dāng)前世紀(jì),50年之后是之前世紀(jì),31-12月-49代表2049年01-1月-50 代表1950年 4)由于在表編輯器中to_date函數(shù)的格式是dd-mon-yyyy,輸入時(shí)為如下格式13-6 月-1983(代碼編輯時(shí)一樣,世紀(jì)可以省略,代表當(dāng)前世紀(jì)) 5)to_char通常用于查詢(xún)語(yǔ)句; to_date通常用于增刪改語(yǔ)句 6)兩個(gè)’代表一個(gè)’ 六、代碼編輯器 1、SQL PLUS2、SQL PLUS WORKSHEET3、isqlplus 設(shè)置列寬:set linesize 50; 七、與SQL2000中的查詢(xún)分析器不同,SQL plus worksheet執(zhí)行所有語(yǔ)句,不單單執(zhí)行選中語(yǔ)句 八、編輯——清除;可以清除查詢(xún)結(jié)果 九、查看環(huán)境變量:select * from v$nls_parameters; 十、示例用戶(hù) 1)scott/tigernormal登錄 2)hr : 需要解鎖和重設(shè)密碼(alter user hr account unlock;) 十一、查看和更改oracle http占用端口號(hào),D:ora9ApacheApacheconf下,httpd.conf和httpd.conf.default中將80修改,然后重新啟動(dòng)HTTP服務(wù) 加個(gè)字符串 六、工具的使用 1、net manager: 配置服務(wù)主機(jī)名和監(jiān)聽(tīng)主機(jī)名 2、net configuration assistant:配置監(jiān)聽(tīng)程序,本地服務(wù)名配置等 /*****************************************************************************/ oracle小知識(shí)點(diǎn) 1、數(shù)據(jù)操作時(shí),字段區(qū)分大小寫(xiě) 2、Oracle兩種認(rèn)證模式:(1)操作系統(tǒng)認(rèn)證(2)文件口令認(rèn)證。 初始化參數(shù)的文件目錄為D:oracle_programdatabase3、sqlplus中使用 help index查看幫助信息目錄,? 命令:查看某個(gè)命令的詳細(xì)用法 連接數(shù)據(jù)庫(kù)后才能使用 5、當(dāng)代碼中使用函數(shù)時(shí),函數(shù)中固定的關(guān)鍵字必須寫(xiě)正確,當(dāng)放在字符串中的時(shí)候,編譯沒(méi)有錯(cuò)誤,運(yùn)行時(shí)才會(huì)出現(xiàn)錯(cuò)誤,通常是SQL遞歸錯(cuò)誤 一.ORACLE管理器和目錄介紹 二、如何配置一個(gè)連接和偵聽(tīng)(連接配置文件、偵聽(tīng)文件位置) 三、數(shù)據(jù)庫(kù)安裝需注意的參數(shù) 字符集 內(nèi)存 會(huì)話數(shù) PFILE,SPFILE 自己在客戶(hù)端配置到數(shù)據(jù)庫(kù)服務(wù)器的連接 四、PLD工具介紹 1、右鍵菜單 2、Copy to Excel 3、Select for Update 4、執(zhí)行單條SQL語(yǔ)句 5、查看執(zhí)行計(jì)劃 6、調(diào)試存儲(chǔ)過(guò)程 五、常用DBA視圖 Dba_object, dba_data_file, dba_tables, v$sqltext, v$session V$lock, dba_tab_columns, dba_indexes 六、物化視圖原理及數(shù)據(jù)分發(fā)常規(guī)處理 物化視圖刷新時(shí)間 生產(chǎn)機(jī)和查詢(xún)機(jī) 七、作業(yè)調(diào)度 八、DBLINK CTAIS體系結(jié)構(gòu) 表(Table)命名規(guī)則(1)表名 表名前綴根據(jù)表所操作的業(yè)務(wù)及功能進(jìn)行分類(lèi),使用具體業(yè)務(wù)名稱(chēng)的漢語(yǔ)拼音,長(zhǎng)度為兩個(gè)字符。標(biāo)題使用規(guī)范的漢語(yǔ)拼音縮寫(xiě),標(biāo)題內(nèi)容以詞組或短語(yǔ)為單位,長(zhǎng)度不超過(guò)10個(gè)字符,詞組與詞組之間使用‘_’相連接。例如,申報(bào)征收模塊中小規(guī)模納稅人申報(bào)增值稅表名為:SB_ZZS_XGMNSR。(2)表名后綴 主表與子表是一對(duì)多的關(guān)系,子表名是在主表名后加后綴:_ZB 例:DJ_BG_ZB 申請(qǐng)表加后綴:_SQ 例:WS_HDZS_SQ 審批表加后綴:_SP 例:WS_HDZS_SP 擴(kuò)展表加后綴:_KZ 例:DJ_NSRXX_KZ 附表加后綴:_FB 例:SB_ZZS_2003_FB SB_ZZS_2003_FB1 SB_ZZS_2003_FB2 表(Table)命名規(guī)則(3)列名 列名由長(zhǎng)度不超過(guò)30個(gè)英文字符和數(shù)字的組合,使用規(guī)范的漢語(yǔ)拼音縮寫(xiě)。命名規(guī)則如下: 凡是參照代碼表的列,列名一律加‘_DM’后綴; 例:NSR_SWJG_DM、HY_DM “XX標(biāo)志”列,當(dāng)其取值為“真/假”時(shí),數(shù)據(jù)類(lèi)型用Char(1),列名加‘BZ’或‘_BZ’后綴。例:NSR_SWJG_BZ CTAIS表的類(lèi)型 BB_報(bào)表 CX_查詢(xún) DJ_登記 DM_代碼 FP_發(fā)票 HD_核定 JC_稽查 KJ_會(huì)計(jì) PI_批處理 PZ_票證 QX_權(quán)限 RD_認(rèn)定 SB_申報(bào) WF_維護(hù)、工作流 WS_文書(shū) WZ_違章 XT_系統(tǒng) ZD_字典 ZJ_證件 ZX_執(zhí)行 ctais部分表 DJ_NSRXX,DJ_NSRXX_KZ,DJ_SZ,DJ_SZ_ZB,DJ_SZ_KZ,DJ_YZCWSBQC RD_NSRZG_LSXX,HD_DSQC_LS WS_DJXX,WS_JMS_SQ,WS_JMS_SP FP_KC,FP_YJ,FP_NSR_JC SB_SBXX,SB_ZZS_2003_YBNSR,SB_ZZS_2003_FB1 SB_ZSXX,SB_JKS,SB_WSZ JC_AJXX,JC_CLJDS,WZ_WFWZXX,WZ_CLCFXX, ZX_ZXXX QX_USER,QX_GNMK,QX_GNMB XT_XTCS,XT_DYCS 如何自己搭建本地的測(cè)試庫(kù) 1. 安裝ORACLE服務(wù)器版,并修改字符集 2. 創(chuàng)建CTAIS實(shí)例 3. 創(chuàng)建表空間 4. 創(chuàng)建CTAIS2用戶(hù) 5. 執(zhí)行數(shù)據(jù)庫(kù)安裝腳本 6. 停止觸發(fā)器和外鍵 7. 倒入數(shù)據(jù)(因表已經(jīng)存在,IMP時(shí)需要忽略創(chuàng)建錯(cuò)誤IGNORE=Y)8. 編譯失效對(duì)象第三篇:oracle常用語(yǔ)句
第四篇:oracle學(xué)習(xí)心得
第五篇:ORACLE講稿