open時檢查的2步是:檢查點計數器,開始和結束scn
這裡有4個scn參與了這兩步檢查,其中在控制檔案中有3個scn參與了,資料檔案中有1個scn參與了
1.system checkpoint scn(控制檔案中)
select checkpoint_change# from v$database;
從v$database中查到的checkpoint_change#就是system checkpoint scn,這個系統檢查點是用來判斷控制檔案是否是當前的
2.datafile checkpoint scn(控制檔案中)
select name,checkpoint_change# from v$datafile where name like '%users01%';
每個資料檔案在控制檔案中都有個檢查點scn,v$datafile的checkpoint_change#是datafile checkpoint scn,它是控制檔案的檢查點資訊,不是實際資料檔案的檢查點scn
3.stop scn(控制檔案中)
select name,last_change# from v$datafile where name like '%users01%';
last_change#是stop scn,它是用來控制崩潰恢復的,如果是讀寫狀態的online資料檔案,此值是null,也就是結束scn無窮大
4.start scn(資料檔案中)
select name,checkpoint_change# from v$datafile_header where name like '%users01%';
v$datafile_header的checkpoint_change#就是開始scn
資料庫開啟時的兩次比較
第1次比較(判斷介質恢復)
檢視控制檔案和資料檔案的checkpoint_change#是否相等,這裡用checkpoint_change#來判斷
select 'controlfile' "scn location",name,checkpoint_change# from v$datafile where lower(name) like '%users01%'
union
select 'file header',name,checkpoint_change# from v$datafile_header where lower(name) like '%users01%';
如果兩個scn不一致:
開始scn > datafile checkpoint scn,說明控制檔案是早期的
開始scn < datafile checkpoint scn,說明資料檔案是老的,需要介質恢復,在恢復最關鍵的是備份檔案的開始scn
第2次檢查(判斷崩潰恢復)
檢視控制檔案中的結束scn和資料檔案開始scn,不相等就需要進行崩潰恢復
select 'controlfile' "scn location",name,last_change#
from v$datafile where name like '%users01%'
union
select 'file header',name,checkpoint_change#
from v$datafile_header where name like '%users01%';
如果用的是老的控制檔案,在開啟的時候就需要借助system checkpoint scn
如果system checkpoint scn < 所有資料檔案開始scn:說明該控制檔案是備份控制,不是當前控制檔案
查詢老控制檔案的語句
select 'controlfile' "scn location",'system checkpoint' name,checkpoint_change#
from v$database
union
select 'file in controlfile',name,checkpoint_change#
from v$datafile where name like 'users01%'
union
select 'file header',name,checkpoint_change#
from v$datafile_header where name like '%users01%';
控制檔案中資料檔案的檢查點scn與開始scn來判斷介質恢復
結束scn與開始scn來判斷崩潰恢復
系統檢查點與開始scn來判斷是否備份控制檔案
QFileDialog開啟兩次的解決方法
最開始用語句qstring filepath qfiledialog getopenfilename 來實現開啟檔案,後來發現此種方法無法知道使用者點選的是 開啟 還是 取消 因此改為 qfiledialog filedialog new qfiledialog this if qfiledialo...
前端 傳送請求時,同時出現兩次請求
1事故情況 在前端ajax請求資料的時候,有時候會向後台一次性傳送兩次請求,這兩次請求第一次無返回資料,第二次才會返回正確資料。2事故原因 原來對於跨域,有兩種不同的請求型別。分別為簡單跨域請求和複雜跨域請求 帶預檢的跨域請求 3複雜跨域 非簡單請求的cors請求,會在正式通訊之前,增加一次http...
前端使用ajax時,自動請求了兩次
如下 之所以會傳送2次請求,那是因為我們使用了帶預檢 preflighted 的跨域請求。該請求會在傳送真實的請求之前傳送乙個型別為options的預檢請求。預檢請求會檢測伺服器是否支援我們的真實請求所需要的跨域資源,唯有資源滿足條件才會傳送真實的請求。比如我們在請求頭部增加了authorizati...