1. Linux 兼容
其实在 FreeBSD 下安装 Oracle9i ,实质上是在 Linux 下安装。不过是由 FreeBSD 提供一个兼容环境而已。
应该说 FreeBSD 提供的 Linux 环境已经足够好了,但是我们还是需要做点工作:
1. 建立 /compat/linux/etc/mtab
#cat /etc/fstab | grep -v '^#' | grep -v cd9660 | grep -v proc | grep -v swap | grep -v devfs > /compat/linux/etc/mtab
他生成的内容是:
/dev/ad0s2a / ufs rw 1 1
/dev/ad1s1 /u01 ufs rw 1 1
我生成的内容是:
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1e /tmp ufs rw 2 2
/dev/ad0s1f /usr ufs rw 2 2
/dev/ad0s1d /var ufs rw 2 2
2. 创建链接
#ln -s /usr/bin/awk /compat/linux/bin/awk
#ln -s /usr/bin/sed /compat/linux/bin/sed
#ln -s /usr/bin/chown /compat/linux/bin/chown
3. 创建 /compat/linux/bin/arch
#cat > /compat/linux/bin/arch
#!/compat/linux/bin/bash
echo i686
^D
然后给它执行权
#chmod +x /compat/linux/bin/arch
如果你愿意,给它也来个链接也是不错的
#ln -s /compat/linux/bin/arch /bin/arch
2. 修改 KERNEL
#cd /usr/src/sys/i386/conf
#cp GENERIC ORACLE
#cat >> ORACLE
options SEMMAP=128
options SEMMNI=128
options SEMMNS=32000
options SEMOPM=250
options SEMMSL=250
options SHMMAXPGS=65536
options SHMMAX=1073741824
options SHMMNI=4096
options SHMSEG=4096
options MAXDSIZ=”(102410241024)”
options MAXSSIZ=”(102410241024)”
options DFLDSIZ=”(102410241024)”
^D
- 注,好象高手们都比较喜欢纯命令行,连个 VI 也不舍得用。
#config ORACLE
#cd ../compile/ORACLE
#make depend install
#reboot
如果你象我一样还没编译过内核,可能会出现如下提示:
You must build a kernel first
这时,只需要执行:
就是这句: #make depend install 改成:
#make depend
#make
#make install 就 OK 了。
3. 设置 Oracle 的用户环境变量
昨天安装时只是创建了 oracle 用户,对组并没有细分。现在也补上吧。应该是个好习惯。
#cat >> /etc/group
oraoper:*:97:oracle
oradb:*:98:oracle
oracle:*:99: # 这句因为加 oracle 用户时自动加了,所以我并没有写。
^D
#adduser 就略过了
#mkdir -p /home/oracle 同上
#chown -R oracle:oracle /home/oracle 这句好象我当时没有执行,加上
接下来是关键了
#cat > /home/oracle/.profile
ORACLE_HOME=/usr/opt/ora9i/product/9.2.0.1.0
ORACLE_SID=ORACLE
PATH=$ORACLE_HOME/bin:$PATH
PS1='oracle-freebsd> '
export ORACLE_HOME ORACLE_SID PATH PS1
^D
如果你没有 DNS ,需用要在 hosts 文件里加上
#echo “
1<your address="" ip=""> <hostname>” >> /etc/hosts
2
3
4
5
6准备好了,现在可以进行安装了。
7
8cd /usr/local/ora9i/Disk1 「我把安装包解到这里了」
9
10
11
12
13#xhost +local:oracle # 给 oracle 用户本地访问 X 的权利
14
15#su – oracle
16
17#export DISPLAY=:0
18
19#cd /usr/local/ora9i/Disk1
20
21#./runInstaller
22
23我在运行 runInstaller 时出现了一个错误:
24
25ELF binary type=”0” not known.
26
27./runInstaller:1:Syntax error:”(“unexpected.
28
29经过 google+ 测试,可以运行 #kldload linux 来解决『这个应该在内核编译时指定选项来搞定吧,有时间试一下。』
30
31果然可以安装了,选择 Custom 方式,只安装 Oracle 9i Database ,安装过程出现 15 处错误,全部 ignore 了。网上有很多人说他们在 Linux 上安装时也出现这样的错误,诸如:
32
33Error in invoking target ctx_on of make file:
34
35/usr/opt/ora9i/product/9.2.0.1.0/rdbms/lib/ins_rdbms.mk
36
37不过还好,全部安装完毕。
38
39结尾的时候运行 Net Assistant 出错, Agent 时出错,创建数据库时出错。(是我 echo i586 的错误)
40
41运行 sqlplus 时,提示: libclntsh.so 找不到
42
43果然在 lib 里没有它,
44
45
46
47
48按 Brian C. Ledbetter 所 说需要:
49
50#LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH
51
52我一开始采用的是在安装文件里「安装文件在 /usr/local/ora9i 」执行
53
54find . -name 'libclnt*' -print
55
56结果发现在
57
58./Components/oracle.swd.oui/2.2.0.12.0/DataFiles/Expanded/bin/linux/libclntsh.so[.9.0]
59
60sqlplus 终于可以运行了,不过还是有错误:
61
62oracle-freebsd> sqlplus /nolog
63
64....
65
66SQL> connect / as sysdba
67
68TNS: lost contact
69
70留给第四天吧。</hostname></your>