1. 程式人生 > >ORACLE資料庫學習之邏輯結構

ORACLE資料庫學習之邏輯結構



邏輯結構

資料庫邏輯結構包含表空間、段、範圍(extent)、資料塊和模式物件。

(一)表空間

一個數據庫劃分為一個或多個邏輯單位,該邏輯單位稱為表空間類似於sybase下的裝置。(TABLESPACE)。一個表空間可將相關的邏輯結構組合在一起。DBA可利用表空間作下列工作:

  • 控制資料庫資料的磁碟分配,克服作業系統檔案的限制。2G

  • 將確定的空間份額分配給資料庫使用者。

  • 通過使單個表空間線上或離線,控制資料的可用性。

  • 執行部分資料庫後備或恢復操作。

  • 為提高效能,跨越裝置分配資料儲存。

    資料庫、表空間和資料檔案之間的關係如下圖所示:

     

logicphysical

Oracleblock

Os block

每個資料庫可邏輯劃分為一個或多個表空間

。每一個表空間是由一個或多個數據檔案組成,該表空間物理地儲存表空間中全部邏輯結構的資料。DBA可以建立新的表空間,可為表空間增加資料檔案或可刪除資料檔案,設定或更改預設的段儲存位置。

每一個ORACLE資料庫包含有一個名為SYSTEM的表空間,在資料庫建立是自動建立。在該表空間中總包含有整個資料庫的資料字典表。最小的資料庫可只需要SYSTEM表空間。該表空間必須總是線上。表和儲存的PL/SQL

程式單元(過程、函式、包和觸發器)的全部儲存資料是儲存在SYSTEM表空間中。如果這些PL/SQL物件是為資料庫建的,DBASYSTEM表空間中需要規劃這些物件所需要的空間。

表空間利用增加資料檔案或擴充套件資料檔案擴大表空間,表空間的大小為組成該表空間的資料檔案大小的和。相關命令。

  • 建立表空間:CREATE TABLESPACE app_data

    DATAFILE ?DISK4/app01.dbf?SIZE 100M,

    ?DISK5/app02.dbf?SIZE 100M

    MINIMUM EXTENT 500K

    DEFAULT STORAGE(INITIAL 500K NEXT 500K MAXEXTENTS500 PCTINCREASE 0);

  • 臨時表空間用於排序操作,不能包含永久資料

    CREATE TABLESPACE sort

    DATAFILE ?DISK2/sort01.dbf?SIZE 50M

    MINIMUM EXTENT 1M

    DEFAULT STORAGE (INITIAL 2M NEXT 2M MAXEXTENTS500 PCTINCREASE 0)

    TEMPORARY;

  • 回滾表空間

    用於 儲存回滾段不要包含其他永久性資料

    CREATE TABLESPACE rbs

    DATAFILE ?DISK2/sort01.dbf?SIZE 50M

    MINIMUM EXTENT 1M

    DEFAULT STORAGE (INITIAL 2M NEXT 2M MAXEXTENTS500 PCTINCREASE 0) ;

  • 向表空間中增加資料檔案

    ALTER TABLESPACE APP_data

    ADD DATAFILE

    ?DISK5/app03.dbf?SIZE 200M;

  • 允許資料檔案自動擴充套件

    ALTER TABLESPACE app_data

    ADD DATAFILE

    ?DISK6/app04.dbf?SIZE 200M

    AUTOEXTEND ON NEXT 10M

    MAXSIZE 500M;

  • 手工改變資料檔案的大小

    ALTER DATABASE DATAFILE ?DISK5/app02.dbf?RESIZE200M;

  • 改變儲存引數

    ALTER TABLESPACE app_data

    MINIMUM EXTENT 2M;

    ALTER TABLESPACE app_data

    DEFAULT STORAGE

    (INITIAL 2M NEXT 2M

    MAXEXTENTS 999);

  • 儲存引數

    下述引數影響段的空間分配:

    INITIAL用位元組指定表空間的第一個區間大小

    NEXT下一個區間大小

    MAXEXTENTS可增長的最多區間數

    MINEXTENTS首次建立時分配的區間數

    PCTINCREASE每次分配新的區間增加的百分比

    DBA可以使ORACLE資料庫中任何表空間(SYSTEM表空間外)線上(ONLINE)或離線(OFFLINE)。表空間通常是線上,以致它所包含的資料對資料庫使用者是可用的。當表空間為離線時,其資料不可使用。在下列情況下,DBA可以使其離線。

    。使部分資料不可用,而剩餘的部分允許正常存取

    。執行離線的表空間後備

    。為了修改或維護一應用,使它和它的一組表臨時不可用。

    包含有正在活動的回滾段的表空間不能被離線,僅當回滾段不正在使用時,該表空間才可離線。

