一、Oracle內部結構 1.表空間 表空間是資料庫的邏輯劃分,一個表空間只屬於一個資料庫,每個表空間由一個或多個數據文件組成,表空間中其他的邏輯結構的數據存儲在這些數據文件中,一般oracle系統安裝後,會自動建立多個表空間, oarcle11g 的主要表空間 //附(10 g 也是一樣的) 1) ...
一、Oracle內部結構
1.表空間
表空間是資料庫的邏輯劃分,一個表空間只屬於一個資料庫,每個表空間由一個或多個數據文件組成,表空間中其他的邏輯結構的數據存儲在這些數據文件中,一般oracle系統安裝後,會自動建立多個表空間,
oarcle11g 的主要表空間 //附(10 g 也是一樣的)
1).example :示例表空間,用於存放示例資料庫的方案對象信息及其培訓資料
2).system: 是系統表空間,用於存放oracle系統內部表和數據字典的數據,如表名,列名,用戶名等,一般不贊成將用戶創建的表,索引等存放在system表空間中
3).sysaux: 是輔助系統表空間,主要存放oracle系統內部的常用樣例用戶的對象,如存放cmr用戶的表和索引等。從而減少系統表空間的負苛,它一般不存諸用戶的數據,由oracle系統內部自動維護
4).undotbsi: 是重做表空間,存放資料庫中有關重做的相關信息數據,當用戶對數據表進行修改(insert,update,delete)。oracle系統自動用重做表空間來臨時存放修改前的數據,當所做的修改完成並提交後,系統根據需要保留,修改前數據的時間長短來釋放重做表空間的部分空間。
5).users: 是用戶表空間,存放永久性用戶對象的數據和私有信息,因此也稱為數據表空間,每個資料庫都應該有一個用戶表空間,以便在創建用戶時將其分配給用戶。
除了oracle系統預設創建的表空間以外,用戶可以根據應用系統的規模及其所要存放的對象的情況創建多個表空間,以區分用戶數據和系統數據。
/* 以下略
2.表
存放用戶數據的對象
3.約束條件
可以為表的一個列創建約束條件(Constraint)
1).主鍵約束
2).預設約束
3).檢查
4).唯一
5).外鍵
4.分區 (Partition)
在非常大的資料庫中,可以通過把一個大表的數據分成多個小表來簡化資料庫的管理,這些小表叫做分區,除了對錶分區外,還可以對索引進行分區,分區不僅簡化了資料庫的管理,還改善了其應用性能,在oracle中,能夠細分分區,創建子分區,例如,可以根據一組值分割一個表,然後再根據另外一種方法分割分區。
5.索引
為了能夠找到數據,表中的每一行都要用一個RowID表標識,RowID告訴資料庫這一行的準確位置,包擴所在的文件,該文件中的塊和該塊中行地址。
6.用戶
用戶賬號雖然不是資料庫中的一個物理結構,但它於資料庫中的對象有著重要的關係,這是因為用戶擁有數據對象,例如sys用戶擁有數據字典表,用戶system擁有訪問數據字典表的視圖
為資料庫創建對象必須(例如表)必須在用戶賬號下進行,可以對每一個用戶賬號進行自定義,以便將一個特定的表空間做為它的預設表空間
7.方案
用戶賬號擁有的對象集稱為用戶的方案(Schmea)
8.同義詞
為了給不同的用戶使用資料庫對象時提供一個簡單的唯一標識資料庫對象的名稱,可以為資料庫對象創建同義詞,
9.許可權及角色
10.段,盤區和數據塊
依照不同的數據處理性質,可能需要在數據表空間內劃分出不同的區域,以存放不同數據,這些區域稱為段(Segment),例如,存放數據的區域稱為"數據區段",存放索引的稱為"索引區段",由於段是一個物理實體,所以必須它把分配到資料庫的一個表空間中(放在表空間的一個數據文件中),而段其實就是由許多盤區(Exctent)給合而成的,當段中的空間用完時,該段就獲得另外的盤區。數據塊(Data Block) 是最小的存儲單元,Oracle 資料庫是操作系統塊的倍數。
二、 Oracle外部結構
1.數據文件
每個oracle資料庫都有一個或多個數據文件(dataFile),而一個數據文件只能屬於一個表空間,數據文件創建後可以改變大小,創建新的表空間要創建新的數據文件,數據文件一旦加入表空間,就不能從這個表空間移走,也不能和其他表空間發生聯繫
2.重做日誌文件 (Redo Log Files)
oracle保存所有資料庫事務的日誌,這些事務被記錄在聯機日誌文件(OnLine Rodo Log FIle)中,數據破壞了可以用這些日誌來恢復。一個資料庫至少需要兩個重做志文件,oracle以迴圈的形式嚮日志文件寫入,第一個日誌被添滿後,就向第二個寫入,然後依次類推,所有日誌文件被寫滿後,又回到第一個,用新的事務的數據進行重寫。
3.控制文件 (Control Files)
用以記錄與描述資料庫的外部結構,它包括
1) oracle資料庫名稱與建立時間
2) 數據文件與重置日誌文件名稱及所在位置
3) 日誌文件記錄序列碼( log sequence Nmuber)
每當資料庫被激活時,oracle會在實例激活後立刻讀取控制文件內容,待所有資料庫外部結構文件的在信息都收集完比,資料庫才會啟動,為避兔控制文件毀壞導致資料庫系統停止,建議用戶至少配置兩個控制文件,並存放在不同的磁碟上。
三、Oracle 中的用戶(這裡是學習的重點)
--- sys 用戶
超級用戶,最有最高許可權,具有sysdba 角色,數據字典的擁有者,超級許可權擁有者(SYSDBA),它具有 createDatabase 許可權(只有它有!)
初始密碼是 change_on_install,此用戶不能刪除。
--- system 用戶
管理操作員,許可權非常大,具有sysopert 角色,但沒有 createDatabase 許可權
它預設的密碼是 manager ,此用戶不能被刪除。
--- scott 用戶
含有樣例表 EMP 與 DEPT ,可以修改密碼,用戶可以被刪除,在產品環境下,建議刪除或鎖定,它是一個普通用戶。
預設密碼是 tiget,預設是鎖定的,可以將其解鎖後使用。
解鎖方式 :
使用 高許可權用戶登錄, alter user scott account unlock;
與scott平級的還有:ADAMS/WOOD, JONES/STEEL, CLARK/CLOTH and BLAKE/PAPER.
--- outln用戶
優化計劃的存儲大綱用戶,密碼是outln
建議創建後立即修改密碼,此用戶不能被刪除。
--- HR/HR用戶
(Human Resources), OE/OE (Order Entry), SH/SH (Sales History).
實驗、測試用戶,含有例表EMPLOYEES與DEPARTMENTS
可以修改密碼,用戶可以被刪除,在產品環境建議刪除或鎖定。
--- DBSNMP用戶
密碼:DBSNMP
資料庫中用於智能代理(Intelligent Agent)的用戶,用來監控和管理資料庫相關性能的用戶,如果停止該用戶,則無法提取相關的數據信息;可以改變密碼,需要放置新密碼到snmp_rw.ora文件,如果不需要Intelligent Agents,可以刪除。
--- SYSMAN用戶
是Oracle資料庫中用於EM管理的用戶,如果你不用該用戶,也可以刪除。(EM:enterprise manage 網頁形式的 圖形化 管理方式,類似SqlServer的企業管理器可以對oracle進行管理、優化等)
四、初始用戶和表空間的創建
打開sqlplus
創建表空間,創建一個用戶
1) 先在磁碟上創建目錄 f:/my_oracle_data2
2) 創建臨時表空間
SQL> create temporary tablespace user_temp //臨時表空間的名字(user_temp)是自己取的 tempfile 'f:\\my_oracle_data2\user_temp.dbf' size 50m //初始大小 autoextend on //設置自增 next 50m maxsize 20480m //設置臨時表空間 每次自增50兆 最大值是20480兆 extent management local; //表示表空間採用本地表空間管理 ,與之對應的是數據字典表空間管理(缺點多,9i以後廢棄)
3) 創建表空間
create tablespace user_data2 logging datafile 'f:\\my_oracle_data2\user_data.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local;
4) 創建用戶,並指定了表空間
create user sa identified by "sa" default tablespace user_data2 temporary tablespace user_temp; //創建用戶的密碼 指定用戶是哪個表空間的 用戶預設的臨時表空
這裡如果用這個用戶登錄 conn sa/sa 將出現如下錯誤
ORA-01045: user SA lacks CREATE SESSION privilege; logon denied 原因是沒許可權
授權 grant connect,resource to sa;
最後將會在指定的目錄里找到我們創建的表空間:
附註: connect,resource 是角色名稱,有了它們可以連接資料庫,併在表空間中建表了
附:查詢所有的表空間和數據文件對應情況
select * from DBA_DATA_FILES
輸出如下:
SQL> conn system/aaaaaaaa as sysdba 已連接。 SQL> select * from DBA_DATA_FILES; FILE_NAME -------------------------------------------------------------------------------- FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS ---------- ------------------------------ ---------- ---------- --------- RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ------------ --- ---------- ---------- ------------ ---------- ----------- ONLINE_ ------- F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF 4 USERS 5242880 640 AVAILABLE 4 YES 3.4360E+10 4194302 160 5177344 632 ONLINE FILE_NAME -------------------------------------------------------------------------------- FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS ---------- ------------------------------ ---------- ---------- --------- RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ------------ --- ---------- ---------- ------------ ---------- ----------- ONLINE_ ------- F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF 3 SYSAUX 272629760 33280 AVAILABLE 3 YES 3.4360E+10 4194302 1280 272564224 33272 ONLINE FILE_NAME -------------------------------------------------------------------------------- FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS ---------- ------------------------------ ---------- ---------- --------- RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ------------ --- ---------- ---------- ------------ ---------- ----------- ONLINE_ ------- F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF 2 UNDOTBS1 73400320 8960 AVAILABLE 2 YES 3.4360E+10 4194302 640 73334784 8952 ONLINE FILE_NAME -------------------------------------------------------------------------------- FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS ---------- ------------------------------ ---------- ---------- --------- RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ------------ --- ---------- ---------- ------------ ---------- ----------- ONLINE_ ------- F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF 1 SYSTEM 503316480 61440 AVAILABLE 1 YES 3.4360E+10 4194302 1280 503250944 61432 SYSTEM FILE_NAME -------------------------------------------------------------------------------- FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS ---------- ------------------------------ ---------- ---------- --------- RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ------------ --- ---------- ---------- ------------ ---------- ----------- ONLINE_ ------- F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF 5 EXAMPLE 104857600 12800 AVAILABLE 5 YES 3.4360E+10 4194302 80 104792064 12792 ONLINE FILE_NAME -------------------------------------------------------------------------------- FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS ---------- ------------------------------ ---------- ---------- --------- RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ------------ --- ---------- ---------- ------------ ---------- ----------- ONLINE_ ------- F:\MY_ORACLE_DATA\USER_DATA.DBF 6 USER_DATA 52428800 6400 AVAILABLE 6 YES 2.1475E+10 2621440 6400 52363264 6392 ONLINE FILE_NAME -------------------------------------------------------------------------------- FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS ---------- ------------------------------ ---------- ---------- --------- RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ------------ --- ---------- ---------- ------------ ---------- ----------- ONLINE_ ------- F:\MY_ORACLE_DATA2\USER_DATA.DBF 7 USER_DATA2 52428800 6400 AVAILABLE 7 YES 2.1475E+10 2621440 6400 52363264 6392 ONLINE 已選擇7行。 SQL>