Oracle的control文件
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),澄江企業(yè)網(wǎng)站建設(shè),澄江品牌網(wǎng)站建設(shè),網(wǎng)站定制,澄江網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,澄江網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
這里我們要實(shí)驗(yàn)的是數(shù)據(jù)庫在open的狀態(tài)下,破快控制文件,數(shù)據(jù)庫會(huì)不會(huì)down
查看controlfiles的路徑
SQL> show parameter control_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/app/oracle/oradata/orcl/control01.ctl, /u01/app/oracle/fast_recovery_area/orcl/control02.ctl
破壞控制文件
[oracle@togogo ~]$ cat /dev/null > /u01/app/oracle/oradata/orcl/control01.ctl
[oracle@togogo ~]$ cat /dev/null >/u01/app/oracle/fast_recovery_area/orcl/control02.ctl
驗(yàn)證數(shù)據(jù)庫的狀態(tài)
SQL> select * from dual;
D
-
X
####做檢查點(diǎn),切換redo log
SQL> alter system checkpoint;
System altered.
SQL> alter system switch logfile;
System altered.
SQL> alter system switch logfile;
System altered.
#### check alert log
Sat Feb 10 20:09:55 2018
Thread 1 cannot allocate new log, sequence 8
Private strand flush not complete
Current log# 1 seq# 7 mem# 0: /u01/app/oracle/oradata/orcl/redo01.log
Thread 1 advanced to log sequence 8 (LGWR switch)
Current log# 2 seq# 8 mem# 0: /u01/app/oracle/oradata/orcl/redo02.log
Sat Feb 10 20:10:19 2018
Thread 1 cannot allocate new log, sequence 9
Private strand flush not complete
Current log# 2 seq# 8 mem# 0: /u01/app/oracle/oradata/orcl/redo02.log
Thread 1 advanced to log sequence 9 (LGWR switch)
Current log# 3 seq# 9 mem# 0: /u01/app/oracle/oradata/orcl/redo03.log
Thread 1 cannot allocate new log, sequence 10
Checkpoint not complete
Current log# 3 seq# 9 mem# 0: /u01/app/oracle/oradata/orcl/redo03.log
Thread 1 cannot allocate new log, sequence 10
Private strand flush not complete
Current log# 3 seq# 9 mem# 0: /u01/app/oracle/oradata/orcl/redo03.log
Thread 1 advanced to log sequence 10 (LGWR switch)
Current log# 1 seq# 10 mem# 0: /u01/app/oracle/oradata/orcl/redo01.log
這是為什么呢?那是因?yàn)槠溥M(jìn)程持有的句柄并有釋放,如下
[oracle@togogo ~]$ ps -ef|grep ckpt|grep -v grep
oracle 8427 1 0 19:47 ? 00:00:00 ora_ckpt_orcl
[oracle@togogo ~]$ cd /proc/8427/fd
[oracle@togogo fd]$ ls -ltr |grep control
lrwx------ 1 oracle oinstall 64 Feb 10 20:09 257 -> /u01/app/oracle/fast_recovery_area/orcl/control02.ctl
lrwx------ 1 oracle oinstall 64 Feb 10 20:09 256 -> /u01/app/oracle/oradata/orcl/control01.ctl
#### session 1 trace跟蹤
這里說一個(gè)命令 strace
舉一個(gè)例子
strace -o output.txt -T -tt -e trace=all -p 28979
上面的含義是 跟蹤28979進(jìn)程的所有系統(tǒng)調(diào)用(-e trace=all),并統(tǒng)計(jì)系統(tǒng)調(diào)用的花費(fèi)時(shí)間,以及開始時(shí)間(并以可視化的時(shí)分秒格式顯示),最后將記錄結(jié)果存在output.txt文件里面
[oracle@togogo fd]$ strace -fr -o /tmp/8427.log -p 8427
Process 8427 attached - interrupt to quit
####觀察trace.log
8427 0.000156 gettimeofday({1518265363, 443228}, NULL) = 0
8427 0.000176 gettimeofday({1518265543, 106769}, NULL) = 0
8427 0.000077 gettimeofday({1518265543, 106845}, NULL) = 0
8427 0.000072 gettimeofday({1518265543, 106917}, NULL) = 0
8427 0.000077 pwrite64(256, "\25\302\0\0\3\0\0\0\0\0\0\0\0\0\1\4\312T\0\0\2\0\0\0\0\0\0\0Q\0\0\0"..., 16384, 49152) = 16384
8427 0.006462 gettimeofday({1518265543, 113463}, NULL) = 0
8427 0.000089 gettimeofday({1518265543, 113548}, NULL) = 0
8427 0.000080 pwrite64(257, "\25\302\0\0\3\0\0\0\0\0\0\0\0\0\1\4\312T\0\0\2\0\0\0\0\0\0\0Q\0\0\0"..., 16384, 49152) = 16384
8427 0.000734 gettimeofday({1518265543, 114364}, NULL) = 0
8427 0.000081 gettimeofday({1518265543, 114443}, NULL) = 0
8427 0.000081 gettimeofday({1518265543, 114525}, NULL) = 0
8427 0.000078 gettimeofday({1518265543, 114603}, NULL) = 0
8427 0.000211 gettimeofday({1518265543, 114816}, NULL) = 0
8427 0.000080 gettimeofday({1518265543, 114891}, NULL) = 0
8427 0.000081 pread64(256, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4r\t\0\0\0\0\0\0\0\0 \v\373M\21Y"..., 16384, 16384) = 16384
這的 256 257是表示的是文件描述符 FD file discription
16384是表示一個(gè)塊的大小
49152是表示偏移量
通過以上可以得到結(jié)論
1.進(jìn)程信息可以在/proc下看到,例如: /proc/8427/stat
2.對(duì)于linux,對(duì)于文件的讀寫,是通過調(diào)用函數(shù)read,pwrite64來實(shí)現(xiàn)的。
3.我們可以發(fā)現(xiàn)檢查點(diǎn)進(jìn)程ckpt 3s觸發(fā)一次的機(jī)制。
4.對(duì)于pwrite64的操作,是通過寫fd(256.257)2個(gè)文件來完成的,其中對(duì)應(yīng)的offset都是49152,且我們知道這3個(gè)被寫入的文件 (我們知道是controlfile)的block大小是16384.
分享標(biāo)題:oracle的控制文件深入理解(一)
當(dāng)前鏈接:http://www.chinadenli.net/article6/pejoig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、響應(yīng)式網(wǎng)站、全網(wǎng)營銷推廣、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站收錄、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)