我在另一个论坛上发布了以下问题。有人告诉我这个问题与 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) 当我使用格式化命令时,我看到这两个硬盘:
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操作系统在同一个硬盘上。
提前致谢。
陈杰