Oracle的控制文件多路復用,控制文件備份,控制文件手工恢復

一.配置控制文件多路復用?

?1.查詢Oracle的控制文件所在位置

SQL> select name from v$controlfile;NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/control01.ctl
/u01/app/oracle/fast_recovery_area/orcl/control02.ctl

?spfile多路復用控制文件

2.修改control_files參數:

SQL> alter system set 
control_files='/u01/app/oracle/oradata/orcl/control02.ctl',
'/u01/app/oracle/oradata/orcl/control03.ctl',
'/u01/app/oracle/oradata/orcl/control05.ctl' 
scope=spfile;

3.關閉數據庫?

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down

?4. 進行文件拷貝(必須在數據庫關閉下復制文件)

[oracle@cz ~]$ cp /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/oradata/orcl/control02.ctl
[oracle@cz ~]$ cp /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/oradata/orcl/control03.ctl
[oracle@cz ~]$ cp /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/oradata/orcl/control05.ctl

5. 連接數據庫?

[oracle@cz ~]$ sqlplus / as sysdba

6. 啟動數據庫

SQL> startup;
ORACLE instance started.Total System Global Area 1169149952 bytes
Fixed Size		    2252624 bytes
Variable Size		  738197680 bytes
Database Buffers	  419430400 bytes
Redo Buffers		    9269248 bytes
Database mounted.
Database opened.

?7.查詢控制文件信息

SQL> select name from v$controlfile;NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/control02.ctl
/u01/app/oracle/oradata/orcl/control03.ctl
/u01/app/oracle/oradata/orcl/control05.ctl

二.控制文件的損壞模擬與重建

1.關閉數據庫,并模擬損壞

關閉數據庫
SQL> shutdown immediate;
模擬單個控制文件損壞
SQL> !rm -rf /u01/app/oracle/oradata/orcl/control05.ctl

?2.嘗試啟動數據庫,顯然報錯

SQL> startup;
ORACLE instance started.Total System Global Area 1169149952 bytes
Fixed Size		    2252624 bytes
Variable Size		  738197680 bytes
Database Buffers	  419430400 bytes
Redo Buffers		    9269248 bytes
ORA-00205: error in identifying control file, check alert log for more info

3.拷貝其他路徑在的控制文件給損壞的那個路徑的控制文件

SQL> !cp /u01/app/oracle/oradata/orcl/control02.ctl /u01/app/oracle/oradata/orcl/control05.ctl

4.嘗試啟動數據庫,顯然成功了

SQL> startup
ORACLE instance started.Total System Global Area 1169149952 bytes
Fixed Size		    2252624 bytes
Variable Size		  738197680 bytes
Database Buffers	  419430400 bytes
Redo Buffers		    9269248 bytes
Database mounted.
Database opened.

5. 查看控制文件和實例狀態

SQL> select name from v$controlfile;NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/control02.ctl
/u01/app/oracle/oradata/orcl/control03.ctl
/u01/app/oracle/oradata/orcl/control05.ctl

?實例狀態

SQL> select status from v$instance;STATUS
------------
OPEN

三.通過 TRACE 備份 ?

嚴格意義上來說,不是針對控制文件的備份,而是根據現在系統情況生成了一份 trace
文件,這個 trace 文件中記錄了創建控制文件的基本信息。
SQL> alter database backup controlfile to trace as '/u01/app/oracle/oradata/orcl/controfiles.bak';Database altered.

四.所有控制文件損壞、丟失?

1.TRACE 備份 ?的優勢與缺點

這種情況可以利用前面生成的 trace 文件進行手工重建。但是要注意,手工重建新
的,導致原來存在的一些備份資料庫元數據丟失,如果采用 RMAN 則不會。
Trace 文件是我們事先導出的,如果在發生故障之前從來沒有生成過該如何處理?需
要從其他好的機器上 trace 一份模板,然后按照模板把該庫對應的所有數據文件、日志文
件等信息找出來,然后對應到模板上進行重建。
trace 文件中有兩段代碼:第一段 sql 是在所有 online redolog 沒有丟失,以
noresetlogs 選項打開數據庫的情況下使用的。第二段則是在丟失了 online redolog 需要
resetlogs 的情況下使用。

2.模擬所有控制文件丟失,手工重建。

SQL> !rm -rf /u01/app/oracle/oradata/orcl/control02.ctlSQL> !rm -rf /u01/app/oracle/oradata/orcl/control03.ctlSQL> !rm -rf /u01/app/oracle/oradata/orcl/control05.ctlSQL> startup
ORACLE instance started.Total System Global Area 1169149952 bytes
Fixed Size		    2252624 bytes
Variable Size		  738197680 bytes
Database Buffers	  419430400 bytes
Redo Buffers		    9269248 bytes
ORA-00205: error in identifying control file, check alert log for more info

