存档

2009年12月 的存档,文章数:14

网络遥控技术是指由一部计算机(主控端)去控制另一部计算机(被控端),而且当主控端在控制端时,就如同用户亲自坐在被控端前操作一样,可以执行被控端的应用程序,及使用被控端的系统资源。
VNC(Virtual Network Computing)是一套由AT&T实验室所开发的可操控远程的计算机的软件,其采用了GPL授权条款,任何人都可免费取得该软件。VNC软件主要由两个部分组成:VNC server及VNC viewer。用户需先将VNC server安装在被控端的计算机上后,才能在主控端执行VNC viewer控制被控端。
(在windows中也由一套著名的网络遥控软件――Symantec公司推出的pcAnywhere。
VNC server与VNC viewer支持多种操作系统,如Unix系列(Unix,Linux,Solaris等),windows及MacOS,因此可将VNC server 及VNC viewer分别安装在不同的操作系统中进行控制。如果目前操作的主控端计算机没有安装VNC viewer,也可以通过一般的网页浏览器来控制被控端。
整个VNC运行的工作流程如下:
(1) VNC客户端通过浏览器或VNC Viewer连接至VNC Server。
(2) VNC Server传送一对话窗口至客户端,要求输入连接密码,以及存取的VNC Server显示装置。
(3) 在客户端输入联机密码后,VNC Server验证客户端是否具有存取权限。
(4) 若是客户端通过VNC Server的验证,客户端即要求VNC Server显示桌面环境。
(5) VNC Server通过X Protocol 要求X Server将画面显示控制权交由VNC Server负责。
(6) VNC Server将来由 X Server的桌面环境利用VNC通信协议送至客户端,并且允许客户端控制VNC Server的桌面环境及输入装置。

『VNC的安装与使用』
本人的操作环境:被控端 Redhat8.0,主控端Windows XP。
1. 载VNC Server与VNC viewer.
VNC Server下载地址:http://www.linuxeden.com/download/softdetail.php?softid=744
VNC viewer下载地址:http://download.pchome.net/php/dl.php?sid=2603
2.安装。
rpm –Uvh vnc-3.3.6-2.i386.rpm (如果是源代码请看包里的说明)
安装winvnc.exe
3.在Linux上启动VNC Server
执行vncserver命令:
[root@linux root]# vncserver
You will require a password to access your desktops.
Password: ----为了不想任何人都可以任意遥控此计算机。因此当第
Verify: ---1次启动VNC server时,会要求设置网络遥控的密码。
New ‘X’ desktop is linux:1 ----一定要记住这一行稍后会用到。
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/linux:1.log
(经上述步骤后,便已启动了VNC Server。如果你想要更改VNC Server的密码,只要执行vncpasswd命令即可。)
4.在Microsoft Windows上运行VNC Viewer
直接运行“vncviewer.exe”,系统会出现”Connection details”对话框。
在“Connection details”对话框中的“VNC server”文本框中输入VNC Server的IP地址(或主机名及显示装置编号,(请看3。在Linux上启动VNC server的这一行,New ‘X’ desktop is linux:1 得到此信息),例如:192.168.0.1:1(冒号后面的1是执行VNC Server生成的显示装置编号),单击“OK”按钮后,VNC Server即会开始检查所输入的信息,若是信息错误,系统会出现“Failed to connect to server”的错误信息:若是信息正确,则会接着出现“VNC Authentication”对话框。
若是在“VNC Authentication”对话框中输入的密码正确,就可以成功地打开Linux的桌面窗口。
5. 从浏览器远程遥控。
启动VNC Server 后直接打开浏览器,在地址栏中输入被控端的网址或IP地址,并在网址后加上“:5800+显示编号”的端口号即可操控该计算机。
例如:http://192.168.01.:5801 (如果显示编号为1,一般第一次设置的显示编号都是1,就用5800+1=5801。)

6.FAQ
A.为什么连接后,不能显示桌面,而只有一个Terminal窗口?
试着修改/root/.vnc/xstartup,把最后一行 twm& 改成 gnome-session& or kde&(据说KDE在目前的VNC Viewer上的表现不太稳定)

B. 为什么重新启动VNC Server后,连接不上了?
因为重新启动VNC Server时,系统会指定一个新的显示编号,需使用此新的编号,否则就无法连接。
2.以 redhat linux 8.0 下面的安装和使用为例

 Linux 下面利用 vnc 来图形界面的控制也是非常简单的。VNC 是由两部分组成:一部分是客户端的应用程序(vncviewer);另外一部分是服务器端的应用程序(vncserver)。

 一、安装 vnc 的 rpm 包

  1 安装 linux

  1.1 图形界面下的安装要是在 KDE 或者 GNOME 下,直接点击 rpm 包,系统会自动开始安装。中间还会提示你设 置密码,端口等。

  1.2 命令行下的安装。

  下面还是说说命令行下的安装,其实也是非常简单的,一个命令就可以了。

  cd /mnt/f/vnc/

  rpm -ivh vnc-3.3.6-2.i386.rpm

  2 设置 vnc server 的访问密码

  vncpasswd

  3 启动 vnc server

  vncserver

  4 linux 上的 vnc server 内定的管理环境是 twm,不好看,也不方便。

  我们来把它改成 KDE。修改 $HOME/.vnc/xstartup这个文件。把 starttwm 改成 startkde 修改后要重新启动 vnc server。

  二、远程连接

  现在你可以在各种平台下控制 linux 了。服务器端 (vncserver)还内建了 Java Web 接口,这样用户通过服务器端对其他计算机的操作就能通过浏览器(必须支持 java applet)显示出来了,这样的操作过程和显示方式非常直观方便。

VNC(Virtual Network Computing)虚拟网络计算工具,本质上来说是一个远程显示系统,管理员通过它不仅仅可以在运行程序的本地机上察看桌面环境,而且可以从Internet上的任何地方察看远程机器的运行情况,而且它具有跨平台的特性。

Linux 要使用远程桌面需要安装VNC,好在Red Hat Enterprise Linux AS 4.0 已经自带了VNC,默认也已经安装了,只要配置一下就可以了。但是Windows客户端还是要安装的。

VNCServer 配置:
1. 启动 VNC Server:
     打开终端执行:vncserver
2. 默认情况下VNC Viewer只能看到 VNC Server的命令行。
    要VNC Viewer上可以看到Linux桌面需要做如下设置:
    在VNC Viewer所在的机器上,取消/root/.vnc/xstartup文件中下面两行的注释即可:
    unset SESSION_MANAGER
    exec /etc/X11/xinit/xinitrc
3. Linux启动后自动运行VNCServer
     1) 在 系统设置>服务器设置>服务 中把 vncserver 打勾。
     2) 打开配置文件/etc/sysconfig/vncservers,去掉下面这行的注释,
         VNCSERVERS="1:root"
         VNCSERVERARGS[1]="-geometry 800x600"
        1表示VNC以桌面1运行,这样可以启动root的桌面。
