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