




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、一SQLSERVER與ORACLE1.絕對值S:select abs(-1) valueO:select abs(-1) value from dual2.取整(大)S:select ceiling(-1.001) valueO:select ceil(-1.001) value from dual3.取整(?。㏒:select floor(-1.001) valueO:select floor(-1.001) value from dual4.取整(截?。㏒:select cast(-1.002 as int) valueO:select trunc(-1.002) value from d
2、ual 5.四舍五入S:select round(1.23456,4) value 1.23460O:select round(1.23456,4) value from dual 1.23466.e為底的冪S:select Exp(1) value 2.7182818284590451O:select Exp(1) value from dual 2.718281827.取e為底的對數(shù)S:select log(2.7182818284590451) value 1O:select ln(2.7182818284590451) value from dual; 18.取10為底對數(shù)S:sele
3、ct log10(10) value 1O:select log(10,10) value from dual; 19.取平方S:select SQUARE(4) value 16O:select power(4,2) value from dual 1610.取平方根S:select SQRT(4) value 2O:select SQRT(4) value from dual 211.求任意數(shù)為底的冪S:select power(3,4) value 81O:select power(3,4) value from dual 8112.取隨機數(shù)S:select rand() valueO:
4、select sys.dbms_random.value(0,1) value from dual;13.取符號S:select sign(-8) value -1O:select sign(-8) value from dual -1-數(shù)學函數(shù)14.圓周率S:SELECT PI() value 3.1415926535897931O:不知道15.sin,cos,tan 參數(shù)都以弧度為單位例如:select sin(PI()/2) value 得到1(SQLServer)16.Asin,Acos,Atan,Atan2 返回弧度17.弧度角度互換(SQLServer,Oracle不知道)DEGR
5、EES:弧度-角度RADIANS:角度-弧度-數(shù)值間比較18. 求集合最大值S:select max(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select greatest(1,-2,4,3) value from dual19. 求集合最小值S:select min(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)
6、aO:select least(1,-2,4,3) value from dual20.如何處理null值(F2中的null以10代替)S:select F1,IsNull(F2,10) value from TblO:select F1,nvl(F2,10) value from Tbl-數(shù)值間比較21.求字符序號S:select ascii('a') valueO:select ascii('a') value from dual22.從序號求字符S:select char(97) valueO:select chr(97) value from dual2
7、3.連接S:select '11'+'22'+'33' valueO:select CONCAT('11','22')|33 value from dual23.子串位置 -返回3S:select CHARINDEX('s','sdsq',2) valueO:select INSTR('sdsq','s',2) value from dual23.模糊子串的位置 -返回2,參數(shù)去掉中間%則返回7S:select patindex('%d%q%&
8、#39;,'sdsfasdqe') valueO:oracle沒發(fā)現(xiàn),但是instr可以通過第四個參數(shù)控制出現(xiàn)次數(shù)select INSTR('sdsfasdqe','sd',1,2) value from dual 返回624.求子串S:select substring('abcd',2,2) valueO:select substr('abcd',2,2) value from dual25.子串代替 返回aijklmnefS:SELECT STUFF('abcdef', 2, 3, 'i
9、jklmn') valueO:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual26.子串全部替換S:沒發(fā)現(xiàn)O:select Translate('fasdbfasegas','fa','我' ) value from dual27.長度S:len,datalengthO:length28.大小寫轉(zhuǎn)換 lower,upper29.單詞首字母大寫S:沒發(fā)現(xiàn)O:select INITCAP('abcd dsaf df'
10、;) value from dual30.左補空格(LPAD的第一個參數(shù)為空格則同space函數(shù))S:select space(10)+'abcd' valueO:select LPAD('abcd',14) value from dual31.右補空格(RPAD的第一個參數(shù)為空格則同space函數(shù))S:select 'abcd'+space(10) valueO:select RPAD('abcd',14) value from dual32.刪除空格S:ltrim,rtrimO:ltrim,rtrim,trim33. 重復字符
11、串S:select REPLICATE('abcd',2) valueO:沒發(fā)現(xiàn)34.發(fā)音相似性比較(這兩個單詞返回值一樣,發(fā)音相同)S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dualSQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比較soundex的差返回0-4,4為同音,
12、1最高-日期函數(shù)35.系統(tǒng)時間S:select getdate() valueO:select sysdate value from dual36.前后幾日直接與整數(shù)相加減37.求日期S:select convert(char(10),getdate(),20) valueO:select trunc(sysdate) value from dualselect to_char(sysdate,'yyyy-mm-dd') value from dual38.求時間S:select convert(char(8),getdate(),108) valueO:select to_c
13、har(sysdate,'hh24:mm:ss') value from dual39.取日期時間的其他部分S:DATEPART 和 DATENAME 函數(shù) (第一個參數(shù)決定)O:to_char函數(shù) 第二個參數(shù)決定參數(shù)-下表需要補充year yy, yyyyquarter qq, q (季度)month mm, m (m O無效)dayofyear dy, y (O表星期)day dd, d (d O無效)week wk, ww (wk O無效)weekday dw (O不清楚)Hour hh,hh12,hh24 (hh12,hh24 S無效)minute mi, n (n O
14、無效)second ss, s (s O無效)millisecond ms (O無效)-40.當月最后一天S:不知道O:select LAST_DAY(sysdate) value from dual41.本星期的某一天(比如星期日)S:不知道O:SELECT Next_day(sysdate,7) vaule FROM DUAL;42.字符串轉(zhuǎn)時間S:可以直接轉(zhuǎn)或者select cast('2004-09-08'as datetime) valueO:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh
15、24-mi-ss') vaule FROM DUAL;43.求兩日期某一部分的差(比如秒)S:select datediff(ss,getdate(),getdate()+12.3) valueO:直接用兩個日期相減(比如d1-d2=12.3)SELECT (d1-d2)*24*60*60 vaule FROM DUAL;44.根據(jù)差值求新的日期(比如分鐘)S:select dateadd(mi,8,getdate() valueO:SELECT sysdate+8/60/24 vaule FROM DUAL;45.求不同時區(qū)時間S:不知道O:SELECT New_time(sysda
16、te,'ydt','gmt' ) vaule FROM DUAL;-時區(qū)參數(shù),北京在東8區(qū)應(yīng)該是Ydt-AST ADT 大西洋標準時間BST BDT 白令海標準時間CST CDT 中部標準時間EST EDT 東部標準時間GMT 格林尼治標準時間HST HDT 阿拉斯加夏威夷標準時間MST MDT 山區(qū)標準時間NST 紐芬蘭標準時間PST PDT 太平洋標準時間YST YDT YUKON標準時間oracle基本概念和術(shù)語作者: 不詳 來源: ChinaITLab 2006年03月17日Oracle
17、數(shù)據(jù)庫系統(tǒng)是一個復雜的軟件系統(tǒng)。如果不了解其內(nèi)部的結(jié)構(gòu)原理及關(guān)系,就不可能設(shè)計和編寫出高質(zhì)量的應(yīng)用軟件系統(tǒng),也不可能管理好一個復雜的應(yīng)用系統(tǒng)。為了給以后章節(jié)的打好基礎(chǔ),本章簡要給出 ORACLE 8 /ORACLE8i數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)的描述。 §2.1 術(shù)語 數(shù)據(jù)庫塊(BLOCK) ORACLE 數(shù)據(jù)庫中的最小存儲和處理單位,包含塊本身的頭信息數(shù)據(jù)或PL/SQL代碼。 ORACLE 塊的大小是可以在安裝時選擇“自定義安裝”來指定,也可以在CREATE DATABASE創(chuàng)建數(shù)據(jù)庫實例時指定。其最小為2K,最大可達為64K. 瓶頸(Bottleneck) 指限制系統(tǒng)性能的部件。 面向?qū)ο蟮?/p>
18、關(guān)系數(shù)據(jù)庫 具有關(guān)系數(shù)據(jù)庫的全部功能,同時又支持面向?qū)ο蟮臄?shù)據(jù)庫,稱作面向?qū)ο箨P(guān)系數(shù)據(jù)庫系統(tǒng)。Oracle7是一種功能完備的關(guān)系數(shù)據(jù)庫系統(tǒng);oracle8是一種面向?qū)ο蟮年P(guān)系數(shù)據(jù)庫系統(tǒng)。 客戶/服務(wù)器結(jié)構(gòu)(Client/Server) 有客戶機、服務(wù)器、網(wǎng)絡(luò)三要素的結(jié)構(gòu),客戶機(PC機)通過網(wǎng)絡(luò)與服務(wù)器相連和工作。 胖客戶機(Fat Client) 一般的Client/Server結(jié)構(gòu)中的客戶機均為胖客戶機。因為這些客戶機需要配置較高的設(shè)備,如內(nèi)存、硬盤、主頻、CD_ROM等。 瘦客戶機(Thin Client) 也稱作NC(網(wǎng)絡(luò)計算機),是一種內(nèi)存配置?。ㄟ^去指一般只有4M,現(xiàn)無法定義),無
19、硬盤,只有處理心片的處理機。 數(shù)據(jù)在線分析處理(OLAP) 是一種能以快速、交互、方便的方式洞察數(shù)據(jù)情況的技術(shù)。如Oracle Express,Cognos(加拿大)的Power Play, Business Objects公司的Business Object 等。 多線程(MTS) 一個用戶可以同時運行多個程序?qū)?shù)據(jù)庫進行訪問,比如Visual C/C+可以提供同時啟動多個進程,而Visual Basic則不能。 數(shù)據(jù)倉庫(Data Warehouse) 支持大量數(shù)據(jù)信息存儲的叫做支持數(shù)據(jù)倉儲或數(shù)據(jù)倉庫。當把幾個小型數(shù)據(jù)庫集成為一個大型數(shù)據(jù)庫,并為一個較廣泛的組織服務(wù)時,如果該數(shù)據(jù)庫存儲歷史
20、數(shù)據(jù),提供決策支持,提供數(shù)據(jù)匯總,提供只讀數(shù)據(jù),并且實質(zhì)上充當所有向它提供數(shù)據(jù)的相關(guān)成品數(shù)據(jù)庫的數(shù)據(jù)接收器,那么它通常被叫做數(shù)據(jù)倉庫。 實例(Instance) 是訪問Oracle數(shù)據(jù)庫所需的一部分計算機內(nèi)存和輔助處理后臺進程。 對象(Objects) 是實現(xiàn)世界實體的軟件表示,如表、索引、視圖、同義詞、過程等。 數(shù)據(jù)庫文件(Datafile) Oracle系統(tǒng)中用于存放數(shù)據(jù)(應(yīng)用系統(tǒng)數(shù)據(jù))的文件。(<<Oracle8初學者指南>;>14中的例子不準確,容易誤導讀者)。 控制文件(Control File) Oracle中存放系統(tǒng)用的一些數(shù)據(jù)的文件。如數(shù)據(jù)文件的路徑及文
21、件名,初始化文件路徑及 文件名等都存放在控制文件中。 日志文件(Logs File) 也叫事務(wù)記錄文件,該文件記錄有事物對數(shù)據(jù)庫進行的一切修改操作或事務(wù)。 DBA(Database administrator-數(shù)據(jù)庫管理員) 是管理數(shù)據(jù)庫系統(tǒng)的技術(shù)工具或人員,在完備的數(shù)據(jù)庫系統(tǒng)中都提供DBA功能。 灰數(shù)據(jù)塊(Dirty data block) 存放在內(nèi)存中的原始數(shù)據(jù)已被修改,而修改后的數(shù)據(jù)還未寫入數(shù)據(jù)庫中。 熱數(shù)據(jù)塊(Hot data block) 存放著那些經(jīng)常被修改數(shù)據(jù)叫熱數(shù)據(jù)塊。 LRU(Least Recently Used-最近最少用) Oracle系統(tǒng)使用的一種算法,對于在內(nèi)存中但
22、最近又不用的數(shù)據(jù)塊(內(nèi)存塊)叫做LRU,Oracle會根據(jù)那些數(shù)據(jù)屬于LRU而將其移出內(nèi)存而騰出空間來加載另外的數(shù)據(jù)。 表(Table) 存放專門數(shù)據(jù)而建立和分配的空間。 表空間(Tablespace) 是一個或多個數(shù)據(jù)文件的集合,所有的數(shù)據(jù)對象都存放在指定的表空間中,但主要存放的是表, 所以稱作表空間。 回滾(Rollback) 將用戶(或者說事務(wù))改變的數(shù)據(jù)恢復到上一次所處的狀態(tài)。 恢復信息(Undo Information) 記錄用于恢復的信息稱作恢復信息?;貪L就是根據(jù)恢復信息內(nèi)容進行恢復的。 §2.2 Oracle數(shù)據(jù)庫結(jié)構(gòu)Oracle數(shù)據(jù)庫結(jié)構(gòu)是Oracle數(shù)據(jù)庫系統(tǒng)的主要
23、部分,它是一些可以看得見的軟件,包括: Oracle 數(shù)據(jù)字典l 表空間與數(shù)據(jù)文件l Oracle實例(Instance) §2.2.1 Oracle 數(shù)據(jù)字典Oracle數(shù)據(jù)庫的重要部分是數(shù)據(jù)字典。它存放有Oracle數(shù)據(jù)庫所用的有關(guān)信息,對用戶來說是一組只讀的表。數(shù)據(jù)字典內(nèi)容包括: 數(shù)據(jù)庫中所有模式對象的信息,如表、視圖、簇、及索引等。 分配多少空間,當前使用了多少空間等。 列的缺省值。 約束信息的完整性。 Oracle用戶的名字。 用戶及角色被授予的權(quán)限。 用戶訪問或使用的審計信息。 其它產(chǎn)生的數(shù)據(jù)庫信息。 數(shù)據(jù)庫數(shù)據(jù)字典是一組表和視圖結(jié)構(gòu)。它們存放在SYSTEM表空間中。數(shù)據(jù)
24、庫數(shù)據(jù)字典不僅是每個數(shù)據(jù)庫的中心。而且對每個用戶也是非常重要的信息。用戶可以用SQL語句訪問數(shù)據(jù)庫數(shù)據(jù)字典。 §2.2.2 表空間與數(shù)據(jù)文件簡單說,表空間就是一個或多個數(shù)據(jù)文件(物理文件)的集合(邏輯文件)。一般有下面的表空間: 1)系統(tǒng)表空間(System tablespace) 是各種不同版本的Oracle必備的部分,存放Oracle系統(tǒng)的一些信息,一般只有一個SYSTEM表空間。 2)臨時表空間(Temporary tablespace ) 由于Oracle工作時經(jīng)常需要一些臨時的磁盤空間,這些空間主要用作查詢時帶有排序(Group by,Order by等)等算法所用,當用完
25、后就立即釋放,對記錄在磁盤區(qū)的信息不再使用,因此叫臨時表空間。一般安裝之后只有一個TEMP臨時表空間。 3)工具表空間(Tools tablespace) 用于保存Oracle數(shù)據(jù)庫工具所需的數(shù)據(jù)庫對象,這些工具表空間存放在工作時所用的專用表。舊的Oracle版本無此表空間。安裝之后的工具表空間是Tools. 4)用戶表空間(Users tablespace) 用于存放一些實驗例子用的空間,當然也可以用于存放應(yīng)用系統(tǒng)的數(shù)據(jù)。舊版本無Users表空間?,F(xiàn)在的用戶表空間為 USERS . 5)數(shù)據(jù)及索引表空間存放數(shù)據(jù)及索引的表空間,Oracle7以后都提倡在應(yīng)用系統(tǒng)中,特別是具有大量數(shù)據(jù)的系統(tǒng),要
26、把數(shù)據(jù)和索引分開存放在不同的分區(qū)中,以便提高查詢速度。在安裝后索引表空間可能是INDX.數(shù)據(jù)表空間就是USERS. 6)回滾段表空間(Rollback Segment) Oracle數(shù)據(jù)庫系統(tǒng)在運行Insert、Update、Delete時都需要一個磁盤空間來存放恢復信息(Undo Information),以便在進行恢復時能將原來信息讀出來。安裝后的回滾段表空間是RBS表空間。數(shù)據(jù)庫管理員也可根據(jù)應(yīng)用的需要建立另外的回滾段表空間。Oracle 以表空間來存儲邏輯數(shù)據(jù)并 以物理數(shù)據(jù)相連。數(shù)據(jù)庫被分成一個或多個邏輯部件稱作表空間。而表空間又被分成稱作段(segment)的邏輯部件。這些段再細分就
27、叫擴展(extents)。 §2.2.3 Oracle實例Oracle實例(Instance)是由一組后臺進程和內(nèi)存結(jié)構(gòu)組成。每個運行的數(shù)據(jù)庫系統(tǒng)都與實例有關(guān)。所以,有時稱Oracle實例為數(shù)據(jù)庫操作系統(tǒng)。下面是Oracle實例的解釋。 Oracle 進程Oracle有兩種類型的進程: 服務(wù)器進程和后臺進程(server processes and background processes)。 服務(wù)器進程Oracle 服務(wù)器進程是處理用戶與實例連接的事務(wù)。任務(wù)是: 分析和執(zhí)行應(yīng)用所發(fā)出的SQL語句。 從數(shù)據(jù)文件讀必要的數(shù)據(jù)到SGA區(qū)的共享數(shù)據(jù)區(qū)。 返回必要信息給應(yīng)用。 后臺進程Ora
28、cle系統(tǒng)使用一些附加的進程來處理系統(tǒng)的必須的工作。這些進程叫后臺進程: 數(shù)據(jù)庫寫 (DBW0 或DBWn) 日志寫 (LGWR) 檢測點 (CKPT) 系統(tǒng)監(jiān)視 (SMON) 進程監(jiān)視 (PMON) 歸檔 (ARCn) 恢復 (RECO) 鎖(LCK0) 工作隊列 (SNPn) 隊列監(jiān)視 (QMNn) 發(fā)布(Dispatcher) (Dnnn) 服務(wù)器 (Snnn) Oracle 的內(nèi)存結(jié)構(gòu)(SGA) SGA 結(jié)構(gòu)為: 數(shù)據(jù)高速緩沖區(qū)重做日志緩沖區(qū)共享池大的共享池(可選) 數(shù)據(jù)字典緩沖區(qū)其它數(shù)據(jù)緩沖區(qū) §2.3 Oracle數(shù)據(jù)庫文件ORACLE 數(shù)據(jù)庫是一個復雜的數(shù)據(jù)庫操作系統(tǒng),
29、由一系列部件組成,主要有:1)初始化參數(shù)文件、2)數(shù)據(jù)文件、3)控制文件、4)日志文件等。 §2.3.1 初始化參數(shù)文件初始化參數(shù)文件(initialization parameter file) INITsid.ORA,是 ORALE RDBMS 主要的配置點,它是配置參數(shù)和數(shù)值的集合。每一個參數(shù)值都控制或修改數(shù)據(jù)庫和實例的某個方面。 早期的版本把參數(shù)都寫在 initsid.ora 文件中,但在ORACLE8 之后,多數(shù)參數(shù)已不在該文件中出現(xiàn),需修改這些參數(shù)時只能在SQL>;下用 SET SESSION 或 SET SYSTEM 來進行。 查看系統(tǒng)參數(shù)可用。例如: SQL&g
30、t;;select * from v$parameter; 來列出。 Oracle初始化參數(shù)文件是一個可以編輯的文本文件。它是在數(shù)據(jù)庫實例啟動時被訪問,從而得到數(shù)據(jù)文件、日志文件、控制文件等的路徑,此外,初始化參數(shù)文件還提供實例所用的參數(shù)等。 §2.3.2 數(shù)據(jù)文件用于存放所有數(shù)據(jù)庫的數(shù)據(jù)文件,Oracle安裝過程中自動建立多個必要的數(shù)據(jù)文件。這些數(shù)據(jù)文件用于存放Oracle系統(tǒng)的基本數(shù)據(jù)。在應(yīng)用系統(tǒng)開發(fā)過程中,我們可根據(jù)需要另建立一些數(shù)據(jù)文件。 如果數(shù)據(jù)文件按它們存放的數(shù)據(jù)類型來分的話,可以分為:用戶數(shù)據(jù)(存放應(yīng)用系統(tǒng)的數(shù)據(jù)為用戶數(shù)據(jù));系統(tǒng)數(shù)據(jù)。 管理用戶數(shù)據(jù)和數(shù)據(jù)庫系統(tǒng)本身的數(shù)
31、據(jù),如數(shù)據(jù)字典,用戶建立的表的名字,類型等都記錄在系統(tǒng)數(shù)據(jù)中。 §2.3.3 控制文件控制文件是由Oracle數(shù)據(jù)庫實例在啟動時被訪問的內(nèi)部二進制文件,它們所存放的路徑由參數(shù)文件的control_files=參數(shù)來確定。 Oracle一般有兩個或更多的控制文件,每個控制文件記錄有相同的信息,在數(shù)據(jù)庫運行中如果某個控制文件出錯時,Oracle會自動使用另外一個控制文件。當所有的控制文件都損壞時系統(tǒng)將不能工作。 Oracle數(shù)據(jù)庫至少有一個控制文件;一般數(shù)據(jù)庫系統(tǒng)安裝完成后,自動創(chuàng)建兩個以上控制文件;為了安全一般建議創(chuàng)建多個控制文件;控制文件可用下面命令查到: select name,v
32、alue from v$parameter where name like 'control_files'; §2.3.4 重做日志文件重做日志文件是Oracle系統(tǒng)中一個很重要的文件。特點是: 重做日志是Oracle的日記帳,負責記錄所有用戶對象或系統(tǒng)變更的信息;安裝完成后有多個重做日志文件,它們是幾個分為一組,組內(nèi)的重做日志文件大小要一樣;為了使系統(tǒng)性能更好可以在創(chuàng)建多重做日志文件組;重做日志文件可以名下面命令查到: select * from v$logfile; §2.3.5 其它支持文件除了上面的三類文件外,還有:Sqlnet.ora文件;Tnsn
33、ames.ora文件;Listener.ora文件等。 §2.4 重做日志和重做日志工作模式重做日志、日志文件及重做日工作模式是Oracle系統(tǒng)中很重要的概念,管理員要完全理解它們的原理和使用方法。下面只給簡單的概念,有關(guān)的管理在另外章節(jié)給出。 §2.4.1 重做日志Oracle所作的一切操作都記錄在日志文件中,Oracle系統(tǒng)在工作當中并不是每作一條記錄的修改就立即存盤(寫入數(shù)據(jù)文件),而是只作修改記錄,聯(lián)機重做日志就保存所有這些改變的信息。當所有的修改最后寫入數(shù)據(jù)文件時,所有的修改仍記錄在聯(lián)機重做日志中,這將有利于對這些事務(wù)記錄進行恢復操作。但如果不是聯(lián)機重做日志,則只
34、能恢復部分近期的操作。 §2.4.2 重做日志工作模式Oracle可以在兩種模式之一來工作:1)ARCHIVELOG模式(可恢復) Oracle 一般至少有兩個日志文件。它們輪流交替地被寫入所作的一切修改信息。當系統(tǒng)設(shè)置為可恢復模式,Oracle自動將每次即將被覆蓋(沖掉)的日志信息先作備份,然后再其上記錄所修改的信息。這樣的方式,就可以利用備份與恢復工作進行某時期的數(shù)據(jù)恢復。 2)NOARCHIVELOG模式(有限的恢復) 缺省情況下為NOARCHIVELOG,Oracle不保留舊的重做日志信息(可以在原來基礎(chǔ)覆蓋寫入)。因此一般情況下不可恢復的。 §2.5 數(shù)據(jù)塊、區(qū)間
35、和段§2.5.1 數(shù)據(jù)塊(data block) Oracle的數(shù)據(jù)塊也叫Oracle塊;Oracle系統(tǒng)在創(chuàng)建表空間時將數(shù)據(jù)文件格式化成若干個Oracle塊;每個Oracle塊是Oracle系統(tǒng)處理的最小單位;塊的大小在安裝系統(tǒng)時確定,可以選擇“自定義安裝”來設(shè)置大?。粔K的大小一旦確定下來就不能改動;塊的大小可以從2k至64k不等;塊的大小可以用下面命令查到: select name,value from v$parameter where name like 'db_block_size'; §2.5.2 區(qū)間(extent) 分配給對象(如表)的任何連
36、續(xù)塊叫區(qū)間;區(qū)間也叫擴展,因為當它用完已經(jīng)分配的區(qū)間后,再有新的記錄插入就必須在分配新的區(qū)間(即擴展一些塊);區(qū)間的大小由next 決定;一旦區(qū)間分配給某個對象(表、索引及簇),則該區(qū)間就不能再分配給其它的對象;一個對象所用去多少區(qū)間可用下命令查到: select segment_name,tablespace_name,count(*) from dba_extents having count(*)>;1 group by segment_name,tablespace_name; §2.5.3 段(segment) 段是指占用數(shù)據(jù)文件空間的通稱,或數(shù)據(jù)庫對象使用的空間的集
37、合;段可以有表段、索引段、回滾段、臨時段和高速緩存段等;段使用同表空間中的若干Oracle塊(可以位于不同數(shù)據(jù)文件中)。 例:CREATE TABLE abc ( empno number(4),ename varchar2(20),sal number(9,2) TABLESPACE user_data storage(initial 500k next 256k pctincrease 0); ) 段被分配初始區(qū)間500k;) 當開始的500k用完后就再分配256k; 此時段500k+256k;) 如果所分配的區(qū)間又用完后,就再分配256k, §2.6 Oracle數(shù)據(jù)庫進程一般
38、情況,當數(shù)據(jù)庫啟動完成后(Instance 啟動成功)就至少有六個后臺進程在活動,這些進程根據(jù)數(shù)據(jù)庫的需要而分工不同。他們分別是: 1)數(shù)據(jù)庫寫入器(DBWR) 數(shù)據(jù)庫寫入器(Database Writer)的任務(wù)是將修改后的(在內(nèi)存)數(shù)據(jù)塊寫回數(shù)據(jù)庫文件中。在某些操作系統(tǒng)中,Oracle可以有兩個BDWR進程。 2)校驗點(CKPT) 是一個可選進程。在系統(tǒng)運行中當出現(xiàn)查找數(shù)據(jù)請求時,系統(tǒng)從數(shù)據(jù)庫中找出這些數(shù)據(jù)并存入內(nèi)存區(qū),這樣用戶就可以對這些內(nèi)存區(qū)數(shù)據(jù)進行修改等。當需要對被修改的數(shù)據(jù)寫回數(shù)據(jù)文件時就產(chǎn)生重做日志的交替寫(Switch),這時就出現(xiàn)校驗點。系統(tǒng)要把內(nèi)存中灰數(shù)據(jù)(修改過)塊中的
39、信息寫回磁盤的數(shù)據(jù)文件中,此外系統(tǒng)還將重做日志通知控制文件。DBA可以改變參數(shù)文件中CHECKPOINT_PROCESS TRUE來使能( 使有效或無效)該進程。 3)日志寫入器(LGWR) 用于將SGA區(qū)中的日志信息寫入日志文件的進程。一般是用戶所作的修改值先記入日志文件。等到一定時才真正將修改結(jié)果寫回數(shù)據(jù)文件。 4)系統(tǒng)監(jiān)控器(SMON) 系統(tǒng)監(jiān)控器(System monitor)是在數(shù)據(jù)庫系統(tǒng)啟動時執(zhí)行恢復工作的強制性進程。比如在并行服務(wù)器模式下(兩臺服務(wù)器共用一磁盤組),SMON可以恢復另一臺處于失敗的數(shù)據(jù)庫。使系統(tǒng)切換到另一臺正常的服務(wù)器上。 5)進程監(jiān)控器(PMON) 進程監(jiān)控器(
40、Process Monitor)用于終止那些失敗的用戶,釋放該用戶所占用的資源等。 6)歸檔器(ARCH) 可選進程,當數(shù)據(jù)庫系統(tǒng)處于歸檔(ARCHIVELOG)模式時使用。 7)鎖(LCKn) 可選進程,當在并行服務(wù)器模式可出現(xiàn)多個鎖定進程以利于數(shù)據(jù)庫通信。 8) 恢復器(RDCO) 分布式數(shù)據(jù)庫(不同地點有不同機器和不同的Oracle系統(tǒng))模式下使用的可選進程,用于數(shù)據(jù)不一致時作的恢復工作。在RECO解決恢復前,所作的修改數(shù)據(jù)的標志均標為“可疑”。 9)調(diào)度(Dnnn) 可選進程,在多線程下使用,即對每個在用(D000,Dnnn)的通信協(xié)議至少創(chuàng)建一個調(diào)度進程,每個調(diào)度進程負責從所聯(lián)接的用
41、戶進程到可用服務(wù)器進程的路由請求。把響應(yīng)返回給合適的用戶進程。 10)快照進程(SNPn) 快照進程處理數(shù)據(jù)庫快照的自動刷新,并通過 DBMS_JOB 包運行預定的數(shù)據(jù)庫過程。 INITsid.ORA 參數(shù) JOB_QUEUE_PROCESS 設(shè)置快照進程數(shù), 參數(shù) JOB_QUEUE_INTERVAL 決定快照進程在被喚醒以處理掛起的作業(yè)或事務(wù)之前休眠的秒數(shù)。 11)并行查詢進程(Pnnn) 可根據(jù)數(shù)據(jù)庫的活動并行查詢選項的設(shè)置,ORACLE服務(wù)器起動或停止查詢進程。這些進程涉及并行索引的創(chuàng)建,表的創(chuàng)建及查詢。 啟動的數(shù)量與參數(shù) PARALLEL_MIN_SERVERS指定的數(shù)量相同,不能超
42、出該參數(shù)指定的值。 §2.7 Oracle內(nèi)存結(jié)構(gòu)前面提到過Oracle的數(shù)據(jù)庫實例是一組后臺進程和內(nèi)存結(jié)構(gòu)組成。而內(nèi)存結(jié)構(gòu)是包括: 系統(tǒng)全局區(qū)(System Global Area) 程序全局區(qū)(Program Global Area) §2.7.1 系統(tǒng)全局區(qū)Oracle 系統(tǒng)用于存放系統(tǒng)信息的一塊存儲區(qū)域,用戶進程和Oracle后臺進程都可以使用SGA.在SGA中含有許多組件(不同的部分)。 數(shù)據(jù)高速緩沖區(qū)(Data Buffer Cache) 在數(shù)據(jù)高速緩沖區(qū)中存放著Oracle系統(tǒng)最近使用過的數(shù)據(jù)塊(即用戶的高速緩沖區(qū)),當把數(shù)據(jù)寫入數(shù)據(jù)庫時,它以數(shù)據(jù)塊為單位進行
43、讀寫,當數(shù)據(jù)高速緩沖區(qū)填滿時,則系統(tǒng)自動去掉一些不常被用訪問的數(shù)據(jù)。如果用戶要查的數(shù)據(jù)不在數(shù)據(jù)高速緩沖區(qū)時,Oracle自動從磁盤中去讀取。數(shù)據(jù)高速緩沖區(qū)包括三個類型的區(qū): 1) 臟的區(qū)(Dirty Buffers):包含有已經(jīng)改變過并需要寫回數(shù)據(jù)文件的數(shù)據(jù)塊。 2) 自由區(qū)(Free Buffers):沒有包含任何數(shù)據(jù)并可以再寫入的區(qū),Oracle可以從數(shù)據(jù)文件讀數(shù)據(jù)塊該區(qū)。 3) 保留區(qū)(Pinned Buffers):此區(qū)包含有正在處理的或者明確保留用作將來用的區(qū)。 Oracle8i以后將緩沖池分為三個區(qū)(使用多個緩沖池特性時):1) KEEP 緩沖池(KEEP buffer pool)
44、:在內(nèi)存中保留數(shù)據(jù)塊,它們不會被從內(nèi)存中擠掉;2) RECYCLE緩沖池從不需要的內(nèi)存將數(shù)據(jù)移掉;3) DEFAULT緩沖池包含有被分配的塊。 重做日志緩沖區(qū)(Rado Log Buffer) 任何事務(wù)(Transaction)在記錄到重做日志(恢復工作需要使用聯(lián)機重做日志)之前都必須首先放到重做日志緩沖區(qū)(Redo Log Buffer)中。然后由日志寫入進程(LGWR)定期將此緩沖區(qū)的內(nèi)容寫入重做日志中。 共享池(Shared Pool) 共享池是SGA保留的區(qū),用于存儲如SQL、PL/SQL存儲過程及包、數(shù)據(jù)字典、鎖、字符集信息、安全屬性等。共享池包含有:1) 庫高速緩存(Library
45、 Cache);2) 字典高速緩沖區(qū)(Dictionary Cache )。 庫高速緩存(Library Cache) 該區(qū)包含有:1) 共享SQL區(qū)(Shared Pool Area);2) 私有SQL區(qū)(Private SQL Area);3) PL/SQL存儲過程及包(PL/SQL Procedure and Package);4) 控制結(jié)構(gòu)(Control Structure)。也就是說該區(qū)存放有經(jīng)過語法分析并且正確的SQL語句,并隨時都準備被執(zhí)行。 字典高速緩沖區(qū)(Data Dictionary Cache) 用于存放Oracle系統(tǒng)管理自身需要的所有信息,這些信息是登錄到Oracl
46、e的用戶名,這些用戶有那些數(shù)據(jù)庫對象以及這些數(shù)據(jù)庫對象的位置等。 SVRMGR>; Show SGA Total System Global Area 35544188 bytes Fixed Size 22208 bytes Variable Size 3376332 bytes Database Buffer 122880 bytes Redo Buffer 32768 bytes 后四項相加等于前一項。也可以使用 select * from v$SGA; 查詢當前實例的SGA. 大的池(Large Pool) 在SGA中大池是可選的緩沖區(qū)。它可以根據(jù)需要有管理權(quán)進行配置。它可以提供
47、一個大的區(qū)以供象數(shù)據(jù)庫的備份與恢復等操作。 程序全局區(qū)(PGA) PGA是Oracle使用的內(nèi)存區(qū)域,該區(qū)同一時間只能被一單個進程存放數(shù)據(jù)和控制,用于存放會話變量及內(nèi)部數(shù)組等。 §2.7.2 程序全局區(qū)PGA是Oracle使用的內(nèi)存區(qū)域,該區(qū)同一時間只能被一單個進程存放數(shù)據(jù)和控制,用于存放會話變量及內(nèi)部數(shù)組等。 §2.8 Oracle實例一個Oracle 實例(Instance) 是由SGA,后臺進程以及數(shù)據(jù)文件組成,每個數(shù)據(jù)庫有自己的SGA和獨立的Oracle進程集。在分布情況下,為使不同的數(shù)據(jù)庫系統(tǒng)的名字不致混淆,Oracle使用了一個SID(System Identi
48、fer)來標識每個Oracle Server的名字,在UNIX環(huán)境中以變量Oracle_Sid來區(qū)分。 §2.9 多線程服務(wù)器 (MTS) Oracle多線程服務(wù)器(Multithreader Server )允許對數(shù)據(jù)庫進行多個連接以充分共享內(nèi)存和資源,這使得可以用較少的內(nèi)存來支持較多的用戶。連接到Oracle數(shù)據(jù)庫的進程都需要占用一定的內(nèi)存空間,這樣如果有過多的進程連接到Oracle,則出現(xiàn)了一個性能瓶頸。 Oracle8可以允許一萬個以上用戶同時連接到Oracle,但并不是所有的用戶都使用MTS.目前的一些4GL工具并不支持MTS,象VB,PB等不支持MTS,象VC/C+可以支
49、持MTS. Oracle多線程服務(wù)器有自己的連接池(即共享服務(wù)器進程)。由于用戶共享開放連接,這比原來的專用方法快的多(消除瓶頸)。 多線程對于一些專用的應(yīng)用系統(tǒng)來說是非常合適的,比如訂單登記系統(tǒng),顧客提交訂單,錄入員該訂單的數(shù)據(jù);另外的錄入員在與顧客交涉,并不都在錄入數(shù)據(jù)(專用服務(wù)器進程閑著)。單這些終端被迫與系統(tǒng)連著,占據(jù)了其他用戶的資源。 多線程服務(wù)器則消除這些缺點。多線程服務(wù)器只維護一個連接池,當某個終端需和系統(tǒng)對話則給其分配一個連接即可。不需要則可以去掉。這樣系統(tǒng)的資源被多個用戶平攤。 改變參數(shù)文件中的相關(guān)參數(shù)來達到使系統(tǒng)成為多線程服務(wù)器配置(重新啟動即可有效)。另外,數(shù)據(jù)庫實例必須
50、提供用戶數(shù)目與所放置的一樣才行。 §2.10 Oracle事務(wù)處理流程銀行取款業(yè)務(wù)處理流程: 1. 發(fā)出查詢余款的SQL語句,如:Select account_balance From banktable Where account_number='111222333' And account_type='SAVINGS'; SQL語句通過SGA得到服務(wù)器進程;服務(wù)器進程檢查共享池中有無該條語句,無該條語句則將放置共享池中并準備運行;執(zhí)行SQL語句,把存放有余款的數(shù)據(jù)塊從數(shù)據(jù)文件中讀到SGA的數(shù)據(jù)高速緩沖區(qū);顯示結(jié)果,比如余款為$325. 2. 取款$
51、25:SQL語句為:Update Bank_table set account_balanct=300 Where account_number='111222333' And account_type='SAVINGS'; 客戶進程通過SGA把SQL語句傳給服務(wù)器進程;服務(wù)器進程查找有無該條語句,有執(zhí)行;分析SQL語句并存入共享池;執(zhí)行SQL語句; 要處理的數(shù)據(jù)在數(shù)據(jù)高速緩沖區(qū)嗎?是轉(zhuǎn)7;l 從數(shù)據(jù)文件中讀數(shù)據(jù)塊到數(shù)據(jù)高速緩沖區(qū);在回滾段中記錄原來的數(shù)值($325);在重做日志中生成該事務(wù)的一個拷貝;將數(shù)據(jù)高速緩沖區(qū)中的余額改為$300;銀行柜員機通過SGA發(fā)
52、出工作完成信號(提交):在重做日志中記錄已完成事務(wù);清除回滾段中的恢復信息(Undo Information);顧客取錢完成。 §2.11 ORACLE系統(tǒng)的SYS和SYSTEM模式SYS和SYSTEM 是每個ORACLE 數(shù)據(jù)庫系統(tǒng)缺省安裝的兩個帳戶。SYS 是所有內(nèi)部數(shù)據(jù)庫表、結(jié)構(gòu)、過程包、等擁有者,此外它還擁有 V$ 和數(shù)據(jù)字典視圖,并創(chuàng)建所有封裝的數(shù)據(jù)庫角色(DBA,CONNECT,RESOURCE)。 Sys是一個唯一能訪問特定內(nèi)部數(shù)據(jù)字典的用戶。 System 也是在安裝ORACLE 時創(chuàng)建的用戶,用于 DBA 任務(wù)的管理。 SYS 安裝后的缺省口令為 change_on
53、_install; SYSTEM 缺省口令為 manager. 為了安全,可在安裝完成后。 用 ALTER USER sys IDENTIFIED BY password; 命令修改這兩個特權(quán)帳戶的口令。 §2.12 ORACLE系統(tǒng)跟蹤文件所有ORACLE 數(shù)據(jù)庫都至少有一個文件用于記錄系統(tǒng)信息,錯誤及主要事件。這個文件叫做ALERTsid.log(這里的sid 為 oracle 的系統(tǒng)標識),存儲位置由INITsid.ORA 文件的 BACKGROUND_DUMP_DEST 參數(shù)給出。 后臺進程和用戶進程都可以建立各自的跟蹤文件,后臺進程跟蹤文件位置由BACKGROUND_DUM
54、P_DEST 參數(shù)給出, 而用戶跟蹤文件位置由 USER_DUMP_DEST 參數(shù)給出。 如參數(shù)文件 initora8.ora 中給出: # define directories to store trace and alert files background_dump_dest=d:oracleadminora8bdump user_dump_dest=d:oracleadminora8udump后臺跟蹤文件被命名為 sidPROC.TRC §2.13 ORACLE系統(tǒng)數(shù)據(jù)字典數(shù)據(jù)字典(data dictionary)是存儲在數(shù)據(jù)庫中的所有對象信息的知識庫,ORACLE數(shù)據(jù)庫系統(tǒng)
55、使用數(shù)據(jù)字典獲取對象信息和安全信息,而用戶和DBA用它來查閱數(shù)據(jù)庫信息。數(shù)據(jù)字典保存數(shù)據(jù)對象和段的信息。如表、視圖、索引、包、過程以及用戶、權(quán)限、角色、審計等的信息。數(shù)據(jù)字典是只讀對象,不允許任何人對其進行修改。 §2.14 其它數(shù)據(jù)對象ORACLE 除前面給出的數(shù)據(jù)對象外,還有包括視圖,序列,同義詞,觸發(fā)器,數(shù)據(jù)庫鏈及程序包,過程和函數(shù)。下面是必要介紹。 §2.14.1 視圖視圖是存儲在數(shù)據(jù)庫中的查詢的SQL 語句,它主要出于兩種主要原因:安全原因, 視圖可以隱藏一些數(shù)據(jù),如:社會保險基金表,可以用視圖只顯示姓名,地址,而不顯示社會保險號和工資數(shù)等,另一原因是可使復雜的查
56、詢易于理解和使用。 §2.14.2 序列序列是用于產(chǎn)生唯一數(shù)碼的數(shù)據(jù)庫對象,序列創(chuàng)建時帶有 初始值,增量值,最大值等,最大可達38 位整數(shù)。 §2.14.3 觸發(fā)器觸發(fā)器(trigger)是個特殊的存儲過程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動,而是由個事件來觸發(fā),比如當對一個表進行操作( insert,delete, update)時就會激活它執(zhí)行。觸發(fā)器經(jīng)常用于加強數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等。 觸發(fā)器可以從 DBA_TRIGGERS ,USER_TRIGGERS 數(shù)據(jù)字典中查到。 §2.14.4 同義詞同義詞(synonym)是指向其它數(shù)據(jù)庫表的數(shù)據(jù)庫指針
57、。同義詞有兩種類型:私有(private)和公共(public)。私有的同義詞是在指定的模式中創(chuàng)建并且只創(chuàng)建者使用的模式訪問。公共同義詞是由public 指定的模式訪問,所有數(shù)據(jù)庫模式(用戶)都可以訪問它。 §2.14.5 數(shù)據(jù)庫鏈數(shù)據(jù)庫鏈( database link )是與遠程數(shù)據(jù)庫連接的存儲定義, 它們用于查詢分布數(shù)據(jù)庫環(huán)境的遠程者。 由于存儲在 DBA_DB_LINKS 數(shù)據(jù)字典中,所以可以把它們看作一種數(shù)據(jù)庫對象類型。Oracle經(jīng)驗技巧集1刪除表空間 DROP TABLESPACE TableSpaceName INCLUDING CONTENTS AND DATAFILES2刪除用戶 DROP USER User_Name CASCADE3刪除表的注意事項
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年倉儲管理員實操練習試題及答案
- 小暑期間農(nóng)產(chǎn)品市場供需分析-市場分析師
- 2024年SCMP考試名師建議試題及答案
- 餐飲業(yè)創(chuàng)新趨勢-行業(yè)分析師的視角
- 高效的溝通會議培訓
- 消除焦慮的CPMM試題及答案
- 供應(yīng)鏈創(chuàng)新企業(yè)案例總結(jié)試題及答案
- 2024國際物流師行業(yè)前景試題及答案
- 2025年中國凍紅蘿卜市場調(diào)查研究報告
- 初二化學下學期知識點
- 人教版七年級上歷史第三單元復習課件
- 微創(chuàng)介入診斷治療管理制度
- 人工智能環(huán)境下的初中語文課堂教學探究
- 第46屆世界技能大賽河南省選拔賽-化學實驗室技術(shù)項目-樣題
- 糖尿病預防幻燈片
- 隧道危險源清單
- 2024年度安徽省高校教師資格證之高等教育學題庫附答案(典型題)
- 《ISO 41001-2018 設(shè)施管理- 管理體系 要求及使用指南》專業(yè)讀與應(yīng)用指導材料之3:“4 組織環(huán)境-4.3 確定設(shè)施管理體系的范圍”(雷澤佳編制-2024)
- 2024-2030年枸杞汁行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2024義務(wù)教育《英語課程標準》(2022版)
- 一例下肢靜脈血栓疑難病例護理討論
評論
0/150
提交評論