提供7*24专业Sybase数据库远程及现场技术支持,Sybase ASE及Sybase SQL Anywhere数据库修复服务,
请联系手机:(微信),QQ:289965371!
We supply technical support for Sybase ASE and Sybase SQL Anywhere, also have many years of experience in recovering data from damanged Sybase devices.
Please contact us:
Phone:
Wechat: 13811580958
QQ: 289965371

通过ASE本身的命令重新启动ASE[转]

sybase在自动管理方面真的很弱很弱,不管windows还是unix平台上都是一样的不好用。不过,我现在都已经习惯了sybase的不好用。

很早以前自己也想到了如何在sybase ase内部来实现自动启动ase服务器。今天看到echoaix写的这篇文档,和我的思路差不多。自己正好也懒得写了。

通过ASE本身重新启动ASE

ase本身没有重启命令,如何让ASE自己重启是一个问题,记得当时负责将近100个ase server,分布在全国各地,服务器还大多是PC server,windows环境,管理员口令经常不知道,远程登陆也很慢,可是当时ase版本较低,改个参数有的就要重启
要ase重启并不困难,还是要调用系统的东西,说白了使用的工具就是ase的扩展存储过程的xp_cmdshell,熟悉mssql server的人都知道xp_cmdshell,其实mssql server最早就是sybase买给微软的源码,不多说,看看如何实现吧。

前提:
1 XP server,一般windows上的ase创建都会带着。
2 XP server的条号(interfaces和sql.ini)
3 XP server在sysservers中的记录
select upper(@@servername)+'_XP',假定结果为TEST_XP,即为需要添加的XP sever信息 注意一定要全部大写,要不到时候回报”XP Server must be up for ESP to execute“ .
sp_addserver TEST_XP,NULL  添加XP server
4 "xp_cmdshell context"配置参数的设置,此参数为使用 xp_cmdshell 系统 ESP 执行的操作系统命令设置安全性环境,缺省值为1。如果 xp_cmdshell context 设置为 1,在Windows NT下,那么只有当 Adaptive Server 的登录用户的用户名是有效的 Windows NT 用户名(在运行 Adaptive Server 的系统上具有 Windows NT 系统管理权限)时,xp_cmdshell 才能成功。设置为0,sa就可执行。
sp_configure "xp_cmdshell context",0
5 调度服务运行 (不运行也没关系,用xp_cmdshell启动)

思路:
ase在windows上大多都是以服务的形式存在,服务名固定为SYBSQL_@@servername(假定为SYBSQL_test),停止ase 可以用net shop SYBSQL_test,启动ase用net start SYBSQL_test,当然也可以在isql中shutdown停ase和直接执行ase启动bat文件来启动ase。xp_cmdshell可以用来执行系统命令,可以创建一个关闭和启动ase的bat文件,然后再用xp_cmdshell把这个bat写入调度任务中就可以完成ase重启。
declare @todo varchar(250)
select @todo = "echo net stop SYBSQL_" + @@servername + " > c:\restartase.bat" + "&" +  "echo net start SYBSQL_" + @@servername + " >> c:\restartase.bat"
exec xp_cmdshell @todo,no_output \\不要输出结果
go
这样在c:\生成一个restartase.bat文件,内容为net shop SYBSQL_test和net start SYBSQL_test。

declare @todo varchar(250)
select @todo = 'at ' + convert(char(5),dateadd(ss, 120, getdate()),8) + ' cmd /c "c:\restartase.bat"' \\在两分钟之后重启ase
exec xp_cmdshell @todo,no_output
go

总结:
原理很简单,最好在执行之前checkpoint,commit,总之还是shutdown然后登陆系统重启好。
UNIX上的应该差不多,用的较少,就先不写了。

可以转载 请注明作者 echoaix

三种SQL分页法[转帖]

应一个朋友的要求,贴上收藏的SQL常用分页的办法~~

表中主键必须为标识列,[ID] int IDENTITY (1,1)

1.分页方案一:(利用Not In和SELECT TOP分页)

语句形式: 
SELECT TOP 页记录数量 *
FROM 表名
WHERE (ID NOT IN
  (SELECT TOP (每页行数*(页数-1)) ID
  FROM 表名
  ORDER BY ID))
  ORDER BY ID