4. VNC端口
     如果需要从外网控制内网的某台Linux,则需要打开防火墙相应的端口,并在路由器上进行端口映射。
     VNC给浏览器的端口是5800+N,给vncviewer的端口是5900+N,N是设置的display号

Windows 客户端 VNC Viewer 的配置:
1. 从 http://www.realvnc.com/download.html 下载 VNC Free Edition for Windows Version 4.1.2
2. 打开 VNCViewer :
    填入VNCServer 的IP:编号(1或2或...)
3. VNCViewer 切换全屏模式:F8

VNC启动模式
 vncserver -geometry 800*600
vncserver -depth 16

网络遥控技术是指由一部计算机(主控端)去控制另一部计算机(被控端),而且当主控端在控制端时,就如同用户亲自坐在被控端前操作一样,可以执行被控端的应用程序,及使用被控端的系统资源。

   VNC(Virtual Network Computing)是一套由AT&T实验室所开发的可操控远程的计算机的软件,其采用了GPL授权条款,任何人都可免费取得该软件。VNC软件 主要由两个部分组成:VNC server及VNC viewer。用户需先将VNC server安装在被控端的计算机上后,才能在主控端执行VNC viewer控制被控端。

   VNC server与VNC viewer支持多种操作系统,如Unix系列(Unix,Linux,Solaris等),windows及MacOS,因此可将VNC server 及VNC viewer分别安装在不同的操作系统中进行控制。如果目前操作的主控端计算机没有安装VNC viewer,也可以通过一般的网页浏览器来控制被控端。

vnc的主要工作原理是在服务器端运行 vncserver服务,然后在客户端就可以远程连接服务器端桌面了。

本文介绍如何从windows连接linux远程桌面

安装和配置
首先要在linux下安装nvcserver,我的linux是fc6,安装vnc-4.1.2-9.fc6.i386.rpm,安装包在附件里。

/upimg/soft/vnc-4.1.2-9.fc6.i386.rar