?啟動報錯

QL> startup
ORACLE instance started.Total System Global Area 1169149952 bytes
Fixed Size		    2252624 bytes
Variable Size		  738197680 bytes
Database Buffers	  419430400 bytes
Redo Buffers		    9269248 bytes
Database mounted.
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf'
ORA-01207: file is more recent than control file - old control file

?3.trace 文件第一段 sql 編輯成文件并執行。

把下面方框中的sql編輯成腳本并執行

?創建腳本文件

[oracle@cz orcl]$ vim control.sql

?把上面的sql粘貼進去作為腳本

?

?執行腳本

SQL> @control.sql
SP2-0734: unknown command beginning "TARTUP NOM..." - rest of line ignored.Control file created.

?查看實例狀態數據庫恢復正常

SQL> select status from v$instance;STATUS
------------
OPEN
這時,控制文件里面的 SCN 號就追平了數據文件頭部的 SCN 號了。
SQL> select file#,checkpoint_change# from v$datafile;
SQL> select file#,checkpoint_change# from v$datafile_header;

?

數據庫正常打開,注意:這時候還有一個臨時表空間不要忘了重新創建,實際臨時表
空間文件并沒有刪除,但是由于刪除了控制文件,數據字典中無法查到臨時表空間文件。
所以臨時表空間也需要重新建立。

4.臨時表空間是空值

SQL> select * from v$tempfile;no rows selected
數據字典查詢是空值,但是 OS 系統層面依然存在 temp01.dbf 。所以需要重新建立。

5.重新建立臨時表空間

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf' SIZE 30408704 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;Tablespace altered.

6.再次查詢$v$tempfile;

SQL> select name from v$tempfile;NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/temp01.dbf
總結:這個重建控制文件的過程主要有兩大部分內容:
第一部分是腳本中的可見信息:定義了幾個參數的最大值,在線日志的物理信息,數
據文件的物理信息,使用的字符集。
第二部分是隱含的不可見信息,比如 SCN 信息,重建最關鍵的是將當前所有數據文
件頭部的最新 SCN 信息復制到了控制文件中,以便接下來打開數據庫。

?

?

?

?

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

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

相關文章

【docker】docker總結

一、Docker簡介 Docker是開源應用容器引擎,輕量級容器技術。基于Go語言,并遵循Apache2.0協議開源Docker可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的Linux系統上,也可以實現虛擬化容…

No matching variant of com.android.tools.build:gradle:7.4.2 was found.

一、報錯信息 創建個新項目,運行直接報錯,信息如下: No matching variant of com.android.tools.build:gradle:7.4.2 was found. The consumer was configured to find a runtime of a library compatible with Java 8, packaged as a jar,…

shell 條件語句

目錄 測試 test測試文件的表達式 是否成立 格式 選項 比較整數數值 格式 選項 字符串比較 常用的測試操作符 格式 邏輯測試 格式 且 (全真才為真) 或 (一真即為真) 常見條件 雙中括號 [[ expression ]] 用法 &…

springboot啟動過程

