为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库和其它数据库进行备份,以防万一。