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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

复用Oracle数据文件,Oracle控制文件的备份、恢复以及多路复用

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 复用Oracle数据文件,Oracle控制文件的备份、恢复以及多路复用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

今天給大家帶來有關Oracle控制文件的技術分享。不積跬步無以至千里,不積小流無以成江海。Oracle技術博大精深,以我一個人的力量,那無異于蜉蝣于天地,滄海之一粟。在此,筆者拋磚引玉,希望讀者能夠與我形成良好的互動,之間共同進步。閑言少敘,書歸正傳,馬上開始今天的討論話題。

Oracle 備份恢復概念? http://www.linuxidc.com/Linux/2011-03/33048.htm

一、控制文件概要描述

既然今天的主題是控制文件,那么首先我先帶大家來簡要回顧一下控制文件的相關知識點。控制文件在默認情況下,一般和數據文件以及日志文件等位于同一個目錄(當然,不放在這里也是沒有問題的……看個人喜好),具體查看的sql語句是:

SYS@ENMOEDU > select name from v$controlfile;

NAME

------------------------------

/u01/app/oracle/oradata/ENMOEDU/control01.ctl

/u01/app/oracle/fast_recovery_area/ENMOEDU/control02.ctl

從這里就已經清晰的看到我控制文件的路徑以及名稱了,還有,細心的讀者應該發現了,我是一個很小心謹慎的人,所以呢,我的控制文件是兩份。這樣做的好處是,萬一我其中的一個控制文件被誤刪了或者損壞了,我還有另外一個控制文件保證我數據庫的正常運行以及啟動(不小心把多路復用技術給提前引入了……稍后會有更詳細的配置以及解析)。

控制文件的作用我想就毋庸贅言了吧?上至九十老嫗,下到五歲孩童,對于控制文件的重要性都能如數家珍般的娓娓道來。控制文件中有數據庫以及在線重做日志的位置以及眾多重要的信息,丟失或者損壞控制文件,數據庫將無法正常啟動和運行。既然控制文件這么重要,那么我們該怎么對它進行備份和恢復呢?

二、控制文件的備份與恢復

(1)基于用戶管理的備份和恢復

首先進入Oracle的trace目錄

[oracle@ENMOEDU trace]$ cd /u01/app/oracle/diag/rdbms/enmoedu/ENMOEDU/trace

用tail命令來打開alert_ENMOEDU.log文件

[oracle@ENMOEDU trace]$ tail -100f alert_ENMOEDU.log

此時打開另一窗口,執行如下命令

SYS@ENMOEDU > alter database backup controlfile to trace;

Database altered.

我們可以在alert.ENMOEDU.log看到如下信息

Mon Mar 10 15:22:20 2014

alter database backup controlfile to trace

Backup controlfile written to trace file /u01/app/oracle/diag/rdbms/enmoedu/ENMOEDU/trace/ENMOEDU_ora_18205.trc

Completed: alter database backup controlfile to trace

根據上述信息,我們去查看提示的文件

[oracle@ENMOEDU ~]$ cat /u01/app/oracle/diag/rdbms/enmoedu/ENMOEDU/trace/ENMOEDU_ora_18205.trc

在浩如煙海的信息中,我們可以找到創建控制文件的命令

CREATE CONTROLFILE REUSE DATABASE "ENMOEDU" RESETLOGS? ARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/u01/app/oracle/oradata/ENMOEDU/redo01.log'? SIZE 50M BLOCKSIZE 512,

GROUP 2 '/u01/app/oracle/oradata/ENMOEDU/redo02.log'? SIZE 50M BLOCKSIZE 512,

GROUP 3 '/u01/app/oracle/oradata/ENMOEDU/redo03.log'? SIZE 50M BLOCKSIZE 512

-- STANDBY LOGFILE

DATAFILE

'/u01/app/oracle/oradata/ENMOEDU/system01.dbf',

'/u01/app/oracle/oradata/ENMOEDU/sysaux01.dbf',

'/u01/app/oracle/oradata/ENMOEDU/undotbs01.dbf',

