oracle入門(mén)知識 一個(gè)表空間只能屬于一個(gè)數據庫每個(gè)數據庫最少有一個(gè)控制文件(建議3個(gè),分別放在不同的磁盤(pán)上) 每個(gè)數據庫最少有一個(gè)表空間(system表空間) 建立system表空間的目的是盡量將目的相同的表存放在一起,以提高使用效率,只應存放數據字典 每個(gè)數據庫最少有兩個(gè)聯(lián)機日志組,每組最少一個(gè)聯(lián)機日志文件 一個(gè)數據文件只能屬于一個(gè)表空間一個(gè)數據文件一旦被加入到一個(gè)表空間中,就不能再從這個(gè)表空間中移走,也不能再加入到其他表空間中 建立新的表空間需要建立新的數據文件 commit后,數據不一定立即寫(xiě)盤(pán)(數據文件) 一個(gè)事務(wù)即使不被提交,也會(huì )被寫(xiě)入到重做日志中。
oracle server可以同時(shí)啟動(dòng)多個(gè)數據庫 一套操作系統上可以安裝多個(gè)版本的oracle數據庫系統(unix可以,nt不可以) 一套oracle數據庫系統中可以有多個(gè)oracle數據庫及其相對應的實(shí)例。
僅使用權限、角色、視圖甚至細粒度安全策略建立訪(fǎng)問(wèn)控制系統還不能保證數據庫的安全。
因此,開(kāi)啟審計數據庫的使用能讓我們知道訪(fǎng)問(wèn)控制機制是否確實(shí)像所希望的那樣工作。 審計分為標準審計和細粒度審計,標準審計基于語(yǔ)句級、權限級和對象級。
而細粒度審計涉及某種粒度的數據訪(fǎng)問(wèn)。 比如某個(gè)經(jīng)理應該能夠看到為他工作的雇員工資有關(guān)信息。
那么,怎樣才能知道這位經(jīng)理是否還查看了他的頂頭上司的工資信息?是否要審計這位經(jīng)理的所有的select語(yǔ)句?這個(gè)時(shí)候利用細粒度審計 (FGA)可以只審計一個(gè)表種的某些行,還可以將FGA作為一種侵入檢測裝置。 1。
啟用審計 alter system set audit_trail = DB scope = spfile; 有些網(wǎng)站上寫(xiě)可以scope = both,但是實(shí)際修改時(shí)無(wú)法修改指定的類(lèi)型,只能修改到spfile重啟實(shí)例,還望達人指教。 audit_trail主要有如下幾個(gè)值: NONE:10g的默認值,表示禁用數據庫審計; OS:將審計記錄寫(xiě)到一個(gè)操作系統文件中。
Examda提示: 寫(xiě)入的目錄由audit_file_dest參數指定,但是注意:在Windows NT下(我是XP),審計記錄不啟用這個(gè)參數,而是直接寫(xiě)道本地管理日志,需要到管理中查看。 DB:將審計記錄寫(xiě)入數據庫審計跟蹤,棵視為DBA_AUDIT_TRAIL(存儲在SYS。
AUD$表中)。啟用這個(gè)參數后注意將相關(guān)的幾張表以及索引從system表空間下改到另一個(gè)表空間。
select * from dba_tables t where t。 table_name = 'AUD$'; select * from dba_tables t where t。
table_name = 'AUDIT$'; select * from dba_tables t where t。table_name = 'AUDIT_ACTIONS'; alter table aud$ move tablespace TBS_PM; alter table AUDIT$ move tablespace TBS_PM; alter table AUDIT_ACTIONS move tablespace TBS_PM; alter index I_aud1 rebuild tablespace TBS_Index; alter index i_audit rebuild online tablespace TBS_Index; alter index i_audit_actions rebuild online tablespace TBS_Index; 另有DBExtened,XML這里不做介紹了,常用的就是以上3個(gè)。
2。修改AUDIT_TRAIL后,重啟實(shí)例,然后指定審計的表和活動(dòng)。
create table test_audit ( col1 varchar2 (10) ); audit update on test_audit; audit insert on test_audit; insert into test_audit(col1) values ('dfasd3424'); update test_audit t set t。 col1 = '132rf'; commit; select * from dba_common_audit_trail; 1 Standard Audit 19330 8 1 15-9月 -08 12。
07。32。
343000 上午 +08:00 PREMOBILE PAUL_XI\Administrator WORKGROUP\PAUL_XI 1416:4828 PAUL_XI 0 PREMOBILE TEST_AUDIT 103 SESSION REC 05002F009C0A0000 0 0 NONE ------S--------- 2 Standard Audit 19353 33 1 15-9月 -08 10。 21。
02。328000 上午 +08:00 PREMOBILE PAUL_XI\Administrator WORKGROUP\PAUL_XI 1416:2348 PAUL_XI 0 PREMOBILE TEST_AUDIT 103 SESSION REC 09000F00DA0A0000 0 0 NONE ------S---S----- 3。
為審計使用系統級觸發(fā)器(個(gè)人認為這個(gè)已經(jīng)不是Audit審計功能,而僅僅是觸發(fā)器) 創(chuàng )建數據庫啟動(dòng)觸發(fā)器 create table logon_audit ( user_id varchar2(30), sess_id number (10), logon_time date, logoff_time date, host varchar2(20) ); create or replace trigger logon_audit_trig after logon on database begin insert into logon_audit values(user,sys_context('userenv','sessionid'),sysdate,null,sys_context('userenv','host')); commit; end; select * from logon_audit; 1 PREMOBILE 19327 2008-9-14 23:51:22 WORKGROUP\PAUL_XI 2 PREMOBILE 19328 2008-9-14 23:51:35 WORKGROUP\PAUL_XI 3 SYSMAN 0 2008-9-14 23:49:44 PAUL_XI 4 SYSMAN 0 2008-9-14 23:50:49 PAUL_XI。
1、首先必須要看一本入門(mén)的書(shū)。
如果你以前有其他數據庫的經(jīng)驗(比如sql語(yǔ)言的經(jīng)驗),則重點(diǎn)關(guān)注oracle的基本概念、oracle數據庫管理的基本知識、與其他數據庫不同的地方等,就比較容易的。2、然后自己找一個(gè)測試環(huán)境做實(shí)驗。
如果沒(méi)有測試環(huán)境,可以找一個(gè)windows機器,自己搭一個(gè),圖形化的安裝界面,很方便。3、接下來(lái)就看你要學(xué)習的方向了:是側重于數據庫管理(DBA)還是數據庫應用程序開(kāi)發(fā)?根據方向,自己選擇多做針對性的實(shí)驗、練習。
祝你學(xué)習順利。手碼了這么多,如果能幫到你,請采納最佳。
游標是什么: 游標字面理解就是游動(dòng)的光標。
用數據庫語(yǔ)言來(lái)描述:游標是映射在結果集中一行數據上的位置實(shí)體,有了游標用戶(hù)就可以訪(fǎng)問(wèn)結果集中的任意一行數據了,將游標放置到某行后,即可對該行數據進(jìn)行操作,例如提取當前行的數據等等。 游標的分類(lèi): 顯式游標和隱式游標 顯示游標的使用需要4步: 1。
聲明游標 CURSOR mycur(vartype number) is select emp_no,emp_zc from cus_emp_basic where com_no = vartype; 2。打開(kāi)游標 open mycur(000627) 注:000627:參數 3。
讀取數據 fetch mycur into varno,varprice; 4。關(guān)閉游標 close mycur; 游標的屬性 oracle 游標有4個(gè)屬性: %ISOPEN , %FOUND , %NOTFOUND, %ROWCOUNT %ISOPEN 判斷游標是否被打開(kāi),如果打開(kāi)%ISOPEN 等于true,否則等于false %FOUND %NOTFOUND 判斷游標所在的行是否有效,如果有效,則%FOUNDD等于true,否則等于false %ROWCOUNT 返回當前位置為止游標讀取的記錄行數。
示例: set serveroutput on; declare varno varchar2(20); varprice varchar2(20); CURSOR mycur(vartype number) is select emp_no,emp_zc from cus_emp_basic where com_no = vartype; begin if mycur%isopen = false then open mycur(000627); end if; fetch mycur into varno,varprice; while mycur%found loop dbms_output。 put_line(varno||','||varprice); if mycur%rowcount=2 then exit; end if; fetch mycur into varno,varprice;。
1、參數文件:包括大量影響Oracle數據庫實(shí)例功能的設定, 如以下設定: 。
數據庫控制文件的定位 。Oracle用來(lái)緩 存從磁盤(pán)上讀取的數據的內存數量 。
默認的優(yōu)化程序的選擇。 和數據庫文件相關(guān),執行兩個(gè)重要的功能 1〉為數據庫指出控制文件 2〉為數據庫指出歸檔日志的目標。
2、歸檔文件:是重做日志文件的脫機副本,這些副本可能對于從介質(zhì)失敗中進(jìn)行恢復很必要。 3、口令文件:認證哪些用戶(hù)有權限啟動(dòng)和關(guān)閉Oracle例程。
邏輯結構(表空間、段、區、塊) 表空間:是數據庫中的基本邏輯結構,一系列數據文件的集合。 段:是對象在數據庫中占用的空間。
區:是為數據一次性預留的一個(gè)較大的存儲空間。 塊:ORACLE最基本的存儲單位,在建立數據庫的時(shí)候指定。
4、內存分配(SGA和PGA) SGA:是用于存儲數據庫信息的內存區,該信息為數據庫進(jìn)程所共享。 它包含Oracle 服務(wù)器的數據和控制信息,它是在Oracle服務(wù)器所駐留的計算機的實(shí)際內存中得以分配,如果實(shí)際內存不夠再往虛擬內存中寫(xiě)。
PGA:包含單個(gè)服務(wù)器進(jìn)程或單個(gè)后臺進(jìn)程的數據和控制信息,與幾個(gè)進(jìn)程共享的SGA 正相反,PGA 是只被一個(gè)進(jìn)程使用的區域,PGA 在創(chuàng )建進(jìn)程時(shí)分配,在終止進(jìn)程時(shí)回收。 。
結構化查詢(xún)語(yǔ)言(Structured Query Language,簡(jiǎn)稱(chēng)SQL)是用來(lái)訪(fǎng)問(wèn)關(guān)系型數據庫一種通用語(yǔ)言,屬于第四代語(yǔ)言(4GL),其執行特點(diǎn)是非過(guò)程化,即不用指明執行的具體方法和途徑,而是簡(jiǎn)單地調用相應語(yǔ)句來(lái)直接取得結果即可。
顯然,這種不關(guān)注任何實(shí)現細節的語(yǔ)言對于開(kāi)發(fā)者來(lái)說(shuō)有著(zhù)極大的便利。 然而,有些復雜的業(yè)務(wù)流程要求相應的程序來(lái)描述,這種情況下4GL就有些無(wú)能為力了。
Oracle L/SQL的出現正是為了解決這一問(wèn)題,Oracle PL/SQL是一種過(guò)程化語(yǔ)言,屬于第三代語(yǔ)言,它與C、C++、Java等語(yǔ)言一樣關(guān)注于處理細節,可以用來(lái)實(shí)現比較復雜的業(yè)務(wù)邏輯。 一、編程基礎知識 1。
程序結構 Oracle PL/SQL程序都是以塊(block)為基本單位,整個(gè)Oracle PL/SQL塊分三部分:聲明部分(用declare開(kāi)頭)、執行部分(以 begin開(kāi)頭)和異常處理部分(以exception開(kāi)頭)。 其中執行部分是必須的,其他兩個(gè)部分可選。
無(wú)論Oracle PL/SQL程序段的代碼量有多大,其基本結構就是由這三部分組成。 2。
控制結構 Oracle PL/SQL程序段中有三種程序結構:條件結構、循環(huán)結構和順序結構。 1) 條件結構 與其它語(yǔ)言完全類(lèi)似,語(yǔ)法結構如下: if condition then statement1 else statement2 end if ; 2)循環(huán)結構 這一結構與其他語(yǔ)言不太一樣,在PL/SQL程序中有三種循環(huán)結構: a。
loop … end loop; b。while condition loop … end loop; c。
for variable in low_bound 。 。
upper_bound loop … end loop; 其中的“…”代表循環(huán)體。 3)順序結構 實(shí)際就是goto的運用,不過(guò)從程序控制的角度來(lái)看,盡量少用goto可以使得程序結構更加的清晰。
DATE和BOOLEANdatatype range description BOOLEAN TRUE/FALSE 存儲邏輯值TRUE或FALSE,無(wú)參數 DATE 01/01/4712 BC 存儲固定長(cháng)的日期和時(shí)間值,日期值中包含時(shí)間 LOB數據類(lèi)型 LOB(大對象,Large object) 數據類(lèi)型用于存儲類(lèi)似圖像,聲音這樣的大型數據對象,LOB數據對象可以是二進(jìn)制數據也可以是字符數據,其最大長(cháng)度不超過(guò)4G。
LOB數據類(lèi)型支持任意訪(fǎng)問(wèn)方式,LONG只支持順序訪(fǎng)問(wèn)方式。LOB存儲在一個(gè)單獨的位置上,同時(shí)一個(gè)LOB定位符(LOB locator)存儲在原始的表中,該定位符是一個(gè)指向實(shí)際數據的指針。
在PL/SQL中操作LOB數據對象使用ORACLE提供的包DBMS_LOB。 LOB數據類(lèi)型可分為以下四類(lèi): 。
BFILE 。 BLOB 。
CLOB 。 NCLOB 操作符 與其他程序設計語(yǔ)言相同,PL/SQL有一系列操作符。
操作符分為下面幾類(lèi): 。 算術(shù)操作符 。
關(guān)系操作符 。 比較操作符 。
邏輯操作符 算術(shù)操作符如表4所示operator operation + 加 - 減 / 除 * 乘 ** 乘方 關(guān)系操作符主要用于條件判斷語(yǔ)句或用于where子串中,關(guān)系操作符檢查條件和結果是否為true或false,表5是PL/SQL中的關(guān)系操作符operator operation 大于操作符 >= 大于或等于操作符 = 等于操作符 != 不等于操作符 不等于操作符 := 賦值操作符 表6 顯示的是比較操作符operator operation IS NULL 如果操作數為NULL返回TRUE LIKE 比較字符串值 BETWEEN 驗證值是否在范圍之內 IN 驗證操作數在設定的一系列值中 表7。 8顯示的是邏輯操作符operator operation AND 兩個(gè)條件都必須滿(mǎn)足 OR 只要滿(mǎn)足兩個(gè)條件中的一個(gè) NOT 取反 執行部分 執行部分包含了所有的語(yǔ)句和表達式,執行部分以關(guān)鍵字BEGIN開(kāi)始,以關(guān)鍵字EXCEPTION結束,如果EXCEPTION不存在,那么將以關(guān)鍵字END結束。
分號分隔每一條語(yǔ)句,使用賦值操作符:=或SELECT INTO或FETCH INTO給每個(gè)變量賦值,執行部分的錯誤將在異常處理部分解決,在執行部分中可以使用另一個(gè)PL/SQL程序塊,這種程序塊被稱(chēng)為嵌套塊 所有的SQL數據操作語(yǔ)句都可以用于執行部分,PL/SQL塊不能再屏幕上顯示SELECT語(yǔ)句的輸出。 SELECT語(yǔ)句必須包括一個(gè)INTO子串或者是游標的一部分,執行部分使用的變量和常量必須首先在聲明部分聲明,執行部分必須至少包括一條可執行語(yǔ)句,NULL是一條合法的可執行語(yǔ)句,事物控制語(yǔ)句COMMIT和ROLLBACK可以在執行部分使用,數據定義語(yǔ)言(Data Definition language)不能在執行部分中使用,DDL語(yǔ)句與EXECUTE IMMEDIATE一起使用或者是DBMS_SQL調用。
執行一個(gè)PL/SQL塊 SQL*PLUS中匿名的PL/SQL塊的執行是在PL/SQL塊后輸入/來(lái)執行,如下面的例子所示:declare v_comm_percent constant number:=10;begin update emp set comm=sal*v_comm_percent where deptno=10; endSQL> /PL/SQL procedure successfully completed。 SQL>。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:2.984秒