参考文档:http://wiki.ubuntu.org.cn/Ubuntu%E4%B8%8AOracle10g%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97
需求:本人希望在自己当前用户下就可以开启数据库,并且使用MyEclipse可以直接连接安装的数据库,所有本人没有创建新的组和用户,而是在当前用户下安装oracle。如果您不是这个需求,建议您参照上面的参考文档。
1. 配置源(可略)
Oracle 为 Ubuntu 用户设立了专门的 apt 源服务器,只需要在 /etc/apt/source.list 中添加下面这行既可。
deb http://oss.oracle.com/debian unstable main non-free
将该源服务器的公钥添加在本地 apt 系统的密钥库中。首先下载公钥,在终端输入:
wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle
下载完成之后添加该公钥到密钥库中,在终端输入:
sudo apt-key add RPM-GPG-KEY-oracle
执行:
sudo apt-get update
同步软件包索引文件。
2. 安装需要的包
sudo apt-get install gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 libaio1 libstdc++6 alien
3. 将 oracle 安装到一个独立的分区上面,如:/opt上。本人的安装目录为/opt/ora10。
//创建ora10目录。
$ sudo mkdir -p /opt/ora10
//修改目录的拥有者和组,其中UX为用户名,GX为该用户所在的组。本人要在本人当前用户下安装,所以本人的UX就是本人当前用户的用户名,组就是这个用户名所在的组。
$ sudo chown -R UX:GX /opt/ora*
//修改目录的权限
$ chmod -R 775 /opt/ora*
4. 修改sysctl.conf设置
$ sudo gedit /etc/sysctl.conf
添加如下的行到/etc/sysctl.conf 中:
----------------------------------------------
kernel.shmmax = 3147483648
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
----------------------------------------------
注:shmmax(最大共享内存)是一个很重要参数,根据您的机器的内存来设定。如果您设置不合适的话,在创建数据库到约 86%的时候就会挂掉。但是具体该怎么去计算,本人也不太清楚,所有只好将参考文档上的搬来使用了,希望高人能够予以指教。
5. 修改 limits.conf设置
$ sudo gedit /etc/security/limits.conf
添加下面的行到/etc/security/limits.conf 以修改您的资源限制。
----------------------------------------------
* soft nproc 2407
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
----------------------------------------------
6. 让修改生效
修改了以上文件后,必须让其生效,重启系统或切换到 root 用户下用以下的方式改变内核运行参数:
# sysctl –p。
7. 修改SWAP区
安装 Oracle 10g推荐至少 512M 内存和至少400M 交换空间。
重设交换分区可以使用如下操作:
$ sudo dd if=/dev/zero of=tmp_swap bs=1k count=900000
// count 值是根据您需要调整的交换分区大小而定。
$ sudo chmod 600 tmp_swap
$ sudo mkswap tmp_swap
$ sudo swapon tmp_swap
查看当前的交换空间大小 命令是:swapon -s。
注意:当重新启动后,手动设置的交换空间会失效,需要重新设置。
完成安装以後,可以释放这个空间:
$ sudo swapoff tmp_swap
$ sudo rm tmp_swap
8. 创建程序链接
ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/rpm /bin/rpm
ln -s /usr/bin/basename /bin/basename
9. 设置环境变量。
编辑 /home/oracle/.bashrc 。
$ gedit ~/.bashrc
添加如下内容:(其中UX是您的用户名,SIDName 为您的实例名,您可以设置成自己想要的。记住自己设置的,当然,如果您忘记了,这里也是查询的一个地方)。
----------------------------------------------
export ORACLE_BASE=/opt/ora10
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export ORACLE_OWNER=UX
export ORACLE_SID=SIDName
export ORACLE_TERM=xterm
----------------------------------------------
修改并保存后。关闭gedit,然后使用命令让配置生效。
$ source ~/.bashrc
10. 设置语言(可略)
在安装之前设置LANG为en_US,因为oracle安装界面对中文支持并不算很友好。原因是这样的:本人在安装时,并没有设置为英文,刚开始安装的时候中文显示的很正常,但是到了修改用户密码的界面时,就出现了方块,好在对以前安装有印象,所以没有出什么问题。因为界面的英文也是很简单的,所以建议安装的时候将语言设置为英文。根据自己的情况而定吧。
$ export LANG=en_US.UTF-8
11. 开始正式安装
注意事项:
11.1 确定修改了数据库的操作权限。可以在database目录下使用:
$ chmod 755 *
11.2 此处的安装不可以使用超级用户来安装,因为本人使用的过程中报错了,提示就是不能是root用户。建议新开一个终端来安装。
11.3 一个可选的操作是:
创建RedHat的版本声明文件。在/etc/redhat-release中添加以下语句,以便安装程序认为正在一个RedHat的系统上安装。
Red Hat Linux release 3.1 (drupal)
但是,如果您不想这样来设置,可以在后面安装过程中指定参数(-ignoreSysPrereqs)忽略这些非必要的话也可以安装成功。
11.4 最好不要将这个database目录放在有中文名字的目录下。
安装的命令。到database目录下,执行:
$ ./runInstaller -ignoreSysPrereqs -jreLoc /usr/java/jdk1.6.0_18
说明:-ignoreSysPrereqs是为了欺骗安装程序,如果按照上面11.3处设置 了,就不需要这个参数的了。-jreLoc,指定一下您的java的安装路径,可选。
在安装过程中,请使用 Advanced Installation,然后一路按默认的设置进行往下设置,注意设置您自己的数据库默认的字符集及数据库的密码。在安装的后期,系统提示需要用 root 用户去运行两个脚本文件orainstRoot.sh和root.sh,按照提示去执行就行。安装的最后,会出现一个提示框,您可以使用下面的提示url来连接一下您的数据库。
12. 本人遇到的问题和解决办法
12.1 在运行root.sh时,出现下面的信息:
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
/bin/chgrp: 无效的组:"nobody"
解决的办法是:在新开的终端中创建这个组,然后重新执行root.sh。
12.2 本人选择的默认字符集是 AMERICAN_AMERICA.AL32UTF8,所以后来在使用过程中,中文出现了乱码。
解决办法是:在.bashrc中添加客户端的字符集:
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
12.3 调用makefile '/opt/oracle/product/10.2/network/lib/ins_net_client.mk' 的目标 'client_sharedlib' 时出错。请参阅'/XXX/logs/installActionsXXXPM.log' 以了解详细信息。
本人经过查看这个安装日志,发现是不存在/usr/lib/libstdc++.so.5,因为在上面安装的是 libstdc++6。解决办法是,创建一个软连接,如下:
$ sudo ln -s /usr/lib/libstdc++.so.6.0.13 /usr/lib/libstdc++.so.5
本人觉得在这个安装过程中可能出现的问题挺多的,遇到问题后应该去提示的日志文件中查看到底是什么问题,然后再根据具体原因来解决。之所以是这么说,是因为本人在安装过程中,遇到弹出的错误提示时,并不知道先去查看日志,而是去网上搜索这个提示错误的解决办法,搜到的结果倒是挺多的,但是都不太是我想要的,最后才意识到去看日志,自己就将这个问题给解决了。
这是本人结合参考文档和自己的实际操作而写的,因为本人也是个初学者,好多东西也不太明白,所以某些安装做法会贻笑大方,希望能够予以指教。如果这篇文章能够帮助您,那我也感觉很荣幸,希望我们共同进步。