unix小白入手Mac Air后的悲催生活 -
目的
1. Mac 系统重安装Eclipse, Tomcat等
2. 虚拟机中安装Oracle11g (VirtualBox + Win7)
3. Mac中安装Oracle Client,SQL Developer,并设置系统变量。
看似简单的1,2,3,让我郁闷得脸都扭曲了。
===================================
Step1. - 安装Eclipse,Tomcat 以及jdk
参看 How to install jdk on windows, mac and linux
http://www3.ntu.edu.sg/home/ehchua/programming/howto/JDK_Howto.html
现在看step 3.
3.1 下载 oracle client
到oracle官网下载 Instant Client Downloads for Mac OS X (Intel x86)
http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html
注意啊!虽然有 64bit的,但是你还是要下载 32bit的,否则启动sqlplus时会遇到 Segmentation fault: 11的错误
(本人已做白鼠,还有不信邪的可以装64bit的试试)
先下载2个包 instantclient-basic 和 instanceclient-sqlplus
解压缩到同一个文件夹中, 比如instanceclient_10_2
3.2 配置oracle client 以及环境变量
具体请参看我另一片转发的文章
http://blog.csdn.net/ashleygu/article/details/8122799
同时需要在VM中的listener.ora中加入监听地址。
3.3 mac 配置bash_profile
1. 进入当前用户的home目录
输入cd ~
2. 创建.bash_profile (这个是隐藏文件哦,需要系统管理员密码才能修改)
输入touch .bash_profile
3. 编辑.bash_profile文件
输入vim ~/.bash_profile
或者在terminal 以下命令可以直接用Mac的文本编辑器打开
open -e .bash_profile
4. 添加环境bi变量
export DYLD_LIBRARY_PATH=/Applications/Utilities/instantclient/
export ORACLE_HOME=/Applications/Utilities/instantclient/
export SQLPATH=$ORACLE_HOME
export PATH=$PATH:/Applications/Utilities/instantclient/:.
5. 保存文件,关闭.bash_profile
6. 更新刚配置的环境变量
输入source .bash_profile
添加mysql和mysqladmin的别名 只在当前shell中有效。
#mysql
alias mysql='/usr/local/mysql/bin/mysql'
alias mysqladmin='/usr/local/mysql/bin/mysqladmin'
3.4 安装sql developer
3.4.1 windows上安装
oracle官网下载的 zip包解压缩后,直接执行sqldeveloper.exe.
提示需要java.exe
安装jdk7, 打开路径(默认路径 C:\Programs Files\Java\jdk1.7.0XXX\jre\bin) 选者java.exe
确认后提示 msvcr100.dll is missing from your computer错误
It is the C++ Redistributable Package 2010.
http://www.microsoft.com/download/en/details.aspx?id=26999
Pick the file named vcredist_x64.exe(64bit) or vcredist_x86.exe (32bit)
安装后重启sql developer, 可以正常进入。
3.5 到MAC中用sqlplus 连接windows数据库,竟然timeout
MacBook-Air:~ ashley$ sqlplus hr/hr@orcl
SQL*Plus: Release 10.2.0.4.0 - Production on Thu Nov 1 00:35:49 2012
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
ERROR:
ORA-12170: TNS:Connect timeout occurred
Enter user-name:
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
筒子们,血的教训呀!!!
虽然我看了一些帖子说可能是防火墙的关系,自信满满地到services.msc中将Security Center给disable了。
还是没有用,用telnet 都 ping 不到端口 (telnet vm_ip 1521)
此后尝试将Virtual Box一会儿切换到NAT,一会儿设置成 Bridged Adapter, 最后又设成Host-only.
头皮抓了两天,真是悲催了。症状就是,主机能够ping虚拟机的ip,但是端口不通。
LG跟我说是不是防火墙要关掉,偶回答说早就关掉啦 (看来不懂还是千万不能装懂呀)
偶然又打开control panel, 才明白 windows firewall - 坑爹的是这么关的!!!
打开Control Panel -> System and Security -> Windows Firewall -> Turn Windows Fireware on or off
或者可以选择Advanced Setting -> Inbound Rules, 手动选择要开启的端口。
另外可以参考以下文章,如何让oracle穿过防火墙~
http://wenku.baidu.com/view/3e5c0b1414791711cc791755.html
回到Mac, 用sql developer或者sqlplus均能连接到virtualbox上的oracle 11g.