'/u01/app/oracle/oradata/ENMOEDU/users01.dbf',

'/u01/app/oracle/oradata/ENMOEDU/example01.dbf',

'/u01/app/oracle/oradata/ENMOEDU/test01.dbf',

'/u01/app/oracle/oradata/ENMOEDU/test02.dbf'

CHARACTER SET AL32UTF8;

稍后我們就可以用這些命令來創建控制文件了。下面來模擬控制文件丟失和損壞的實驗環境:

[root@ENMOEDU ~]# rm -rf /u01/app/oracle/oradata/ENMOEDU/control01.ctl

[root@ENMOEDU ~]# rm -rf /u01/app/oracle/fast_recovery_area/ENMOEDU/control02.ctl

筆者將兩個控制文件都刪除了,很徹底~然后嘗試啟動數據庫。

[oracle@ENMOEDU ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Mon Mar 10 15:47:54 2014

Copyright (c) 1982, 2011, Oracle.? All rights reserved.

Connected to an idle instance.

SYS@ENMOEDU > startup

ORACLE instance started.

Total System Global Area? 422670336 bytes

Fixed Size? ? ? ? ? ? ? ? ? 1345380 bytes

Variable Size? ? ? ? ? ? 352323740 bytes

Database Buffers? ? ? ? ? 62914560 bytes

Redo Buffers? ? ? ? ? ? ? ? 6086656 bytes

ORA-00205: error in identifying control file, check alert log for more info

可以看出,數據庫已經無法正常啟動了。那么我們就將數據庫啟動到nomount狀態下進行恢復。

SYS@ENMOEDU > shutdown abort

ORACLE instance shut down.

SYS@ENMOEDU > startup nomount

ORACLE instance started.

Total System Global Area? 422670336 bytes

Fixed Size? ? ? ? ? ? ? ? ? 1345380 bytes

Variable Size? ? ? ? ? ? 352323740 bytes

Database Buffers? ? ? ? ? 62914560 bytes

Redo Buffers? ? ? ? ? ? ? ? 6086656 bytes

SYS@ENMOEDU > CREATE CONTROLFILE REUSE DATABASE "ENMOEDU" RESETLOGS? ARCHIVELOG

2? ? ? ? ? ? ? ? MAXLOGFILES 16

3? ? ? ? ? ? ? ? MAXLOGMEMBERS 3

4? ? ? ? ? ? ? ? MAXDATAFILES 100

5? ? ? ? ? ? ? ? MAXINSTANCES 8

6? ? ? ? ? ? ? ? MAXLOGHISTORY 292

7? ? ? ? LOGFILE

8? ? ? ? ? ? GROUP 1 '/u01/app/oracle/oradata/ENMOEDU/redo01.log'? SIZE 50M BLOCKSIZE 512,

9? ? ? ? ? ? GROUP 2 '/u01/app/oracle/oradata/ENMOEDU/redo02.log'? SIZE 50M BLOCKSIZE 512,

10? ? ? ? ? ? GROUP 3 '/u01/app/oracle/oradata/ENMOEDU/redo03.log'? SIZE 50M BLOCKSIZE 512

11? ? ? ? -- STANDBY LOGFILE

12? ? ? ? DATAFILE

13? ? ? ? ? ? ? '/u01/app/oracle/oradata/ENMOEDU/system01.dbf',

14? ? ? ? ? ? ? '/u01/app/oracle/oradata/ENMOEDU/sysaux01.dbf',

15? ? ? ? ? ? ? '/u01/app/oracle/oradata/ENMOEDU/undotbs01.dbf',

16? ? ? ? ? ? ? '/u01/app/oracle/oradata/ENMOEDU/users01.dbf',

17? ? ? ? ? ? ? '/u01/app/oracle/oradata/ENMOEDU/example01.dbf',

18? ? ? ? ? ? ? '/u01/app/oracle/oradata/ENMOEDU/test01.dbf',

19? ? ? ? ? ? ? '/u01/app/oracle/oradata/ENMOEDU/test02.dbf'

20? ? ? ? CHARACTER SET AL32UTF8;

Control file created.

嘗試開啟數據庫

SYS@ENMOEDU > alter database open

2? ;

alter database open

*

ERROR at line 1:

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

提示錯誤。按照提示來開啟數據庫:

SYS@ENMOEDU > alter database open resetlogs;

Database altered.

數據庫已經正常啟動了。

上述情況屬于非常樂觀且極易恢復的模擬實驗現場,但是在���際情況中,環境卻險要惡劣的多。往往控制文件丟失后,用戶還會進行大量的操作,比如創建表空間等等,這些使得控制文件的恢復要困難許多。路漫漫其修遠兮,吾將上下而求索,我對待技術的渴望永無止境。下面我就給大家介紹一下如何在備份的控制文件過久的情況下恢復控制文件。

首先,我們先備份一下我們的控制文件。由于我采用了多路復用,所以看起來是不是應該把兩個控制文件都備份一下呢?按照國際慣例,一般作者向讀者發出類似這種疑問句的時候,答案往往是否定的。但是,我作為一個走位忽上忽下意識飄忽不定的技術人員,所以,答案,仍然是不需要備份兩份。由于兩份控制文件是一模一樣的,所以備份一份即可,只需記得在恢復的時候注意文件名字。

備份控制文件。在本文中,將控制文件備份到Oracle的家目錄下,給控制文件一種家的溫暖。

[oracle@ENMOEDU ENMOEDU]$ cp control01.ctl ~

創建表空間和文件,從而使現在的控制文件和備份文件產生差異。

SYS@ENMOEDU > create tablespace 我 datafile '/u01/app/oracle/oradata/ENMOEDU/我01.dbf' size 100m;

Tablespace created.

查看一下當前在線日志的status,并切換日志,產生歸檔。

SYS@ENMOEDU > select group#,status from v$log;

GROUP# STATUS

---------- ----------------

1 CURRENT

2 INACTIVE

3 INACTIVE

SYS@ENMOEDU > alter system archive log current;

System altered.

SYS@ENMOEDU > select group#,status from v$log;

GROUP# STATUS

---------- ----------------

1 ACTIVE

2 CURRENT

3 INACTIVE

SYS@ENMOEDU > alter system archive log current;

System altered.

SYS@ENMOEDU > select group#,status from v$log;

GROUP# STATUS

---------- ----------------

1 ACTIVE

2 ACTIVE

3 CURRENT

SYS@ENMOEDU > alter system archive log current;

System altered.

SYS@ENMOEDU > select group#,status from v$log;

GROUP# STATUS

---------- ----------------

1 CURRENT

2 ACTIVE

3 ACTIVE

SYS@ENMOEDU > alter system archive log current;

System altered.

SYS@ENMOEDU > select group#,status from v$log;

GROUP# STATUS

---------- ----------------

1 ACTIVE

2 CURRENT

3 INACTIVE

SYS@ENMOEDU > alter system archive log current;

System altered.

SYS@ENMOEDU > select group#,status from v$log;

GROUP# STATUS

---------- ----------------

1 INACTIVE

2 ACTIVE

3 CURRENT

SYS@ENMOEDU > alter system archive log current;

System altered.

SYS@ENMOEDU > select group#,status from v$log;

GROUP# STATUS

---------- ----------------

1 CURRENT

2 INACTIVE

3 ACTIVE

SYS@ENMOEDU > alter system archive log current;

System altered.

SYS@ENMOEDU > select group#,status from v$log;

GROUP# STATUS

---------- ----------------

1 ACTIVE

2 CURRENT

3 INACTIVE

SYS@ENMOEDU > alter system archive log current;

System altered.

SYS@ENMOEDU > select group#,status from v$log;

GROUP# STATUS

---------- ----------------

1 ACTIVE

2 ACTIVE

? ? ? ? ? 3 CURRENT

總結

以上是生活随笔為你收集整理的复用Oracle数据文件,Oracle控制文件的备份、恢复以及多路复用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。