为Sybase中的物理设备更名
软件世界
前言:笔者作为银行的技术人员,在平时的Sybase数据库使用中,常常遇到这样的情况:系统管理人员由于原先规划欠周密或由于业务需求的变化,需要将原来的物理设备更名,怎么办?一般管理人员多选择重建数据库的方式,该方式要重建大量的设备,还要备份恢复大量数据,非常麻烦。现在介绍一种相对简单的解决方法。
一、原理分析
在Sybase数据库中数据库和事务日志都存储在数据库设备上,数据库设备是用disk init创建并被映射到某一物理设备的,可以是原始磁盘分区(裸设备)或操作系统文件。而这个映射关系就保存在master数据库的系统表sysdevices中。了解了这种关系,我们就可通过修改sysdevices表中的物理设备名来达到更名的目的。这种方法不破坏数据库,也不会造成数据丢失或数据不一致,使用非常方便。下面就详细叙述其操作步骤。
二、详细操作步骤
具体的方法有两种,分别对应两种情形:master数据库和非master数据库。因为master设备是在启动脚本RUN_servername中指定的,而其它数据库的数据库设备和物理设备的对应关系都记录在sysdevices表中。为了便于说明,我们以UNIX系统上的Sybase为例。
对于master库的物理设备需要更名的:
1. 确认Sybase Server已关闭。
2. 以root用户将master库的物理设备更名。
对于裸设备:
如在RS/6000的AIX操作系统中,可用命令如:
chlv -n'rNEW_master' master
如在SCO UNIX中,可用divvy命令,进入菜单操作文件:
mv master NEW_master
3. 修改更名后的物理设备的属主与权限。
#cd /dev
#chmod 660 rNEW_master
#chown sybase:sybase rNEW_master
4. 修改启动脚本RUN_servername,将-d选项指定的物理设备改为新的物理设备,如:
-d/dev/rNEW_master
5. 启动Sybase Server, 输入startserver -f RUN_servername 。
对于非master库的物理设备需要更名的:
1. 确认Sybase Server已关闭。
2. 修改启动脚本RUN_servername,增加-m选项,使之以单用户模式启动 。
3. 启动Sybase Server, 输入startserver -f RUN_servername。
4. 以sa用户名登录数据库后,执行如下命令:
1>sp_configure “allow updates”, 1
2>go
1>begin tran
2>go
1>use master
2>go
1>update sysdevices set phyname=“/dev/rNEWuserdb”
--rNEWuserdb为新的物理设备
2>where name=“userdbdev”
3>go
如果得到(1 row affected),则
1>commit
2>go
否则
1>rollback
2>go
5. 关闭Sybase Server。
6. 以root用户登录后将当前的物理设备改为新的物理设备,并修改更名后的物理设备的属主与权限。
7. 修改启动脚本RUN_servername,去掉-m选项,使之以多用户模式启动。
8. 以sa用户登录数据库Sybase Server后,执行如下命令:
1>sp_configure “allow updates”, 0
2>go
9. 运用DBCC命令来更改物理设备的数据库,检查是否正常。
1>dbcc checkdb(userdb)
2>go
三、小结
给数据库中的设备更名确实是个麻烦的工作,但运用这种修改数据库表中相关参数的方法,则化繁为简。最后要提醒一点,为了安全起见,在进行该操作前请对master库和其它数据库进行备份,以防万一。