在資料字典中記錄表空間的狀態,線上還是離線。如果在資料庫關閉時一表空間為離線,那麼在下次資料庫裝配和重新開啟後,它仍然保持離線。

當出現某些錯誤時,一個表空間可自動地由線上改變為離線。通過使用多個表空間,將不同型別的資料分開,更方便DBA來管理資料庫。

相關命令:

  • 將表空間OFFLINE

    ALTERTABLESPACE app_data OFFLINE;

  • 移動資料檔案

    條件:表空間 APP_DATA必須OFFLINE

    目標檔案必須存在,資料庫處在MOUNT狀態

    ALTERTABLESPACE app_data RENAME DATAFILE ?DISK4/app01.dbf?TO ?DISK5/app01.dbf?

  • 只讀表空間

    表空間必須在ONLINE狀態

    表空間中不含活動的 事物.

    表空間中不含活動的 回滾段

    表空間中不在作線上備份

    ALTERTABLESPACE app_data READ ONLY;

  • 刪除表空間

    DROPTABLESPACE app_data

    INCLUDINGCONTENTS;不刪除物理檔案

  • 獲取資料檔案有關的資訊

DBA_DATA_FILES

FILE_NAME

TABLESPACE_NAME

BYTES

AUTOEXTENSIBLE

MAXBYTES

INCREMENT_BY

  • 獲取表空間有關的資訊

DBA_TABLESPACES

TABLESPACE_NAME

NEXT_EXTENT

MAX_EXTENTS

PCT_INCREASE

MIN_EXTLEN

STATUS

CONTENTS

小結ORACLE資料庫中一表空間是由一個或多個物理資料檔案組成,一個數據檔案只可與一個表空間想聯絡。當為一表空間建立一資料檔案時,ORACLE建立該檔案,分配指定的磁碟空間容量。在資料檔案初時建立後,所分配的磁碟不包含任何資料。表空間可以線上或離線。在ORACLE中還允許單獨資料檔案線上或離線。一般原則:使用多個表空間;為表空間指定儲存引數;給使用者指定表空間限額

(二)段、範圍和資料塊

ORACLE通過段、範圍和資料塊邏輯資料結構可更細地控制磁碟空間的使用。

段(SEGMENT)包含表空間中一種指定型別的邏輯儲存結構,是由一組範圍組成。根據訪問頻率、內容物件和生命週期在ORACLE資料庫中有幾種型別的段:資料段、索引段、回滾段和臨時段。

資料段:對於每一個非聚集的表有一資料段,表的所有資料存放在該段。每一聚集有一個數據段,聚集中每一個表的資料儲存在該段中。

索引段:每一個索引有一索引段,儲存索引資料。

回滾段:儲存資料修改前的映象,這些資訊用於生成讀一致性資料庫資訊、在資料庫恢復時使用、回滾未提交的事務。Rollback時用得著。一個事務只能使用一個回滾段。

建立回滾段

CREATE ROLLBACK SEGMENT rbs01

TABLESPACE rbs

STORAGE (

INITIAL 100K NEXT 100K OPTIMAL 4MMINEXTENTS 20 MAXEXTENTS 100);

使回滾段ONLINE

ALTER ROLLBACK SEGMENT rbs01 ONLINE;

在初始化引數中指定,以保證資料庫啟動 時ONLINE

ROLLBACK_SEGMENTS=(rbs01)

修改回滾段的儲存引數

ALTER ROLLBACK SEGMENT rbs01

STORAGE( MAXEXTENTS 200 );

從回滾段中釋放空間