1、SpringApplication new一個對象會優先調用initialize方法 public SpringApplication(Object... sources) {initialize(sources); } private void initialize(Object[] sources) {//添加配置類SpringBootApplicationif (sources ! null && sources.length > 0) …

關于一些bug的解決1、el-input的輸入無效2、搜索之后發現數據不對3、el多選框、單選框點擊無用4、

el-input輸入無效 原來的代碼是 var test null 但是我發現不能輸入任何值 反倒修改test的初始值為123是可以的 于是我確定綁定沒問題 就是修改的問題 于是改成 var test ref() v-model綁定的值改成test.value就可以了 因為ref是相應式的 可以通過輸入…

【算法】奇偶游戲(帶權并查集)

題目 小 A 和小 B 在玩一個游戲。 首先,小 A 寫了一個由 0 和 1 組成的序列 S,長度為 N。 然后,小 B 向小 A 提出了 M 個問題。 在每個問題中,小 B 指定兩個數 l 和 r,小 A 回答 S[l~r] 中有奇數個 1 還是偶數個 …

cocos2dx ??Animate3D(三)

一些總結 動作(Actions) move移動:moveto/moveby 從一個位置移動到另外一個位置 從一個位置移動多少數量級rotate旋轉:rotateto/rotateby 從一個角度旋轉到另外一個角度 旋轉多少個數量級scale縮放:scaleto/scaleby …

vue實現瀏覽器禁止鼠標選中文字禁止右鍵禁止F12鍵

1. 禁止鼠標選中文字 document.onselectstart new Function("event.returnValuefalse");2.禁止右鍵 document.oncontextmenu new Function("event.returnValuefalse");3. 禁止F12鍵 document.addEventListener("keydown", function (e) {if…

Go語言多線程爬蟲萬能模板它來了!

對于長期從事爬蟲行業的技術員來說,通過技術手段實現抓取海量數據并且做到可視化處理,我在想如果能寫一個萬能的爬蟲模板,后期遇到類似的工作只要套用模板就能解決大部分的問題,如此提高工作效率何樂而不為? 以下是一個…

有關Vue、微信小程序、UniApp中的CSS中的寬度width單位、自適應

在Vue中,可以使用以下單位來設置寬度(width) 像素(px):最常用的單位,表示一個絕對長度單位。例如,width: 200px; 表示寬度為200像素。百分比(%):…

Mac自帶的看圖如何連續查看多張圖片

一、問題 mac看訪達里的圖片時,雙擊打開一張圖片,然后按上下左右鍵都沒法切換到另外的圖片。而且也沒找到像window一樣單擊縮略圖可以看到預覽圖。其實是自己不懂得怎么使用,哈哈哈😂 二、方法 2.1、圖標方式 可以看到縮略圖&a…

新的centos7.9安裝jenkins(二)

更多ruoyi-nbcio功能請看演示系統 gitee源代碼地址 前后端代碼: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后臺管理系統 接上一節文章。 這個版本默認git也安裝好了,所以全局配置這個不需要了。 maven安裝3.9.3版本…

前綴和——DP35 【模板】二維前綴和

文章目錄 🍎1. 題目🍒2. 算法原理🍅3. 代碼實現 🍎1. 題目 題目鏈接:【模板】二維前綴和_牛客題霸_牛客網 (nowcoder.com) 描述 給你一個 n 行 m 列的矩陣 A ,下標從1開始。 接下來有 q 次查詢&#xff0…

ElasticSearch的日志配置

ElasticSearch默認情況下使用Log4j2來記錄日志,日志配置文件的路徑為$ES_HOME/config/log4j2.properties,配置方法見Log4j2的官方文檔。 參考path-settings,通過指定path.logs,可以指定日志文件的保存路徑。 在日志配置文件$ES_…

【OpenCV實現圖像:使用OpenCV生成拼圖效果】

文章目錄 概要通用配置不考慮間隔代碼實現考慮間隔代碼實現小結 概要 概要: 拼圖效果是一種將圖像切割為相鄰正方形并重新排列的藝術效果。在生成拼圖效果時,可以考慮不同的模式,包括是否考慮間隔和如何處理不能整除的部分。 不考慮間隔&a…

【NLP】GPT 模型如何工作

介紹 2021 年,我使用 GPT 模型編寫了最初的幾行代碼,那時我意識到文本生成已經達到了拐點。我要求 GPT-3 總結一份很長的文檔,并嘗試了幾次提示。我可以看到結果比以前的模型先進得多,這讓我對這項技術感到興奮,并渴望…

HQL刷題 50道

HQL刷題 50道 尚硅谷HQL刷題網站 答案 1.查詢累積銷量排名第二的商品 select sku_id from (select sku_id, dense_rank() over (order by total desc) rnfrom (select sku_id, sum(sku_num) totalfrom order_detailgroup by sku_id) t1) t2 where rn 2;2.查詢至少連續三天下…

php 時區查看和設置

php的時區&#xff0c;關系到相關時間函數的結果 其他相關&#xff1a; linux時區設置&#xff1a;鏈接 pgsql時區設置&#xff1a; 一、查看可以用的時區列表 新建一個php文件&#xff0c;輸入下面程序即可 <?php echo "<pre>"; var_dump(timezone_id…

基于go-zero的rpc服務示例

以下是一個基于 go-zero 框架的簡單 RPC 服務示例&#xff0c;該示例包括一個服務端和一個客戶端通過 gRPC 進行通信。 服務端 1、定義 .proto 文件 在 rpc/add 目錄下創建 adder.proto 文件&#xff0c;定義 RPC 服務&#xff1a; syntax "proto3";package add…

IOS+Appium+Python自動化全實戰教程

由于公司的產品坐落于不同的平臺&#xff0c;如ios、mac、Android、windows、web。因此每次有新需求的時候&#xff0c;開發結束后&#xff0c;留給測試的時間也不多。此外&#xff0c;一些新的功能實現&#xff0c;偶爾會影響其他的模塊功能正常的使用。 網上的ios自動化方面的…