在http://rpm.pbone.net/这个网站也可以搜索到相应的rpm包。
安装rpm包
root@.vnc# rpm -ivh vnc-4.1.2-9.fc6.i386.rpm
然后进入~/.vnc
root@.vnc# cd ~/.vnc
编辑文件 xstartup
屏蔽掉最后一行
#twm &
加上如下语句
gnome-session &
保存退出

【注】上面这一步是为了能够在windows上显示linxu的桌面,否则只看到一个终端窗口。

接下来设置登陆用户,如果安装成功,在/etc/sysconfig/目录下有vncservers文件。
打开vncservers文件,在最后加上
VNCSERVERS="1:root"

好了,再设置vnc远程登录密码
root@.vnc# vncpasswd

设置完密码,然后运行vncserver
root@.vnc# vncserver

New 'localhost.localdomain:1 (root)' desktop is localhost.localdomain:1

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost.localdomain:1.log

ok,这台linux的ip是10.0.0.107,服务会启动从5801开始递增的端口

找一台同一局域网的window机器,然后打开ie浏览器,在地址栏输入

http://10.0.0.107:5801

如果连接成功,输入密码后就可以远程控制linux桌面了。

用浏览器登录的画质不太好,可以用windows下vncview工具直接连接。
下载一个vnc-4.0-x86_win32.zip,附件里也有。

/upimg/soft/vnc-4.0-x86_win32.zip

安装后,点击菜单里的
VNC Viewer 4 -> vncviewer.exe,输入ip,如:

按ok进入下一步,输入密码便可成功控制linux桌面。犹如打开linux系统一样。

vnc控制linux桌面

让我们一起学习,共同进步。

今天下午在RedHat linux enterprise5.4上安装tomcat。
最后执行/usr/tomcat/bin/startup.sh启动的时候报,Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
在网上寻找到原因为: /usr/lib/jdk1.6.0_17/lib下面的tools.pack需要解压为tools.jar,/usr/lib/jdk1.6.0_17 /jre/下的rt.pack需要解压为rt.jar。不过还好在/usr/lib/jdk1.6.0_17/bin下有一个工具unpack200可以解压。不明白sun为什么搞成这么麻烦?
 
网上找的文章贴在下面。
======================================================================
安装完JDK ,设定环境变量后出现这个错误:
[root@localhost lib]# javac
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
[root@localhost lib]# java
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
解决办法:分别把 
/opt/jdk1.6.0_15/lib/ tools.pack  转为  tools.jar  
 
/opt/jdk1.6.0_15/jre/lib/rt.pack   转为  rt.jar
[root@localhost lib]# pwd
/opt/jdk1.6.0_15/lib
[root@localhost lib]# unpack200 tools.pack tools.jar
[root@localhost lib]# ls
ct.sym  htmlconverter.jar  jconsole.jar  orb.idl     tools.jar   tools.pack.bak
dt.jar  ir.idl             jexec         sa-jdi.jar  tools.pack  visualvm
[root@localhost lib]# pwd
/opt/jdk1.6.0_15/jre/lib
[root@localhost lib]# unpack200 rt.pack rt.jar

最近学习linux,在windows上安装了SecureCRT来远程登录。程序解压后直接运行,显示出来的中文为乱码。寻找解决的办法,最后设定

菜单中:选项》会话选项》终端》外观 中字符编码选择UTF-8,标准字体选择Fixedsys,解决为汉字乱码的问题。

如果你想在SecureCRT显示为linux的颜色,这样来设定,菜单中:选项》会话选项》终端》仿真中的终端选择为Xterm。

参考如下的文章:

=========================================================================

在中文windows上,使用securecrt ssh FC, ubuntu等 2.6 kenerl 的linux,编译和man的时候,经常会出现乱码。这个问题困扰了我好久。

昨天晚上才发现,2.6 kernel的ssh默认编码是UTF 8,将securecrt的编码也改成UTF 8,嗯,问题解决了。

修改方法:

Options -> Session Options ->  Apperance -> Fonts -> Character。写下来发现,SecureCRT的配置真是折腾人阿。

 
 
 
 
++++++++++++++++++++++++++++++++
一直以来,我的secureCRT设置都还算好看,字体大小合适,颜色都有。

用起来也挺分别顺手,就是有一个很致命的毛病:
文字copy总是会出现乱码。
 
比如:声声醉如兰 五个字符,copy出来粘贴到记事本上,就成了“ÉùÉù×íÈçÀ¼”。
从SecureCRT复制到SecureCRT也是乱码。
 