ALTER ROLLBACK SEGMENT rbs01

SHRINK TO 4M;

使回滾段Offline

ALTER ROLLBACK SEGMENT rbs01 OFFLINE;

刪除回滾段

回滾段在刪除之前必須OFFLINE

ALTER ROLLBACK SEGMENT rbs01 OFFLINE;

DROP ROLLBACK SEGMENT rbs01;

臨時段:當一個SQL語句需要臨時工作區時,由ORACLE建立。當語句執行完畢,臨時段的範圍退回給系統。

ORACLE對所有段的空間分配,以範圍(extents)為單位。

範圍

一個範圍(EXTENT)是資料庫儲存空間分配的一個邏輯單位,它由連續資料塊所組成。每一個段是由一個或多個範圍組成。當一段中間所有空間已完全使用時,ORACLE為該段分配一個新的範圍。

為了維護的目的,在資料庫的每一段含有段標題塊(segment header block)說明段的特徵以及該段中的範圍目錄。

資料塊

資料塊(data block)是ORACLE管理資料檔案中儲存空間的單位,為資料庫使用的I/O的最小單位,其大小可不同於作業系統的標準I/O塊大小。

資料塊的格式:

公用的變長標題

表目錄

行目錄

未用空間

行資料

  1. 模式和模式物件

    一個模式(schema)為模式物件(scehma object)的一個集合,每一個數據庫使用者對應一個模式。模式物件為直接引用資料庫資料的邏輯結構,模式物件包含如表、檢視、索引、聚集、序列、同義詞、資料庫鏈、過程和包等結構。模式物件是邏輯資料儲存結構,每一種模式物件在磁碟上沒有一個相應檔案儲存其資訊。一個模式物件邏輯地儲存在資料庫的一個表空間中,每一個物件的資料物理地包含在表空間的一個或多個數據檔案中。

    表(table)為資料庫中資料儲存的基本單位,其資料按行、列儲存。每個表具有一表名和列的集合。每一列有一個列名、資料型別、寬度或精度、比例。一行是對應單個記錄的列資訊的集合。

    檢視

    一個檢視(view)是由一個或多個表(或其他檢視)中的資料的一種定製的表示,是用一個查詢定義,所以可認為是一個儲存的查詢(stored query)或是一個虛表(virtual table)。檢視可在使用表的許多地方使用。

    由於檢視是由表匯出的,檢視和表存在許多類似,檢視象表最多可定義254列。檢視可以被查詢,而在修改、插入或刪除時具有一定的限制,在檢視上執行的全部操作真正地影響檢視的基本表中的資料,受到基本表的完整性約束和觸發器的限制。

    檢視與表不同,一個檢視不分配任何儲存空間,檢視不真正地包含資料。由查詢定義的檢視相應於檢視引用表中的資料。檢視只在資料字典中儲存其定義。

    引入檢視有下列好處:

    。通過限制對錶的行預定義集合的存取,為表提供附加的安全性

    。隱藏資料複雜性。

    。為使用者簡化命令

    。為基本表的資料提供另一種觀點。

    。可將應用隔離基本表定義的修改

    。用於不用檢視無法表示的查詢。

    。可用於儲存複雜查詢。

    聚集

    聚集(cluster)是儲存表資料的可選擇的方法。一個聚集是一組表,將具有同一公共列值的行儲存在一起,並且它們經常一起使用。這些公共列構成聚集碼。例如:EMP表各DEPT表共享DEPTNO列,所以EMP表和DEPT表可聚集在一起,聚集碼的列為DEPTNO列,該聚集將每個部門的全部職工行各該部門的行物理地儲存在同一資料塊中。

    索引

    索引(index)是與表和聚集相關的一種選擇結構。索引是為提高資料檢索的效能而建立,利用它可快速地確定指定的資訊。ORACLE索引為表資料提供快速存取路徑。索引適用於一範圍的行查詢或指定行的查詢。

    索引可建立在一表的一列或多列上,一旦建立,由ORACLE自動維護和使用,對使用者是完全透明的。索引是邏輯地和物理地獨立於資料,它們的建立或刪除對錶沒有影響,應用可繼續處理。索引資料的檢索效能幾乎保持常數,而當一表上存在許多索引時,修改、刪除和插入操作的效能會下降。

    索引有唯一索引各非唯一索引。唯一索引保證表中沒有兩行在定義索引的列上具有重複值。ORACLE在唯一碼上自動地定義唯一索引實施UNIQUE完整性約束。

    組合索引是在表的某個列上所建立的一索引。組全索引可加快SELECT語句的檢索速度,在其WHERE子句中可引用組合索引的全部或主要部分。所以在定義中給出列的次序,將經常存取的或選擇最多的列放在首位。

    在建立索引時,將在表空間自動地建立一索引段,索引段空間分配和保留空間的使用受下列方式控制:

    索引段範圍的分配常駐該索引段的儲存引數控制。

    其資料塊中未用空間可受該段的PCTFREE引數設定所控制。

    序列生成器

    序列生成器(sequence generator)產生序列號。在多使用者環境下該序列生成器特別有用,可生成各返回序列號而不需要磁碟I/O或事務封鎖。

    序列號為ORACLE整數,最多可有38個數字。一個序列定義指出一般資訊:序列的名字、上升或下降、序列號之間間距和其它資訊。對所有序列的確的定義以行儲存在SYSTEM表空間中的資料字典表中,所以所有序列定義總是可用。由引用序列號的SQL語句使用序列號,可生成一個新的序列號或使用當前序列號。一旦在使用者會話中的SQL語句生成一序列號,該序列號僅為該會話可用。序列號生成是獨立於表,所以同一序列生成器可用於一個和多個表。所生成序列號可用於生成唯一的主碼。

    同義詞

    一個同義詞(synonym)為任何表、檢視、快照、序列、過程、函式或包的別名,其定義儲存在資料字典中。同義詞因安全性和方便原因而經常使用,可用於:

  • 可遮蔽物件的名字及其持有者。

  • 為分散式資料庫的遠端物件提供位置透明性。

  • 為使用者簡化SQL語句。

    有兩種同義詞:公用和專用。一個公用同義詞為命名為PUBLIC特殊使用者組所持有,可為資料庫中每一個使用者所存取。一個專用同義詞是包含在指定使用者的模式中,僅為該使用者和授權的使用者所使用。

    雜湊

    雜湊(hashing)是儲存表資料一種可選擇的方法,用以改進資料檢索的效能。要使用雜湊,就要建立雜湊聚集,將表裝入到該聚集。在驃湊聚集中的錶行根據雜湊函式的結果進行物理學儲存和檢索。雜湊函式用於生成一個數值的分佈,該數值稱為雜湊值,它是基於指定的聚集碼值。

    程式單元

    程式單元(program unit)是指儲存過程、函式和包(PACKAGE)。一個過程和函式,是由SQL語句和PL/SQL語句組合在一起,為執行某一個任務的一個可執行單位。一個過程或函式可被建立,在資料庫中儲存其編譯形式,可由使用者或資料庫應用所執行。過程和函式差別在函式總返回單個值給呼叫者,而過程沒有值返回給呼叫者。

    包提供相關的過程、函式、變數和其它包結構封裝起來並存貯在一起的一種方法,允許管理者和應用開發者利用該方法組織如此的程式(routine,來提供更多的功能和提高效能。

    資料庫鏈

    資料庫鏈是一個命名的物件,說明從一資料庫到另一資料庫的一路徑(PATH)。在分散式資料庫中,對全域性物件名引用時,資料庫鏈隱式地使用。

一.資料庫和例項的啟動和關閉

一個ORACLE資料庫沒有必要對所有使用者總是可用,資料庫管理員可啟動資料庫,以致它被開啟。在資料庫開啟情況下,使用者可存取資料庫中的資訊。當資料庫不使用時,DBA可關閉它,關閉後的資料庫,使用者不能存取其資訊。

資料庫的啟動和關閉是非常重要的管理功能,通過以INTERNAL連線到ORACLE的能力來保護。以INTERNAL連線到ORACLE需要有下列先決條件:

該使用者的作業系統賬號具有使用INTERNAL連線的作業系統特權。

INTERNAL資料庫有一口令,該使用者知道其口令。

另外:當用戶以INTERNAL連線時,可連線到專用伺服器,而且是安全連線。

  1. 資料庫啟動

    啟動資料庫並使它可用有三步操作:

  • 啟動一個例項;

  • 裝配資料庫

  • 開啟資料庫

  1. 啟動一個例項 start up nomount

    啟動一例項的處理包含分配一個SGA(資料庫資訊使用的記憶體共享區)和後臺程序的建立。例項起動的執行先於該例項裝配一資料庫。如果僅啟動例項,則沒有資料庫與記憶體儲結構和程序相聯絡。

  2. 裝配一資料庫 alter database mount

    裝配資料庫是將一資料庫與已啟動的例項相聯。當例項安裝一資料庫之後,該資料庫保持關閉,僅DBA可存取。

  3. 開啟一資料庫 alter database open

    開啟一資料庫是使資料庫可以進行正常資料庫操作的處理。當一資料庫開啟所有使用者可連線到該資料庫用存取其資訊。在資料庫開啟時,線上資料檔案和線上日誌檔案也被開啟。如果一表空間在上一次資料庫關閉時為離線,在資料庫再次開啟時,該表空間與它所相聯的資料檔案還是離線的。

  1. 資料庫和例項的關閉

    關閉一例項以及它所連線的資料庫也有三步操作:

  1. 關閉資料庫

    資料庫停止的第一步是關閉資料庫。當資料庫關閉後,所有在SGA中的資料庫資料和恢復資料相應地寫入到資料檔案和日誌檔案。在這操作之後,所有聯機資料檔案和聯機的日誌檔案也被關閉,任何離線表空間中資料資料夾是已關閉的。在資料庫關閉後但還安裝時,控制檔案仍保持開啟。

  2. 卸下資料庫

    停止資料庫的第二步是從例項卸下資料庫。在資料庫卸下後,在計算機記憶體中僅保留例項。在資料庫卸下後,資料庫的控制檔案也被關閉。

  3. 停止例項

    停止資料庫的最後一步是停止例項。當例項停止後,SAG是從記憶體中撤消,後臺程序被中止。

    Shutdown normal

    等待所有的使用者退出

    Shutdown immdiatly

    回滾未提交事務

    Shutdownabort

    強制退出,資料庫置於不可知狀態

相關推薦

ORACLE資料庫學習邏輯結構

 邏輯結構 資料庫邏輯結構包含表空間、段、範圍(extent)、資料塊和模式物件。 (一)表空間 一個數據庫劃分為一個或多個邏輯單位,該邏輯單位稱為表空間類似於sybase下的裝置。(TABLESPACE)。一個表空間可將相關的邏輯結構組合在一起。DBA可

oracle資料庫學習遇到的第一個坑,查詢

今天再看oracle查詢語句,在定義大小寫問題上 我新建了一個表,名為user表,全都是小寫的,裡面的欄位也全是小寫,在執行select * from user時就出現了問題,告訴我找不到表 然後我看了一下Navicat下面自己執行的查詢,原來是在user上面加了雙引號,嘗

Oracle資料庫物件的邏輯、物理、記憶體結構

Oracle資料庫物件的邏輯、物理、記憶體結構 一、先談談資料庫和例項: 例項是個動態概念,它由一系列程序和記憶體區域組成;而資料庫是個靜態概念,主要指的是構成資料庫的一系列檔案。一般情況下例項與資料庫是一對一的,但是在多例項資料庫環境下,一個數據庫可以對應多個例項。例項

oracle資料庫學習筆記(二)分組統計查詢

統計函式(分組函式) 在oracle裡面對於統計函式提供有很多種,下面主要介紹標準的五個統計函式: - 統計表中的資料量:COUNT(*  |  欄位  |  DISTINCT 欄位) - 統計平均值: AVG(列) - 求和:SUM(列) - 最大值 :MAX(列) -

Oracle資料庫學習3修改、插入、更新語句

修改語句:alter語句 1.增加一列:alter table 表名 add (欄位名 欄位型別)2.刪除一列:alter table 表名 drop(列名)3.修改某一列的名字:alter table 表名 rename column 舊名 to 新名4.修改某一列的屬性

c語言學習選擇結構程序設計(第三天)

c語言 選擇結構為了增加理解,寫的幾個小程序1:判斷三角形的成立以及輸出最大邊 練習前三種語句#include <stdio.h> int main() { int a,b,c; printf("請輸入三角形三邊長(邊為整數,不能輸入負數):"); scanf("%d%d%d", &a ,

機器學習邏輯回歸

反向 margin -1 mil 局部最優 一個數 簡單 line 滿足 給定一張圖片,如何讓計算機幫助我們識別它是不是一張貓的圖片,這個問題可以看成一個簡單的分類問題。如下圖所示,平面上有兩種不同顏色(黑色,紅色)的點,我們要做到就是要找到類似與那條直線那樣的界限。當某個

Oracle 12c 學習啟動關閉CDB&PDB

pro sysdba pdb lob ins connect nec plus start 1、默認登陸到CDB <roidb01:cdb:/home/oracle>$sqlplus / as sysdba SQL*Plus: Release 12.1.0.2

Java學習Mysql結構優化

故障 新增 數據讀取 承載 思路 中間變量 請求 進一步 其他 背景:業務發展初期為了便於快速叠代,很多應用都采用集中式的架構,隨著業務規模的擴展,系統變得越來越復雜,訪問量越來越大,不得不進一步擴展系統的吞吐能力。 優化1、主從集群:通過數據庫的復制策略,可

Python學習[邏輯運算]

練習 基礎 們的 not lse 技能 如果 and () 邏輯運算是最基礎的技能之一,主要考察我們的邏輯能力: 首先我們要知道 這三個詞的意思 and or not and:並且 or:或 not:非真即假,非假即真 布爾值運算: and:兩端值都為真,其運算結果為真

Oracle基礎學習空值排序

初始 font 結果 eat 工資 dep varchar2 com creat 新建表: 1 -- Create table 2 create table EMP 3 ( 4 empno NUMBER(4), 5 ename VARCHAR

Oracle資料庫中複製表結構和表資料

1. 複製表結構及其資料: create table new_table as select * from old_table 2. 只複製表結構: create table new_tableas select * from old_tablewhere 1=2; 或者:

資料結構邏輯結構與物理結構(儲存結構

邏輯結構 邏輯結構分為四種類型:集合結構,線性結構,樹形結構,圖形結構。 所謂集合結構:表面意思,沒有什麼深刻意義,就是資料元素同屬一個集合,單個數據元素之間沒有任何關係。如下圖所示。              

資料庫學習MySQL

常用linux操作資料庫命令 systemctl start mysqld  啟用資料庫 systemctl status mysqld  檢視資料庫狀態 mysql -uroot -p12345"  登入資料庫 show databases; 

資料庫學習

資料庫入門          什麼是資料庫          資料庫的工具,如何使用   1:資料庫:

oracle資料庫學習02

簡單查詢的使用、SQL的基本語法 select * from emp; 在取得全部資料之後,可以發現某些列上會顯示 null 的資訊,那麼所謂的 null 表示 沒有內容。 null != 0,表示暫時位置的內容。 簡單查詢語句語法 SELECT [DISTINCT] *

吳恩達機器學習邏輯迴歸理論部分

一.特徵函式 對應分類問題,我們先針對二分類問題進行討論,對應計算機而言,分類即將資料按其特徵值不同分為不同的集合,僅對應二分類問題,我們只需考慮分為:正類和負類,為此我們引入特徵函式。 y=1 — 代表二分類中的正類 y=0 — 代表二分類中的反類 這是特殊函式

Oracle 資料庫入門----------------------基本查詢

基本查詢   SQL> --當前使用者 SQL> show user USER 為 "SCOTT" SQL>  --當前使用者下的表 SQL> select 

Oracle 資料庫入門----------------------多表查詢

多表查詢   SQL> --工資總額 SQL> select sum(sal) from emp;     SUM(SAL)    &

Oracle 資料庫入門----------------------單行函式

  1,單行函式   SQL> --字元函式 SQL> select lower('Hello World') 轉小寫,upper('Hello World') 轉大寫,initcap('