最近專案要用到Oracle,奈何之前沒有使用過,所以在B站上面找了一個學習影片,用於記錄學習過程以及自己的思考。
影片連結:
【尚矽谷】Oracle資料庫全套教程,oracle從安裝到實戰應用
如果有侵權,請聯絡刪除,謝謝。
大家如果沒有學過Mysql、Postgresql 之類的資料庫,建議按照影片內容去操作學習,這裡並不會完全按照影片內容記錄。而是記錄自己認為比較重要的東西。
1、安裝
安裝過程我就不記錄了,大家可以自己網上找部落格教程,跟著操作應該問題不大。
這裡查詢下後面使用到的Oracle版本
SELECT * FROM v$version;
尚矽谷的教程是很早以前的了,不過資料庫的基本概念不會有太大的變化,跟著教程走,日常開發使用應該問題不大。
2、連線Oracle以及匯入資料
因為電腦上面以及安裝了其他的連線Oracle的客戶端工具,就沒有安裝教程安裝了,這也引起一個問題,就是後面匯入表結構以及資料的時候,一直提示報錯。
所以大家可以安裝影片教程安裝 SQL plus 客戶端去連線。我這裡就使用 Navicat 了,也可以使用 DBeaver 。
下面重點講講怎麼匯入資料,因為沒有資料,後面無法驗證編寫的sql執行的結果對不對,所以這一步還是很重要的。
我是在評論區找的課件資料,連結如下:
連結:https://pan.baidu.com/s/1Y1Dw4YqEYpJJhcgJOW2yhw
提取碼:fwob
大家可以先嚐試直接匯入,看是否報錯,報錯的話,再按照下面的方式匯入資料。
1、第一步是匯入 01_del_data.sql
。這一個sql檔案一般不會有什麼問題,雖然執行也會報錯,但是想要的目的是能夠達到的。主要是建立 job_grades
這張表,以及插入資料。
2、第二步是匯入 02_hr_cre.sql
。這裡會建立很多表,我匯入sql執行的時候,沒有能成功。處理方法是將檔案中類似下面的內容全部刪掉,,這裡的刪除是把整行都刪掉。然後再匯入,就成功建立了相應的表結構。注意:檔案中會有很多處都有,大家刪除的時候,稍微注意下,把相應的都刪除掉。
3、第二步是匯入 03_hr_popul.sql
。檔案的處理有兩個步驟:
3.1、把類似下面的都刪除掉,這裡的刪除是把整行都刪掉。
3.2、把表中的類似 TO_DATE('07-JUN-1994', 'dd-MON-yyyy') 的資料都需要做替換,變成:TO_DATE('07-6-1994', 'DD-MM-YYYY')。這裡替換大家可以用檔案工具 Sublime、Notepad++ 等做全域性替換
我是透過上面的方式匯入的資料,如果大家需要我這邊處理過後的資料,可以評論區留言,我到時候上傳到百度雲網盤上面去。
3、Oracle 資料庫管理
關於 利用 Oracle 企業管理器管理資料庫伺服器 強烈建議大家看著影片操作以下,尤其是對沒有接觸過資料庫的同學來說,實際操作下,會對相關概念有更加清晰的認識,這裡就不一一記錄了。
3.1、Oracle 的(資源限制)概要檔案
- 為了
控制系統資源
的使用, 可以利用資源限制概要檔案. - 資源限制概要檔案是 Oracle 安全策略的重要組成部分, 利用資源限制概要檔案可以對資料庫使用者進行基本的
資源限制
, 而且還可以對使用者的口令進行管理.
- 使用資源限制概要檔案可以限制下列資源的使用
- 每個會話或每個語句的 CPU 時間(以百分之一秒計)
- 每個使用者的併發資料庫會話
- 每個會話的最大連結事件和空閒時間(以分計)
- 可供多執行緒伺服器會話使用的最大的伺服器記憶體.
- 使用資源限制概要檔案可以對每個指定此概要檔案的使用者賬號進行一下設定
- 允許使用者連續輸入錯誤口令的次數, 在此之後 Oracle 將鎖定賬戶
- 口令的過期時間(以天計)
- 允許使用者使用一個到期口令的天數, 這之後 Oracle 將鎖定賬號
- 是否檢查一個賬號口令的複雜性, 以防止賬號使用明顯的口令
3.2、Oracle 資料庫的預設概要檔案
-
每個 Oracle 資料庫都有一個預設的資源概要檔案, 名為
DEFAULT
-
當建立一個新的資料庫使用者且不對使用者分配一個特定的概要檔案時, Oracle 自動給使用者分配資料庫的 DEFAULT 概要檔案. 預設時,資料庫 DEFAULT 概要檔案的所有資源限制設定為
無限制
的.
3.3、模式(schema)
- 模式: 組織相關資料庫物件的一個邏輯概念, 與資料庫物件的物理儲存無關. 一個模式只能屬於一個資料庫使用者, 而且模式的名稱與使用者的名稱相同.
- Oracle 資料庫的每個使用者都擁有
唯一的模式
. 預設情況下, 使用者所建立的所有模式物件都儲存在自己的模式中.在 Oracle 資料庫中模式與使用者賬號為一一對應的關係
- 如果要從一個模式中引用另一個模式中的物件, 可以使用
點表示法.
。不同模式中的物件名可以重複. 比如:
atguigu要訪問 scott 使用者的 emp 表, 訪問方式為:scott.emp
select * from scott.emp;
3.4 、模式物件和非模式物件
-
能包含在模式中的物件稱為模式物件.
-
Oracle 資料庫中有許多型別的物件, 但不是所有的物件都可以組織在模式中. 可以組織在模式中的物件有: 表, 索引, 觸發器等.
-
有一些不屬於任何模式的資料庫物件, 稱為非模式物件. 如: 表空間, 使用者賬號, 角色, 概要檔案等.
3.5、使用者的預設表空間
- 表空間是資料庫的邏輯儲存裝置, 它把資料庫資訊組織成物理儲存空間.
- 表空間由資料檔案組成.
使用者的各種模式物件(如表, 索引, 過程, 觸發器等) 都是放在表空間中
. - 對每個資料庫使用者, 都可以設定一個預設表空間. 當使用者建立一個新的資料庫物件(如表), 並且不明確地為此物件指定表空間時, Oracle 會把所建立的這個新資料庫物件存放到使用者預設的表空間中.
- 如果不給使用者指定預設表空間, 則使用者的預設表空間為
USERS 表空間.
在日常以及學習的過程中,不要將表空間指定為
SYSTEM
,因為這表空間是給Oracle資料庫管理系統使用的,在這個表空間中建立太多的資料,會降低Oracle效能。
3.6、使用者的臨時表空間
- 一般, SQL 語句在完成任務時需要臨時工作空間. 例如:一個用來連線和排序大量的查詢需要臨時工作空間來存放結果. 除非另外指定, 一般情況下, 使用者的臨時表空間是 TEMP 表空間.
- 若資料庫中沒有建立 TEMP 表空間, 則使用者的臨時表空間為 SYSTEM 表空間.
因為 SYSTEM 表空間是用來儲存資料庫系統資訊(資料庫自身資訊的內部系統表和檢視 ---- 資料字典; 所有 PL/SQL 程式的原始碼 ---- 包括函式, 觸發器等)的.如果使用者大量使用此表空間儲存自己的資料, 將會影響系統的執行效率. 因此一般不建議使用者使用 SYSTEM 表空間
4、許可權管理
在為一個 Oracle 資料庫系統建立使用者之後, 這些使用者既不能與資料庫伺服器連線, 也不能做任何事情, 除非他們具有執行特定資料庫操作的許可權.
Oracle 中的資料庫訪問許可權型別共有兩種:
- 系統許可權: 一種功能很強的許可權, 他向使用者提供了執行某一種或某一型別的資料庫操作的能力.
- 物件許可權: 控制使用者是否能在特定資料庫物件(如表, 檢視或儲存過程) 上執行特定型別的操作.
4.1、常用的系統許可權
4.2、使用系統許可權
-
使用者連線到資料庫必須具備 create session 許可權.
-
如果使用者具有 create any procedure 系統許可權, 則能夠建立, 修改, 刪除或執行任何儲存過程, 程式包和函式
-
如果使用者具有 create any table 系統許可權, 則能夠在自己的模式中建立, 修改, 刪除或查詢任何表
-
開發人員一般需要 create table, create view 和 create type 系統許可權.
1、許可權管理: 檢視使用者的系統許可權
2、修改使用者的系統許可權(1)
3、修改使用者的系統許可權(2)
4.3、使用物件許可權
1、檢視使用者的物件許可權
2、常用的物件許可權
3、修改(授予)使用者的物件許可權
5、使用角色進行許可權管理
5.1、利用角色進行許可權管理
資料庫應用程式所需要的系統許可權和物件許可權很多. 為了使 安全管理
成為比較容易的工作, 可以利用角色
角色(role): 系統許可權和物件許可權的一個集合. 可以將角色授予 使用者, 被授予角色的使用者會自動擁有角色所具有的許可權. 如果修改了角色所擁有的許可權, 則被授予角色的使用者的許可權也會隨之自動修改.
1、建立角色(1)
2、修改角色
3、將角色授予使用者
4、刪除角色