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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

RAC RMAN 备份 RMAN-03009 ORA-19504 ORA-27040 RMAN-06012 channel c3 not allocated 错误分析

發(fā)布時(shí)間:2024/4/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RAC RMAN 备份 RMAN-03009 ORA-19504 ORA-27040 RMAN-06012 channel c3 not allocated 错误分析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

?

把之前的RMAN 單實(shí)例的備份腳本修改了一下,用來備份RAC 系統(tǒng)。

?

Linux 平臺(tái)下 RMAN 全備 增量備份 shell 腳本

http://blog.csdn.net/tianlesoftware/archive/2010/07/16/5740630.aspx

?

?

修改之后的備份Shell 腳本如下:

?

########################################################################

##?? RAC_hot_database_backup.sh????? ##

##?? created by Tianlesoftware?? ##

##??????? 2010-9-21???????????????? ##

#########################################################################

#!/bin/sh

# ---------------------------------------------------------------------------

# Determine the user which is executing this script.

# ---------------------------------------------------------------------------

CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1`

# ---------------------------------------------------------------------------

# Put output in <this file name>.out. Change as desired.

# Note: output directory requires write permission.

# ---------------------------------------------------------------------------

RMAN_LOG_FILE=${0}.out

# ---------------------------------------------------------------------------

# You may want to delete the output file so that backup information does

# not accumulate.? If not, delete the following lines.

# ---------------------------------------------------------------------------

if [ -f "$RMAN_LOG_FILE" ]

then

rm -f "$RMAN_LOG_FILE"

fi

# -----------------------------------------------------------------

# Initialize the log file.

# -----------------------------------------------------------------

echo >> $RMAN_LOG_FILE

chmod 666 $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# Log the start of this script.

# ---------------------------------------------------------------------------

echo Script $0 >> $RMAN_LOG_FILE

echo ==== started on `date` ==== >> $RMAN_LOG_FILE

echo >> $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# Oracle home path.

# ---------------------------------------------------------------------------

ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1

export ORACLE_HOME

# ---------------------------------------------------------------------------

# the Oracle SID of the target database.

# ---------------------------------------------------------------------------

ORACLE_SID=orcl1?? -- 注意,這里需要連接任意節(jié)點(diǎn)就可以

export ORACLE_SID

# ---------------------------------------------------------------------------

# The Oracle DBA user id (account).

# ---------------------------------------------------------------------------

ORACLE_USER=oracle

export ORACLE_USER

# ---------------------------------------------------------------------------

# Set the Oracle Recovery Manager name.

# ---------------------------------------------------------------------------

RMAN=$ORACLE_HOME/bin/rman

?

# ---------------------------------------------------------------------------

# Print out the value of the variables set by this script.

# ---------------------------------------------------------------------------

echo >> $RMAN_LOG_FILE

echo?? "RMAN: $RMAN" >> $RMAN_LOG_FILE

echo?? "ORACLE_SID: $ORACLE_SID" >> $RMAN_LOG_FILE

echo?? "ORACLE_USER: $ORACLE_USER" >> $RMAN_LOG_FILE

echo?? "ORACLE_HOME: $ORACLE_HOME" >> $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# Print out the value of the variables set by bphdb.

# ---------------------------------------------------------------------------

#echo? >> $RMAN_LOG_FILE

#echo?? "NB_ORA_FULL: $NB_ORA_FULL" >> $RMAN_LOG_FILE

#echo?? "NB_ORA_INCR: $NB_ORA_INCR" >> $RMAN_LOG_FILE

#echo?? "NB_ORA_CINC: $NB_ORA_CINC" >> $RMAN_LOG_FILE

#echo?? "NB_ORA_SERV: $NB_ORA_SERV" >> $RMAN_LOG_FILE

#echo?? "NB_ORA_POLICY: $NB_ORA_POLICY" >> $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# NOTE: This script assumes that the database is properly opened. If desired,

# this would be the place to verify that.

# ---------------------------------------------------------------------------

echo >> $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# ---------------------------------------------------------------------------

# Call Recovery Manager to initiate the backup.

# ---------------------------------------------------------------------------

CMD_STR="

ORACLE_HOME=$ORACLE_HOME

export ORACLE_HOME

ORACLE_SID=$ORACLE_SID

export ORACLE_SID

$RMAN nocatalog target sys/oracle msglog $RMAN_LOG_FILE append << EOF

RUN {

allocate channel c1 device type disk connect? 'sys/oracle@orcl1';

allocate channel c2 device type disk connect? 'sys/oracle@orcl2';

BACKUP FORMAT '/u01/backup/orcl_%U_%T' skip inaccessible filesperset 5 DATABASE TAG orcl_hot_db_bk;

sql 'alter system archive log current';

BACKUP FORMAT '/u01/backup/arch_%U_%T' skip inaccessible filesperset 5 ARCHIVELOG ALL DELETE INPUT;

backup current controlfile tag='bak_ctlfile' format='/u01/backup/ctl_file_%U_%T';

backup spfile tag='spfile' format='/u01/backup/ORCL_spfile_%U_%T';

?

release channel c1;

release channel c2;

}

?

allocate channel for maintenance device type disk connect ?'sys/oracle@orcl1';
allocate channel for maintenance device type disk connect
?'sys/oracle@orcl2';

report obsolete;

delete noprompt obsolete;

crosscheck backup;

delete noprompt expired backup;

list backup summary;

release channel;

#EOF

"

# Initiate the command string

?

if [ "$CUSER" = "root" ]

then

??? echo "Root Command String: $CMD_STR" >> $RMAN_LOG_FILE????

??? su - $ORACLE_USER -c "$CMD_STR" >> $RMAN_LOG_FILE

??? RSTAT=$?

else

??? echo "User Command String: $CMD_STR" >> $RMAN_LOG_FILE????

??? /bin/sh -c "$CMD_STR" >> $RMAN_LOG_FILE

??? RSTAT=$?

fi

# ---------------------------------------------------------------------------

# Log the completion of this script.

# ---------------------------------------------------------------------------

if [ "$RSTAT" = "0" ]

then

??? LOGMSG="ended successfully"

else

??? LOGMSG="ended in error"

fi

echo >> $RMAN_LOG_FILE

echo Script $0 >> $RMAN_LOG_FILE

echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE

echo >> $RMAN_LOG_FILE

/bin/mailx -s "RMAN Backup SID " tianlesoftware@vip.qq.com < $RMAN_LOG_FILE

exit $RSTAT

?

?

但是,運(yùn)行該備份腳本報(bào)錯(cuò)。 部分運(yùn)行日志如下:

allocated channel: c1

channel c1: sid=129 instance=orcl1 devtype=DISK

?

allocated channel: c3

channel c3: sid=131 instance=orcl2 devtype=DISK

?

Starting backup at 22-SEP-10

channel c1: starting full datafile backupset

channel c1: specifying datafile(s) in backupset

input datafile fno=00001 name=+DATA/orcl/datafile/system.276.730181051

input datafile fno=00004 name=+DATA/orcl/datafile/users.279.730181053

channel c1: starting piece 1 at 22-SEP-10

channel c3: starting full datafile backupset

channel c3: specifying datafile(s) in backupset

input datafile fno=00003 name=+DATA/orcl/datafile/sysaux.277.730181053

input datafile fno=00002 name=+DATA/orcl/datafile/undotbs1.278.730181053

input datafile fno=00005 name=+DATA/orcl/datafile/undotbs2.284.730181347

channel c3: starting piece 1 at 22-SEP-10

RMAN-03009: failure of backup command on c3 channel at 09/22/2010 05:11:10

ORA-19504: failed to create file "/u01/backup/orcl_19logo39_1_1_20100922"

ORA-27040: file create error, unable to create file

Linux Error: 2: No such file or directory

channel c3 disabled, job failed on it will be run on another channel

channel c1: finished piece 1 at 22-SEP-10

piece handle=/u01/backup/orcl_18logo39_1_1_20100922 tag=ORCL_HOT_DB_BK comment=N

ONE

channel c1: backup set complete, elapsed time: 00:01:02

channel c1: starting full datafile backupset

channel c1: specifying datafile(s) in backupset

input datafile fno=00003 name=+DATA/orcl/datafile/sysaux.277.730181053

input datafile fno=00002 name=+DATA/orcl/datafile/undotbs1.278.730181053

input datafile fno=00005 name=+DATA/orcl/datafile/undotbs2.284.730181347

channel c1: starting piece 1 at 22-SEP-10

channel c1: finished piece 1 at 22-SEP-10

piece handle=/u01/backup/orcl_1alogo57_1_1_20100922 tag=ORCL_HOT_DB_BK comment=N

ONE

...

?

released channel: c1

?

released channel: c3

?

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of release command at 09/22/2010 05:14:03

RMAN-06012: channel: c3 not allocated

?

?

?

對(duì)這個(gè)錯(cuò)誤的分析過程如下:

?

1.????? 日志有c3 通道不能釋放的問題。

??C3 通道是節(jié)點(diǎn)2上的通道,非本地通道。 懷疑是這個(gè)地方有問題,單獨(dú)做一個(gè)簡(jiǎn)單的測(cè)試:

?

RMAN> run

{

allocate channel c2 device type disk connect 'sys/oracle@orcl2';

allocate channel c1 device type disk connect 'sys/oracle@orcl1';

delete expired archivelog all;

release channel c1;

release channel c2;

}

2> 3> 4> 5> 6> 7> 8>

allocated channel: c2

channel c2: sid=147 instance=orcl2 devtype=DISK

allocated channel: c1

channel c1: sid=147 instance=orcl1 devtype=DISK

specification does not match any archive log in the recovery catalog

released channel: c1

released channel: c2

?

這個(gè)實(shí)驗(yàn)結(jié)果證明,報(bào)錯(cuò)和通道沒有關(guān)系。

?

?

2.? 備份目錄的權(quán)限問題

?

allocated channel: c3

channel c3: sid=131 instance=orcl2 devtype=DISK

?

RMAN-03009: failure of backup command on c3 channel at 09/22/2010 05:11:10

ORA-19504: failed to create file "/u01/backup/orcl_19logo39_1_1_20100922"

ORA-27040: file create error, unable to create file

Linux Error: 2: No such file or directory

channel c3 disabled, job failed on it will be run on another channel

?

從這里我們可以看出,通道c3 是創(chuàng)建成功了的。 但是在通道上c3上不能創(chuàng)建備份集的文件。

?

因?yàn)槲覍?shí)在節(jié)點(diǎn)1上做的RMAN 備份。 開始以為全部的備份文件都會(huì)放在節(jié)點(diǎn)1上。 所以只在節(jié)點(diǎn)1上創(chuàng)建了備份目錄。 /u01/backup目錄。 在節(jié)點(diǎn)2上沒有創(chuàng)建。 問題就出在這個(gè)地方。 我在就節(jié)點(diǎn)2上創(chuàng)建了/u01/backup目錄,并賦予了777權(quán)限后,備份成功。

?

?

最后檢查2個(gè)備份文件。 發(fā)現(xiàn)一個(gè)問題orcl1通道的備份集文件會(huì)存放在節(jié)點(diǎn)1的備份目錄上(/u01/backup),orcl2通道的備份文件會(huì)放在orcl2的備份目錄上(/u01/backup.? 因?yàn)樗膫浞菸募娣旁?/span>2個(gè)地方,所以恢復(fù)的時(shí)候會(huì)很麻煩。 最理解的狀態(tài),是所有的備份文件都存放在一個(gè)節(jié)點(diǎn),或者共享設(shè)備上。

?

?

所以,要解決這個(gè)有2種方法:

(1)??? 使用NFS 在一個(gè)節(jié)點(diǎn)上共享備份目錄,在另一個(gè)節(jié)點(diǎn)掛載這個(gè)共享。 這個(gè)所有的文件就會(huì)在一個(gè)節(jié)點(diǎn)上了。

?

關(guān)于NFS 的配置,參考Blog

Linux NFS Samba 共享配置

http://blog.csdn.net/tianlesoftware/archive/2010/07/22/5752092.aspx

?

(2)??? 使用存儲(chǔ)。

?

?

對(duì)于NFS mount, 存在著一個(gè)比較嚴(yán)重的問題。就是NFS mount在一個(gè)節(jié)點(diǎn)沒有啟動(dòng)的情況下,會(huì)極大的影響另一個(gè)節(jié)點(diǎn)的性能。也就是說,如果RAC一個(gè)節(jié)點(diǎn)出現(xiàn)故障,導(dǎo)致機(jī)器無法正常啟動(dòng)的話,另一個(gè)節(jié)點(diǎn)不但要承擔(dān)全部的數(shù)據(jù)庫壓力,而且還會(huì)受到nfs mount帶來的性能負(fù)載,基本上導(dǎo)致這個(gè)節(jié)點(diǎn)無法正常工作。所以從性能上的考慮,使用NFS mount的時(shí)候一定要慎重。所以對(duì)于RAC RMAN 備份文件,最好還是存放在存儲(chǔ)上。

?

?

?

?

?

?

?

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

Blog http://blog.csdn.net/tianlesoftware

網(wǎng)上資源: http://tianlesoftware.download.csdn.net

相關(guān)視頻:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx

DBA1 群:62697716(滿); DBA2 群:62697977(滿)

DBA3 群:63306533;???? 聊天 群:40132017

--加群需要在備注說明SGA的組成部分,否則拒絕申請(qǐng)

轉(zhuǎn)載于:https://www.cnblogs.com/tianlesoftware/archive/2010/09/22/3609987.html

總結(jié)

以上是生活随笔為你收集整理的RAC RMAN 备份 RMAN-03009 ORA-19504 ORA-27040 RMAN-06012 channel c3 not allocated 错误分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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