同事那就没有这个问题,用得好好得。
可能是我们的设置不大一样。
对比了一下区别,有这样几个地方:
 
1,Emulation
   Terminal 选择的是Linux,并且选中“ANSI Color”
 
2,Appearance
   Font 选择的是vt100 12pt
   没有选中“Use Unicode line drawing characters”
  
在Character 选择的Default,不知道和这有没有关系。
 
另外,在linux系统中,LANG环境变量设置的是:zh_CN.gb2312,他们是:en_US
 
于是,我就把这几个因素综合起来考虑,改来改去。
也算运气好,在别人提示下,总算找到了一个正确的设置。
再仔细的分析下去,发现问题出在了字体上面。
我原来用的是vt100 12pt,SecureCRT默认安装设置的这个字体。
 
尝试了几个常用字体,发现有的会程序乱码,有的不会出现。
不会有乱码的是:fixedsys,新宋体,宋体
会出现乱码的是:vt100,courier,courier new
 
乱码的原因没有找到,猜测是编码的问题。
如果你也出现乱码,建议把字体换换。还成fixedsys吧。
 
有个无聊的情况就是,在替换的时候,有可能还是乱码,但坚持换几次,
就会正常。绝对让人莫名其妙。
 
结论:
最大的废话是:我也没有找到具体原因是什么。
不过呢,可能性最大的是字体。因为用fixedsys字体不会有乱码问题,而用vt100就可能会有哦。
 
characer的编码设置是否有关系,暂时不大清楚。设置成default应该没有问题。
 
和服务器端的环境变量应该也没有什么关系。
比如:LANG为 zh_CN.gb2312 或者 en_US.UTF-8,都可以的。
 
和vim的编码设置应该也没有关系。
 
和终端设置也没有关系,选择linux或者vt100或者xterm都不会出现乱码。
 
----------------------------
 
现在说说secureCRT的设置
 
字体:
建议用fixedsys,这个字体虽然不是最美丽的,但在终端上也是一个不错选择,大家都可以接受。
选择它,主要是因为它大小固定,在所有地方显示,效果都一样。
大家都知道,如果有人把tab设置成4个空格,有人设置成8个,那么同样一个程序,本来很美观的一个程序,到别人电脑上就不美观了。
同样,如果字体大小设置得不一致,也会出现这种问题。
所以,我一般都建议大家把字体设置成统一的fixedsys。
 
Linux终端是有颜色的。
vim也是可以打开颜色的。
为什么很多人都不喜欢把两者的颜色打开呢。
 
secureCRT设置:
  Terminal ->Emulation ->ANSI Color 选中就可以了。
 
 

++++++++++++++++++++++++++++++++
装了个secureCRT,可老是出现乱码
于是在网上找了相关方法,
我总结了一下。
1:最简单的方法是直接改
   Session Option→选字体(新宋体)→再选Character encoding(选UTF-8)
   然后再修改远程linux机器的配置
  vi /etc/sysconfig/i18n
  把LANG改成支持UTF-8的字符集
  如:LANG=”zh_CN.UTF-8″
 
2:如果再不行,可以试试这样
   导出 /etc/sysconfig/i18n
   原文件内容为:
   LANG="zh_CN.UTF-8"
   SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
   SYSFONT="latarcyrheb-sun16"
   更改为:
   LANG="zh_CN.GB2312"
   LANGUAGE="zh_CN.GB2312:zh_CN.GB2312:zh_CN"
   SUPPORTED="zh_CN.GB2312:zh_CN:zh:en_US.UTF-8:en_US:en"
   SYSFONT="latarcyrheb-sun16"
   SecureCRT里中文显示乱码
   打开 Options -> Session Options -> Appearance ,Character选UTF-8或OEM。
 
如果用了上述方法后,还是出现乱码,那有可能就是secureCRT字体设置的问题了
不会有乱码的是:fixedsys,新宋体,宋体
会出现乱码的是:vt100,courier,courier new
如果你也是上述原因,建议把字体换换,换成fixedsys吧。
再设置一下字符集为UTF-8(不知道为什么,我还得这样设置一下,有网友说设成其他的也没问题)
但是我非得设成UTF-8
 
 
另一篇文章链接:

【IT168 评论】最近一直在从事DBA的ETL工作,虽然时间不长但是还是有点心得愿意与大家分享。就我个人的观点来讲,DBA是一个非常辛苦的工作,是仅次于程序员的IT民工。甚至在有些方面比程序员还要辛苦,做程序写代码编程序还有个生命周期而DBA却不一样,很多时候都是客户提出需求马上数据就要提出来。压力是很大的,做dba一定要有过硬的心理素质,面对压力百折不挠!如果您还致力于此行业,那么看看我所认为一个优秀dba需要具备的素质吧:

  1.DBA一定是要忠于自己的单位,永远不做破坏!不要让事情更糟!!!这是最为重要的!DBA一般是单位自己培养的,这样忠诚度非常高,忠心耿耿!也正是因为数据是一个单位的命脉所在,要做dba必须保证数据的安全,保证不扰乱数据的完整性!要忠于自己的单位首先要对自己忠诚,对自己忠诚才不会对别人背叛!要对自己百分之百的忠诚,才能对自己所负责的数据忠诚!!!保证数据的保密性,保证数据不泄漏、丢失、不遭到人为破坏!这是你作为dba最基本的职责!!也是这个岗位的职业道德!如果有一天对自己不够忠诚了,或者你的上司对你有怀疑了,那么趁早离开这个岗位!!!

  2.为人低调。正是因为您做dba就已经掌握了一个公司的数据命脉,而且从事这个岗位的人必然痴迷于自己的技术而不善于人际交流。如果为人高调,事事爱出风头,难免树大招风,遭人忌恨!无心得罪了别人自己还不知道,这样即使自己的能力再高也很难在一个团队里生存!所以要想做一个优秀的dba一定要做人低调,耐得住寂寞,吃的了苦,肯下功夫不断的学习,提高自己的技术水平!!时刻保证自己的沉着冷静!与其搞那些人际关系不如潜心于提高自己的技术水平!

  3.在不考虑时间的前提下,能不写存储过程就不写。能用t-sql写就不要想用存储过程来展示你的才华。实践证明同等情况下写t-sql的更能以最快的速度满足所有人提出的需求!

  下面说说酸甜苦辣:

  酸:很多时候dba是孤独的,需要能够享受孤独。在遇到困难的时候没有人能帮助你,也没有人愿意帮你!!!况且求人不如求己!只有自己依靠自己来解决问题。要对自己不断鼓励自己说:我一定能行!我一定能做的到!!!一定要在较长时间不断沉淀,学十分可能只用到一分,但是一定要相信艺多不压身!!!

  甜:只为解决问题满足需求时那瞬间的成就感!!!愿意付出百倍的努力!!

  苦:孤独、面对问题的无从下手、苦恼,在不能满足需求时需要面对的压力,在网上都找不到解决问题的办法。在这时候只能聊以自慰的对自己说:该休息的时候就休息,dba也是人不可能永远保持清醒的头脑,在实在或者现阶段自己的能力无法满足需求的时候果断的寻求帮助!!!

  辣:无论哪个职位都需要在不断提高自己专业的情况下还需要和周围一切你喜欢与不喜欢的人打交道!这就是你必须遵守的规则!无奈也是你必须经历的过程!

  这些都是我最近作dba的一些非常肤浅的体会!如果再有机会深入的做下去,我相信我的感受会更深,到时候再拿出来与大家分享吧!如果在看了上面的话,您仍然致力于做一个优秀的dba,那么选择权在您手中,我祝福您,天堂和地狱的大门同时像您敞开!!!!

在linux企业版5.4上用两个不同的账号建立了两个sybase数据库服务器。

15.0.3版本的服务器能够正常启动,12.5.4版本的sybase数据库启动时提示:

cannot allocate resources for listener protocol tcp ,host xxx.xxx.xxx.xxx ,port 5000,engine 0.

cannot start any network listeners.

 上网查找原因:

将/etc/hosts中原来的

127.0.0.1 localhost.localdomain localhost

改为:

127.0.0.1 localhost

192.168.2.178 localhost.localdomain

问题解决,能够用端口5000启动数据库服务器了。

将参考文档放在这里以备后来使用。

------------------------------------------------------------------------------------------------------------------------------

sybase不能访问服务器解决办法

[ 2009-6-5 12:59:00 | By: 梦精灵 ]

不能远程访问fedora平台上的ase的问题

问题的提出:
问题一:
a机:fedora4+ase15
安装后没有修改ase的任何配置(初次使用sybase的东西,全是缺省配置)
b机:win2003+ase125
a机的sybase central可以连接b机的ase
b机不能访问a机的ase
a机的防火墙以及selinux都关闭了
在a机telnet b 5000没问题
在b机或者a机本机上telnet ip 5000:
正在连接到172.20.53.26...不能打开到主机的连接, 在端口 5000: 连接失败
但在a机telnet localhost 5000是可以连接的

