問題7:使用RMAN時,怎麼樣確定資料庫的DBID,rmandbid
目的:使用RMAN時,怎麼樣確定資料庫的DBID
可以通過以下的方法確定資料庫的DBID
1. 如果資料庫是開啟的,可以通過下面的一個查詢來確定資料庫的DBID
SQL> select dbid from v$database;
DBID
----------
269906945
2.如果所有的資料檔案都丟失了,不能使用控制檔案的自動備份等等,但是你有一個可用的控制檔案,那麼利用這箇舊的控制檔案將資料庫置於mount狀態,通過類似於1中查詢即試圖v$database查出資料庫的DBID,因為動態效能檢視在資料庫出於mount狀態下,就可以查詢
3.如果配置了控制檔案自動備份,且備份到了本地,不是在閃回恢複區,那麼這個控制檔案備份集的名字就包含了DBID,如:
c-269906945-20140913-07
此處:
269906945 就是資料庫的DBID
如果資料庫是10g,使用了閃回恢複區 + 控制檔案自動備份,且備份組為預設的目錄,不需要設定DBID,直接通過下面的命令就可以從自動備份組中恢複控制檔案或參數檔案spfie:
RMAN>startup nomount;
RMAN>restore controlfile from autobackup.
4.如果以前在進行rman備份,真箇備份的過程的詳細內容被記錄下來,或者說有備份的日誌,那麼也很容易找到資料庫的DBID,如:
$ rman target /
Recovery Manager: Release 10.2.0.4.0 -Production on Sat Sep 13 12:53:56 2014
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: RADIUS (DBID=269906945)
RMAN> backup database format'/u01/backup/backup_full/full_%d_%T_%s_%p.bak';
Starting backup at 13-SEP-14
using target database control file instead ofrecovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=139 devtype=DISK
channel ORA_DISK_1: starting full datafilebackupset
channel ORA_DISK_1: specifying datafile(s) inbackupset
input datafile fno=00001name=/u01/oradata/radius/system01.dbf
input datafile fno=00003 name=/u01/oradata/radius/sysaux01.dbf
input datafile fno=00005name=/u01/oradata/radius/example01.dbf
input datafile fno=00002name=/u01/oradata/radius/undotbs01.dbf
input datafile fno=00004name=/u01/oradata/radius/users01.dbf
channel ORA_DISK_1: starting piece 1 at13-SEP-14
channel ORA_DISK_1: finished piece 1 at13-SEP-14
piecehandle=/u01/backup/backup_full/full_RADIUS_20140913_50_1.baktag=TAG20140913T125428 comment=NONE
channel ORA_DISK_1: backup set complete,elapsed time: 00:00:55
Finished backup at 13-SEP-14
Starting Control File and SPFILE Autobackupat 13-SEP-14
piece handle=/tmp/c-269906945-20140913-08comment=NONE
Finished Control File and SPFILE Autobackupat 13-SEP-14
/************************************************************/
【說明】
RMAN進行備份的時候,一定要產生日誌,既能瞭解整個的備份完成的情況,同時也記錄了很多在以後的恢複中利用到的資訊。如:備份組的名字,路徑,歸檔的序號,dbid等等
5.如果使用的是UNIX系統,如果資料庫出現問題,但是仍然有一個資料檔案還在,可以通過strings命令進行查看,如下:
$strings undotbs01.dbf | grep MAXVALUE
3587267724,MAXVALUE
...etc.
從上面可以看出,DBID是3587267724
6.如果使用了恢複目錄catalog,通過RMAN串連到恢複目錄資料庫,發起 list incarnation命令,來查詢DBID
首先必須將目標資料庫置於nomount狀態,然後在進行DBID的查詢
如:
D:\>rman target <user>/<pwd>@mydb rcvcat <user>/<pwd>@rcat
RecoveryManager: Release 8.1.7.4.1 - Production
RMAN-06193:connected to target database (not started)
RMAN-06008:connected to recovery catalog database
RMAN> startup nomount
RMAN-06196:Oracle instance started
TotalSystem Global Area 94980124 bytes
FixedSize 75804 bytes
VariableSize 57585664 bytes
DatabaseBuffers 37240832 bytes
RedoBuffers 77824 bytes
RMAN> list incarnation;
RMAN-03022:compiling command: list
Listof Database Incarnations
DBKey Inc Key DB Name DB ID CUR Reset SCN Reset Time
-------------- -------- ---------------- --- ---------- --------
12 ORCL817 1411146558 YES 282854 03-DEC-02
-----------------------------------------------------------------
--END--
資料庫中的DBID什意思?
oracle在恢複中常用到DBID,DBID的作用是什麼,它和db_name是不是一一對應關係?
oracle在恢複中常用到DBID,DBID的作用是什麼,它和db_name是不是一一對應關係?
DBID是不是用來標識db_name的序號? 請各位高手解釋一下!
1 當丟失了控制檔案時,進行自動回復資料時用到DBID.
RMAN> restore controlfile from autobackup;
啟動 restore 於 15-2月 -08
使用通道 ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 02/15/2008 00:43:38
RMAN-06495: must explicitly specify DBID with SET DBID command
2 進行rman恢複時,有時也用到DBID.
3 oracle自動控制檔案也用DBID做檔案名稱
4 DBID存在於資料檔案及控制檔案中
下面轉一下eygle的《Oracle HowTo:如何獲得資料庫的DBID》
www.eygle.com/...d.html
在進行資料庫恢複的過程中,很多時候我們需要知道Oracle資料庫的DBID,通常有以下幾種方法可以獲得資料庫的DBID.
1.查詢v$database獲得
由於DBID在控制檔案和資料檔案中都存在記錄,所以如果能夠mount資料庫就可以查詢v$database視圖獲得.
SQL> alter database mount;Database altered.SQL> select dbid from v$database; DBID
----------
3152029224SQL> 2.在nomount狀態時
如果資料庫配置了自動控制檔案備份(Oracle9i),並且名稱是預設的,那麼我們可以從自動備份檔案獲得DBID.
[oracle@jumper dbs]$ cd $ORACLE_HOME/dbs
[oracle@jumper dbs]$ ll c-*
-rw-r----- 1 oracle dba 3375104 Dec 21 11:13 c-3152029224-20051221-00
-rw-r----- 1 oracle dba 3358720 Jan 21 14:03 c-3152029224-20060121-00
-rw-r----- 1 oracle dba 3358720 Jan 21 14:08 c-3152029224-20060121-01這裡的3152......餘下全文>>
大家一般做實施工作的時oracle資料庫是怎備份的,是imp/exp 還是rman方式備份 我看了下rman方式好麻煩
。。。。rman 備份多簡單的事!
EXP/IMP 對小庫還可以,對大庫的話,根本行不通的啊!
要用也是用EXDP/IMDP 啊!邏輯備份只是物理備份的補充啊!
強烈建議用rman
給你個RMAN全備的指令碼吧:
connect target 使用者名稱/密碼@服務;
crosscheck archivelog all;
crosscheck backup;
delete noprompt expired archivelog all;
delete noprompt obsolete;
delete expired copy;
delete noprompt expired backup;
run {
backup as compressed backupset database format 'S:\rmanbak\full_%d_%T_%t_%s 'tag='fullbak';
backup archivelog all delete all input skip inaccessible format 'S:\rmandatabse\rmanbak\ARC_%U';
backup current controlfile format 'S:\rmandatabse\rmanbak\control\control_bak_%T';
}
然後做個批處理:
rman cmdfile='full_rman.txt' msglog='D:/rman/rmanbat/full_rmanlog%date:~4,10%.log'
最後在windows計劃任務定時一調用,多簡單的事!
我這裡還有增量備份的指令碼,就不貼上了!自己學學吧!