Oracle高階培訓 第6課 學習筆記
Oracle高階培訓 第6課 學習筆記
作者:JackYang (JackYang.sh@gmail.com)
日期:2006-10-18
本課包含多個實驗,目前還未通過上機驗證。
TSPITR(表空間基於時間點的恢復)
為了減少損失,推出TSPITR。比DBPITR高階。
設計思想:
假如一個生產資料庫的某個TABLE被誤刪除了。
先對原來的生產資料庫CLONE,然後再造一個輔助資料庫和原來的一模一樣。
CLONE出來的資料庫叫做輔助資料庫,原來的資料庫叫生產資料庫。對輔助資料庫做TSPITR。把輔助資料庫恢復到備份點。
然後把輔助資料庫包含被刪除表的表空間EXPORT(匯出)。把匯出的表空間,匯入生產資料庫。這樣生產資料庫中,其它的表空間不受影響,僅僅是受損表空間恢復。
在輔助資料庫上所作的恢復操作和恢復一個表的操作是一樣的。
TSPITR的具體步驟參考老師提供的檔案TSPITR.txt
(一)Prepare Product Database:
1. Checking self contained for recovery set
sql>execute dbms_tts.transport_set_check('DATA2',true);
sql>select * from transport_set_violation;
no rows selected
檢查表空間是否自包含。
對資料庫克隆只要包含系統表空間,臨時表空間和受損的表空間。其它表空間不用CLONE到輔助表空間中。
自包含的意思:受損表空間中的一個表有index。這個index被其它表空間使用,那麼那個表空間也要被CLONE。
2. simulate before fault:
sql> create table dept1 tablespace data1 as select * from scott.dept;
sql> create table dept2 tablespace data2 as select * from scott.dept;
sql> insert into dept1(deptno,dname) values(28,'before drop');
sql> insert into dept2(deptno,dname) values(28,'before drop');
sql> commit;
sql> alter system archive log current;
3. Backup recovery set and auxiliary set before TSPITR time
sql> alter database begin backup;
sql> host copy d:/ora101g/oradata/db1/*.dbf d:/backup/db1
sql> alter database end backup;
sql> alter system archive log current;
sql> alter database backup controlfile to
2 'D:/backup/db1/conl.ctl' reuse;
sql> alter system archive log current;
對資料庫進行備份
4. simulate after fault:
sql>select to_char(sysdate,'YYYY-MM-DD:HH24:MI:SS') from dual;
recoding the sysdate!
sql> truncate table dept2;
sql> insert into dept1(deptno,dname) values(38,'after drop');
sql> commit;
sql> alter system archive log current;
取出時間。
刪除表,模擬損壞的操作。
插入一行資料,以便驗證恢復結果是否成功。
(二)Prepare AUXiliary DataBase:
1. Prepare OS environment:
dos>mkdir F:/auxdb1
dos>mkdir F:/auxdb1/bdump
dos>mkdir F:/auxdb1/udump
dos>mkdir F:/auxdb1/arc
建立輔助資料庫
2. create oracle service for AUXiliary Database:
dos>oradim -new -sid AUXDB1 -intpwd ora123
建立服務
3. Prepare parameter file for AUXiliary database:
(dos>copy D:/ora101g/database/initDB1.ora
D:/ora101g/database/iniAUXDB1.ora
EDIT D:/ora101g/database/initAUXDB1.ora:)
老師提供檔案initAUXDB1.ora的內容如下:
db_unique_name='AUXDB1'
db_file_name_convert='D:/ora101g/oradata/db1','F:/auxdb1'
log_file_name_convert='D:/ora101g/oradata/db1','F:/auxdb1','D:/ora101g/oradata/db1','F:/auxdb1'
background_dump_dest='F:/auxdb1/bdump'
compatible='10.1.0.2.0'
control_files=('F:/auxdb1/con1.ctl','F:/auxdb1/con2.ctl')
core_dump_dest='F:/auxdb1/cdump'
db_name='DB1'
remote_login_passwordfile='EXCLUSIVE'
sessions=20
undo_management='AUTO'
undo_tablespace='undotbs'
user_dump_dest='F:/auxdb1/udump'
log_archive_dest_1='location=D:/backup/db1/arc'
log_archive_format='%s_%t_%r.arc'
service_names='AUXDB1'
instance_name='AUXDB1'
複製初始化引數檔案,並進行小修改
其中:
db_name不變
加db_uniqure_name
db_file_name和log_file_name_convert 把原來DB1的路徑轉化為輔助資料庫的路徑。
log_archive_dest_1不變,把克隆的資料庫恢復時,要用到歸檔日誌。輔助資料庫沒有歸檔日誌,生產資料庫有歸檔日誌,所以這個路徑不改變。
改service_name和instance_name
4. RESTORE Recovery SET and auxiliary SET
sql>host copy D:/backup/db1/*.dbf F:/auxdb1
sql>host copy D:/backup/db1/con1.ctl F:/auxdb1/con1.ctl
sql>host copy D:/backup/db1/con1.ctl F:/auxdb1/con2.ctl
把原來生產資料庫的備份檔案,copy到輔助資料庫裡面去。
5. Start AUX DB:
sql>connect sys/ora123@AUXDB1 as sysdba
sql>startup nomount
sql> alter database mount clone database;
sql> alter database datafile 'F:/auxdb1/SYS01.DBF' online;
sql> alter database datafile 'F:/auxdb1/UNDOTBS.DBF' online;
sql> alter database datafile 'F:/auxdb1/data2.dbf' online;
sql> recover database until time '2007-04-01 17:28:43' using backup controlfile;
sql> alter database open resetlogs;
check the table dept2 exist:
sql> select * from dept2;
sql> alter tablespace temp add tempfile 'F:/auxdb1/temp.dbf' size 5M reuse;
啟動輔助資料庫
進行CLONE操作
using backup controlfile是指使用備份的控制檔案。
克隆的時候不能修改控制檔案,執行recover的時候能夠修改控制檔案,因為recover能夠利用redo log
(三) EXPort and IMPort Recovery Set
1. EXPort Recovery Set
dos>exp 'sys/ora123 as sysdba' point_in_time_recover=y tablespaces=data2
file=F:/auxdb1/data2.dmp
Export terminated successfully without warnings.
用sysdba登入,用exp命令匯出指定的表空間。
2. IMPort Recovery Set
sql>connect sys/ora123@DB1 as sysdba
sql> alter tablespace data2 offline;
dos>copy F:/auxdb1/data2.dbf D:/ora101g/oradata/db1
dos>imp 'sys/ora123@DB1 as sysdba' point_in_time_recover=y datafiles=
D:/ora101g/oradata/db1/data2.dbf file=F:/auxdb1/data2.dmp
Import terminated successfully without warnings.
連線到生產資料庫上
使生產資料庫中損壞的表空間offline。
3. Check the TSPITR result:
sql> alter tablespace data2 online;
sql>select * from dept2;
sql>select * from dept1;
檢查恢復的結果
被刪除的表要恢復。
違背刪除的表,記錄都要在
4. delete AUXiliary DB
刪除輔助資料庫
實驗一:
實驗目的:實踐TSPITR
1. SQL> select * from dept1;
2. SQL> select * from dept2;
現在資料庫中有兩個表dept1和dept2。
故障是表空間data1中的dept1被誤刪除,恢復表空間dept1,且不影響到表空間data2中的dept2
3. SQL> alter database begin backup;
4. SQL> host copy e:/ora01g/oradata/db1/*.dbf e:/backup/db1/hot
5. SQL> alter database end backup;
6. SQL> alter database backup controlfile to ‘E:/backup/db1/hot/con1.ctl’ reuse;
7. SQL> alter system archive log current;
備份好之後,立刻對資料庫做一次手工歸檔。
8. SQL> select to_char(sysdate, ‘YYYY-MM-DD HH24:MI:SS’) from dual;
取一個用於恢復的時間
9. SQL> drop table dept1;
刪除表,模擬故障
10. SQL> select * from dept1;
查詢失敗
11. SQL> insert into dept2(deptno,dname) values (99,’after 1908’);
12. SQL> insert into dept2(deptno,dname) values(66,’after 1908’);
插入兩條資料,用於驗證恢復的結果是否成功。
13. 另外開啟一個終端視窗來CLONE資料庫
oradim –new –sid AUXDB1 –intpwd ora123
建立輔助資料庫的服務
14. COPY過來初始化引數檔案,並進行修改。
修改了:
db_file_name_convert
log_file_name_convert
background_dump_dest
user_dump_dest
control_files
core_dump_dest
service_name
instance_name
然後利用初始化引數檔案啟動資料庫
15. copy e:/backup/db1/hot/*.dbf e:/auxdb1
e:/auxdb1中的data2.dbf是不需要COPY的
16. copy e:/backup/db1/hot/con1.ctl e:/auxdb1
17. copy e:/backup/db1/hot/con1.ctl e:/auxdb1/con2.ctl
copy控制檔案
18. sqlplus /nolog
19. SQL> connect sys/ora123@AUXDB1 as sysdba
20. SQL> startup nomount
21. SQL> alter database mount clone database;
22. SQL> alter database datafile ‘e:/auxdb1/system01.dbf’ online;
23. SQL> alter database datafile ‘e:/auxdb1/undotbs.dbf’ online;
24. SQL> alter database datafile ‘e:/auxdb1/sysaux01.dbf’ online;
25. SQL> alter database datafile ‘e:/auxdb1/data1.dbf’ online;
26. SQL> recover database until time ‘2006-10-17 19:08:05’ using backup controlfile;
恢復操作
沒成功,把生產資料庫再歸檔一次。
回到生產資料庫的終端視窗進行下面這個操作
SQL> alter system archive log current;
27. SQL> alter database open resetlogs;
28. SQL> select * from dept1;
dept1表被恢復出來了,但目前實在輔助資料庫中,接著要用exp命令匯出。
29. SQL> host exp ‘sys/ora123@AUXDB1 as sysdba’ point_in_time_recover=Y tablespaces=data1 file=data1.dmp
最後看到螢幕上顯示’Export terminated successfully without warnings’這句話,才表示匯出操作成功。
省略了檢查自包含的步驟。
30. 回到生產資料庫的終端視窗
31. SQL> alter tablespace data1 offline;
32. SQL> host copy e:/auxdb1/data1.dbf e:/ora01g/oradata/db1
33. SQL> host imp ‘sys/ora123@db1 as sysdba’ point_in_time_recover=Y datafiles=’e:/ora01g/oradata/db1/data1.dbf’ file=data1.dmp
最後看到螢幕上顯示’Import terminated successfully without warnings.’這句話,才表示匯入操作成功。
34. SQL> alter tablespace data1 online;
35. SQL> select * from dept1;
36. SQL> select * from dept2;
前面插入的兩條記錄都在,99 after 1908和66 after 1908
以下出現的頁碼與《Oracle9i 資料庫管理基礎II Ed 1.1 Vol.2.pdf》對應
指南下載地址:
P121
配置ORACLE伺服器的共享模式
之前用的都是ORACLE伺服器的專用模式
在專用伺服器模式下,每個使用者程式對應一個伺服器程式。浪費資源。
在共享伺服器模式下,一個伺服器程式可以同時為多個使用者服務。
P125
除了有共享服務程式(Snnn),一定還要有排程程式。
P127
ORACLE共享伺服器的優點
排程程式進行排程,來實現負載均衡
P128
TNSNAME.ORA檔案的內容
有SERVER=DEDICATED,採用專用伺服器模式。如果沒有這個引數,ORACLE會盡量採用共享伺服器模式
使用共享伺服器模式,不能發shutdown和startup命令。發這兩個命令必須用專用伺服器模式建立連線。
P129
共享伺服器模式下,不能使用SET ORACLE_SID的方式來連線資料庫,而必須使用網路連線方式,因為要先連線到ORACLE的偵聽器上。
P130
這圖非常重要。
連線步驟
使用者發出請求,請求送到監聽程式。監聽程式把請求發到三個排程程式中,最空的一個排程程式。所有的排程程式共享一個請求佇列(一個例項只有一個請求佇列)。
共享伺服器程式一有空,就去請求佇列看是否有請求,有就拿來提供服務。
每個排程程式有它自己的響應佇列。響應佇列和排程程式一一對應。
ORACLE的排程程式會程式到自己的響應佇列中去看,有沒有從共享伺服器程式返回的應答,有就取出來,返回使用者程式 。
整個過程中有個看不見的幽靈,叫虛擬電路circuit。
共享伺服器模式下,每個使用者程式和虛擬電路(本質是記憶體中的一小塊空間)一一對應。虛擬電路的資料和會話的數目相等。
一但使用者程式起來和排程程式建立連線,那麼之後的請求都是這個排程程式進行處理,而不會換成別的排程程式。不過,共享服務程式處理請求佇列中的請求,是隨機的。
每個排程程式最多可以為1024個使用者服務,一般一個排程程式為200個使用者服務。
P132
共享伺服器模式下,共享池的大小要擴大些
P133
配置共享伺服器要用到的引數。
DISPATCHERS,表示在例程啟動時,要啟動多少個排程程式。
SHARED_SERVERS。表示在例程啟動時,啟動多少個共享服務程式。預設為0,表示只能執行專用伺服器模式。
MAX_DISPATCHERS,系統最大啟動的排程程式數。和OS有關的引數
MAX_SHARED_SERVERS,系統最大啟動的共享服務程式數
CIRCUITS,虛擬電路。
SHARED_SERVER_SESSIONS,單指共享的會話數,這個值等於SESSIONS減5,這5個留給專用伺服器。用於執行startup和shutdown等命令。
P134
通過不同的協議連線,每個協議必須都建立DISPATCHER
P136
設定這個引數,可以動態的增加排程程式
P138
系統啟動的時候,建立的服務程式數目。
P141
CIRCUITS的大小,影響到SGA的大小
P142
把SESSIONS減5,留給專用伺服器
P143
LARGE_POOL_SIZE
SGA空間要擴大
預設情況下,等於0,相關資訊都放到SHARED_POOL裡面。設定了LARGE_POOL_SIZE,相關資訊就放在LARGE_POOL中。
P145
listener要偵聽排程程式,也要到listener中去註冊。這個是自動註冊(DB startup後的60秒內進行註冊)。可用lsnrctl services檢視是否註冊成功。
P147
共享伺服器模式下,有一個請求佇列和多個響應佇列。
檢視佇列情況的動態檢視
在OLAP裡面,使用者數多,操作時間比較短的情況下,用共享伺服器模式比較多。
在DSS資料倉儲裡面,用專用伺服器模式比較多
實驗二:
實驗目的:配置共享伺服器模式
ORAcle V9.2來進行的實驗。
初始化引數檔案initDB91.ora中
沒有下面這些引數,資料庫起來後,只能使用專用伺服器模式
shared_serviers
max_shared_servers
dispatchers
dispatchers
dispatchers
max_dispathers
設定三個dispather,是因為它們各對應不同的協議。
1. sqlplus /nolog
2. SQL> connect sys/ora123@DB91D as sysdba
3. SQL> startup
4. SQL> host
5. lsnrctl
6. LSNRCTL> service
資料庫啟動了,這個時候就能看到DISPATCHERS都啟動了。說明DISPATCHERS是自動註冊的。
檢查資料庫中的DISPATCHER是否啟動。
並且能看到每個DISPATCHER當前各建立了多少連線。
7. LSNRCTL> exit
8. exit
9. SQL> show parameter dispatcher
檢視在引數中設定的dispatcher
10. SQL> select * from v$queue;
00是請求佇列,後面三個是響應佇列。
TATALQ表示曾經處理過的請求數。
11. SQL> select * from v$circuit;
資訊比較多
12. SQL> show parameter circuit
circuits的值是38
13. SQL> show parameter sessions
sessions的值是38
shared_server_sessions的值是33
14. SQL> get perf601
看服務程式的忙碌程度,使用/進行執行
具體所執行的SQL語句,在老師提供的perf601.sql檔案中。
15. SQL> alter system set shared_servers=4;
強行設定共享服務程式數為4
16. SQL> desc v$shared_server
17. SQL> select name,status from v$shared_server;
列出4個共享服務程式
18. SQL> alter system set shared_servers=1;
19. SQL> desc v$dispatcher
20. SQL> column network format a15
21. SQL> column status format a5
22. SQL> select name,network,status from v$dispatcher;
network/admin/TNSNAMES檔案中
server=shared 共享伺服器模式
server=dedicated 專用伺服器模式
sysdba進去用DB91D
SQL> connect sys/ora123@DB91D as sysdba
保證是以專用伺服器模式進去,這樣就能shutdown了
老師提供的db10doc目錄下重要檔案有:
initAUXDB1.ora
TSPITR.txt
standby.txt 華騰給軌道交通系統做的容災備份資料庫。
儲存SQL語句的方法
SQL>save perfcache.sql
儲存在當前目錄下
調出已儲存的SQL語句
SQL> get perf602
SQL> /
/是執行
相關文章
- Oracle高階培訓 第5課 學習筆記Oracle筆記
- Oracle高階培訓 第7課 學習筆記Oracle筆記
- oracle學習筆記(十一) 高階查詢Oracle筆記
- oracle學習筆記(十七) PL/SQL高階應用Oracle筆記SQL
- web前端培訓分享node學習筆記Web前端筆記
- Oracle學習筆記(6)——函式Oracle筆記函式
- MySQL高階學習筆記(二)MySql筆記
- 好程式設計師web前端培訓學習筆記Vue學習筆記一程式設計師Web前端筆記Vue
- 好程式設計師web前端培訓學習筆記Vue學習筆記之二程式設計師Web前端筆記Vue
- Javascript高階程式設計 學習筆記JavaScript程式設計筆記
- js高階 物件導向 學習筆記JS物件筆記
- redis學習筆記(詳細)——高階篇Redis筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記函式進階程式設計師Web前端JavaScript筆記函式
- 中科信ANSYS高階疲勞分析技術培訓課程
- 網路安全高階培訓
- 學習Linux開發課程需要培訓嗎Linux
- SAP標準培訓課程C4C10學習筆記(三)第三單元筆記
- SAP標準培訓課程C4C10學習筆記(四)第四單元筆記
- SAP標準培訓課程C4C10學習筆記(二)第二單元筆記
- SAP標準培訓課程C4C10學習筆記(一)第一單元筆記
- oracle學習筆記《一》Oracle筆記
- P6學習筆記(Oracle Primavera P6 R17)筆記Oracle
- 好程式設計師web前端培訓JavaScript學習筆記DOM程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享node學習筆記程式設計師Web前端筆記
- 好程式設計師web前端培訓JavaScript學習筆記--jQuery程式設計師Web前端JavaScript筆記jQuery
- 林軒田機器學習基石課程學習筆記6 — Theory of Generalization機器學習筆記
- lua課程學習筆記筆記
- java學習筆記6Java筆記
- vue學習筆記6Vue筆記
- 第15.16.17章學習筆記筆記
- web前端開發培訓有哪些學習階段Web前端
- 【Pandas學習筆記02】-資料處理高階用法筆記
- 林軒田機器學習技法課程學習筆記6 — Support Vector Regression機器學習筆記
- 好程式設計師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筆記