这真是个无比古怪的需求,需要让一些同事能访问oracle,但是不允许他们通过剪切板拷贝数据。

这只能是kvm+Ubuntu+wine+plsql+xrdp来实现了(CentOS应该也没问题)

首先准备ubuntu的iso,选精简的server版,桌面手动装:

wget http://mirrors.163.com/ubuntu-releases/12.04/ubuntu-12.04.5-server-i386.iso  

生成kvm虚机磁盘:

qemu-img create -f qcow2 /home/kvm/ubuntu.qcow2 20G  

安装kvm虚机:

virt-install \  
    --name=ubuntu \
    --vcpu=1 \
    --ram=2048 \
    --disk path=/home/kvm/ubuntu.qcow2,format=qcow2,size=20 \
    --cdrom=/home/kvm/ubuntu-12.04.5-server-i386.iso \
    --os-type=linux  \
    --network bridge=br0 \
    --vnc --vnclisten=0.0.0.0 --vncport=5901

这时候就要连到实机的vnc 5901端口,开始安装。反正是只要用plsql的,所以缺省都可。记住要装上sshd server,便于远程管理。

装ubuntu时会提示生成一个非root用户,就叫plsql好了。

安装不表,安装好了以后因为装了sshd,所以就可以ssh远程操作了。

安装wine:

sudo apt-get install software-properties-common  
sudo add-apt-repository ppa:ubuntu-wine/ppa  
sudo apt-get update  
sudo apt-get install wine  

安装xrdp和gnome-shell以及输入法:

sudo apt-get install xrdp  
sudo apt-get install gnome-shell  
sudo apt-get install ibus  
sudo apt-get install fcitx-table-wbpy  

设置xrdp由gnome-session控制:

#vi /etc/xrdp/startwm.sh
...
#加一行,用gnome-session控制
echo "gnome-session --session=gnome-classic" > .xsession  
. /etc/X11/Xsession
...

设置xrdp的登录,去掉其它不需要的登录方式,只留一种并改名:

# vi /etc/xrdp/xrdp.ini
[globals]
bitmap_cache=yes  
bitmap_compression=yes  
port=3389  
crypt_level=low  
channel_code=1

[xrdp1]
name=plsql server  
lib=libvnc.so  
username=ask  
password=ask  
ip=127.0.0.1  
port=-1  

ok, 先运行一下wine,生成目录结构以及注册表文件

wine regedit  

在ssh终端运行以上的命令会退出,不要紧,退出时其实目录结构和注册表文件已经生成好了。

我们编辑一下注册表,改动一下PATH并且添加2个环境变量:

vi ~/.wine/system.reg  
...
[System\\CurrentControlSet\\Control\\Session Manager\\Environment] 1464861672
"ComSpec"=str(2):"C:\\windows\\system32\\cmd.exe"
"NUMBER_OF_PROCESSORS"="1"
"ORACLE_HOME"="c:\\oracle"
"OS"="Windows_NT"
"PATH"=str(2):"c:\\oracle\\bin;C:\\windows\\system32;C:\\windows;C:\\windows\\system32\\wbem"
"PATHEXT"=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH"
"PROCESSOR_ARCHITECTURE"="x86"
"PROCESSOR_IDENTIFIER"="x86 Family 6 Model 13 Stepping 3, GenuineIntel"
"PROCESSOR_LEVEL"="6"
"PROCESSOR_REVISION"="0d03"
"SystemDrive"="c:"
"SYSTEMROOT"="C:\\windows"
"TEMP"=str(2):"C:\\windows\\temp"
"TMP"=str(2):"C:\\windows\\temp"
"TNS_ADMIN"="c:\\oracle\\network\\admin"
"windir"=str(2):"C:\\windows"
"winsysdir"="C:\\windows\\system32"
...

注意上面,我们添加了两行TNSADMIN和ORACLEHOME,修改了PATH,总共三个地方。

我们再下载oracle的客户端,basic的即可,并解压到指定地方:

mkdir -p ~/.wine/drive_c/oracle/network/admin  
wget http://eservice.yru.ac.th/d/instantclient-basic-nt-11.2.0.4.0.zip -o /tmp/instantclient-basic-nt-11.2.0.4.0.zip  
cd ~/.wine/drive_c/oracle  
unzip -x /tmp/instantclient-basic-nt-11.2.0.4.0.zip  
mv instantclient_11_2 bin  

ok,大环境就准备好了。

下载plsql

mkdir ~/Desktop  
#下好plsqldev904.exe
mv plsqldev904.exe ~/Desktop  
wget http://www.rendoumi.com/soft/plsql.icon -o /etc/plsq.icon  

然后用远程桌面登录这台机器

直接会看到桌面上有个exe

双击执行,就开始安装了

然后I Agree,都按缺省的安装即可

装完后,就直接把这个plsql.exe删除即可

然后生成个桌面快捷方式:

# vi ~/Desktop/PLSQL\ Developer.desktop
[Desktop Entry]
Name=PLSQL Developer  
Exec=wine "/home/plsql/.wine/dosdevices/c:/Program Files/PLSQL Developer/plsqldev.exe"  
Path=/home/plsql/.wine/dosdevices/c:/Program Files/PLSQL Developer  
Icon=/etc/plsql.icon  
Type=Application  
Categories=Wine;  

这时候回到远程桌面,已经可以看到桌面上多了个白色的东西:

右键点击,打开Properties:

把Allow executing file as program给勾住,图表也显示出来了

ok,弄好了,最后运行即可,是可以输入汉字的:

最后补充一下,tnsnames.ora是放在下面这个目录下的:

~/.wine/drive_c/oracle/network/admin
comments powered by Disqus