发布网友 发布时间:2022-05-05 13:47
共2个回答
热心网友 时间:2022-05-05 15:16
所以一般人员多选择重建数据库的方式,该方式要重建一大堆的设备,还要备份恢复一大堆数据,非常麻烦。Sybase系统管理员应该都会此方法,在此就不罗嗦了。我们现在要探讨的是另一种捷径。二、原理分析 我们知道在Sybase的SQL Server中数据库和事务日志存储在数据库设备上,数据库设备是用disk init创建被映射到一物理设备,可以是原始磁盘分区(裸设备)或一操作系统文件。而这个映射关系就保存在master数据库的系统表sysdevices中。了解这种关系,我们就可通过修改sysdevices中的物理设备名来达到更名的目的且不破坏数据库,也不会造成数据丢失或不一致,非常方便。下面就详细叙述其步骤。三、详细步骤 有两种情形:master数据库和非master数据库。因为master设备是在启动脚本RUN_servername中指定的,而其它数据库的数据库设备和物理设备的对应关系都记录在sysdevices表中。为了便于说明,我们以UNIX系统上的Sybase为例,Wnndows 2000 Server上的可参照。对于master库的物理设备需更名的:1. 确认Sybase Server已关闭2. 以root用户将master库的物理设备需更名。对于裸设备:如在RS/6000的AIX操作系统中,可用命令如: chlv -n'rNEW_master' master如在SCO UNIX中,可用divvy命令,进入菜单操作对于文件:可mv master NEW_master3. 修改更名后的物理设备的属主与权限 #cd /dev#chmod 660 rNEW_master#chown sybase:sybase rNEW_master 4. 修改启动脚本RUN_servername,将-d选项指定的物理设备该为新的物理设备,如:-d/dev/rNEW_master 5. 启动Server, startserver -f RUN_servername后一切正常对于非master库的物理设备需更名的:1. 确认Sybase Server已关闭 2. 修改启动脚本RUN_servername,增加-m选项,使其以单用户模式启动 3. 启动Server, startserver -f RUN_servername 4. 以sa用户登录数据库server后,执行如下命令: 1>sp_configure "allow updates", 12>go1>begin tran2>go1>use master2>go1>update sysdevices set phyname="/dev/rNEWuserdb" --rNEWuserdb为新的物理设备2>where name="userdbdev"3>go 如果得到(1 row affected),则1>commit2>go 否则1>rollback2>go 5. 关闭Server6. 以root用户将当前的物理设备改为新的物理设备,并修改更名后的物理设备的属主与权限。如上一种情况的第2、3步。7. 修改启动脚本RUN_servername,去掉-m选项,使其以多用户模式启动8. 以sa用户登录数据库server后,执行如下命令:1>sp_configure "allow updates", 02>go 9. dbcc更改物理设备的数据库,检查是否正常1>dbcc checkdb(userdb)2>go 四、注意 为了安全起见,做该操作前请作好master库和其它数据库的备份,以防万一。1.《Sybase原理、高级系统管理与性能调优》 王珊 主编 中国水利水电出版社出版2.《Sybase 12 系统管理指南》 Sybase公司内部出版3.《Sybase 12 出错处理》 Sybase公司内部出版