//自己还可以加上一些查询条件

例:
select top 2 *
from Sys_Material_Type
where (MT_ID not in
    (select top (2*(3-1)) MT_ID from Sys_Material_Type  order by MT_ID))
order by MT_ID

2.分页方案二:(利用ID大于多少和SELECT TOP分页)

语句形式:
SELECT TOP 每页记录数量 *
FROM 表名
WHERE (ID >
          (SELECT MAX(id)
    FROM (SELECT TOP 每页行数*页数 id  FROM 表
          ORDER BY id) AS T)
      )
ORDER BY ID

例:
SELECT TOP 2 *
FROM Sys_Material_Type
WHERE (MT_ID >
          (SELECT MAX(MT_ID)
          FROM (SELECT TOP (2*(3-1)) MT_ID
                FROM Sys_Material_Type
                ORDER BY MT_ID) AS T))
ORDER BY MT_ID

3.分页方案三:(利用SQL的游标存储过程分页)
create  procedure SqlPager
@sqlstr nvarchar(4000), --查询字符串
@currentpage int, --第N页
@pagesize int --每页行数
as
set nocount on
declare @P1 int, --P1是游标的id
@rowcount int
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1, @rowcount=@rowcount output
select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off

4.总结:
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
建议优化的时候,加上主键和索引,查询效率会提高。

通过SQL 查询分析器,显示比较:我的结论是:
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页)  效率次之,需要拼接SQL语句
分页方案三:(利用SQL的游标存储过程分页)    效率最差,但是最为通用

sybase加密ENCRYPTION选项与内存消耗

今天在测试sybase服务器上配置encryption加密功能,测试一下数据加密的新特性。

sp_configure "enable encrypted columns",1

go

之后errorlog中显示:

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

00:00000:00026:2010/01/18 11:09:51.56 kernel  SySAM: Checked out license for 1 ASE_ENCRYPTION (2009.1231/permanent/19B3 47BC 0B7E 8DC3).
00:00000:00026:2010/01/18 11:09:51.56 kernel  Checked out license ASE_ENCRYPTION
00:00000:00026:2010/01/18 11:09:51.67 kernel  SySAM: Failed to obtain 2 license(s) for ASE_ENCRYPTION feature from license file(s) or server(s).
00:00000:00026:2010/01/18 11:09:51.67 kernel  SySAM: ASE requires 2 'per-CPU' licenses for use on this machine but only 1 could be obtained. Check whether additional licenses are available at the Sybase Product Download Center; or check whether the licensing terms allow you to partition the machine so that ASE can only use 1 CPU(s).
00:00000:00026:2010/01/18 11:09:51.67 kernel  SySAM: License feature name:  ASE_ENCRYPTION
00:00000:00026:2010/01/18 11:09:51.67 kernel  SySAM: License search path:   D:\sybase\\SYSAM-2_0\licenses\SYBASE_ASE_DE.lic
00:00000:00026:2010/01/18 11:09:51.67 kernel  SySAM: FLEXnet Licensing error:-73,125
00:00000:00026:2010/01/18 11:09:51.67 kernel  SySAM: For further information, refer to the Sybase Software Asset Management website at http://www.sybase.com/sysam
00:00000:00026:2010/01/18 11:09:51.73 server  Configuration file 'D:\sybase\TEST.cfg' has been written and the previous version has been renamed to 'D:\sybase/TEST.057'.
00:00000:00026:2010/01/18 11:09:51.73 server  The configuration option 'enable encrypted columns' has been changed by 'sa' from '0' to '1'.

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

重启了一下sybase服务器,就启动不起来了。

errorlog如下:

