Oracle高階培訓 第5課 學習筆記
Oracle高階培訓 第5課 學習筆記
本課筆記中的頁碼與《Oracle9i 資料庫管理基礎II Ed 1.1 Vol.2.pdf》對應
指南下載地址:
作者:JackYang (JackYang.sh@gmail.com)
日期:2006-10-17
本課包含多個實驗,目前還未通過上機驗證。
回顧上節課
不完全介質恢復,一定要在歸檔模式下進行,不能在非歸檔模式下進行。
不完全介質恢復,即使只損壞一個檔案,都要把資料檔案還原。
不完全介質恢復時,控制檔案沒有損壞,就不要用原來備份的控制檔案。
redo log file,是ORACLE資料庫的一個副本。
P93
基於取消的恢復
聯機重做日誌,在歸檔模式下不允許備份。
P94
一旦發現有聯機檔案丟失了,可以檢視v$log_history;
歸檔日誌序列號到47
48開始在聯機重做日誌檔案中。
所有不完全介質恢復,開啟資料庫時都要用RESETLOGS
P96
假如控制檔案沒有丟失,還原的時候,就不用還原。
RECOVER database時,後面已經要加 useing backup controlfile
P97
誤刪除了一個表空間,用上節課的方法還原不行了。僅僅還原資料檔案,不還原控制檔案不行。必須用早期的控制檔案來恢復,才能恢復表空間。
實驗一:
實驗目的:恢復被誤刪除的表空間
1. E:/ora01g> sqlplus /nolog
2. SQL> connect sys/ora123 as sysdba
3. SQL> startup
4. SQL> archive log list
5. SQL> select name from v$tablespace;
6. SQL> create tablespace data1 datafile ‘e:/ora01g/oradata/db1/data1.dbf’ size 2m;
7. SQL> create table dept1 tablespace data1 as select * from scott.dept;
8. SQL> insert into dept1(deptno.dname) values(28,’before drop’);
9. SQL> create tablespace data2 datafile ‘e:/ora01g/oradata/db1/data2.dbf’ size 2m;
10. SQL> create table dept2 tablespace data2 as select * from scott.dept;
11. SQL> insert into dept2(deptno.dname) values(28,’before drop’);
12. SQL> select * from dept1;
13. SQL> select * from dept2;
14. SQL> alter database begin backup;
做一個備份
資料庫開啟的狀態下進行熱備份,必須先執行命令alter database begin backup; 把資料檔案凍結。把所有的修改不寫到資料檔案,而是寫到redo log file。
15. SQL> host copy E:/ora01g/oradata/db1/*.dbf d:/oradata/db1/hot
16. SQL> alter database end backup;
17. SQL> alter system archive log current;
備份結束馬上做一次強行歸檔
18. SQL> alter database backup controlfile to ‘d:/oradata/db1/hot/con1.ctl’ reuse;
備份控制檔案
因為表空間被誤刪除,必須使用控制檔案來恢復
加reuse是為了覆蓋備份目錄下的原來檔案
19. SQL> drop tablespace data1 including contents;
刪除表空間的時候,表空間中只要有一個表,就必須加上including contents,否則刪不掉表空間
20. SQL> select * from dept1;
查詢失敗,因為表空間data1已經被刪除
21. SQL> select * from dept2;
查詢成功,因為表空間data2未被刪除
22. SQL> insert into dept2(deptno,dname) values (30,’after drop’);
刪除表空間後,插入一條模擬資料
23. SQL> select * from dept2;
24. SQL> commit;
25. SQL> alter system archive log current;
26. SQL> show parameter background_dump_dest;
27. SQL> show parameter user_dump_dest;
E:/ora01g/oradata/db1/udump路徑下有alter_db1檔案
檔案中有一行drop tablespace data1 including contents表明了刪除表空間data1的起始時間和結束時間。
28. SQL> shutdown immediate
不完全介質恢復必須在資料庫關閉情況下,把所有資料檔案還原,所以先關閉資料庫。
29. 正常操作,應該把壞的資料庫備份以下,redo log file也要備份,這裡省了。
30. SQL> host copy d:/oradata/db1/hot/*.dbf e:/ora01g/oradata/db1
還原所有資料檔案
31. SQL> host copy d:/oradata/db1/hot/con1.ctl e:/ora01g/oradata/db1/con1.ctl
32. SQL> host copy d:/oradata/db1/hot/con1.ctl e:/ora01g/oradata/db1/con2.ctl
兩個控制檔案是一樣的,所以只需要備份一個。但現在必須還原出兩個
33. SQL> startup mount
34. SQL> recover database until time ‘2006-10-12 18:55:20’ using backup controlfile;
去備份目錄下檢視ARC歸檔檔案存在就回車。歸檔檔案不存在,就要CANCEL
控制檔案的路徑是初始化引數檔案指明的。
using backup controlfile是告訴recover命令要恢復控制檔案。
35. SQL> alter database open resetlogs;
36. SQL> select * from dept1;
dept1恢復了
37. SQL> select * from dept2;
before drop紀錄有,after drop紀錄沒有了
38. SQL> select * from v$log;
sequence number恢復到了1
39. SQL> alter system
恢復之後,要對資料庫做一次完全備份。不做完全備份,下一次資料庫再出故障,就無法恢復。因為現在的backup已經不能用了。
P99
當前重做日誌檔案丟失
已經備份的重做日誌檔案丟失沒有問題。
redo logo file的內容沒有歸檔的時候丟失了。recover到某個備份的redo logo file丟失,就用CANCEL。
當前是指資料庫現在正在使用的檔案。
對先前備份的所有資料檔案都要還原,否則沒法做RECOVER操作。
實驗二:
實驗目的:當前重做日誌檔案丟失後的恢復操作
1. 啟動ORACLE服務
2. sqlplus /nolog
3. SQL> connect sys/ora123@DB4 as sysdba
網路連線
4. SQL> startup
5. SQL> archive log list
確定資料庫在歸檔模式下
6. SQL> alter database begin backup;
必須先做一個備份
7. SQL> host copy e:/ora01g/oradata/db4/*.dbf d:/oradata/db4/hot
8. SQL> alter database end backup;
9. SQL> alter system archive log current;
current當前正在用的redo log file
active表示redo log file中紀錄的資訊,與資料庫緩衝區中對應的髒資料未寫入資料檔案。
inactive表示redo log file中紀錄的資訊,與資料庫緩衝區中對應的髒資料已經寫入資料檔案。
10. SQL> alter database backup controlfile to ‘d:/oradata/db4/hot/con1.ctl’ reuse;
備份控制檔案
11. SQL> select * from v$log;
12. SQL> shutdown immediate;
關閉資料庫之後,刪除ora01g/oradata/db4/路徑下的REDO01A和REDO01B
13. SQL> startup mount;
14. SQL> alter database clear logfile group 1;
REDO01A和REDO02B兩個redo log file被重建,但是空的。
重建status處於inactive狀態的redologfile。
15. SQL> alter database open;
16. SQL> select * from v$log;
17. SQL> shutdown immediate;
關閉資料庫之後,模擬故障,把當前使用的REDO03A和REDO03B刪掉。
18. SQL> startup mount;
19. SQL> alter database clear logfile group 3;
無法開啟
20. SQL> host copy d:/oradata/db4/hot/*.dbf e:/ora01g/oradata/db4
還原所有資料檔案
21. SQL> recover database until cancel;
不用控制檔案的情況下,recover一下
48號檔案是剛才沒有歸檔的
所以要恢復48號檔案的時候,要打CANCEL
因為當前的日誌檔案沒有歸檔,所以CANCEL
22. SQL> alter database open resetlogs;
23. SQL> select * from scott.dept;
24. SQL> select name from v$controlfile;
25. SQL> select name from v$datafile;
實驗三:
實驗目的:通過網路連線訪問ORACLE例項
建立scott資料庫
2. sqlplus /nolog
3. SQL> connect scott/tiger@DB4
顯示ERROR 訪問 PROFILE
4. SQL> select * from dept;
查詢失敗
5. SQL> select * from emp;
查詢失敗
6. SQL> connect system/ora123
7. SQL> @?/sqlplus/admin/pupbld
建立profile
8. SQL> connect scott/tiger@DB4
連線成功
9. SQL> exit
退出
實驗四:
實驗目的:通過環境變數預設連線
1. set ORACLE_SID_DB4
2. sqlplus /nolog
3. connect sys/ora123 as dba
實驗五:
實驗目的:配置ORACLE網路連線,配置分2部分,一部分是客戶端配置,一部分是服務端配置
oracle安裝目錄下,由network/admin下有listener.ora
network/admin/sample 路徑下有一個listener.ora的sample檔案,但這個檔案不用。
可以用老師提供的listener.ora的sample檔案,配置在服務端。
檔案中
LISTENER是listener的名稱。
ORACLE服務端,可以1個或多個listener.版本不同都可以。10g可以偵聽9i請求,反之亦然。
從oracle9i開始SID_LIST_LISTENER是可有可無的。有這段實現了靜態註冊。
上面是LISTNER1,那麼下面就是SID_LIST_LISTENER1
動態註冊,只要資料庫啟動之後,在1分鐘以後,資料庫會自動到LISTENER上去註冊。
TNSNAMES配置在ORACLE客戶端
oracle安裝目錄下network/admin路徑下的TNSNAMES檔案
可以參考老師提供的sample檔案
初始化引數檔案initdb1中和網路連線有關的兩行
service_names=’DB1’
instance_name=’DB1’
oracle9i之後版本一定要有這兩行,才能實現動態註冊。
另外,服務中一定要有TNSlistener服務啟動。
關掉這個服務以後,SQL> connect sys/ora123@DB4 as sysdba 會顯示no listener的錯誤
1. lsnrctl
2. lsnrctl>start
凡是靜態註冊,狀態都是UNKNOWN。因為靜態註冊,資料庫沒啟動,都可以註冊。關閉用命令LSNRCTL> stop
3. LSNRCTL> service
4. LSNRCTL> status
5. LSNRCTL> quit
oracle安裝目錄的network/admin目錄下還有一個sqlnet.ora檔案
檔案中
NAMES.DIRECTORY_PATH=(TNSNAMES)
為了告訴oracle 名字解析的方法
> tnsping DB1
此命令用來驗證是否能進行遠端連線。
實驗六:
實驗目的:遠端連線資料庫
1. sqlplus /no log
2. SQL> connect sys/ora123@DB1 as sysdba
顯示 an idle instance表示資料庫未開啟,要用startup命令開啟資料庫
3. SQL> startup
4. SQL> select * from v$log;
遠端資料庫檔案相關的就是三個檔案,一條命令。
listener.ora和TNSNAMES.ora檔案中的HOST不能填LOCALHOST或127.0.0.1,必須填IP地址或機器名,機器名不能帶減號或空格。
相關文章
- Oracle高階培訓 第6課 學習筆記Oracle筆記
- Oracle高階培訓 第7課 學習筆記Oracle筆記
- oracle學習筆記(十一) 高階查詢Oracle筆記
- oracle學習筆記(十七) PL/SQL高階應用Oracle筆記SQL
- web前端培訓分享node學習筆記Web前端筆記
- MySQL高階學習筆記(二)MySql筆記
- 好程式設計師web前端培訓學習筆記Vue學習筆記一程式設計師Web前端筆記Vue
- 好程式設計師web前端培訓學習筆記Vue學習筆記之二程式設計師Web前端筆記Vue
- Javascript高階程式設計 學習筆記JavaScript程式設計筆記
- js高階 物件導向 學習筆記JS物件筆記
- redis學習筆記(詳細)——高階篇Redis筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記函式進階程式設計師Web前端JavaScript筆記函式
- 中科信ANSYS高階疲勞分析技術培訓課程
- 網路安全高階培訓
- 好程式設計師web前端培訓分享JavaScript學習筆記之ES5程式設計師Web前端JavaScript筆記
- 學習Linux開發課程需要培訓嗎Linux
- SAP標準培訓課程C4C10學習筆記(三)第三單元筆記
- SAP標準培訓課程C4C10學習筆記(四)第四單元筆記
- SAP標準培訓課程C4C10學習筆記(二)第二單元筆記
- SAP標準培訓課程C4C10學習筆記(一)第一單元筆記
- 【讀書筆記】JavaScript高階程式設計(第3版)(第5-7章)筆記JavaScript程式設計
- oracle學習筆記《一》Oracle筆記
- 好程式設計師web前端培訓JavaScript學習筆記DOM程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享node學習筆記程式設計師Web前端筆記
- 好程式設計師web前端培訓JavaScript學習筆記--jQuery程式設計師Web前端JavaScript筆記jQuery
- lua課程學習筆記筆記
- 第15.16.17章學習筆記筆記
- 學習狂神Spring5_課堂筆記(更新中)Spring筆記
- web前端開發培訓有哪些學習階段Web前端
- 【Pandas學習筆記02】-資料處理高階用法筆記
- 好程式設計師web前端培訓分享HTMLCSS學習筆記BFC程式設計師Web前端HTMLCSS筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記Promise程式設計師Web前端JavaScript筆記Promise
- 好程式設計師web前端培訓分享JavaScript學習筆記cookie程式設計師Web前端JavaScript筆記Cookie
- 好程式設計師web前端培訓分享JavaScript學習筆記SASS程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享React學習筆記(三)程式設計師Web前端React筆記
- 好程式設計師web前端培訓分享React學習筆記(一)程式設計師Web前端React筆記
- 好程式設計師web前端培訓分享React學習筆記(二)程式設計師Web前端React筆記
- Swift進階學習筆記Swift筆記