某省的同事和我说,他们的DP备份从本月的8日开始就报错,之后一直无法进行备份,包括arch日志和数据库全备。
登录client后进行查看:
omnidb -session -last 7:
SessionID Type Status User.Group@Host
===============================================================================
2007/07/06-1 Backup Completed oracle.dba@gd_idb01
2007/07/06-2 Backup Completed oracle.dba@gd_idb01
2007/07/06-3 Backup Completed oracle.dba@gd_idb01
2007/07/07-1 Backup Completed oracle.dba@gd_idb01
2007/07/07-2 Backup Completed oracle.dba@gd_idb01
2007/07/07-3 Backup Completed oracle.dba@gd_idb01
2007/07/07-4 Backup Completed oracle.dba@gd_idb01
2007/07/08-1 Backup Completed oracle.dba@gd_idb01
2007/07/08-2 Backup Mount Request root.root@gd-ibak01
2007/07/08-3 Backup Failed oracle.dba@gd_idb01
2007/07/08-4 Backup Failed oracle.dba@gd_idb01
2007/07/09-1 Backup Failed oracle.dba@gd_idb01
2007/07/09-2 Backup Failed oracle.dba@gd_idb01
2007/07/09-3 Backup Failed oracle.dba@gd_idb01
2007/07/10-1 Backup Failed oracle.dba@gd_idb01
2007/07/10-2 Backup Failed oracle.dba@gd_idb01
2007/07/10-3 Backup Failed oracle.dba@gd_idb01
2007/07/10-4 Backup Failed oracle.dba@gd_idb01
2007/07/11-1 Backup Failed oracle.dba@gd_idb01
2007/07/11-2 Backup Failed oracle.dba@gd_idb01
2007/07/11-3 Backup Failed oracle.dba@gd_idb01
2007/07/12-1 Backup Failed oracle.dba@gd_idb01
2007/07/12-2 Backup Failed oracle.dba@gd_idb01
2007/07/12-3 Backup Failed oracle.dba@gd_idb01
2007/07/13-1 Backup Failed oracle.dba@gd_idb01
2007/07/13-2 Backup Failed oracle.dba@gd_idb01
发现7月8日有一个Mount Request的错误。进一步检查改报错的session report:
omnidb -session 2007/07/08-2 -report
[Normal] From: BMA@gd_idb01 “HP:Ultrium 3-SCSI_1_gd_idb01” Time: 07/08/07 12:09:38
STARTING Media Agent “HP:Ultrium 3-SCSI_1_gd_idb01”
[Warning] From: BSM@gd-ibak01 “” Time: 07/08/07 12:00:06
___________________________________________________________________
Mount request for any medium (blank or without protection):
Device : HP:Ultrium 3-SCSI_1_gd_idb01
Host : gd_idb01
Slot : 3
___________________________________________________________________
[Normal] From: BSM@gd-ibak01 “inter_idb_backup” Time: 07/08/07 12:30:35
Starting the mount request notification script “/opt/omni/lbin/Mount.sh”.
[Warning] From: BSM@gd-ibak01 “inter_idb_backup” Time: 07/08/07 13:30:29
[61:17102] Not enough licenses “Tape drive for SAN / all platforms”.
Session is waiting for some of devices to get free.
gd_idb01:[/#]
发现第一个报错是没有足够的licenses ,第二个报错是session等待空闲的设备。
由于网络不佳,通过xstart打开的图形界面实在太慢,就在client上直接用命令行测试设备(driver)上是否有卡带,用命令取带是否正常:
DT_slot_1 EMPTY
DT_slot_2 EMPTY
ST_slot_1 FULL PJ1635
ST_slot_2 EMPTY
ST_slot_3 EMPTY
ST_slot_4 EMPTY
ST_slot_5 EMPTY
ST_slot_6 EMPTY
ST_slot_7 EMPTY
ST_slot_8 FULL PJ1626
ST_slot_9 FULL PJ1637
ST_slot_10 FULL PJ1623
ST_slot_11 FULL PJ1634
ST_slot_12 EMPTY
ST_slot_13 EMPTY
ST_slot_14 FULL PJ1651
ST_slot_15 EMPTY
ST_slot_16 EMPTY
ST_slot_17 EMPTY
ST_slot_18 EMPTY
ST_slot_19 EMPTY
ST_slot_20 EMPTY
ST_slot_21 EMPTY
ST_slot_22 EMPTY
ST_slot_23 FULL PJ1639
ST_slot_24 FULL PJ1627
ST_slot_25 FULL PJ1628
ST_slot_26 FULL PJ1629
ST_slot_27 FULL PJ1633
ST_slot_28 EMPTY
ST_slot_29 FULL PJ1640
以上检查发现用mc命令都能正常的取磁带,放磁带。
联系HP 800后,得出结论如下:需要通过图形界面再次检查monitor的菜单,是否还有没有abort的session,因为如果一个session发生意外后,一个session占据一个driver所用的licenses,而且这个是逻辑上的概念,通过mc命令在测试抓带,仅仅在物理上证明了没有问题,要是session还没有abort,但是物理上driver已经空了,但是DP还是为认为这个driver没有释放,还是占用着一个licenses。
经检查,在monitor界面确实发现了2个没有abort的session(一个是7月1日,一个是7月8日),而且2个session都是报mount request的错。由于买的DP带库只有2个driver,用了2个licenses,所以当2个driver都挂掉的时候,DP虽然有物理上空的driver,但是找不到逻辑上空闲的driver,而且2个licenses也被占用了,因此出现了以上的报错。
解决方式:abort挂死的2个session,重新备份,成功!
题外话:由于从7月8日开始一直没有备份,arch积累了太多,而且还压缩了部分较早的arch。没有办法解压缩还原所有的arch。因此删除了一些arch后,在rman中手工做了crosscheck和delete expired archivelog all。数据库全备成功,arch备份成功。
5条评论
好深奥,做DBA可不可以不学磁带啊?
用硬盘多省事啊,现在的硬盘容量大,质量也不差呀。
呵呵,磁带还是作为一种比较廉价的存储介质存在的,估计也要继续存在好长一段时间~
当然了硬盘也是一种不错的存储介质,读写速度比磁带块好多,也有不少优势。
但是目前来说,主流的备份介质,还是用磁带的。
我家还有两盒邓丽君的磁带。。。!嘿嘿!
mc命令在哪里输入?
mc命令需要root权限执行。是hp-ux下的命令。