確定儲存數據庫文件/事務文件的硬碟驅動器
我在另一個論壇上發布了以下問題。有人告訴我這個問題與 Sybase 有關(與我們可能使用原始分區有關)。這就是為什麼我在這裡重新發布這個問題。抱歉發了多個文章。
我有一個舊的 Sybase 伺服器,它的數據庫正在執行。我已經嘗試重建文件系統和數據庫文件。但是問題又回來了。我想更換儲存數據庫文件和事務文件的硬碟。我想確切地確定它是哪個硬碟驅動器,因為我不熟悉 Unix。此外,我還想看看這些文件是否與作業系統儲存在同一硬碟中;如果是,我將需要重新安裝作業系統並將數據庫恢復到新硬碟。顯然,如果數據庫文件和事務文件與作業系統不在同一個硬碟驅動器中,這會更好。請幫我確定這兩件事。
到目前為止,我發現了這些:
(1)我使用sp_helpdb命令,發現數據庫文件和事務文件都存放在這些邏輯設備中:
sybdbs syblogs master sybdbs2
(2) 我使用sp_helpdevice命令查看上面顯示的那 4 個邏輯設備,發現這些邏輯設備在這些物理設備中:
/dev/rdsk/c0t0d0s1 /dev/rdsk/c0t3d0s4 d_master /dev/rdsk/sybdbs2
(3) 當我使用sp_helpdevice顯示所有物理設備時,我看到:
device_name physical_name description status cntrltype device_number low high ------------------ ------------------------------------------- ------------------------------------------------ ------ --------- ------------- -------- -------- historydump /export/home/syb11.dump/history.dump disk, dump device 16 2 0 0 0 isproddump /export/home/syb11.dump/isprod.dump disk, dump device 16 2 0 0 0 istestdump /export/home/syb11.dump/istest.dump disk, dump device 16 2 0 0 0 master d_master special, physical disk, 100.00 MB 2 0 0 0 51199 masterdump /export/home/syb11.dump/master.dump disk, dump device 16 2 0 0 0 modeldump /export/home/syb11.dump/model.dump disk, dump device 16 2 0 0 0 prodtestdump /export/home/syb11.dump/prodtest.dump disk, dump device 16 2 0 0 0 sybdbs /dev/rdsk/c0t0d0s1 special, default disk, physical disk, 2000.00 MB 3 0 3 50331648 51355647 sybdbs2 /dev/rdsk/sybdbs2 special, physical disk, 1.00 MB 2 0 5 83886080 83886591 syblogs /dev/rdsk/c0t3d0s4 special, physical disk, 850.00 MB 2 0 4 67108864 67544063 sybscurty /dev/rdsk/c0t3d0s5 special, physical disk, 100.00 MB 2 0 2 33554432 33605631 sybsecuritydump /export/home/syb11.dump/sybsecurity.dump disk, dump device 16 2 0 0 0 sybsystemprocsdump /export/home/syb11.dump/sybsystemprocs.dump disk, dump device 16 2 0 0 0 sysprocsdev /dev/rdsk/c0t0d0s4 special, physical disk, 100.00 MB 2 0 1 16777216 16828415 tapedump1 /dev/rmt4 tape, 625 MB, dump device 16 3 0 0 20000 tapedump2 /dev/rst0 disk, dump device 16 2 0 0 20000 uniface724dump /export/home/syb11.dump/uniface724.dump disk, dump device 16 2 0 0 0 uniface7dump /export/home/syb11.dump/uniface7.dump disk, dump device 16 2 0 0 0
(4) 我想更多地了解那些物理設備。我使用df命令來檢查它們:
df -k /dev/rdsk/c0t0d0s1 df -k /dev/rdsk/c0t3d0s4 df -k d_master df -k /dev/rdsk/sybdbs2
df 命令抱怨前三個設備“不是塊設備、目錄或掛載資源”。
另一方面,df 命令顯示最後一個設備的以下資訊:
Filesystem kbytes used avail capacity Mounted on /dev/dsk/c0t3d0s0 576558 371019 147889 71% /
似乎 Unix 對前 3 個物理設備一無所知。似乎它們是只有 Sybase 知道的東西(有人向我建議它們是“原始分區”)。第 4 個設備是 Unix 知道的,它位於“/dev/dsk/c0t3d0s0”中。不過,我無法告訴我這些設備在哪個驅動器上。
(5) 當我使用mount命令時,我看到:
/ on /dev/dsk/c0t3d0s0 read/write/setuid on Mon Jul 6 11:10:46 2015 /usr on /dev/dsk/c0t3d0s6 read/write/setuid on Mon Jul 6 11:10:46 2015 /proc on /proc read/write/setuid on Mon Jul 6 11:10:46 2015 /dev/fd on fd read/write/setuid on Mon Jul 6 11:10:46 2015 /tmp on swap read/write on Mon Jul 6 11:10:49 2015 /export on /dev/dsk/c0t3d0s7 setuid/read/write on Mon Jul 6 11:10:49 2015 /freespace on /dev/dsk/c0t0d0s5 setuid/read/write on Mon Jul 6 11:10:49 2015 /sybase on /dev/dsk/c0t0d0s0 setuid/read/write on Mon Jul 6 11:10:49 2015 /usr/openwin on /dev/dsk/c0t3d0s3 setuid/read/write on Mon Jul 6 11:10:49 2015
我無法弄清楚上面安裝的設備與數據庫文件和事務文件的物理設備之間的連接。我也無法將上面安裝的設備連結到下一節中顯示的硬碟驅動器。
(6) 當我使用cat /etc/vfstab命令時,我看到這些:
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # #/dev/dsk/c1d0s2 /dev/rdsk/c1d0s2 /usr ufs 1 yes - /proc - /proc proc - no - fd - /dev/fd fd - no - swap - /tmp tmpfs - yes - /dev/dsk/c0t3d0s0 /dev/rdsk/c0t3d0s0 / ufs 1 no - /dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6 /usr ufs 1 no - /dev/dsk/c0t3d0s7 /dev/rdsk/c0t3d0s7 /export ufs 2 yes - /dev/dsk/c0t0d0s5 /dev/rdsk/c0t0d0s5 /freespace ufs 2 yes - /dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 /sybase ufs 2 yes - /dev/dsk/c0t3d0s3 /dev/rdsk/c0t3d0s3 /usr/openwin ufs 2 yes - /dev/dsk/c0t3d0s1 - - swap - no - # The following lines have been commented-out to allow Sybase to access these # partitions and Raw Partitions. Nov-24-1999 # /dev/dsk/c0t0d0s3 /dev/rdsk/c0t0d0s3 /master ufs 2 yes - # /dev/dsk/c0t0d0s1 /dev/rdsk/c0t0d0s1 /sybdbs ufs 2 yes - # /dev/dsk/c0t3d0s4 /dev/rdsk/c0t3d0s4 /syblogs ufs 2 yes - # /dev/dsk/c0t3d0s5 /dev/rdsk/c0t3d0s5 /sybscurty ufs 2 yes - # /dev/dsk/c0t0d0s4 /dev/rdsk/c0t0d0s4 /sybtemproc ufs 2 yes -
(7) 當我使用format命令時,看到這兩個硬碟:
AVAILABLE DISK SELECTIONS: 0. c0t0d0 <IBM-DNES-309170-SA30 cyl 11195 alt 2 hd 5 sec 320> /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@0,0 1. c0t3d0 <SEAGATE-ST34520N-1206 cyl 9004 alt 2 hd 4 sec 246> /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@3,0
(8) 我沒有看到任何外部設備連接到 Sybase 伺服器。話雖如此,有一個備份 Sybase 伺服器,並且備份 Sybase 伺服器有一個連接到它的外部設備(通過 SCSI 電纜)。此時,我假設數據庫文件和事務文件都儲存在 Sybase 伺服器中。
順便說一句,Sybase 伺服器使用這個 Unix 作業系統:
SunOS <my-server-name> 5.4 Generic_101945-62 sun4m sparc
Sybase 版本是:
SQL Server/11.0.3.2/P/Sun_svr4/OS 5.4/SWR 7578 Rollup/OPT/Mon Nov 3 22:19:21 PST 1997
順便說一句,到目前為止我嘗試修復數據庫的方法是:
• 嘗試了dbcc checkalloc(, fix)。不幸的是,此命令無法修復且無法完成。
• 嘗試了drop-db/add-new-db/restore-db-from-backup。不幸的是,還原未能完成。
• 嘗試了fsck-to-fix-the-devices。它無法完成並抱怨“MAGIC NUMBER WRONG”。
• 嘗試了Analyze-option-in-format-command-to-repair-all-disks,然後是add-new-db 和restore-db-from-backup。這種方法似乎奏效了。但是過了一周左右,我發現一個表有 I/O 錯誤。
請幫我確定這些數據庫文件和事務文件儲存在哪個硬碟上,以及它們是否與 Unix 作業系統在同一個硬碟上。
提前致謝。
陳杰
您有 2 個物理磁碟:c0t0d0 和 c0t3d0
設備:historydump、isproddump、istestdump、masterdump、modeldump、prodtestdump、sybsecuritydump、sybsystemprocsdump、uniface724dump、uniface7dump => /export => 磁碟 c0t3d0
設備主設備 => /master => 磁碟 c0t0d0
設備 sybdbs => 磁碟 c0t0d0
設備 sybdbs2 => / dev/rdsk/sybdbs2 => 不確定:執行“ls -l /dev/rdsk/sybdbs2”以查看它是否是符號連結
設備 syblogs => 磁碟 c0t3d0
設備 sybscurty => 磁碟 c0t3d0
設備 sysprocsdev => 磁碟 c0t0d0
我建議您查看 Solaris 命令“prtdiag -v”和“iostat -En”(以“root”身份執行)以確定是否存在任何磁碟損壞。
希望這有幫助。文森特