问题二:
在interfaces文件中将机器名改为ip地址后
启动服务时出现:
00:00000:00008:2006/04/28 11:32:19.49 kernel ninit: cannot find host 172.20.53.26
00:00000:00008:2006/04/28 11:32:19.49 kernel Cannot allocate resources for listener with protocol tcp, host 172.20.53.26, port 5000, engine 0.
00:00000:00008:2006/04/28 11:32:19.49 kernel Cannot start any network listeners.
但使用hostname、localhost、172.0.0.1都没问题。就是会出现前一个问题,不能远程访问,呵呵。

经过一天的上网搜索,发现了一些好的东西。看来internet还真是个好东西。

问题的解决:

问题最终出在hosts文件上。我个人认为应该是ase利用fedora的hosts文件时,ase的不完美的地方
(因为其它的软件没有出现此类问题。呵呵,个人愚见)
fedora4的hosts文件中有一行:
127.0.0.1 localhost hostname
按照ase的说法,这种写法是incorrect
应该是分为两行:
127.0.0.1 localhost
***.***.***.*** hostname
这里是ip地址对应hostname

这样,前面的问题就解决了。呵呵,就这么简单
还有其它的解决办法。下面是我找到的解决办法的原文:
Can't connect to server from different host You've installed Sybase on your linux machine, and you're certain that it's running. You can ping the host where Sybase is running from other hosts on your net, but you can't connect to the database server itself.
Chances are you are on a Red Hat 6.x system, where the standard installation creates an incorrect /etc/hosts file with the hostname as an alias on the localhost line, instead of on a line by itself. You can use netstat -a -n | grep <sybase port> (where sybase port is the port that Sybase is listening on) to verify that Sybase is listening to the correct IP address.

Check your /etc/hosts file - if it looks like this:

127.0.0.1 localhost my_host

then you have a problem - change your /etc/hosts file to look like this instead:
127.0.0.1 localhost
192.168.0.1 my_host

(obviously you need to use the correct IP address for your host, and the correct host name!)
This should fix the problem.

An alternative solution is to change the hosts: entry in /etc/nsswitch.conf so that DNS or NIS is used before /etc/hosts for hostname lookups. By default /etc/nsswitch.conf has the following:

hosts: files nisplus dns
If you change that to something like
hosts: nisplus dns files
host name lookups should only access /etc/hosts if the information isn't available anywhere else, and therefore give the correct IP address for the hostname.

————————————————————————————————————
——— 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
——— 转载务必注明原始出处 : http://www.dbainfo.net
——— 关键字: ASE 15.0.3 启动 端口 hosts
————————————————————————————————————

昨天下午到现在已成功实现在linux 5.4 Enterprise下安装两个版本sybase数据库。ase12.5.4和ase15.0.3

两个版本的数据库使用不同的账户创建,并且已经配置了开机自动启动和关机自动结束服务。

ln -s /etc/init.d/autostartsyblinux /etc/rc5.d/S98autostartsyblinux

vi /etc/init.d/autostartsyblinux

su - sybase -c /etc/init.d/startsyblinux

vi /etc/init.d/startsyblinux

cd /sybase/ASE-12_5/install

startserver -f RUN_syblinux -f RUN_syblinux_bs

-------------------------------------------------------------------------------------

ln -s /etc/init.d/autostopsyblinux  /etc/rc5.d/K98autostopsyblinux

vi /etc/init.d/autostopsyblinux

su  - sybase -c /etc/init.d/stopsyblinux

vi  /etc/init.d/stopsyblinux

isql -Usa -P -Ssyblinux -i/etc/init.d/shutdown.sql >> /sybase/autoshutdown_erro.log

vi  /etc/init.d/shutdown.sql

shutdown SYB_BACKUP

go

shutdown with nowait

go

————————————————————————————————————
——— 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
——— 转载务必注明原始出处 : http://www.dbainfo.net
——— 关键字: ASE 15.0.3 linux RedHat 自动 启动 脚本
————————————————————————————————————

当master设备文件正在被二进制编辑器修改时,数据库服务器不能正确读取文件报错:

00:00000:00000:2009/12/14 17:21:11.79 kernel  dopen: open 'D:\sybase\data\master.dat', No error