0:00000:00000:2010/01/18 15:11:26.37 kernel  SySAM: Using licenses from: D:\sybase\\SYSAM-2_0\licenses
00:00000:00000:2010/01/18 15:11:27.31 kernel  SySAM: Checked out license for 1 ASE_CORE (2009.1231/permanent/19B3 47BC 0B7E 8DC3).
00:00000:00000:2010/01/18 15:11:27.31 kernel  This product is licensed to: ASE Developer Edition - For Development and Test use only
00:00000:00000:2010/01/18 15:11:27.31 kernel  Checked out license ASE_CORE
00:00000:00000:2010/01/18 15:11:27.31 kernel  Adaptive Server Enterprise (Developer Edition)
00:00000:00000:2010/01/18 15:11:27.48 kernel  Using config area from primary master device.
00:00000:00000:2010/01/18 15:11:27.53 kernel  Warning: Using default file 'D:\sybase\TEST.cfg' since a configuration file was not specified. Specify a configuration file name in the RUNSERVER file to avoid this message.
00:00000:00000:2010/01/18 15:11:27.53 server  Illegal value '1' specified for configuration option 'max online engines'. The legal values are between '2' and '2'.
00:00000:00000:2010/01/18 15:11:27.53 server  The value specified for configuration option 'max online engines' '1' cannot be less than the sum of the configuration options 'number of engines at startup' and 'max online Q engines'. The current sum is '2'.
00:00000:00000:2010/01/18 15:11:27.53 server  'max online engines' has been modified from '1' to '2' by the verification routine.
00:00000:00000:2010/01/18 15:11:27.56 kernel  SySAM: Checked out license for 1 ASE_PARTITIONS (2009.1231/permanent/19B3 47BC 0B7E 8DC3).
00:00000:00000:2010/01/18 15:11:27.56 kernel  Checked out license ASE_PARTITIONS
00:00000:00000:2010/01/18 15:11:27.59 kernel  SySAM: Checked out license for 1 ASE_ENCRYPTION (2009.1231/permanent/19B3 47BC 0B7E 8DC3).
00:00000:00000:2010/01/18 15:11:27.59 kernel  Checked out license ASE_ENCRYPTION
00:00000:00000:2010/01/18 15:11:27.59 server  The value of the 'max memory' parameter (39936) defined in the configuration file is not high enough to set the other parameter values specified in the configuration file. 'max memory' should be greater than the 'total logical memory' '41568'.

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

暂时忽略number of engines at startup 和 max online engines 这两个参数不一致的情况。因为我的本是双核cpu。

关于内存配置,我没有调整max memory,在.cfg文件中一致都是DEFAULT。现在启动的时候报内存39936不够用,需要41568bytes内存。说明sybase中的 encryption选项是需要消耗一定的内存的, 另外用加密这个选项不知道对性能的影响有多大。想想每次写入数据库设备的数据都要在内存中进行加密处理了之后才写入磁盘。这给处理器有增加了负担。对性能的影响待以后有时间体会一下。

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

恢复注册表中的sybase服务信息

很郁闷,对360很失望。上午在用360优化电脑的时候,平时我是不用什么优化大师或者什么兔子、360来倒腾电脑的。因为:我觉得也不知道软件具体删除了哪些文件,误删了文件就麻烦了。果不其然,360把我的服务信息给搞没了。

在用360软件管家中的开机加速后,我的一些服务不能自动启动了。

从其他sybase服务器上导出项目HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SYBSQL_TEST 的信息,用记事本打开,如下的信息:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SYBSQL_TEST ]
"Type"=dword:00000010
"Start"=dword:00000003
"ErrorControl"=dword:00000001
"ImagePath"=hex(2):64,00,3a,00,5c,00,73,00,79,00,62,00,61,00,73,00,65,00,5c,00,\
  41,00,53,00,45,00,2d,00,31,00,32,00,5f,00,35,00,5c,00,62,00,69,00,6e,00,5c,\
  00,73,00,71,00,6c,00,73,00,72,00,76,00,72,00,2e,00,65,00,78,00,65,00,20,00,\
  2d,00,73,00,4c,00,49,00,55,00,5a,00,48,00,45,00,4e,00,46,00,55,00,20,00,2d,\
  00,43,00,00,00

