控制文件初探

1、個數和位置的管理(因為控制文件時在參數文件定義的,所以可以直接修改參數文件)

SPfile修改的步驟:
a) 修改SPFILE參數control_files
b) 一致性關閉數據庫
c) 增加或減少控制文件
d) 啟動數據庫使用SPFILE
e) 驗證結果

實驗
減少控制文件:
a)SQL> show parameter control_f;
b)Sql>alter system set control_files='/oracle/oradata/oracleto/control01.ctl' scope=spfile;
c)Shutdown immediate
d)Startup? 完成

增加控制文件:
a)sql>show parameter control_f;? 確認控制文件的路徑等相關信息。
b)Sql>alter system set? control_files='/oracle/oradata/oracleto/control01.ctl' ,'/oracle/oradata/oracleto/control02.ctl','/oracle/oradata/oracleto/control03.ctl' scope=spfile;
c)Shutdown immediate;
d)Startup 此時會報版本號錯誤,那么需要從高版本的拷貝至低版本。
ORA-00214: control file '/oracle/oradata/oracleto/control01.ctl' version 771 inconsistent with file '/oracle/oradata/oracleto/control02.ctl' version 762
e)sql>show parameter control_f;? 確認控制文件的路徑等相關信息。
f)SQL> ho cp /oracle/oradata/oracleto/control01.ctl /oracle/oradata/oracleto/control02.ctl
g)SQL> ho cp /oracle/oradata/oracleto/control01.ctl /oracle/oradata/oracleto/control03.ctl
h)Alter database mount;? 檢查是否解決問題。
i)Startup?? 完成。


Pfile修改的步驟:
a) 一致性關閉數據庫
b) 修改Pfile參數
c) 增加或減少控制文件
d) 啟動數據庫使用PFILE
e) 驗證結果


2、狀態管理
目的是看數據庫使用的控制文件與參數定義控制文件是否吻合。
文件。每到數據庫啟動到mount都讀控制文件并把數據庫的結構對應到實際的文件上去才能啟動。
存在狀態:
a) 找位置和個數?? show parameter control_f 查處的結果在通過操作系統來對比
Ho ll -h /路徑?
b) 需要查看磁盤空間使用情況? sql>ho df -H
c) 查看文件的大小? sql>ho ls -lh /oracle/oradata/ora.ctl?
控制文件盡量控制在100M以內,如果超過了,那么需要盡快采取措施,一般情況下需要重建控制文件。

3、控制文件備份
a) Sql>alter database backup controlfile to '/oracle/bakcup/control20120522.bak';??? 歸檔模式下這樣備份才有作用 ,當控制文件出現問題是,可以直接在操作系統下拷貝過去就行。
b) Sql>alter database backup controlfile to trace as '/oracle/....txt'? 這樣就得到一個重建控制文件的腳本。
c) 通過rman備份? 也需要歸檔模式才能使用rman
Rman>backup current controlfile;? 自動就在閃回目錄下。
或者rman>backup database include current controlfile; 備份數據庫的同時也備份控制文件

4、重建控制文件原則
恢復管理:
如果控制文件丟失和不一致了,需要DBA處理,首先確認控制文件交易號碼那個比較新那個比較舊。復制新的給舊的或者直接更改參數文件control_file使用新的

5、幾種丟失情況的解決:
確認數據庫是否處于歸檔模式,不是歸檔,則先全備,然后建立新的控制文件即可。
解決辦法:
a)、確認數據文件,默認的數據文件保存在$ORACLE_BASE/oradata//xxxx.dbf 文件。
b)查看告警日志? vi $ORACLE_BASE/admin/$ORACLE_SID/bdump/alter_orcl.log
c)建立控制文件(有些相關的文件可以通過ALTER日志查詢到相關的數據,數據文件,日志文件個數、路徑、大小很重要,一定要搞清楚)
CREATE CONTROLFILE REUSE DATABASE "ORACLETO" NORESETLOGS? NOARCHIVELOG
??? MAXLOGFILES 16
??? MAXLOGMEMBERS 3
??? MAXDATAFILES 100
??? MAXINSTANCES 8
??? MAXLOGHISTORY 292
LOGFILE
? GROUP 1 '/oracle/oradata/oracleto/redo01.log'? SIZE 50M,
? GROUP 2 '/oracle/oradata/oracleto/redo02.log'? SIZE 50M,
? GROUP 3 '/oracle/oradata/oracleto/redo03.log'? SIZE 50M
-- STANDBY LOGFILE
DATAFILE
? '/oracle/oradata/oracleto/system01.dbf',
? '/oracle/oradata/oracleto/undotbs01.dbf',
? '/oracle/oradata/oracleto/sysaux01.dbf',
? '/oracle/oradata/oracleto/users01.dbf',
? '/oracle/oradata/oracleto/example01.dbf'
CHARACTER SET WE8ISO8859P1

