网站首页|中心简介|课程详解|师资力量|新闻动态|招生问答|就业广场|在线报名|学员天地|网络学院|在线留言|证书查询
大兴北大青鸟logo
北大青鸟教程网
学院首页|网络安全|操作系统|服务器|数据库|编程开发|组网建网|网络应用|网页设计|办公软件|注册表|黑客攻防
WIN XP  |  WIN 2000/2003  |  LINUX/UNIX  |  TCP/IP  |  IPV6  |  APACHE  |  DHCP  |  SENDMAIL  |  WLAN
局域网  |  广域网  |  综合布线  |  网络存储  |  入侵检测  |  防火墙  |  交换机  |  病毒防治
北大青鸟大兴中心QQ在线咨询 北大青鸟大兴中心QQ在线咨询 北大青鸟大兴中心QQ在线咨询 北大青鸟大兴中心QQ在线咨询 北大青鸟大兴中心QQ在线咨询
田老师
李老师
王老师
谈老师
臧老师
   当前位置:主页>网络学院>数据库>Sybase教程>>直接修改master设备改变master数据库状态win和UNIX



 直接修改master设备改变master数据库状态win和UNIX

文章来源:http://www.bdqnht.com/ 文章作者:北大青鸟 发布时间:2007-12-19

windows上上次已经在回答的帖子里说了,这里在贴一下,好和unix下比较:
windows平台解决方法:
dbcc traceon(3604)
go
dbcc tablealloc(sysdatabases) 或  select first from sysindexes where id = object_id("sysdatabases" and indid=1\\找到数据页(pageno) 
go
dbcc page(master,pageno,1,0)  \\从硬盘上拿这页内容详细内容
go
master的如下:
Offset 202 - row ID=0 row length=84 # varlen cols=10
215690CA (     0):  0a000100 01000000 00800001 d3090000  ................
215690DA (    16):  8f960000 11db0401 8f960000 f3730501  .............s..
215690EA (    32):  c4fbbb20 00085400 6d617374 65720081  ... ..T.master..
215690FA (    4:  00000000 00000000 00000000 00000000  ................

字串3


2156910A (    64):  00000000 00000000 0b484440 40403c38  .........HD@@@<8
2156911A (    80):  34302e28                             40.(

上面00800001中的80代表-32768,拷贝这些代码,用一个16进制编辑器编辑你的master文件,查找这些代码,把00800001改为00000001,重启sybase,master库正常,可以使用了
在sybase ase 12.5.2+windows 2003上通过。



当时我认为unix下如果裸设备可能比较麻烦(果然相当麻烦),dd精确定位复制有可能行,后RS9000弟兄问UNIX如何处理,因为要考IBM 222认证,所以就耽误下来,过了222,有时间,现把过程和方法贴出
环境:
iBM aix 4.3和sybase11.9 只有这环境
master设备/dev/rlvsybmaster1
前面还是一样看page内容:
dbcc traceon(3604)
go
dbcc tablealloc(sysdatabases) 或  select first from sysindexes where id = object_id("sysdatabases" and indid=1\\找到数据页(pageno) 

字串8


go
dbcc page(master,pageno,1,0)  \\从硬盘上拿这页内容详细内容
go
master的如下:
Offset 266 -
3256210a:  02000001 00010000 80000001 000008a1  ................
3256211a:  00000000 00000000 00009179 00fe9caa  ...........y....
3256212a:  0005adda 00120034 6d617374 65728000  .......4master..
3256213a:  03302e28                             .0.(.
用od命令定位(od命令真好)
#od -H /dev/lvsybmaster1 |grep '02000001 00010000 80000001 000008a1'
报找不到,郁闷,仔细看看dbcc page用法1(print page header,  data rows and row offset table), 2 (print page header and hex dump of data page)  。改用dbcc page(master,pageno,2,0) 字串1
结果如下:不只这些,择了master的
32562110:  00008000 00010000 08a10000 00000000  ................
32562120:  00000000 917900fe 9caa0005 adda0012  .....y..........
32562130:  00346d61 73746572 80000330 2e280201  .4master...0.(..
32562140:  00030001 00000000 00010000 01e00000  ................
32562150:  00000000 00000000 917900fd acd60013  .........y......
32562160:  9866001e 00336d6f 64656c80 00032f2d  .f...3model.../-
原来是顺序不同,怪不得grep找不到,再来:
#od -H /dev/lvsybmaster1 |grep '00008000 00010000 08a10000 00000000' 结果
2024420  00008000 00010000 08a10000 00000000  找到,注意这的偏移量是8进制的
找到如何改呢?知道应该用dd,叨咕半天,不行,上网求助,在liveunix看到“炸鸡”高人的帖子,给了一个sh如下
字串5

cat chvgid.sh
#!/usr/bin/ksh
vgid=$1
disk=$2

set -A a `echo $vgid|\
awk '{
    for (f=1; f <= length($0); f=f+2) {
         print "ibase=16\nobase=8\n"toupper(substr($0,f,2))
    }
}'|bc 2>/dev/null`
/usr/bin/echo "\0"${a[0]}"\0"${a[1]}"\0"${a[2]}"\0"${a[3]}"\c"|dd bs=1 seek=3600 of=/dev/$disk
原来他是要直接改VGID的信息,看来能改的东西真不少。
到现在这个sh我还是看不很明白,但是用没问题,自己改了改如下
#cat chfile.sh
#!/usr/bin/ksh
dstatus=$1
filename=$2
offset=$3

set -A a `echo $dstatus|\
awk '{
    for (f=1; f <= length($0); f=f+2) {
         print "ibase=16\nobase=8\n"toupper(substr($0,f,2)) 字串8
    }
}'|bc 2>/dev/null`

/usr/bin/echo "\0"${a[0]}"\0"${a[1]}"\0"${a[2]}"\0"${a[3]}"\c"|dd bs=1 seek=$offset of=$filename conv=notrunc
加了$3偏移量,还有注意加conv=notrunc,要不你在修改点后的数据可能都没了。这的偏移量可是10进制的
od -Ad -H /dev/lvsybmaster1 |grep '00008000 00010000 08a10000 00000000' 找10进制偏移
0534800  00008000 00010000 08a10000 00000000
停sybase
改master设备
#chfile.sh 00000000 /dev/lvsybmaster1 534800
4+0 records in.
4+0 records out.
就是要把00008000 改为00000000
重启sybase ok

多说几句:
1 这种问题最好的方法是rebuildmaster,bcp out old sysdatabase,sysusages等systable, bcp in newmaster .这里只是一个办法。
2  问题的关键是BYPASS RECOVERY mode下无法正常执行事物,bcp out可以,in不行。dbcc delete_row删除记录没有问题,当时好像只能删和看,dbcc bytes,dbcc buffer等都只能看,照理应该有命令可以改dbcc bytes出来的东东,找遍 dbcc未果,哪位大大知道请赐教,问了sybase,无法dbcc改。 字串7
3 原以为改master文件后会启动是不是会再做什么一致性校验,但改了就ok了,总认为不会这么简单,--贱
4  在hp11+sybase12环境中试了一下,一是hp的od不支持长16位显示,只能od - x master|grep "0000 8000 0001 0000 08a1 0000 000 0000" 定位;二是改裸设备时dd好象不能按字节写入,可能要改sh,不想搞了。
5 除了master状态还能改点什么,一时也想不到。
6 写完后感觉花这么长时间折腾好累,但毕竟学到好多知识。


  注:本站资源收集均来子互联网,如有侵权请告知,我们将第一时间删除.
  
上一篇:Sybase ASE的字符集   下一篇:发布我的软件测试版本

::免费IT讲座::

时间:周六、日 下午14:00
地点:北大青鸟大兴校区
讲座内容:
     1、职业规划篇。
     2、日常实用技术讲座

主讲师:
     高级金牌讲师
 
大兴校区电话:69203100
 马甸校区电话:82011433
 
             免费订座报名

::免费讲座报名::
姓  名:
性  别:
学  历:
Q  Q:
电  话:
我是从:
知道的



北大青鸟|网络工程师|北京北大青鸟
  友情链接:北大青鸟集团 印度APTECH公司 北大青鸟APTECH公司 北京大学 北大青鸟马甸校区 上海北大青鸟 深圳北大青鸟 无锡北大青鸟 厦门北大青鸟 深圳北大青鸟 邵阳北大青鸟 北大青鸟镇江学府 深圳北大青鸟 徐州北大青鸟
中心图片
中心外景 前台接待区 网络教学区 路由及交换设备 机房环境 项目实践 职业规划师为同学解惑 学员积极回答问题 学员合影 学生宿舍 全国十佳中心奖杯 全国十佳中心奖牌 杰出贡献中心奖杯
  网站地图 | 联系我们 | 诚聘英才 | 在线留言 | 加入收藏 | 设为首页
 

版权所有 © 2004-2008 北京网络时尚信息技术有限公司
北大青鸟双合华腾网络工程师培训中心
大兴校区:大兴黄村长途汽车站东北角
招生热线:010-69203100/01 邮政编码:102600
马甸校区:北三环中路马甸桥东北角商房大厦(国美电器)626
招生热线:010-82011433/32 邮政编码:100029

网络工程师培训 网络工程师 北大青鸟培训 北大青鸟培训中心 网络培训
北大青鸟 北大青鸟网络工程师 北京北大青鸟 电脑培训 计算机培训
北大青鸟图标