"DisplayName"="Sybase SQLServer _ TEST"
"ObjectName"="LocalSystem"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SYBSQL_TEST \Enum]
"0"="Root\\LEGACY_SYBSQL_TEST \\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SYBSQL_TEST \Performance]
"Library"="d:\\sybase\\ASE-15_0\\dll\\sybperf15.dll"
"Open"="sybperf_open"
"Collect"="sybperf_collect"
"Close"="sybperf_close"
"Last Counter"=dword:00000ea2
"Last Help"=dword:00000ea3
"First Counter"=dword:00000a4a
"First Help"=dword:00000a4b
"inifile_version"="15"
"WbemAdapFileSignature"=hex:eb,32,0b,37,22,b5,36,f0,55,9b,2f,92,7a,2f,eb,3d
"WbemAdapFileTime"=hex:1e,bd,1d,f4,f4,99,c8,01
"WbemAdapFileSize"=dword:00009600
"WbemAdapStatus"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SYBSQL_TEST \Security]
"Security"=hex:01,00,14,80,90,00,00,00,9c,00,00,00,14,00,00,00,30,00,00,00,02,\
  00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,\
  00,00,02,00,60,00,04,00,00,00,00,00,14,00,fd,01,02,00,01,01,00,00,00,00,00,\
  05,12,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,\
  20,02,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,0b,00,00,00,00,\
  00,18,00,fd,01,02,00,01,02,00,00,00,00,00,05,20,00,00,00,23,02,00,00,01,01,\
  00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00

请将红色的TEST替换为你的sybase服务器名称即servername。如果你是导出的12.5版本的注册表信息,请修改对应的Library值(红色标记)。 蓝色标记的ImagePath是十六进制的,请在注册表内修改,就是系统启动的程序的路径。

修改完之后,就可以启动sybase服务了。在服务中启动或者sc start sybsql_servername   都是可以的!

其它类似backup,monitor,xpserver,和主服务类似。不再赘述。

但是很郁闷,我的sql server database analysis agent服务不知道该如何添加注册表信息了。估计只能通过重新安装程序来解决了。

到注册表了查看,关于SYBBCK_TEST_BS ,SYBMON_TEST_MS ,    SYBSQL_TEST ,SYBXPS_TEST_XP,以及 sql server database analysis agent 服务的信息全不见了。 360太可恨了,幸亏本人懂sybase的注册表配置信息,不然真的重装一遍sybase系统了。

————————————————————————————————————
——— 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
——— 转载务必注明原始出处 : http://www.dbainfo.net
——— 关键字: sybase 注册表 360 服务 恢复
————————————————————————————————————

关于sybase的字符集问题

将Sybase的字符集调整为支持简体中文的cp936字符集。

 步骤如下:

(这里假设SYBASE的安装路径为c:\sybase) 
1.c:\>cd \sybase\charsets\cp936
2.c:\sybase\charsets\cp936> charset -U用户名 -P密码 -S数据库服务器名称 binary.srt cp936

更改默认字符集为cp936
3.在SQL环境中
1>select name,id from syscharsets(会列出字符集对应的id号)
2>go
找到name为cp936对应的id(假设为171)
.1>sp_configure "default character set id",171
2>go
5.重启server两次
(注:第一次启动后,server会自动宕掉,需要第二次重启后才能使用)

启动之后,要清空日志。应该是sybase日志恢复时不会转换字符集吧,所以先前的日志没有作用了。要及时清除掉!
清空提交日志dump tran dbname with  truncate_only

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

SYBASE使用utf8字符集出现乱码问题的解决

于国际化的原因,现在使用sybase15.0.3字符集utf8作为默认字符集,现在客户端与服务端一致都配置成为 locale=default,us_english,utf8 ,发现使用客户端写入数据后,汉字全为乱码。在isql下用iso_1,cp850字符集连接上,查询已有数据汉字全为乱码。

解决的办法:

将客户端改为cp936,或者在isql连接的时候指定字符集为简体中文字符集cp936即-Jcp936。

问题解决!

ps:在isql查看客户端字符集为:select @@client_csname
查看服务器的默认排序顺序:sp_configure "default sortorder"

————————————————————————————————————
——— 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
——— 转载务必注明原始出处 : http://www.dbainfo.net
——— 关键字:  ASE 字符集 简体中文  CP936 UTF8 乱码
————————————————————————————————————

用vnc实现windows远程连接linux桌面

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

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

配置tomcat时遇到的jdk没有解压完全的问题

今天下午在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

Secure CRT 乱码问题解决

最近学习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
 
 
另一篇文章链接: