記錄學習oracle的操作與原理1
實際上oracle和mysql最大的不同就是oracle比mysql多了一個表空間來管理表而已
(1)mysql/oracle騷操作之賬戶:
a
你得從假設你是一個dba的角度去理解這個賬戶的問題,
假設你工作在,某個大公司,這個大公司有兩個資料庫管理系統oracle和mysql都交由你去管理,這個時候有程式設計師申請用客戶端連線公司的資料庫,這個時候你就得注意了,首先你需要給這個程式設計師分配一個賬戶,在對應給這個賬戶一些許可權,
由於我們操作mysql資料庫的時候一直都是以root使用者的身份操作,如果真的需要你去給別人連線你資料庫的權力時,我希望你給的不是你root的賬號和密碼,而是給他新開一個賬戶,給他一些基本的許可權就行了,oracle操作的時候也是這樣
b
其中oracle和mysql不同的地方就是oracle資料庫管理系統最初會給你提供幾個預設的賬戶包括root賬戶,其中/hr/scott賬戶是一個示例賬戶,使用者以這個賬戶登陸只會看到oracle資料庫的一部分的表,因為不同的使用者下面會有不同的表,這也是任何一個數據庫管理系統為了安全起見都會那麼做的,所以我們得熟悉各個賬戶下都有什麼表
oracle叫sysdba,這個賬戶具有最高的管理權力,相當於mysql的root賬戶
而mysql資料庫管理系統最初只會給你提供一個賬戶root,
總結:
mysql的超級管理員賬戶root,oracle的超級管理賬戶sysdba
任何想要連線資料庫的賬戶除了dba之外,你作為dba都要給他新開一個賬戶,給他基本的許可權就可以了
(2)oracle騷操作之oracle10g體系結構
任何一種軟體,都會有其體系結構,mysql也有,oracle也不例外,如果要想深入瞭解一個軟體的工作原理,可以看一下這個軟體的體系結構,前幾天我在網上看了mysql的體系結構,今天我也大蓋看一下oracle的體系結構吧,瞭解一下oracle的工作原理吧
記憶體結構:資料庫快取/重做日誌快取/資料字典快取/共享池/java池大型池/程式全域性區
程序結構:資料庫寫入程序/日誌歸檔程序/日誌寫入程序/檢查點程序/系統監控程序/程序監控程序等等
物理結構:就是oracle的各種檔案(資料檔案/重做日誌檔案/控制檔案/歸檔日誌檔案/引數檔案/口令檔案)
邏輯結構:
其中記憶體結構和程序結構合起來叫做oracle的例程,物理結構叫oracle的資料庫
記憶體結構/程序結構/物理結構三者的關係是:對應的程序結構將記憶體結構中的資料快取寫入到外存上的物理結構的資料檔案中
(mysql資料庫的體系結構也是這樣的,存在記憶體結構,程序結構,邏輯結構和物理結構)
a
對應的看一下oracle在作業系統中真實的程序結構吧
control+alt+delete:檢視工作管理員的程序,不難發現oracle的各種程序,你會看見oracle的監聽程序,寫程序,oracle資料庫服務程序,其中有幾個oracle資料庫服務程序就有幾個oracle的資料庫,建立oracle資料庫的最好方法是用用圖形工具建立不然很麻煩。。。。。。。。。。。。。。
b
對應的看一下oracle在作業系統中真實的物理結構吧,看看各種資料檔案/日誌檔案/控制檔案都放在了哪裡?
oracle資料庫檔案存放位置:oradata資料夾下
資料檔案:oracle在建立完資料庫後會自動的建立6個表空間,6個表空間對應6個數據檔案.DBF
日誌檔案: oracle在建立完資料庫後會自動的建立3個日誌檔案,Redo01.LOG/Redo02.LOG/Redo03.LOG.........
控制檔案: oracle在建立完資料庫後會自動的建立1個控制檔案.CTL
c
對應的看一下oracle在作業系統中真實的邏輯結構吧
資料庫/表空間/段/區間/oracle塊
c1
資料庫的話你想看有幾個資料庫,可以看出來的,看oradata下有幾個目錄jiunengkanchlaile
c2
表空間的話預設建議一個新的資料庫oracle會建立6個表空間:
即6個數據檔案,包括system表空間/sysaux表空間/資料表空間/索引表空間/臨時表空間/undo表空間
oracle將資料插入oracle資料庫之前,必須先建立表空間,然後將資料插入表空間的一個物件中(oracle的物件:表/索引)
oracle將在使用者選定資料庫的表空間中儲存資料庫物件,而mysql將在使用者選定的資料庫中儲存資料庫物件,oracle相比mysql多了 一個表空間的概念
也就是說oracle使用者插入資料的過程是選擇對應的資料庫,再在資料庫下選擇對應的表空間,選擇好對應的表空間之後在選擇對應的物件進行資料的插入,而mysql就沒有那麼繁瑣直接就選好資料庫選好物件就可以插入資料
system表空間------系統表空間:存放系統表和系統資料/該空間下儲存的的是持久的資料物件:表
sysaux表空間-------輔助系統表空間: 存放系統表和系統資料/該空間下儲存的的是持久的資料物件:表
undotbs1表空間-------撤銷表空間:儲存事務回退資訊的表空間,該空間下儲存的的是非持久的資料物件
users表空間------------使用者表空間:存放使用者表和使用者資料該空間下可以儲存使用者自定義的資料庫物件表,以後我估計我就活在這個表空間下了吧,在這裡建表啥的
temp表空間----------臨時表空間:存放臨時表和臨時資料
example表空間--------樣例表空間: 存放示例表
反過來觀看不同賬戶看的表不一樣,你會發現scott和hr使用者看的基本都是樣例表空間的表,而system/sysdba使用者看的都是系統表空間的表,
(oracle對錶空間的資訊做了一個系統表:dba_tablespaces,從這個系統表中我們可以檢視各個表空間的資訊)在實際工程中,使用者資料(表和聚簇)放到資料表空間,索引放到索引表空間,臨時資料放到臨時表空間,undo資料放到undo表空間,系統資料放到系統表空間
c3
段:(相當於是mysql中的表)
段的型別:
表:一個普通表儲存在一個表空間中(資料儲存在一個表空間)
/分割槽:一個普通表儲存在不同的表空間上資料儲存在不同的表空間)
/簇:多個表連線成一個新表(一個粗表包含多個表的資料,主要是為了提高查詢效能)
/索引:一個表儲存在一個表空間中,表的欄位:索引關鍵字和對應記錄的rowid
/索引分割槽:一個索引表儲存在不同的表空間上
/退回段:一個表存放更新事務中更新前的資料
/臨時段:一個表存放查詢語句得到的解惑
c4
區間:一個區間一定屬於某個段
c5
資料塊:是oracle在資料檔案上執行i/o操作的最小單位,
---------------------------------------------------------------------------------------------------------------------
oracle的資料字典很有用啊,
----------------------------------------------------------------------------------------------------------------------
oracle管理的web端軟體:isql*plus/企業管理器em
oracle管理的客戶端軟體:sql*plus/oracle企業管理器
sql*plus可以處理兩種命令:sql命令和sql*plus的命令
常見sql*plus的命令:
conn username/[email protected] [as sysdba]
show user
disconnect
describe tablename
set pagesize 10
set linesize 10
spool 檔案的絕對路徑名
spool off等等