日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle 控制文件管理

發(fā)布時(shí)間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 控制文件管理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

  控制文件是一個(gè)很小的二進(jìn)制文件(10MB左右),含有數(shù)據(jù)庫(kù)結(jié)構(gòu)信息,包括數(shù)據(jù)文件和日志文件信息。控制文件在數(shù)據(jù)庫(kù)創(chuàng)建時(shí)被自動(dòng)創(chuàng)建,并在數(shù)據(jù)庫(kù)發(fā)生物理變數(shù)時(shí)更新。控制文件被不斷更新,在任何時(shí)候都要保證控制文件可用,否則數(shù)據(jù)庫(kù)將無法啟動(dòng)或者使用。

?

  1 控制文件包含的主要信息如下:

  數(shù)據(jù)庫(kù)名稱和SID標(biāo)識(shí);

  數(shù)據(jù)文件和日志文件列表;

  數(shù)據(jù)庫(kù)創(chuàng)建的時(shí)間戳;

  表空間信息;

  當(dāng)前重做日志文件序列號(hào);

  歸檔日志信息;

  檢查點(diǎn)信息;

  回滾段的起始與結(jié)束;

  備份數(shù)據(jù)文件信息;

?

  控制文件包含了如此多的重要信息,需要保護(hù)并及時(shí)備份控制文件,以便它被損壞或者磁盤介質(zhì)損貨時(shí),能夠及時(shí)恢復(fù)。目前保護(hù)控制文件的主要策略為多路復(fù)用控制文件與備份控制文件。

?

  2 查看目前系統(tǒng)的控制文件信息,主要是查看相關(guān)的字典視圖

  v$controlfile  包含所有控制文件的名稱和狀態(tài)信息

  

?

  v$controlfile_record_section 包含控制文件中各個(gè)記錄文檔段的信息

  

  

  v$parameter 包含了系統(tǒng)所有初始化參數(shù),可以查詢到control_files的信息

  ?

?

  3 控制文件的多路復(fù)用

  為了提高數(shù)據(jù)庫(kù)的安全性,至少要為數(shù)據(jù)庫(kù)建立兩個(gè)控制文件,而且這兩個(gè)文件最好分別放在不同的磁盤中,這樣可以避免產(chǎn)生由于某個(gè)磁盤故障而無法啟動(dòng)數(shù)據(jù)庫(kù)的危險(xiǎn),該管理策略稱為多路復(fù)用控制文件。當(dāng)多路復(fù)用控制文件某個(gè)磁盤發(fā)生故障導(dǎo)致其包含的控制文件損壞,數(shù)據(jù)庫(kù)將被關(guān)閉或者發(fā)生異常,此時(shí)可以用另一磁盤中保存的控制文件來恢復(fù)被損壞的控制位文件,然后再重啟數(shù)據(jù)庫(kù),達(dá)到保護(hù)控制文件的目的。

  數(shù)據(jù)庫(kù)建立時(shí),一般會(huì)默認(rèn)創(chuàng)建兩個(gè)控制文件,我們可以手動(dòng)的再創(chuàng)建多個(gè)控制文件且不要與默認(rèn)的放在同一個(gè)磁盤中,首先我們可以修改control_files參數(shù)來增加控制文件。

  3.1 更改CONTROL_FILES

alter system set control_files = '/usr/oracle/app/oradata/orcl/control01.ctl','/usr/oracle/app/flash_recovery_area/orcl/control02.ctl','/home/oracle/ControlFiles/control03.ctl','/home/oracle/ControlFiles/control04.ctl'
scope=spfile;

  ?

?

  上面的代碼中,前3個(gè)控制文件已經(jīng)創(chuàng)建好,第4個(gè)文件是用戶將要手動(dòng)添加的,但是目前還沒有創(chuàng)建該文件,創(chuàng)建該文件前需要關(guān)閉數(shù)據(jù)庫(kù),然后將第1個(gè)復(fù)制過去即可;

?

  3.2 復(fù)制控制文件

  其實(shí)添加控制文件就是將之前可用的控制文件復(fù)制過去,重命名即可,首先我們需要關(guān)閉數(shù)據(jù)庫(kù),然后將/usr/oracle/app/oradata/orcl/control01.ctl 復(fù)制為/home/oracle/ControlFiles/control04.ctl即可

  

  

  復(fù)制完之后,再重啟數(shù)據(jù)庫(kù),重啟之后查詢v$control_files;

  

?

  到此我們控制文件多路復(fù)用的操作完成,過程中需要注意的就是,必須先關(guān)閉數(shù)據(jù)庫(kù)才能把可用的控制文件復(fù)制過去,如果沒有關(guān)閉就復(fù)制過去,在重啟的時(shí)候會(huì)報(bào)錯(cuò)原控制文件與新增的不一致的錯(cuò)誤: 

ORA-00214: control file '/usr/oracle/app/oradata/orcl/control01.ctl' version
7136 inconsistent with file '/home/oracle/ControlFiles/control04.ctl' version
7133

?

  4 創(chuàng)建控制文件

  當(dāng)數(shù)據(jù)庫(kù)所有的控制文件都丟失或者損壞,唯一補(bǔ)救方法就是手動(dòng)創(chuàng)建一個(gè)新的控制文件。創(chuàng)建的語法如下:

  create controlfile

  reuse database db_name

  logfile

  group 1 redofiles_list1

  group 2 redofiles_list2

  group 3 redofiles_list3

  ...

  datafile

  datafile1

  datafile2

  datafile3

  ...

  maxlogfiles max_value1

  maxlogmembers max_value2

  maxinstances max_value3

  maxdatafiles max_value4

  noresetlogs|resetlogs

  archivelog|noarchivelog;

?

  db_name: 數(shù)據(jù)名稱,通常是orcl

  redofiles_list: 重做日志組中的重做日志文件列表;

  datafile1: 數(shù)據(jù)文件路徑;

  max_value1: 最大的重做日志文件數(shù),這是一個(gè)永久性參數(shù),一旦設(shè)置就不能修改,如果想要修改只有重建控制文件;

?

  4.1 創(chuàng)建過程

  創(chuàng)建之前要先對(duì)數(shù)據(jù)文件與重做日志文件備份,因?yàn)閯?chuàng)建過程中可能會(huì)引起某些異常導(dǎo)致數(shù)據(jù)文件與日志文件損壞。

  查看日志文件,v$logfile

  

  查看數(shù)據(jù)文件

  

?

  根據(jù)上面的查詢可以得到文件所在的路勁,然后備份日志文件與數(shù)據(jù)文件,備份之前一定先關(guān)閉數(shù)據(jù)庫(kù),不然會(huì)卡死或者出現(xiàn)異常情況。進(jìn)入到數(shù)據(jù)文件與日志文件所在目錄,測(cè)試系統(tǒng)正好這兩個(gè)文件都在一個(gè)文件夾下,直接使用 cp 命令把它們備份到其他磁盤的文件夾下即可:

  

?

  備份完之后,將數(shù)據(jù)啟動(dòng)到nomount狀態(tài),即啟動(dòng)但不加載數(shù)據(jù)庫(kù),因?yàn)榧虞d數(shù)據(jù)庫(kù)時(shí)實(shí)例將會(huì)打開控制文件,無法達(dá)到創(chuàng)建新控制文件的效果。

  數(shù)據(jù)庫(kù)啟動(dòng)到nomount狀態(tài)之后,執(zhí)行create controlfile 命令

create controlfile
reuse database "orcl"
logfile
group 1 '/usr/oracle/app/oradata/orcl/redo01.log',
group 2 '/usr/oracle/app/oradata/orcl/redo02.log',
group 3 '/usr/oracle/app/oradata/orcl/redo03.log'
datafile
'/usr/oracle/app/oradata/orcl/system01.dbf',
'/usr/oracle/app/oradata/orcl/sysaux01.dbf',
'/usr/oracle/app/oradata/orcl/undotbs01.dbf',
'/usr/oracle/app/oradata/orcl/users01.dbf',
'/usr/oracle/app/oradata/orcl/CTRR_DATA.dbf'

maxlogfiles 50
maxlogmembers 4
maxinstances 6
maxdatafiles 200
noresetlogs
noarchivelog;

?

  執(zhí)行創(chuàng)建命令之后,新的控制文件還是被存放在原來的文件下,可以嘗試備份然后將之前的控制文件刪掉,會(huì)發(fā)現(xiàn)原來的文件下名字一樣的控制文件又出現(xiàn)了,編輯SPFILE 文件中的初始化參數(shù) CONTROL_FILES,使其指向新建的控制文件:

alter system set control_files = '/usr/oracle/app/oradata/orcl/control01.ctl','/usr/oracle/app/flash_recovery_area/orcl/control02.ctl'
scope=spfile;

?

  5 備份恢復(fù)控制文件

  5.1 備份控制文件

  直接將當(dāng)前可用的任意一個(gè)多路復(fù)用下的控制文件復(fù)制到你想要備份的路勁即可;

  我們可以將控制文件備份成一個(gè)可讀的數(shù)據(jù)文件,然后就可以查看里面的具體內(nèi)容;

  alter database backup controlfile to trace; --備份成可讀的文本文件,此方法備份之后,可以查看控制文件的具體內(nèi)容,首先使用語句:

  select tracefile from v$process where addr in (select paddr from v$session where sid in (select sid from v$mystat));?可以獲取到備份之后的文件路勁與名稱:

  

  

  得到路徑之后,我們可以在linux去查看備份文件的具體內(nèi)容:

  

  

  將其拷貝出來,主要內(nèi)容就是創(chuàng)建控制文件的語法:

  

?

  

?

  5.2 恢復(fù)控制文件

  當(dāng)控制文件所在磁盤損壞,只需要在初始化文件中重新設(shè)置control_files參數(shù)的值,使它指向備份的控制文件,就可以重啟數(shù)據(jù)庫(kù),但是要保證control_files下對(duì)應(yīng)的路勁下所有的控制文件版本一致才行,不然會(huì)報(bào)錯(cuò)誤;

  如果是控制文件本身損壞,我們可以將備份文件復(fù)制到對(duì)應(yīng)的目錄下,然后重啟數(shù)據(jù)庫(kù)即可。

  

?

?

?

?

?

  

?

轉(zhuǎn)載于:https://www.cnblogs.com/Latiny/p/6703141.html

總結(jié)

以上是生活随笔為你收集整理的Oracle 控制文件管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。