错误日志中仅仅有这么一条(ase15.0.3esd2#).

每次启动的时候老是报00:00000:00011:2009/12/14 17:26:02.50 server  Error: 12315, Severity: 21, State: 1
00:00000:00011:2009/12/14 17:26:02.50 server  Corrupt page, Internal error: Mismatch between tail timestamp '0b7b' and the low two bytes of timestamp in the page header 'c9d3' while accessing page '2291' of object '3' in database '1'. Please contact Sybase Technical Support.类似的错误,一个一个的修改很麻烦。

启动时打开flag=3607,所有数据库均处于bypass mode。这是截断master的日志报错

1> dump tran master with no_log
2> go
Msg 4237, Level 16, State 1:
Line 1:
Cannot dump master database's log as distributed transaction resolution is not complete ye
t. Please retry later.
1> dump tran master with truncate_only
2> go
Msg 4237, Level 16, State 1:
Line 1:
Cannot dump master database's log as distributed transaction resolution is not complete ye
t. Please retry later.

即使对master数据库进行全备也不能截断日志。

dbcc checkdb(master),dbcc checktable(sysobjects),dbcc checktable(syslogs)等等之后。重启sybase就能够正常启动了。

————————————————————————————————————
——— 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
——— 转载务必注明原始出处 : http://www.dbainfo.net
——— 关键字: ASE 15.0.3 时间戳 二进制  修复 master 设备文件
————————————————————————————————————

此方法有一定的风险,请做好备份。you do it at your own risk!

以前的版本为:
Adaptive Server Enterprise/15.0.3/EBF 16550 ESD#1/P/NT (IX86)/Windows 2003/ase1503/2680/32-bit/OPT/Thu Mar 05 00:21:40 2009
在用mon表的时候报:NT storage access violation in omni_closetable destroyRemoteAccess. 怀疑是bug562998 。

于是打了ebf16738补丁。打补丁的过程和初次安装的过程一样只是wizard显示ASE15.0.3ESD#2,没有新建任何服务就选择完成了。
但是启动数据库的时候报错,很让人崩溃。难道我升级的方法有问题?

启动错误信息如下:

00:00000:00000:2009/12/14 14:55:34.59 kernel  engine 0, os pid 2404  online
00:00000:00000:2009/12/14 14:55:34.59 server  No active traceflags
00:00000:00001:2009/12/14 14:55:34.59 kernel  libomni1 - Component Integration Services: using 'Sybase Client-Library/15.0/P-EBF16074 ESD #15/PC Intel/BUILD1500-111/OPT/Thu Jul 31 20:59:50 2008'
00:00000:00001:2009/12/14 14:55:34.59 server  Opening Master Database ...
00:00000:00001:2009/12/14 14:55:34.71 server  Loading ASE's default sort order and character set
00:00000:00001:2009/12/14 14:55:34.73 server  Recovering database 'master'.
00:00000:00001:2009/12/14 14:55:34.75 server  Started estimating recovery log boundaries for database 'master'.
00:00000:00001:2009/12/14 14:55:34.75 server  Database 'master', checkpoint=(3779,8), first=(3779, 8), last=(3779, 31).
00:00000:00001:2009/12/14 14:55:34.75 server  Completed estimating recovery log boundaries for database 'master'.
00:00000:00001:2009/12/14 14:55:34.75 server  Started ANALYSIS pass for database 'master'.
00:00000:00001:2009/12/14 14:55:34.75 server  Completed ANALYSIS pass for database 'master'.
00:00000:00001:2009/12/14 14:55:34.75 server  Log contains all committed transactions until 2009/12/14 14:42:57.56 for database master.
00:00000:00001:2009/12/14 14:55:34.75 server  Started REDO pass for database 'master'. The total number of log records to process is 24.
00:00000:00001:2009/12/14 14:55:34.78 server  Error: 3474, Severity: 21, State: 1
00:00000:00001:2009/12/14 14:55:34.78 server  During redo the page timestamp value is less than old timestamp from log. Page #=348, object id = 37, page timestamp=0000 00000b20. Log old timestamp=0000 0000dbc2. Log record marker = (3779, 12).
00:00000:00001:2009/12/14 14:55:34.78 server  Cannot recover the master database, exiting.
00:00000:00001:2009/12/14 14:55:34.78 kernel  ueshutdown: exiting

又启动了一次,同样的错误信息。日志的意思是当前时间戳比日志中的时间要小,正常的应该为0000 0000dbc2,而redo中的时间戳为:0000 00000b20。以前日志都记录到(3779, 12).页面上了,升级后不知道什么原因却记到348页面上了?

原因没有搞清楚,但是sybase数据库不能用了。以前研究并且实现了对sybase日志设备的解析工作。通过修改设备文件修改一下时间戳看看能不能奏效吧?

用二进制工具打开master设备文件,根据错误信息中的可疑页号348定位到1433600(350*4096,@@maxpagesize=4096),找到

时间戳0000 00000b20将其修改为0000 0000dbc2。让咱们也来欺骗一下sybase服务器。^_^

0015E000 | 5C 01 00 00 00 00 00 00 5A 01 00 00 25 00 00 00 | \.......Z...%...
0015E010 | 20 0B 00 00 45 00 00 04 00 00 F7 09 02 08 02 00 |  ...E..........
0015E020 | 13 00 02 01 45 00 00 00 00 00 00 00 02 A8 01 4C | ....E.........L
0015E030 | 01 00 00 17 00 1C 70 65 72 63 65 6E 74 20 64 61 | ......percent da
0015E040 | 74 61 62 61 73 65 20 66 6F 72 20 68 69 73 74 6F | tabase for histo
0015E050 | 72 79 02 0E 00 02 AA 01 4C 01 00 00 19 00 1B 70 | ry.....L......p
0015E060 | 65 72 63 65 6E 74 20 64 61 74 61 62 61 73 65 20 | ercent database 
0015E070 | 66 6F 72 20 6F 75 74 70 75 74 02 0E 00 02 A9 01 | for output.....
0015E080 | 4C 01 00 00 18 00 14 70 65 72 63 65 6E 74 20 68 | L......percent h
0015E090 | 69 73 74 6F 72 79 20 66 72 65 65 02 0E 00 02 AB | istory free....

上红色的 20 0B  改为C2 DB 后,启动sybase服务器,成功!日志如下:

00:00000:00001:2009/12/14 15:27:44.29 server  Opening Master Database ...
00:00000:00001:2009/12/14 15:27:44.39 server  Loading ASE's default sort order and character set
00:00000:00001:2009/12/14 15:27:44.40 server  Recovering database 'master'.
00:00000:00001:2009/12/14 15:27:44.40 server  Started estimating recovery log boundaries for database 'master'.
00:00000:00001:2009/12/14 15:27:44.42 server  Database 'master', checkpoint=(3779, 8), first=(3779, 8), last=(3779, 31).
00:00000:00001:2009/12/14 15:27:44.42 server  Completed estimating recovery log boundaries for database 'master'.
00:00000:00001:2009/12/14 15:27:44.42 server  Started ANALYSIS pass for database 'master'.
00:00000:00001:2009/12/14 15:27:44.42 server  Completed ANALYSIS pass for database 'master'.
00:00000:00001:2009/12/14 15:27:44.42 server  Log contains all committed transactions until 2009/12/14 14:42:57.56 for database master.
00:00000:00001:2009/12/14 15:27:44.42 server  Started REDO pass for database 'master'. The total number of log records to process is 24.
00:00000:00001:2009/12/14 15:27:44.46 server  Redo pass of recovery has processed 2 committed and 0 aborted transactions.
00:00000:00001:2009/12/14 15:27:44.46 server  Completed REDO pass for database 'master'.
00:00000:00001:2009/12/14 15:27:44.48 server  Recovery of database 'master' will undo incomplete nested top actions.
00:00000:00001:2009/12/14 15:27:44.48 server  Started recovery checkpoint for database 'master'.
00:00000:00001:2009/12/14 15:27:44.53 server  Completed recovery checkpoint for database 'master'.
00:00000:00001:2009/12/14 15:27:44.53 server  Started filling free space info for database 'master'.
00:00000:00001:2009/12/14 15:27:44.65 server  Completed filling free space info for database 'master'.
00:00000:00001:2009/12/14 15:27:44.65 server  Started cleaning up the default data cache for database 'master'.
00:00000:00001:2009/12/14 15:27:44.67 server  Completed cleaning up the default data cache for database 'master'.
00:00000:00001:2009/12/14 15:27:44.75 server  Checking external objects.
00:00000:00001:2009/12/14 15:27:45.26 server  Database 'master' is now online.

呵呵,问题解决了。出现该问题的原因还未搞清楚!

————————————————————————————————————
——— 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
——— 转载务必注明原始出处 : http://www.dbainfo.net
——— 关键字: ASE 15.0.3 ESD#2 补丁 二进制 设备 dat
————————————————————————————————————