Ubuntu oracle10g xe(即oracle10g 特别版)安装过程总结
安装环境:Ubuntu 8.04
软件:oracle-xe-universal_10.2.0.1-1.0_i386.deb
oracle-xe-client_10.2.0.1-1.0_i386.deb
注:oracle XE 的deb版,由于Ubuntu是基于debain的所以我们下载deb的了!
(oracle的网站上,或者搜索去)
硬件环境:内存512MB,硬盘空间15GB(我的分配情况是 swap空间:1GB; / : 9GB;/home : 5GB)
参考文章:http://yangzb.javaeye.com/blog/594409 (主要参考的博文,有所修改)
http://forum.ubuntu.org.cn/viewtopic.php?f=44&t=243033&start=0&sid=80b64c4734650576f6bf46f916fb0bfd
1安装所需要的包。
因为oracle XE 要求就至少glibc – 2.3.2 libaio – 0.3.96 我把一下的包统统都装上了,为了以防失败
gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 libaio libstdc++5 alien
安装方法:
$sudo apt-get install gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 libaio libstdc++5 alien
因为没有libaio,提示可以安装libaio1,因此
$sudo apt-get install libaio1 //安装libaio1
2设置交换分区,因为Oracle要求至少1G 的交换分区,为了防止安装时交换分区的不足我在这里建立了新的交换分区
可以首先查看内存分配是否满足要求:
$free -m //查看空间分配情况,下面的是我机子的分配情况
total used free shared buffers cached
Mem: 503 494 9 0 13 127
-/+ buffers/cache: 353 150
Swap: 972 185 787
此时发现分配的swap还差一些
$sudo dd if=/dev/zero of=/tmp/tmp.swap bs=1M count=100 //在/tmp 目录下建立100M的交换分区文件
$sudo mkswap /tmp/tmp.swap
$sudo swapon /tmp/tmp.swap
3,修改系统设置
(1)修改 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
(2)修改 limits.conf
添加如下的行到/etc/security/limits.conf中:
* soft nproc 2407
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
(3)让修改生效
修改了以上文件后,必须让其生效,或重启系统,或切换到 root 用户下用以下的方式改变内核运行
参数:sysctl -p
4,到这时准备工作就结束了,可以安装了 到你下XE的目录下执行
$sudo dpkg -i oracle-xe-universal_10.2.0.1-1.0_i386.deb 就可以了
然后安装程序会启动 进行必要的配置
5等待着出现 请运行 /etc/init.d/oracle-xe进行配置的提示时证明安装已经成功了
6 $cd /etc/init.d/运行oracle-xe
方法$./oracle-xe configure
设置一下内容
HTTP端口[默认为8080]
TNS Listener端口[默认为1521]
SYS/SYSTEM用户密码
开机是否启动[默认yes]
7到目录 /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin 下运行 oracle_env.sh
不过这个文件有点问题了 要做先修改,先备份oracle_env.sh.
运行时会提示
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/nls_lang.sh: 114:
修改oracle_env [[: not found
将其中的
NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh` 替换为
NLS_LANG='$ORACLE_HOME/bin/nls_lang.sh' 区别在于那个单引号
8, 这个我没有执行,因为提示错误
修改root和oracle目录下的./bashrc 添加
../usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin/oracle_env.sh
要加上两个点才可以这好像针对不同的系统而言 可以调试 ,退出su 下 即可生效
看是不是可以执行便可以了。
9切换到oracle用户模式$su - oracle
执行sqlplus 命令既可以。在此过程中可能出现以下问题
数据库无法启动 没有initXE.ora 到 /dbs 文件下 cp init.ora initXE.ora
修改initXE.ora
db_name=XE
shared_pool_size = 62198988
(没有出现9的错误)
10 这时数据就可以正常的启动了!
http://127.0.0.1:8080/apex 登录使用
注:我很悲剧的选择了不随机启动oralce(因为偶的机子很搓,害怕占用内存和CPU)。下次启动的时候,果然出问题了,很悲剧。
问题:TNS启动不了
原因:没有把$ORACLE_HOME和$ORACLE_SID放到路径上 ,导致会出现一系列错误
Message 1053 not found; No message file for product=network, facility=TNSTNS-12541: Message 12541 not found; No message file for product=network, facility=TNS
TNS-12560: Message 12560 not found; No message file for product=network, facility=TNS
TNS-00511: Message 511 not found; No message file for product=network, facility=TNS
Linux Error: 111: Connection refused
解决方案:加上去啊~
(1)$more /etc/oratab
XE:/usr/lib/oracle/xe/app/oracle/product/10.2.0/server:N
得知$ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
$ORACLE_SID=XE
(2)$vim /etc/passwd
oracle:x:1001:1001::/usr/lib/oracle/xe:/bin/bash
$su passwd oracle
(可以用来设置oracle的密码,如果开始没有设置的话)
$su - oracle
$cd /usr/lib/oracle/xe
$vim .bashrc
添加如下内容:
export ORACLE_BASE=/usr/lib/oracle/xe/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/server
export ORACLE_SID=XE
$vim .profile
添加如下内容:
if [ -f "/usr/lib/oracle/xe/.bashrc" ]; then
. "/usr/lib/oracle/xe/.bashrc"
fi
(3)$source .bashrc
$source .profile
//不知道二个是不是都要更新,我懒得试验了,二个都更新了一下。
ps:另外可能出现的问题在
$vim /etc/hosts
设置好以后,
$lsnrcnl start
$sqlplus '/as sysdba'
SQL>startup //启动oracle
SQL>shutdown //关闭oracle
$lsnrcnl stop //关闭侦听