oracle資料庫存儲設計
㈠ 2. 簡述oracle資料庫的邏輯存儲結構(麻煩知道的告訴下)
Oracle資料庫邏輯存儲結構是Oracle資料庫創建後利用邏輯概念來描述資料庫內部數據的組織和管理形式。包括表空間(tablespace)、段(segment)、區(extent)和塊(block)四種。一個表空間由多個段構成;一個段由多個區構成,一個區由多個塊構成。資料庫是由表空間構成的,數據存儲在表空間中。一個表空間包含一個或多個數據文件,但一個數據文件只能屬於一個表空間。
邏輯存儲結構概念存儲在數據字典中,用戶可通過查詢數據字典獲取邏輯存儲結構信息。
㈡ oracle資料庫的物理存儲結構有那些,它們各自的作用
http://hi..com/blue_greed/blog/item/dcea21ca97bf7782c8176816.html
去這里看看~~
數據結構在計算機中的表示(映像)稱為數據的物理(存儲)結構。它包括數據元素的表示和關系的表示。
物理結構,即Oracle資料庫使用的操作系統文件結構。對於資料庫物理結構文件,不同的oracle版本,不同的操作系統平台上有不同的存儲目錄結構
資料庫的物理結構文件按其作用可以分為三類:
數據文件
日誌文件
控制文件
一、數據文件
數據文件用來存儲資料庫的數據,如表、索引等。讀取數據時,系統首先從資料庫文件中讀取數據,並存儲到SGA的數據緩沖區中。
二、重做日誌文件
重做日誌文件記錄對資料庫的所有修改信息。它是三類文件中最復雜的一類文件,也是保證資料庫安全與資料庫備份與恢復有直接關系的文件。
三、控制文件
控制文件是一個二進制文件,用來描述資料庫的物理結構,一個資料庫只需要一個控制文件,控制文件的內容包括:
資料庫名及資料庫唯一標識
數據文件和日誌文件標識
資料庫恢復所需的同步信息,即檢查點號
㈢ 大型Oracle資料庫如何設計
超大型系統的特點為: 1、處理的用戶數一般都超過百萬,有的還超過千萬,資料庫的數據量一般超過1TB; 2、系統必須提供實時響應功能,系統需不停機運行,要求系統有很高的可用性及可擴展性。 為了能達到以上要求,除了需要性能優越的計算機和海量存儲設備外,還需要先進的資料庫結構設計和優化的應用系統。 一般的超大型系統採用雙機或多機集群系統。下面以資料庫採用Oracle 8.0.6並行伺服器為例來談談超大型資料庫設計方法: 確定系統的ORACLE並行伺服器應用劃分策略 資料庫物理結構的設計 系統硬碟的劃分及分配 備份及恢復策略的考慮 二、Oracle並行伺服器應用劃分策略 Oracle並行伺服器允許不同節點上的多個INSTANCE實例同時訪問一個資料庫,以提高系統的可用性、可擴展性及性能。Oracle並行伺服器中的每個INSTANCE實例都可將共享資料庫中的表或索引的數據塊讀入本地的緩沖區中,這就意味著一個數據塊可存在於多個INSTANCE實例的SGA區中。那麼保持這些緩沖區的數據的一致性就很重要。Oracle使用 PCM( Parallel Cache Management)鎖維護緩沖區的一致性,Oracle同時通過I DLM(集成的分布式鎖管理器)實現PCM 鎖,並通過專門的LCK進程實現INSTANCE實例間的數據一致。 考慮這種情況:INSTANCE1對BLOCK X塊修改,這時INSTANCE2對BLOCK X塊也需要修改。Oracle並行伺服器利用PCM鎖機制,使BLOCK X從INSTANCE 1的SGA區寫入資料庫數據文件中,又從數據文件中把BLOCK X塊讀入INSTANCE2的SGA區中。發生這種情況即為一個PING。PING使原來1個MEMORY IO可以完成的工作變成2個DISK IO和1個 MEMORY IO才能夠完成,如果系統中有過多的PING,將大大降低系統的性能。 Oracle並行伺服器中的每個PCM鎖可管理多個數據塊。PCM鎖管理的數據塊的個數與分配給一個數據文件的PCM鎖的個數及該數據文件的大小有關。當INSTANCE 1和INSTANCE 2要操作不同的BLOCK,如果這些BLOCK 是由同一個PCM鎖管理的,仍然會發生PING。這些PING稱為FALSE PING。當多個INSTANCE訪問相同的BLOCK而產生的PING是TRUE PING。 合理的應用劃分使不同的應用訪問不同的數據,可避免或減少TRUE PING;通過給FALSE PING較多的數據文件分配更多的PCM鎖可減少 FALSE PING的次數,增加PCM鎖不能減少TRUE PING。 所以,Oracle並行伺服器設計的目的是使系統交易處理合理的分布在INSTANCE實例間,以最小化PING,同時合理的分配PCM鎖,減少FALSE PING。設計的關鍵是找出可能產生的沖突,從而決定應用劃分的策略。應用劃分有如下四種方法: 1、根據功能模塊劃分,不同的節點運行不同的應用 2、根據用戶劃分,不同類型的用戶運行在不同的節點上 3、根據數據劃分,不同的節點訪問不同的數據或索引 4、根據時間劃分,不同的應用在不同的時間段運行 應用劃分的兩個重要原則是使PING最小化及使各節點的負載大致均衡。 三、資料庫物理結構的設計 資料庫物理結構設計包括確定表及索引的物理存儲參數,確定及分配資料庫表空間,確定初始的回滾段,臨時表空間,redo log files等,並確定主要的初始化參數。物理設計的目的是提高系統的性能。整個物理設計的參數可以根據實際運行情況作調整。 表及索引數據量估算及物理存儲參數的設置 表及索引的存儲容量估算是根據其記錄長度及估算的最大記錄數確定的。在容量計算中考慮了數據塊的頭開銷及記錄和欄位的頭開銷等等。
㈣ 多個部門數據存一張表裡 oracle資料庫 這個表該怎樣設計
員工表中增加部門ID就可以,查詢的效率你可以理解為沒有影響,可以忽略。
這是關系型資料庫中最常見也是最典型的設計方式了。
㈤ oracle 資料庫如何編寫存儲過程
去看看三思筆記
㈥ 要實現多條件自由組合查詢發布信息,Oracle資料庫如何設計具體是表、存儲過程
你這個問題是很難得到答案的,還需要存儲過程。。。。懸賞0分。
㈦ Oracle資料庫安全性設計大家給點建議
Oracle資料庫本身的安全性建設
從總體上而言,Oracle資料庫是業界安全性方面最完備的資料庫產品。在資料庫安全性的國際標准中,Oracle通過了14項標準的測試,是所有資料庫產品中通過安全性標准最多、最全面的產品。Oracle在C2級的操作系統上(如商用UNIX,VMS操作系統),不僅滿足NCSC C2級安全標准,而且已經正式通過了NCSC C2標準的測試。在B1級的操作系統上不僅滿足NCSC B1級安全標准,而且已經通過了NCSC B1級標準的測試。
Oracle提供的主要安全性措施如下:
�8�9 身份認證功能(Authentication):識別訪問個體的身份
�8�9 數據訪問的機密性(Confidentialty):保證敏感數據訪問的機密性。
�8�9 數據完整性(Integrity):保證數據不被篡改。
�8�9 授權能力(Authorization):保證被授權用戶對數據的查詢和修改能力。
�8�9 訪問控制(Access Control):確定對指定數據的訪問能力。
�8�9 審計能力(Auditing):提供監測用戶行為的能力。
�8�9 私有性(Privacy):提供對敏感數據訪問的私密性。
�8�9 高可用性(Availability):保證數據和系統提供不間斷服務的能力。
�8�9 代理管理能力(Delegated Administration):提供對用戶帳號的集中管理功能。
下面將就應用系統本身對於Oracle提供的安全性措施作更深入的探討。
$PageTitle= Oracle的安全性領域}
三、 Oracle的安全性領域
�8�5 Profile控制
Oracle利用profile機制來管理會話資源佔用,同時也管理用戶密碼的安全策略。
通過profile我們可以實現:
某個特定用戶最多隻能佔用系統百分之幾的CPU時間?
某個特定用戶連接到資料庫之後能存活多長時間?
某個特定用戶連接到資料庫之後多長時間處於非活躍狀態就將被系統中斷連接?
用戶登錄密碼輸入錯誤多少次之後就將自動鎖定用戶?
用戶密碼的長度和包含的字元必須符合什麼樣的規則?
用戶密碼在多少天後將自動失效並要求設定新密碼?
�8�5 用戶許可權控制 (Privilage)
Oracle通過角色(Role),許可權(Privilage)等的一系列授予(Grant)和回收(Revoke)操作可以有效的進行用戶的許可權控制。
通過許可權控制我們可以實現:
某個特定用戶只能讀取而不能修改另一個用戶的表數據。
某個特定用戶只能運行Oracle資料庫系統的幾個存儲過程或者函數。
某個特定用戶自己能夠擁有修改某些數據的權力,但是卻無法給其它不擁有這個許可權的用戶授予修改該數據的權力。
某個特定用戶可以讀取數據但是無法創建新的表空間。
�8�5 虛擬專用資料庫(VPD)
虛擬專用資料庫 (VPD) 也稱為細粒度訪問控制,它提供強大的行級安全功能。它是在 Oracle8i 中推出的,已經受到廣泛的歡迎。
VPD 的工作方法是,通過透明地更改對數據的請求,基於一系列定義的標准向用戶提供表的局部視圖。在運行時,所有查詢都附加了謂詞,以便篩選出准許用戶看到的行。
也就是通過VPD的設置,我們可以做到行級安全性控制,特定的用戶即使對一張表有讀取許可權,那麼也只能看到符合自身許可權的記錄。
注意,在Oracle10g版本中,VPD得到增強,已經可以實現欄位級的安全性控制了。
實例及搭建步驟參看:利用VPD細粒度訪問策略實現行級安全性 Step By Step
�8�5 Orace Label Security
基於對由客戶提交的行級安全性的嚴格要求,Oracle Label Security(Oracle 資料庫企業版的選件之一)利用多級安全性概念解決了世界上政府和商業用戶在實際中遇到的數據安全和隱私問題。
OLS 通過利用數據敏感度標簽(例如「敏感」和「公司機密」)與用戶標簽授權,提供了完善的行級安全性控制。
OLS 使用政策概念來存儲標簽定義和授權。該政策可直接在資料庫中進行管理,或在 Oracle 身份管理中進行集中管理。
�8�5 Oracle Database Valut
通常資料庫管理員如果具有了DBA許可權,那麼就很難防止這樣的管理員查看應用程序數據。而Oracle Database Valut則解決了必須保護涉及合作夥伴、員工和顧客的敏感業務信息或隱私數據的客戶最為擔心的問題。
Oracle Database Vault 可防止高許可權的應用程序 DBA 訪問其他的應用程序、執行其許可權之外的任務。Oracle Database Vault 可在不影響應用程序功能的前提下快速而高效地保護現有程序。
Oracle Database Vault 可通過下列方法解決一些最為常見的安全問題和內部威脅:
1. 限制 DBA 和其他授權用戶訪問應用程序數據。
2. 防止DBA 操縱資料庫和訪問其他應用程序。Oracle Database Vault 提供了強大的職責劃分控制功能,可防止擅自更改資料庫。比如說如果一個用戶具有 CREATE USER 許可權,但不具備正確的用戶管理許可權,則 Oracle Database Vault 將阻止該 DBA 創建新用戶。
3. 更好的控制何人、何時、何地可以訪問應用程序。如日期時間、資料庫客戶端在網路上的位置之類的因素。
Oracle Database Valut是新的Oracle Database 10g企業版的選件。目前已經有Linux X86以及Solaris SPARC 64bit的版本可以下載使用了。
�8�5 用戶訪問審計
審計是Oracle安全性的另一個重要領域,我們還必須小心地計劃審計方案。有幾種方式可在Oracle中進行審計:
1. sql審計命令(標准審計)
通過AUDIT語句我們可以對成功或者不成功的特定對象的讀取,更新操作進行審計。
標准審計只會記錄較少的跟蹤信息,比如發出該語句的用戶、時間、終端標識號等等。
該審計對於系統性能的影響更多地取決於對象的繁忙程度。
2. 用對象觸發器進行審計(也就是DML審計)
此類審計通常由客戶自行開發放置於特定資料庫對象上的觸發器,由於是自行開發,所以相對於標准審計則能夠更自由地記錄更多感興趣的跟蹤信息。比如更新操作將某個欄位從什麼原始值更新到了什麼新值。
該審計對於系統性能的影響更多地取決於對象的繁忙程度和觸發器的編寫水平。
3. 用系統級觸發器進行審計(記錄用戶登錄和退出)
當用戶登錄資料庫或者離開資料庫時,都可以通過自定義的觸發器來記錄用戶名稱,操作時間,終端標識號等信息。
由於觸發器觸發幾率小,所以該審計對於系統性能影響並不大。
4. 用LogMiner進行審計(也就是DML和DDL)
Oracle資料庫將所有的更新操作都記錄在重作日誌中,而Oracle提供了LogMiner工具用於挖掘重作日誌中的所有操作,相比起上述的各種審計方法來說,該種審計可能是信息最為完善,對於應用系統性能影響最小的方法。
此處稍微延展開來說一下,LogMiner是雙刃劍,既然可以用來審計,也就能夠被惡意使用作為數據竊取的工具。所以在數據本身的加密方面,Oracle同樣提供了多種解決方案,比如DBMS_OBFUSCATION_TOOLKIT,DBMS_CRYPTO和最新的透明數據加密,甚至在數據備份方面 Oracle也推出了Secure Backup來應對磁帶數據的加密,但是要注意到數據加密不應用作訪問控制的替代項,存儲加密的數據並不會在存儲介質本身提供額外的保護層,只是有助於在發生介質遭竊時保護諸如信用卡號之類的敏感數據。本文不再作更多的介紹。
5. 細精度審計(FGA)
細粒度審計 (FGA),是在 Oracle 9i 中引入的,能夠記錄 SCN 號和行級的更改以重建舊的數據,但是它們只能用於 select 語句,而不能用於 DML,如 update、insert 和 delete 語句。因此,對於 Oracle 資料庫 10g 之前的版本,使用觸發器雖然對於以行級跟蹤用戶初始的更改是沒有吸引力的選擇,但它也是唯一可靠的方法。
而Oracle10g種FGA功能的增強使其不但能夠支持select操作,同時也支持DML操作。在 Oracle 10g 中,審計已經從一個單純的「操作記錄者」成長為一個「事實記錄機制」,它能以一個非常詳細的級別來捕獲用戶的行為,這可以消除您對手動的、基於觸發器的審計的需要。它還結合了標准審計和 FGA 的跟蹤,這使其更易於跟蹤資料庫訪問,而不用考慮它是如何生成的。
通過細粒度審計我們可以記錄:
在早上九點到下午六點之間或在星期六和星期日對某個表進行了訪問。
使用了公司網路外部的某個 IP 地址。
選定或更新了特定列。
使用了該列的特定值。
㈧ oracle資料庫存儲過程實例
創建存儲過程的語句如下:
CREATE[OR REPLACE] PROCEDURE<過程名>
<參數1>,「方式l]<數據類型1>,
<參數2>,[ 方式2]<數據類型2>,
……)
IS|AS (is或as完全等價)
BEGIN
PL/SQL過程體
END<過程名>
例如,下面是一個刪除表的存儲過程:
--參數:tableName 要刪除的表名
create or replace procere del_table(tableName varchar2) as
--定義變數
sql_del_table long;
begin
--構造sql語句
sql_del_table := 'drop table ' || tableName;
--執行
EXECUTE IMMEDIATE sql_del_table;
end del_table;
㈨ oracle資料庫如何存儲數據
利用邏輯資料庫 和物理資料庫 來存儲 其中 邏輯資料庫主要包括表 ,段,區,oracle數據塊。物理數據塊 包括 數據文件,聯機重做日誌文件等
㈩ oracle 資料庫設計高手進
你這個表結構的話,確實會很難查, 但是可以在業務層完成操作---你可以先查詢出 所有在5月份某班被調動的人員---要分成兩條查1.查詢出調出的,2.查詢出調入的,然後你再查詢出現在班機上的人,你在業務層做個循環,匹配到id相同的就把該對象刪除就可以了。。。
這個方法效率會比你直接從資料庫搞定要低,, 但是你這個表結構還真不好去查, 如果你急著完成任務不妨採用我說的方式先做下。