这真是个无比古怪的审计需求,需要让一些同事能访问oracle,但是不允许他们通过剪切板拷贝数据。
这只能是kvm+Ubuntu+xrdp+wine+plsql来实现了(CentOS应该也没问题)
首先准备ubuntu的iso,选精简的server版,桌面手动装:
1wget http://mirrors.163.com/ubuntu-releases/12.04/ubuntu-12.04.5-server-i386.iso
生成kvm虚机磁盘:
1qemu-img create -f qcow2 /home/kvm/ubuntu.qcow2 20G
安装kvm虚机:
1virt-install \
2 --name=ubuntu \
3 --vcpu=1 \
4 --ram=2048 \
5 --disk path=/home/kvm/ubuntu.qcow2,format=qcow2,size=20 \
6 --cdrom=/home/kvm/ubuntu-12.04.5-server-i386.iso \
7 --os-type=linux \
8 --network bridge=br0 \
9 --vnc --vnclisten=0.0.0.0 --vncport=5901
这时候就要连到实机的vnc 5901端口,开始安装。反正是只要用plsql的,所以缺省都可。记住要装上sshd server,便于远程管理。
装ubuntu时会提示生成一个非root用户,就叫plsql好了。
安装不表,安装好了以后因为装了sshd,所以就可以ssh远程操作了。
安装wine:
1sudo apt-get install software-properties-common
2sudo add-apt-repository ppa:ubuntu-wine/ppa
3sudo apt-get update
4sudo apt-get install wine
安装xrdp和gnome-shell以及输入法:
1sudo apt-get install xrdp
2sudo apt-get install gnome-shell
3sudo apt-get install ibus
4sudo apt-get install fcitx-table-wbpy
设置xrdp由gnome-session控制:
1#vi /etc/xrdp/startwm.sh
2...
3#加一行,用gnome-session控制
4echo "gnome-session --session=gnome-classic" > .xsession
5. /etc/X11/Xsession
6...
设置xrdp的登录,去掉其它不需要的登录方式,只留一种并改名:
1# vi /etc/xrdp/xrdp.ini
2[globals]
3bitmap_cache=yes
4bitmap_compression=yes
5port=3389
6crypt_level=low
7channel_code=1
8
9[xrdp1]
10name=plsql server
11lib=libvnc.so
12username=ask
13password=ask
14ip=127.0.0.1
15port=-1
ok, 先运行一下wine,生成目录结构以及注册表文件
1wine regedit
在ssh终端运行以上的命令会退出,不要紧,退出时其实目录结构和注册表文件已经生成好了。
我们编辑一下注册表,改动一下PATH并且添加2个环境变量:
1vi ~/.wine/system.reg
2...
3[System\\CurrentControlSet\\Control\\Session Manager\\Environment] 1464861672
4"ComSpec"=str(2):"C:\\windows\\system32\\cmd.exe"
5"NUMBER_OF_PROCESSORS"="1"
6"ORACLE_HOME"="c:\\oracle"
7"OS"="Windows_NT"
8"PATH"=str(2):"c:\\oracle\\bin;C:\\windows\\system32;C:\\windows;C:\\windows\\system32\\wbem"
9"PATHEXT"=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH"
10"PROCESSOR_ARCHITECTURE"="x86"
11"PROCESSOR_IDENTIFIER"="x86 Family 6 Model 13 Stepping 3, GenuineIntel"
12"PROCESSOR_LEVEL"="6"
13"PROCESSOR_REVISION"="0d03"
14"SystemDrive"="c:"
15"SYSTEMROOT"="C:\\windows"
16"TEMP"=str(2):"C:\\windows\\temp"
17"TMP"=str(2):"C:\\windows\\temp"
18"TNS_ADMIN"="c:\\oracle\\network\\admin"
19"windir"=str(2):"C:\\windows"
20"winsysdir"="C:\\windows\\system32"
21...
注意上面,我们添加了两行TNSADMIN
和ORACLE_HOME
,并修改了PATH
,总共三个地方。
我们再下载oracle的客户端,basic的即可,并解压到指定地方:
1mkdir -p ~/.wine/drive_c/oracle/network/admin
2wget 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
3cd ~/.wine/drive_c/oracle
4unzip -x /tmp/instantclient-basic-nt-11.2.0.4.0.zip
5mv instantclient_11_2 bin
ok,大环境就准备好了。
下载plsql
1mkdir ~/Desktop
2
3#下好plsqldev904.exe
4mv plsqldev904.exe ~/Desktop
5wget http://www.rendoumi.com/soft/plsql.icon -o /etc/plsq.icon
然后用远程桌面登录这台机器
直接会看到桌面上有个exe
双击执行,就开始安装了
然后I Agree,都按缺省的安装即可
装完后,就直接把这个plsql.exe删除即可
然后生成个桌面快捷方式:
1# vi ~/Desktop/PLSQL\ Developer.desktop
2[Desktop Entry]
3Name=PLSQL Developer
4Exec=wine "/home/plsql/.wine/dosdevices/c:/Program Files/PLSQL Developer/plsqldev.exe"
5Path=/home/plsql/.wine/dosdevices/c:/Program Files/PLSQL Developer
6Icon=/etc/plsql.icon
7Type=Application
8Categories=Wine;
这时候回到远程桌面,已经可以看到桌面上多了个白色的东西:
右键点击,打开Properties:
把Allow executing file as program给勾住,图表也显示出来了
ok,弄好了,最后运行即可,是可以输入汉字的:
最后补充一下,tnsnames.ora是放在下面这个目录下的:
1~/.wine/drive_c/oracle/network/admin