d)執行這個sql語句? 控制文件就會建立
e)Sql>alter database open;
這里會提示數據庫中有一個文件需要恢復
f)Sql>recover database;? 一定要執行這條語句 ,如果需要恢復的內容能在日志文件能找到,那么就可以恢復,如果不能恢復,那么就需要你加隱藏參數讓數據庫不進行一致性認證。(下面的情況就用到了)
g)Sql>alter databas open;這樣就可以打開數據了。


歸檔和日志都在;先全備,然后再使用備份的控制文件恢復即可
a) 在所有操作之前要做全備,很重要
b) 同樣查看警告日志 vi $ORACLE_BASE/admin/$ORACLE_SID/bdump/alter_orcl.log,確認問題所在
c) 確認控制文件時候在,show parameter control_f 查路徑,ls -l 查看
d) 確定不在之后,那么就可以從備份文件恢復
e)
SQL> show parameter control_
NAME???????????????????????????????? TYPE?????????????????? VALUE
------------------------------------ ---------------------- ------------------------------
control_file_record_keep_time??????? integer??????????????? 7
control_files??????????????????????? string???????????????? /oracle/oradata/oracleto/contr
??????????????????????????????????????????????????????????? ol01.ctl, /oracle/oradata/orac
???????????????????????????????????????????????????? leto/control02.ctl, /oracle/or
????????????????????????????????????????????????????????? adata/oracleto/control03.ctl

SQL> ho cp /oracle/controlbak.ctl /oracle/oradata/oracleto/control01.ctl
SQL> ho cp /oracle/controlbak.ctl /oracle/oradata/oracleto/control02.ctl
SQL> ho cp /oracle/controlbak.ctl /oracle/oradata/oracleto/control03.ctl
SQL> ho ls /oracle/oradata/oracleto/
SQL> alter database mount;
Database altered.
SQL> alter database open;????????????????? ------------恢復失敗
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open?
SQL> alter database recover database using backup controlfile;? 用備份的控制文件恢復
alter database recover database using backup controlfile
*
ERROR at line 1:
ORA-00279: change 792378 generated at 05/24/2012 07:32:41 needed for thread 1
ORA-00289: suggestion : /oracle/flash_recovery_area/ORACLETONY/archivelog/2012_05_26/o1_mf_1_13_%u_.arc
ORA-00280: change 792378 for thread 1 is in sequence #13

SQL> shutdwon immediate??
SQL> startup
ORACLE?instance started.
Total System Global Area? 167772160 bytes
Fixed Size????????????????? 1218316 bytes
Variable Size???????????? 130025716 bytes
Database Buffers?????????? 33554432 bytes
Redo Buffers??????????????? 2973696 bytes
Database mounted.?? -----------仍然不能恢復
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> shutdonwn immediate
在重做上面一步:
SQL> alter database recover database using backup controlfile; 不行
SQL> alter database recover database using backup controlfile until change 792378;??????????????????????????? ---------------也不行
alter database recover database using backup controlfile until change 792378
*
ERROR at line 1:
ORA-00275: media recovery has already been started
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01156: recovery in progress may need access to files

SQL> shutdown immediate;
SQL> startup
SQL> alter database recover database using backup controlfile until change 792378;
SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile; 使用隱藏參數,不讓數據庫進行一致性驗證。
SQL> startup force
SQL> alter database open resetlogs;? 可以啟動了
Sql>startup
最后要干掉隱藏參數,不然以后系統會出現ORA-600的內部錯誤。
Sql>show parameter _allow
Sql>alter database reset "_allow_resetlogs_corruption" scope=spfile sid='*';
歸檔模式下使用正常的方式來恢復。上面那種方法錯誤的未執行alter database open resetlogs, 而先執行 alter database recover database using backup controlfile,最后還使用了不該用的隱藏參數。

所以建議使用下面的辦法:

第一種方法
SQL> startup

ORACLE instance started.
Total System Global Area? 167772160 bytes
Fixed Size????????????????? 1218316 bytes
Variable Size???????????? 125831412 bytes
Database Buffers?????????? 37748736 bytes
Redo Buffers??????????????? 2973696 bytes
ORA-00205: error in identifying control file, check alert log for more info???? 查看告警日志。Vi $ORACLE_BASE/admin/alter.....log
SQL> shwo parameter control_f
SQL> ho ls /oracle/oradata/oracleto
SQL> ho cp /oracle/control2012.ctl /oracle/oradata/oracleto/control01.ctl??????????
SQL> ho cp /oracle/control2012.ctl /oracle/oradata/oracleto/control02.ctl
SQL> ho cp /oracle/control2012.ctl /oracle/oradata/oracleto/control03.ctl
SQL> shutdown immediate
SQL> startup
ORACLE instance started.
Total System Global Area? 167772160 bytes
Fixed Size????????????????? 1218316 bytes
Variable Size???????????? 125831412 bytes
Database Buffers?????????? 37748736 bytes
Redo Buffers??????????????? 2973696 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced? 連接中斷
SQL> startup?? 可以正常啟動了
ORACLE instance started.

?第一種方法出現第二種情況
SQL>alter database open resetlogs;
如果這里提示數據庫一致性驗證錯誤,那么需要做以下幾步操作
Sql>recover database;
提示需要用老的控制文件。
Sql>alter database recover? database using backup controlfile;
還是不行。提示錯誤
Sql>shutdown immediate
Sql>startup
Sql>alter database open resetlogs;
Sql>recover database 同樣提示需要老的控制文件
Sql>alter database recover? database using backup controlfile;
執行之后會提示歸檔日志找不到,需要從日志文件中找,所以指定日志文件,那么你可以挨個將日志文件的路徑輸入進去,
$ORACLE_BASE/oradata/.....(需要絕對路徑)
Sql> alter database resetlogs;? 這樣就可以恢復了。

?第二種方法是用隱藏參數 (一般不用)
SQL> startup
ORACLE instance started.
Total System Global Area? 167772160 bytes
Fixed Size????????????????? 1218316 bytes
Variable Size???????????? 125831412 bytes
Database Buffers?????????? 37748736 bytes
Redo Buffers??????????????? 2973696 bytes
ORA-00205: error in identifying control file, check alert log for more info???? 查看告警日志。Vi $ORACLE_BASE/admin/alter.....log
SQL> shwo parameter control_f
SQL> ho ls /oracle/oradata/oracleto
SQL> ho cp /oracle/control2012.ctl /oracle/oradata/oracleto/control01.ctl??????????
SQL> ho cp /oracle/control2012.ctl /oracle/oradata/oracleto/control02.ctl
SQL> ho cp /oracle/control2012.ctl /oracle/oradata/oracleto/control03.ctl
SQL> shutdown immediate
SQL> startup
ORACLE instance started.
Total System Global Area? 167772160 bytes
Fixed Size????????????????? 1218316 bytes
Variable Size???????????? 125831412 bytes
Database Buffers?????????? 37748736 bytes
Redo Buffers??????????????? 2973696 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
Sql>recover database;
提示不能恢復,需要是用老的控制文件恢復
Sql>alter database recover? database using backup controlfile; 還是不行
SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile; 使用隱藏參數,不讓數據庫進行一致性驗證。
Sql>start force
Sql>alter database open resetlog;? 實例終端
Sql>重新連接,startup
最后去掉隱藏參數
Sql>show parameter _allow
Sql>alter database reset "_allow_resetlogs_corruption" scope=spfile sid='*';
完成。
歸檔但日志不全;先全備,然后建立新的控制文件。
參考重建控制文件部分。

新建控制文件語句:
可以在在數據庫運行在OPEN和mount的時候,可以執行alter database backup controlfile to trace as '<dir路徑>'得到建立語句;,但要注意[no]archivelog [no]resetlogs 2個參數的區別。

D、開啟歸檔模式 (SQL> archive log list 數據庫OPEN階段可以查詢)
首先數據庫要處于mount階段才能開啟, SQL> alter database archivelog;
然后把數據打開 SQL> archive log list 查詢確認。

轉載于:https://www.cnblogs.com/maruidong/p/6394192.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259609.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259609.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259609.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

String類的使用 Part2

StringBuilder 類的使用 屬性&#xff1a; namespace StringBuilderTest {class Program{static void Main(string[] args){StringBuilder s new StringBuilder("hello,world!");Console.WriteLine(s);//Length屬性Console.WriteLine("s.Length{0}", s.Le…

JAVA項目怎么不是藍色_解決IDEA創建maven項目時pom.xml沒有變藍的問題

如下所示&#xff1a;選中pom.xml&#xff0c;右鍵點擊add as maven project&#xff0c;稍等片刻后就可以了補充知識&#xff1a;Idea導入maven項目不自動識別pom.xml*Idea導入maven項目不自動識別pom.xml*當在idea中導入maven項目時&#xff0c;不能自動識別pom文件解決方法&…

C# 6.0:Expression – Bodied Methods

Expression-bodied 方法是C# 6.0 中另一個能簡化代碼的特性。我們已經對lambda表達式將funciton和delegation關聯起來的這種用法很熟悉了。Expression-bodied 將lambda 表達式的這種用法擴展到了方法上。 像下面代碼所示&#xff0c;我們有一個GetTime() 方法返回一個格式化的時…

zabbix3.0安裝

本次安裝準備安裝3.0的zabbix(LNMP)第一步 安裝zabbix官方的zabbix源&#xff0c;地址如下&#xff1a;http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm安裝zabbix的官方源rpm -ivh zabbix-release-3.0-1.el6.noarch.rpm第二步 使用yu…

android UI自動化測試工具Robotium VS NativeDriver VS Calabash

http://kongqingyun123.blog.163.com/blog/static/6377283520126294029822/ 自從上次對Robotium和nativedriver這兩個工具做對比已經過去將近一年的時間了&#xff08;上次內容見http://kongqingyun123.blog.163.com/blog/static/637728352011614111010446/&#xff09;&#x…

POJ 1228 Grandpa's Estate --深入理解凸包

題意&#xff1a; 判斷凸包是否穩定。 解法&#xff1a; 穩定凸包每條邊上至少有三個點。 這題就在于求凸包的細節了&#xff0c;求凸包有兩種算法&#xff1a; 1.基于水平序的Andrew算法 2.基于極角序的Graham算法 兩種算法都有一個類似下面的語句&#xff1a; for(int i0;i&…

趙強老師免費公開課第一季:Hadoop的背景起源

標簽&#xff1a;免費直播課 Hadoop 大數據 趙強原創作品&#xff0c;允許轉載&#xff0c;轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://51edu.blog.51cto.com/8899635/1897555 Hadoop大數據免費公開課招募啦~~~趙強…

.NET Windows服務應用程序

此文旨在記錄個人對windows服務的理解以及學習記錄&#xff0c;高人可以直接繞行。 1.Windows 服務體系結構 http://technet.microsoft.com/zh-cn/library/aa998749(vexchg.65).aspx Windows 服務&#xff08;也稱服務應用程序&#xff09;是無論用戶是否登錄都運行在 Windows …

io流技術java_技術文章-java中的IO流

1.File類Java中對文件有操作時&#xff0c;可以實例化一個File對象&#xff0c;將文件路徑利用這樣的形式賦給File對象。File f new File(filePath);File類的基本操作包括&#xff1a;判斷是否存在&#xff1a;f.exists()獲取文件名&#xff1a;f.getName()獲取其絕對路徑&…

bootstrap-代碼-內聯代碼

說明通過 <code> 標簽包裹內聯樣式的代碼片段示例<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"view…

java類似php魔術方法_PHP與類有關的幾個魔術方法

與類有關的其他魔術方法序列化與反序列化技術含義&#xff1a;序列化&#xff1a;就是將一個變量所代表的“內存”數據&#xff0c;轉換為“字符串”形式并持久保存在硬盤上的一種做法。反序列化&#xff1a;就是將序列化之后保存在硬盤上的“字符串數據”&#xff0c;恢復為其…

IIS ARR設置HTTP跳轉到HTTPS

GUI Version - Select the website you wish to configure- In the “Features View” panel, double click URL Rewrite You will notice there are currently no rules configured for this site. Click “Add Rules…” in the Actions menu to the right of the “Features…

2013.7.15DAY2

今天自己做了炸土豆 吼吼~ 才知道雞蛋和小麥粉一起弄成漿糊涂到土豆條上炸效果很好~不過做失敗了一些啦 失敗的就用青椒炒著吃。。。。 下午準備做冰品來著。。。結果快遞都到了特別忙。。。就只弄了杯冰啤酒。。。 虐了兩道水題&#xff0c;貼上代碼。。過于水了。。。 Descri…

AutoCAD.NET API 最新(2012)教程下載及在線視頻教程DevTV

Autodek最近發布了基于最新版的AutoCAD 2012的.net API開發教程。基本內容包括&#xff1a; Overview of .NETPlugin BasicsUser InteractionDatabase fundamentalsDictionariesUser InterfaceEventsInputPoint MonitorJigs現在就可以從AutoCAD開發者中心下載&#xff0c; 看圖…

inherits java_JAVA內部類和組合的區別

Why inner classes?At this point you’ve seen a lot of syntax and semantics describing the way inner classes work, but this doesn’t answer the question of why they exist. Why did Sun go to so much trouble to add this fundamental language feature? Feedbac…

SQL Server里一些未公開的擴展存儲過程

SQL Server里一些未公開的擴展存儲過程 [轉帖] 博客天地 www.inbaidu.comSQL Server里一些未公開的擴展存儲過程 擴展存儲過程&#xff08;xp&#xff09;是直接運行在SQL Server地址空間里的動態鏈接庫&#xff0c;是通過使用SQL Server開放數據服務API&#xff08;SQL Server…

Linux技巧:一次刪除一百萬個文件最快方法

昨天&#xff0c;我看到一個非常有趣的刪除一個目錄下的海量文件的方法。這個方法來自http://www.quora.com/How-can-someone-rapidly-delete-400-000-files里的Zhenyu Lee。 他沒有使用find 或 xargs&#xff0c;他很有創意的利用了rsync的強大功能&#xff0c;使用rsync –de…

install python_python install on windows 10

圖 1官網2、下載安裝包&#xff1a;圖 2 Downloads – windows圖 3選擇版本圖 4選擇離線安裝版本圖 5保存下載文件—文件名自己可以修改可能有人看到windows 幾個版本&#xff0c;對幾個版本有迷惑的地方&#xff0c;解釋圖 6幾個版本的差異說明文字解釋&#xff1a;An e…

iOS開發常見錯誤

錯誤1&#xff1a; 1.1這種錯誤都是storyboard有問題 解決&#xff1a;當前storyboard的Custom Class是MJViewController&#xff0c;代碼中MJViewController繼承自UITableViewController。 而storyboard目前提供的是UIViewController&#xff0c;并沒有為MJViewController提供…

windows bat 批處理 !vm 合并快播文件

今天簡單的寫了一個bat批處理文件 用來處理快播的p2p的文件&#xff0c;一般回事這樣的目錄 你可以下載如下代碼 echo off for /r %%a in (.) do (echo %%acd %%acopy /b *.!mv test.rmvb ) pause保存為merge.bat&#xff0c;就可以執行了 代碼解釋&#xff1a; 掃描該目錄下的…