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