一、實驗目的及要求
掌握Oracle的基本安裝方法。掌握Oracle 11g的網路設定。能夠使用DBCA建立數據庫。
二、實驗主要內容
1、Oracle 11g的安裝。
2、Oracle 11g的網路設定。
3、使用DBCA建立數據庫。
三、實驗儀器裝置
在區域網環境下,有一臺伺服器和若乾颱客戶機。伺服器成功安裝Oracle 11g數據庫伺服器(企業版),客戶機成功安裝Oracle 11g用戶端軟體,網路服務設定正確,數據庫和用戶端正常工作。
四、實驗步驟
1、Oracle 11g的安裝
(1)開啓安裝程式後,選擇Oracle 11g要安裝的目錄,輸入數據庫名及數據庫口令。
(2)檢查安裝Oracle前的先決條件,如果失敗的項繼續點重試檢查或手動檢查。
(3)檢視安裝Oracle 11g時系統反饋的資訊包括系統磁碟空間是否夠用是否有舊版本的殘留,一切條件符合繼續點安裝。
(4)安裝程式已大致安裝結束,下面 下麪點口令管理,修改數據庫基本帳戶口令(可選)。
(5)此是最後一個步驟標誌着安裝程式已經安裝完成,一些重要的URL地址要記住,以便日後之需,點選退出。
2、Oracle 11g的網路設定
設定Oracle伺服器端與用戶端都可以在其自帶的圖形化Oracle網路設定助手(Net Configuration Assistant)裡完成(強烈建議在圖形化的工具下完成Oracle伺服器端或用戶端的設定)。
(1) Oracle監聽器設定(LISTENER)
注意:如果正常安裝了數據庫,又沒有人爲地結束相關進程,此步操作可省。
①選擇Oracle-OraDb10g_home1設定和移植工具Net Configuration Assistant。
②在隨後出現的視窗中選擇「監聽程式設定」,預設新加的監聽器名稱是LISTENER(該名稱也可以由任意合法字元命名)。
③選中該名稱,選中視窗右側欄下拉選項中的「監聽位置」,點選新增地址按鈕。在出現的網路位址列的協定下拉選項中選中 「TCP/IP」,主機文字方塊中輸入主機名稱或IP地址(如果主機即用作伺服器端也作爲用戶端,輸入兩項之一均有效;如果主機作爲伺服器端並需要通過網路連線,建議輸入IP地址。此處,由於網路上的IP地址需要重新設定,所以我輸入的是主機名319-200,請同學們在建立用戶端連線的時候注意與此保持一致),埠文字方塊中輸入數位埠,預設是1521,也可以自定義任意有效數位埠。
④輸入全域性數據庫名,如test。注意這裏的全域性數據庫名與數據庫SID有所區別,全域性數據庫名實際通過域名來控制在同一網段內數據庫全域性命名的唯一性,就如Windows下的域名控制器,如這裏可以輸入 myoracle.192.168.1.5。Oracle主目錄可以不填寫,輸入SID,如myoracle。
至此,Oracle伺服器端監聽器設定已經完成。
(2)本地服務名設定(Tnsnames)
本地服務名是基於Oracle用戶端的網路設定,所以,如果用戶端需要連線數據庫伺服器進行操作,則需要設定該用戶端。
此處使用Oracle Net Configuration Assistant設定本地服務名。
①選擇Oracle-OraDb10g_home1設定和移植工具Net Configuration Assistant。
②在隨後出現的視窗中選擇「本地Net服務名設定」,單擊下一步。
③在「選擇要做的工作」一欄選擇「新增」,單擊下一步。
④在服務名中輸入(1)中設定的服務名,單擊下一步。
⑤選中TCP/IP(Internet協定),點選下一步。
⑥輸入主機名與埠號。注意這裏的主機名與埠號必須與數據庫伺服器端監聽器設定的主機名和埠號相同。點選下一步。
⑦如果數據庫伺服器端相關服務啓動了,可以點選「是,進行測試」,下一步,單擊「更改登陸」輸入相應的使用者名稱和密碼,進行連線測試。
如果這裏測試連線不成功,也不要緊,先點完成按鈕結束設定。
(3)連線數據庫伺服器
① 啓動伺服器端監聽器與數據庫服務
Windows下,啓動監聽器:
C:lsnrctl start
啓動Oracle範例服務:
C:oradim –startup –sid myoracle
關閉Oracle範例服務:
C:oradim –shutdown –sid myoracle
以上服務必須同時啓動,用戶端才能 纔能連線數據庫。由於預設設定的監聽器名稱是Listener,上述命令可以正常啓動監聽器。
② 測試連線數據庫伺服器
測試的方法多種多樣,可以在上面設定本地服務名時進行測試,也可以是第三方用戶端工具,如PL/SQL Developer,最方便的是用Oracle自帶的sqlplus工具,以下利用sqlplus進行測試:
C:sqlplus /nolog
SQL>conn system@test
已連線。
3、使用DBCA建立數據庫
限於機房的安裝環境,請同學們課後在自己的機器上實現此操作。
(1)選擇開始選單中的Database Configuration Assistant(DBCA),單擊下一步。
(2)選擇建立數據庫,單擊下一步。
(3)「數據庫模板」視窗,單擊常規用途模板,然後單擊下一步。
(4)輸入全域性數據庫名和SID,保持configure the Database with Enterprise Manager被選中。
(5)「數據庫連線選項」視窗,選擇在預設情況下您需要您的數據庫工作的模式。單擊未用模式或分享伺服器模式並單擊下一步。
(6)「初始化參數」視窗的字元集索引標签上,單擊使用 Unicode (AL32UTF8)。
(7)從「數據庫記憶體」視窗,單擊下一步。
(8)「建立選項」視窗,單擊完成。
(9)從「摘要」視窗,單擊確定來啓動建立數據庫。
(10)當數據庫建立過程完成時,單擊完成。
一.實驗目的及要求
1. 熟悉Oracle的基本知識。
2. 熟悉Oracle的命令操作環境SQLPLUS及常用命令。
3. 熟悉並掌握oracle常用的查詢語句。
二、實驗主要內容
1、Oracle SQLPLUS環境及常用命令。
2、Oracle查詢。
三、實驗儀器裝置
在區域網環境下,有一臺伺服器和若乾颱客戶機。伺服器成功安裝Oracle 11g數據庫伺服器(企業版),客戶機成功安裝Oracle 11g用戶端軟體,網路服務設定正確,數據庫和用戶端正常工作。
四、實驗步驟
1. SQL*Plus的啓動
1) SQLPLUS
2) 斷開與數據庫的連線
SQL>
3) 退出SQL*Plus
2. SQL命令
SQL命令包括數據定義語言(如Create、Alter等)和數據操作語言(Select Insert Update Delete等),這些都可在SQL*Plus中使用。
3. SQL*Plus命令
1) 列出緩衝區的內容:
2) 編輯當前行
3) 增加一行
4) 在一行上新增一原文
5) 刪除一行
6) DESCRIBE列出表的結構
4. Oracle查詢
1. 顯示EMP表中所有的部門號、職工名稱和管理者號碼:
2. 算術運算子在SQL中的使用
3. 連字元的使用
把職工號和職工名字連線起來,如下:
把職工號和職工名字中間用‘-’連線起來,並輸出‘WORKS IN DEPARTMENT’,如下:
4. 禁止重複
如果列舉出EMP表中所有部門號:
從上表中可以看出部門號之間存在着許多的相同的,可以用DISTINCT子句來消除重複的。
5. 排序
按單個欄位排序,如按照ENAME排序,
按多個欄位排序:
如按部門號升序,按工資降序排序
6. 帶條件的查詢
1)查詢工作是CLERK的所有職工的姓名,職工號和部門號
2)從DEPT表中查詢出部門號大於20的部門名稱
3)複合條件查詢
查詢工作是MANAGER並且工資大於1500,或者工作是SALESMAN的職工資訊:
7. 操作符的應用
1) BETWEEN的應用
查詢工資在1000到2000之間的職工名字和工資資訊。
2) IN
查詢有7902,7566,7788三個MGR號之一的所有職工:
3) LIKE
查詢名字以「S」開始的所有職工:
查詢名字只有4個字元的所有職工:
4) IS NULL
查詢沒有管理者的所有職工:
8. 單&號替代變數
1) 數位變數輸入:
2) 字串變數輸入:
9. 字元函數的應用
見表4-5
10. 數位函數的應用
見表4-4
11. 日期函數的應用
見表4-6,4-7
12. 數據型別轉換
1) TO_CHAR 數位數據轉換爲字串
2) TO_NUMBER字串數據轉換爲數位
3) TO_DATE字串數據轉換爲日期數據
13. 分組函數的應用
1) 分組函數見表4-8
2) 分組函數應用
求平均值
求最小值
求數目
3) GROUP BY子句
求每個部門中的平均工資:
4) HAVING子句
查詢人數超過3人的部門中的平均工資:
14. 連線
從EMP和DEPT中查詢出職工名字、工作和部門名稱:
15. 子查詢的應用
從EMP中查詢出工資最低的職工:
從EMP中查詢出每個部門工資最低的職工:
一、實驗目的及要求
掌握Oracle的常用物件的操作方法。會使用常用物件解決一些實際問題。
二、實驗主要內容
(1)表結構的建立、修改、檢視、刪除操作。
(2) 索引的建立、修改、檢視、刪除操作。
(3) 檢視的建立、查詢、修改、刪除操作。
(4) 同義詞的建立、查詢、修改、刪除操作,比較對同義詞的操作與對原數據庫物件的操作是否一致。
(5) 掌握序列的建立、查詢、修改、刪除操作,利用序列向數據庫表中插入數據。
三、實驗儀器裝置
在區域網環境下,有一臺伺服器和若乾颱客戶機。伺服器成功安裝Oracle 11g數據庫伺服器(企業版),客戶機成功安裝Oracle 11g用戶端軟體,網路服務設定正確,數據庫和用戶端正常工作。
四、實驗步驟
1.建立表結構
利用命令列方式將下列各表建立到員工醫療保險系統數據庫中。表結構如附錄員工醫療保險系統表1-表7所示。
2.檢視錶結構
(2) 利用SQL*Plus或PL/SQL Developer從數據字典DBA_TAB _COLUMNS檢視員工醫療保險系統所有表的欄位資訊。
(3) 利用SQL*Plus或PL/SQL Developer從數據字典DBA_ CONSTRAINTS檢視員工醫療保險系統所有表的約束資訊。
3.修改表結構
(1) 利用SQL*Plus或PL/SQL Developer將表「staff_sql」重新命名爲「staff_sql0」。
(2) 利用企業管理器爲「staff_sql0」表新增「age INT」欄位,利用DESC命令檢視「staff_sql0」表的欄位資訊。
(3) 利用SQL*Plus或PL/SQL Developer爲「staff_sql0」表新增「salary NUMBER(5,2)」、「salary_add NUMBER(3,1)」兩個欄位,利用DESC命令檢視「staff_sql0」表的欄位資訊。
(4) 利用SQL*Plus或PL/SQL Developer向「staff_sql0」表新增「sname」欄位惟一性約束,從數據字典DBA_CONSTRAINTS檢視「staff_sql0」表的約束資訊。
(5) 利用SQL*Plus或PL/SQL Developer刪除「staff_sql0」表上「sname」欄位惟一性約束,從數據字典DBA_CONSTRAINTS檢視「staff_sql0」表的約束資訊。
(6) 利用企業管理器從「staff_sql0」表刪除「age」欄位,利用DESC命令檢視「staff_sql0」表的欄位資訊。
(7) 利用SQL*Plus或PL/SQL Developer從「staff_sql0」表刪除「salary」、「salary_add」兩個欄位,利用DESC命令檢視「staff_sql0」表的欄位資訊。
(8) 利用SQL*Plus或PL/SQL Developer將「staff_sql0」表「sname」欄位長度修改爲30,利用DESC命令檢視「staff_sql0」表的欄位資訊。
4. 刪除表結構
(1) 利用SQL*Plus或PL/SQL Developer刪除員工表3,看能否成功。從原理上解釋原因,同時記錄外來鍵約束表刪除順序的影響。
沒有數據 不足以引發外來鍵衝突,可以刪除
然而插入數據,直接刪除時若引發外來鍵衝突,就無法刪除了 staff表外來鍵沒有設定級聯刪除
索引、檢視、同義詞及序列操作
1.建立索引
(1) 利用企業管理器爲醫院表的醫院名稱建立索引,並以降序排列,索引名爲「hospital_name_index」。
(2) 利用SQL*Plus或PL/SQL Developer爲員工表的員工姓名、員工性別、出生年月排序,以員工姓名升序、員工性別降序、出生年月降序排列,索引名爲「staff_info_index」。
2.檢視索引
(2) 利用SQL*Plus或PL/SQL Developer從DBA_INDEXES數據字典中檢視員工醫療保險系統所有索引的資訊。
(3) 利用SQL*Plus或PL/SQL Developer從DBA_INDEXES數據字典中檢視「staff_info_index」索引的資訊,並檢視該索引列的順序及狀態。
3.刪除索引
(1) 利用企業管理器刪除「hospital_name_index」索引。
(2) 利用SQL*Plus或PL/SQL Developer將「staff_info_index」索引刪除。
4.建立檢視
(1) 利用企業管理器爲實現顯示醫保卡資訊建立檢視,該檢視中包括醫保卡資訊、醫保卡所屬人資訊和所屬人單位資訊,檢視名爲「ygbx_card_view」。
(2) 利用SQL*Plus或PL/SQL Developer爲實現員工持醫保卡到醫院消費的功能建立檢視,該檢視中包括員工的資訊、醫保卡資訊、醫保資訊和消費等資訊,檢視名爲「consume_view」。
(3) 利用SQL*Plus或PL/SQL Developer爲企業醫保繳費資訊功能建立檢視,該檢視中包括醫保繳費的企業資訊,醫保卡資訊和企業醫保繳費費用等資訊,檢視名爲「insurnce_view」。
(4) 利用SQL*Plus或PL/SQL Developer爲企業表建立檢視,檢視名爲「business_view」。
5.檢視檢視
(2) 利用企業管理器檢視「consume_view」檢視的資訊。
(3) 利用SQL*Plus或PL/SQL Developer檢視「card_view」檢視的子查詢語句。
(4) 利用SQL*Plus或PL/SQL Developer顯示「insurance_view」檢視的資訊。
6.檢視數據的更新
(1) 利用SQL*Plus或PL/SQL Developer向「business_view」插入一個記錄,企業編號爲「B1997010287」,企業名稱爲「格林製藥」,企業型別爲「企業」,企業地址爲「鴨綠江街98號」,聯繫電話爲「84692315」。
(2) 利用SQL*Plus或PL/SQL Developer檢視「business」表是否有變化。
7.刪除檢視
(1) 利用企業管理器刪除「business_view」檢視。
(2) 利用企業管理器刪除「card_view」檢視。
(3) 利用SQLPlus或PL/SQL Developer刪除「consume_view」檢視。
(4) 利用SQLPlus或PL/SQL Developer刪除「insurnce_view」檢視。
8.建立同義詞
(2) 利用SQL*Plus或PL/SQL Developer建立醫保卡表的同義詞,名爲「ybk」。
9.查詢同義詞
(2) 利用SQL*Plus或PL/SQL Developer檢視同義詞「ybk」。
10.刪除同義詞
(1) 利用企業管理器刪除同義詞「qyb」。
(2) 利用SQL*Plus或PL/SQL Developer刪除同義詞「ybk」。
11.建立序列
(2) 利用SQL*Plus或PL/SQL Developer建立序列,該序列最大值無限制,最小值爲「1」,步長爲「10」,序列名爲「ygbx_seq2」。
12.查詢序列
(2) 利用SQL*Plus或PL/SQL Developer檢視同義詞「ygbx_seq2」。
13.修改序列
利用SQL*Plus或PL/SQL Developer修改序列「ygbx_seq2」,將該序列最大值設爲「1000」。
14.刪除序列
(2) 利用SQL*Plus或PL/SQL Developer刪除序列「ygbx_seq2」。
一、實驗目的及要求
(1) 掌握PL/SQL塊結構、PL/SQL的基本語法、PL/SQL的控制結構。
(2) 掌握PL/SQL塊中使用複合數據型別和遊標的方法。
(3) 掌握PL/SQL例外處理技術。
(4) 掌握儲存過程、儲存函數、觸發器高階數據庫物件的基本作用。
(5) 掌握儲存過程、儲存函數、觸發器的建立、修改、檢視、刪除操作。
二、實驗主要內容
(1) 記錄執行命令和操作過程中遇到的問題及解決方法,注意從原理上解釋原因。
(2) 記錄利用SQLPlus或PL/SQL Developer編寫、執行PL/SQL程式的命令。
(3) 記錄執行命令和操作過程中遇到的問題及解決方法,注意從原理上解釋原因。
(4) 記錄利用企業管理器管理儲存過程、儲存函數、觸發器的方法。
(5) 記錄利用SQLPlus和PL/SQL Developer管理儲存過程、儲存函數、觸發器的命令。
三、實驗儀器裝置
在區域網環境下,有一臺伺服器和若乾颱客戶機。伺服器成功安裝Oracle 11g數據庫伺服器(企業版),客戶機成功安裝Oracle 11g用戶端軟體,網路服務設定正確,數據庫和用戶端正常工作。
四、實驗步驟
1.在SQL*Plus中使用PL/SQL塊處理
EMP表中職工號7788的職工,如果工資小於3000那麼把工資更改爲3000:
2.無參數的儲存過程
3.帶輸入參數的儲存過程:
解僱給定職工號的職工,並呼叫proc_execution:
SQL>EXECUT fire_emp(7654)
PL/SQL procedure successfully completed.
儲存過程刪除了職工號7654的職工。
4.帶輸入輸出的儲存過程
查詢EMP中給定職工號的姓名、工資和傭金。
SQL> VARIABLE emp_name varchar2(15);
SQL> VARIABLE emp_sal number;
SQL> VARIABLE emp_comm number;
SQL> EXECUTE query_emp(7654,:emp_name, :emp_sal, :emp_comm);
PL/SQL procedure successfully completed.
SQL> PRINT emp_name;
EMP_NAME
-------------------
MARTIN
5.用Function查詢出EMP中給定職工號的工資:
SQL>VARIABLE emp_sal number
SQL>EXECUTE :emp_sal := get_sal(7654)
PL/SQL procedure successfully completed
.
SQL>PRINT emp_sal
EMP_SAL
-------------------
1250
6.用例外處理完善程式
如例3中:解僱給定職工號的職工,並呼叫proc_execution:
SQL>EXECUT fire_emp(7654)
如果職工號7654的職工不存在則出錯。爲了避免出錯我們使用了EXCEPTION語句。
SQL>EXECUT fire_emp(7654)
就不會出錯了。
7建立儲存過程,實現功能爲:刪除scott.emp表中任意給定職工號的職工記錄;
8建立函數,實現功能爲:在scott.emp表和scott.dept表中查詢出任意給定職工號的職工姓名及職工所在部門的名稱。
9建立觸發器,實現更新dept表中的deptno值,級聯更新emp表中相應值。
10對儲存過程、函數及觸發器實現檢視、修改、刪除等基本操作。
一、實驗目的及要求
掌握Oracle的安全管理方法。
二、實驗主要內容
(1) 概要檔案的建立、修改、檢視、刪除操作。
(2) 使用者的建立、修改、檢視、刪除操作。
(3) 許可權的建立、修改、檢視、刪除操作。
(4) 角色的建立、修改、檢視、刪除操作。
三、實驗儀器裝置
在區域網環境下,有一臺伺服器和若乾颱客戶機。伺服器成功安裝Oracle 11g數據庫伺服器(企業版),客戶機成功安裝Oracle 11g用戶端軟體,網路服務設定正確,數據庫和用戶端正常工作。
四、實驗步驟
1建立概要檔案。
① 利用企業管理器建立概要檔案「ygbx+學號_pro」,要求在此概要檔案中CPU/對談爲1000,讀取數/對談爲2000,登錄失敗次數爲3,鎖定天數爲10。
② 利用SQL*Plus或PL/SQL Developer,建立概要檔案「ygbx+學號_pro_sql」,其結構與「ygbx+學號_pro」一致。
2 檢視概要檔案。
② 利用企業管理器檢視概要檔案「ygbx+學號_pro」的資訊。
② 利用SQL*Plus或PL/SQL Developer,從DBA_PROFILES數據字典中檢視「ygbx+學號_pro_sql」概要檔案的資源名稱和資源值等資訊。
③ 利用SQL*Plus或PL/SQL Developer,從檢視「ygbx+學號_pro_sql」概要檔案中鎖定天數的值。
3修改概要檔案。
② 利用企業管理器,修改「ygbx+學號_pro」概要檔案,將CPU/對談改爲4000,連線時間爲60。
② 利用SQL*Plus或PL/SQL Developer,修改「ygbx+學號_pro_sql」概要檔案,將並行對談設爲20,讀取數/對談設爲DEFAULT。
4建立使用者。
① 利用企業管理器,建立「ygbxuser+學號」使用者,密碼爲「user+學號」,預設表空間爲「ygbx_tbs」。
② 利用SQL*Plus或PL/SQL Developer,建立「ygbxuser+學號_sql」使用者,密碼爲「user+學號+sql」,該使用者處於鎖狀態。
③ 利用SQLPlus或PL/SQL Developer,將「ygbx+學號_pro」概要檔案賦予 「ygbxuser+學號」使用者。
④ 利用SQLPlus或PL/SQL Developer,將「ygbx+學號_pro_sql」概要檔案賦予 「ygbxuser+學號_sql」使用者。
5 檢視使用者。
② 利用企業管理器,檢視「ygbxuser+學號」使用者的資訊。
② 利用SQL*Plus或PL/SQL Developer,檢視「ygbxuser+學號_sql」使用者的資訊,並檢視該使用者驗證的方式。
③ 利用SQL*Plus或PL/SQL Developer,從DBA_USERS數據字典中檢視「ygbxuser+學號_sql」使用者的預設表空間和臨時表空間的資訊。
6修改使用者。
② 利用企業管理器,修改「ygbxuser+學號」使用者,驗證方式爲外部。
② 利用SQL*Plus或PL/SQL Developer,修改「ygbxuser+學號_sql」使用者,將該使用者解鎖,並將密碼改爲「sql+學號+user」。
7許可權管理。
① 利用企業管理器,授予「ygbxuser+學號」使用者「CREATE ANY TABLE」、「CREATE ANY INDEX」、「ALTER ANY TABLE」、「ALTER ANY INDEX」、「DROP ANY TABLE」和「DROP ANY INDEX」系統許可權。
② 利用SQL*Plus或PL/SQL Developer,授予「ygbxuser+學號_sql」使用者「SYSOPER」系統許可權。
③ 利用企業管理器,將「ygbxuser+學號」使用者增加到「SYSTEM」方案中對「help」表的檢視、修改、刪除等物件許可權。
④ 利用SQL*Plus或PL/SQL Developer,收回「ygbxuser+學號_sql」使用者在「SYSTEM」方案中對「help」表的檢視、修改、刪除等物件許可權。
④ 利用SQL*Plus或PL/SQL Developer,收回「ygbxuser+學號_sql」使用者的「SYSOPER」系統許可權。
8建立角色。
① 利用企業管理器,建立「ygbxrole+學號」角色,賦予該角色能對錶、索引、儲存過程、序列、同義詞進行基本操作的許可權。
② 利用SQL*Plus或PL/SQL Developer,建立「ygbxrole+學號_sql」角色,該角色具有 「SYSDBA」系統許可權,並將該角色賦予「ygbxuser+學號_sql」使用者。
9檢視角色。
② 利用企業管理器,檢視「ygbxrole+學號」角色所具有的所有許可權。
② 利用SQL*Plus或PL/SQL Developer,檢視「ygbxrole+學號_sql」角色所具有的所有許可權。
10 修改角色。
① 利用企業管理器,修改「ygbxrole+學號」角色,增加對角色的基本操作,並收回儲存過程和序列的操作許可權。
② 利用SQL*Plus或PL/SQL Developer,修改「ygbxrole+學號_sql」角色,收回「SYSDBA」系統,而授予「SELECT ANY TABLE」系統許可權。
11 刪除角色。
② 利用企業管理器,刪除「ygbxrole+學號」角色。
② 利用SQL*Plus或PL/SQL Developer,刪除「ygbxrole+學號_sql」角色。
12 刪除概要檔案。
② 利用企業管理器,刪除「ygbx+學號_pro」概要檔案,檢視「ygbxuser+學號」使用者的概要檔案。
② 利用SQL*Plus或PL/SQL Developer,刪除「ygbx+學號_pro_sql」概要檔案,檢視「ygbxuser+學號_sql」使用者的概要檔案。
13 刪除使用者。
① 利用企業管理器,刪除「ygbxuser+學號」使用者。
② 利用SQL*Plus或PL/SQL Developer,刪除「ygbxuser+學號_sql」使用者。
常用系統許可權
常用系統許可權如表1所示。
常見問題分析
(1) 授權重複的問題。
A使用者本身具有了對A表的建立、刪除的操作許可權,而B使用者同時具有對A表的建立、刪除的操作許可權。這時,B使用者授予A使用者對A表的建立、刪除的操作許可權時,系統不報重複授權的錯誤。
(2) 收回系統許可權的問題。
當A使用者授權B使用者對A表的操作系統許可權,B使用者又授予C使用者對A表的操作系統許可權時,如果A使用者收回B使用者對A表的操作系統許可權,那麼C使用者對A表的操作系統許可權不會被級聯收回。
(3) 收回物件許可權的問題。
當A使用者授權B使用者對A物件的操作物件許可權,B使用者又授予C使用者對A物件的操作物件許可權時,如果A使用者收回B使用者對A物件的操作物件許可權,那麼C使用者對A表的操作物件許可權會被級聯收回。
一、實驗目的及要求
掌握oracle數據庫常用的備份和恢復方法。
二、實驗主要內容
(1) 數據備份與恢復的方法
物理備份與恢復、
邏輯備份與恢復、
RMAN(選做)
(2)Oracle備份方案的制定
三、實驗儀器裝置
在區域網環境下,有一臺伺服器和若乾颱客戶機。伺服器成功安裝Oracle 11g數據庫伺服器(企業版),客戶機成功安裝Oracle 11g用戶端軟體,網路服務設定正確,數據庫和用戶端正常工作。
四、實驗步驟
1 Oracle物理備份與恢復
.0.準備工作:
(1) 檢視數據庫是否執行於歸檔模式下:
(2) 乾淨的關閉數據庫,做一個完全的冷備份。
提示:a.使用showdown命令; b.複製數據檔案、日誌檔案和控制檔案到安全地方
(3) 把數據庫改爲歸檔模式
1.實驗1:
數據庫系統數據檔案和回退段遭破壞的情況下的恢復。此時數據庫的狀態是關閉的。
(1) 先啓動數據庫,用scott使用者建立test表,並插入兩條數據。
(2)模擬數據庫遭意外被迫關閉,並且系統數據檔案丟失。
把oracle服務停掉,移除SYSTEM01.dbf和UNDOTBS01.DBF檔案(即將這兩個檔案移到其他資料夾下)。
(3)啓動服務,啓動數據庫, 提示如下錯誤
a. 啓動服務
b. 啓動數據庫
(4) 把備份的SYSTEM01.dbf和UNDOTBS01.DBF檔案複製回去
a. 執行以下命令:
請給執行結果:
然後就可以開啓數據庫,檢視scott使用者的test表。
實驗2:
數據庫是開啓的,這時損壞的檔案是使用者的數據檔案而不是system和undo檔案。
(1)用scott使用者在users表空間建立test1表
(2) 插入兩條數據
(3)當前日誌歸檔
(4)現在破壞users表空間,使其離線,然後移除users01.dbf到一個指定資料夾(備份)
此時出現錯誤,users表空間不能線上了。這時把備份的users01.DBF還原回去。
(5)完成媒介恢復。
實驗3:數據檔案沒有備份(不能使system和undo檔案)的恢復。
(1)建立表空間testspace
在SQL Plus中依次執行以下語句,給出最後的執行結果:
(2)由於沒有備份數據檔案,需重新建立一個
(3) 完成恢復
2 Oracle邏輯備份:匯入導出實驗
實驗4:模式的匯入導出
案例:將scott/tiger使用者對應的模式導出,通過導出檔案將其匯入到Test使用者(爲一個空使用者)對應的模式中,包括該模式中的所有物件的定義和數據。
1.準備工作
(1)建立使用者:
(2)授權:
2.數據的導出與匯入
(1)數據準備
以scott身份登錄: conn scott/tiger
①建立測試用表:
加入數據:
提交:
②建立測試用表scott_test
加入數據:
(2)以管理員身份登錄:
(3)導出數據庫:
在DOS提示符下執行:
(4)恢復數據庫執行狀態
(5)進行數據庫的匯入:
3.結果檢驗
對匯入的數據進行查詢,以確定匯入是否成功,給出結果截圖:
(1)以test身份登錄到數據庫
(2)查詢剛纔導出(匯入)表中的某個表(如Jobs):
3 RMAN使用基礎
測試說明
測試目的
驗證RMAN備份與恢復全過程。記錄整個過程的操作細節。
利用RMAN的備份與恢復可完成如下工作:
(1) 數據庫備份/恢復;
(2) 同一主機,不同磁碟陣列,相同數據儲存路徑(模式)的數據遷移;(在恢復過程中改變數據儲存路徑/模式過程待驗證)
(3) 不同主機,相同操作系統、同一數據庫版本之間的的數據庫遷移。(不同數據庫版本之間是否可利用RMAN 備份與恢復進行數據遷移待驗證。)
測試環境說明
• OS:Windows XP
• ORACLE VERSION: Oracle Database 10g Enterprise Edition Release 11.2.0.2.0 – Prod
• ORACLE執行模式:歸檔模式
ORACLE數據儲存:檔案系統,儲存於D:\oracle\product\11.2.0\oradata\orcl
數據備份過程
1.連線本地數據庫: rman target /
通過rman連線本地數據庫非常簡單,進入到命令提示字元介面:
2.RMAN 數據庫全備份
3.數據庫在數據全備份後繼續操作
(1)在RMAN全備份後繼續數據庫的操作。即在測試表中插入數據。
(2)正常關閉數據庫。並刪除原數據庫所有檔案,包括:控制檔案、數據檔案、日誌檔案。以模擬更換磁碟陣列或者檔案丟失的情況。
此時,重新啓動數據庫過程必然失敗。
數據庫恢復過程
當前情況下,所有的控制檔案、數據庫檔案、聯機日誌檔案均全部丟失。按照數據庫恢復/啓動過程,應按照先恢復數據庫控制檔案,再恢復數據檔案的步驟進行。
從RMAN備份中恢復控制檔案
在本例子中,RMAN備份指令碼進行了控制檔案的備份。所以,控制檔案的恢復過程可以利用RMAN的備份完成。
此時,也存在兩種情況。
• RMAN設定了控制檔案自動備份。
• RMAN未設定控制檔案自動備份,而由RMAN指令碼進行控制檔案備份。如本例所示。
對於此兩種情況,分別說明如下。
(1) RMAN未設定控制檔案自動備份
由於RMAN未設定控制檔案自動備份。則可以利用程式包,從備份集中恢復。如下:
(2) RMAN設定了控制檔案自動備份
建議開啓RMAN 自動備份控制檔案選項。操作如下:
經過以上設定後,會在數據庫的結構發生變化的時候自動備份控制檔案。
從RMAN設定了控制檔案自動備份後,恢復控制檔案的過程如下:
利用以上語句完成控制檔案自從控制檔案自動備份集中恢復。完成控制檔案的恢復操作。將在D:\oracle\product\11.2.0\oradata\orcl目錄中生成新的控制檔案。注意,此時恢復的控制檔案爲全部的控制檔案。本例中爲3個控制檔案。
2. 從手動控制檔案備份中恢復
手動備份控制檔案的方式有兩種。
控制檔案備份方式(1)
控制檔案備份方式(2)
方式(2)將在user_dump_dest目錄中生成一個trace檔案。該檔案中將生成控制檔案的生成指令碼。
本例中user_dump_dest路徑爲D:\oracle\product\11.2.0\admin\orcl\udump。控制檔案生成指令碼如下:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE 「ORCL」 NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 454
LOGFILE
GROUP 3 ‘D:\ORACLE\PRODUCT\11.2.0\ORADATA\ORCL\REDO03.LOG’ SIZE 10M,
GROUP 4 ‘D:\ORACLE\PRODUCT\11.2.0\ORADATA\ORCL\REDO04.LOG’ SIZE 10M,
GROUP 5 ‘D:\ORACLE\PRODUCT\11.2.0\ORADATA\ORCL\REDO05.LOG’ SIZE 10M,
GROUP 6 ‘D:\ORACLE\PRODUCT\11.2.0\ORADATA\ORCL\REDO06.LOG’ SIZE 10M
– STANDBY LOGFILE
DATAFILE
‘D:\ORACLE\PRODUCT\11.2.0\ORADATA\ORCL\SYSTEM01.DBF’,
‘D:\ORACLE\PRODUCT\11.2.0\ORADATA\ORCL\UNDOTBS01.DBF’,
‘D:\ORACLE\PRODUCT\11.2.0\ORADATA\ORCL\SYSAUX01.DBF’,
‘D:\ORACLE\PRODUCT\11.2.0\ORADATA\ORCL\USERS01.DBF’
CHARACTER SET ZHS16GBK
;
下面 下麪將對利用方法(2)生成的控制檔案指令碼進行控制檔案恢復的步驟說明如下:
利用trace中的建立控制檔案指令碼,建立控制檔案。注意,此時建立的控制檔案爲所有控制檔案,本例中爲3個控制檔案。建立控制檔案位置、數量均由spfile指定。
控制檔案已建立
注意:控制檔案一旦建立,則數據庫將啓動到MOUNTED狀態。
3.恢復數據庫數據檔案
在控制檔案恢復後,可以開始數據庫檔案的恢復。
繼續進行RMAN數據庫恢復操作
既然此時日誌組不存在,那麼只能進行不完全恢復了。
附加的測試過程
1.假設:日誌檔案沒有丟失
修改以上的測試條件。假設除日誌檔案外,其他檔案均丟失。在完成restore database後,將日誌檔案複製到原路徑,之後進行數據恢復測試。
表1 企業(business)表結構
表2醫院(hospital)表結構
表3醫保卡(card)表結構
表4員工(staff)表結構
表5就診表(see)結構
表6消費(consume)表結構
表7醫保(insurance)表結構