在Linux下安装Oracle,下面是我在安装过程中总结的一些要点:
一、安装Oracle数据库服务器
建用户:
# groupadd dba
# useradd -g dba oracle
# passwd oracle
将Oracle10g的安装文件上传到/home/oracle并解压:
$ unzip 10201_database_linux32.zip
$ unzip 10201_client_linux32.zip
解压后的两个文件夹为database和client,分别是数据库服务器和客户端的安装程序,我没有安装客户端
节省空间,删除zip文件:
$ rm 10201_database_linux32.zip
$ rm 10201_client_linux32.zip
建立oracle主目录:
$ mkdir /home/oracle/product
$ mkdir /home/oracle/product/10.2.0
修改环境变量,添加如下信息:
$ vi .bash_profile
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0
export ORACLE_SID=ora10g
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export PATH=$PATH:$ORACLE_HOME/bin:.
让profile文件生效:
$ source .bash_profile
修改内核参数,添加:
# vi /etc/sysctl.conf
kernel.shmmax= 2147483648
kernel.shmmni=4096
kernel.shmall=2097152
kernel.sem=250 32000 100 128
fs.file-max=65536
net.ipv4.ip_local_port_range=1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
使sysctl.conf立即生效:
# sysctl -p
kernel.shmma:最大共享内存段,以字节为单位,物理内存*1024*1024*2,为物理内存的2倍。
kernel.shmmni:共享内存段的最大数目。
kernel.shmall:共享内存总量,以页为单位。
kernel.sem:每个信号对象集的最大信号对象数;系统范围内最大信号对象数;每个信号对象支持的最大操作数;系统范围内最大信号对象集数。
fs.file-max:文件句柄数,表示在Linux系统中可以打开的文件数量。
net.ipv4.ip_local_port_range:应用程序可使用的IPv4端口范围。
安装之前首先检测安装过程中需要的一些组件是否已经安装:
# rpm -q gcc make binutils openmotif glibc
输出结果如下则为已安装,未安装会有提示,可以从Red Hat光盘里找rpm包来安装:
gcc-2.96-118.7.2
make-3.79.1-8
binutils-2.11.90.0.8-12
openmotif-2.1.30-11
glibc-2.2.4-32.8
开始安装:
# xhost +
# su - oracle
$ cd database
$ ./runInstaller
接下来会看到Oracle10g的图形安装界面,跟Windows下无异,在此不多说。
二、配置Oracle服务器
我在安装过程中建的全局数据库名为ora10g,接下来要修改服务器端的listener.ora添加ora10g的SID
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /home/oracle/product/10.2.0)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_NAME = ora10g)
(ORACLE_HOME = /home/oracle/product/10.2.0)
(SID_NAME = ora10g)
)
)
然后在tnsnames.ora中添加监听实例名:
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
ora10g =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dengqiang)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ora10g)
)
)
PS:HOST为主机名。另外我在安装的过程中出现error,PORT被置为了null,这样在启动lsnrctl服务的时候会报错,错误提示中可以
看 到****PORT=null****,如果是这种情况,记得要在这两个ora文件里改过来,默认为1521
修复Oracle启动脚本的BUG:
$ vi $ORACLE_HOME/bin/dbstart
把行
ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
修改为
ORACLE_HOME_LISTNER=/home/oracle/product/10.2.0
让启动脚本生效:
以oracle用户登录,打开“/etc/oratab”文件
$ vi /etc/oratab
把行
ora10g:/home/oracle/product/10.2.0:N
修改为
ora10g:/home/oracle/product/10.2.0:Y
配置Oracle为自动启动:
以root用户登录,打开“/etc/rc.d/rc.local”文件,在最后添加下面几行信息:
# vi /etc/rc.d/rc.local
su - oracle -c 'dbstart'
# su - oracle -c 'agentctl start'
su - oracle -c 'lsnrctl start'
PS:这两行被注释掉的我也不太清楚,查资料照着改的,囧
到此,服务器端已经配置好了,Oracle开机自动运行,已经可以使用了。
三、配置远程客户端主机
本地客户端主机如果想访问远程Oracle服务器,需要配置本地的tnsnames.ora,添加一个服务名:
ora10g =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.90.126)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ora10g)
)
)
其中HOST为远程Oracle服务器地址,SERVICE_NAME为实例名.
四、测试
我的本地主机为Windows,打开cmd,输入sqlplus system/****@ora10g,回车
OK,成功连接到远程Oracle服务器,大功告成~~
PS:访问远程Oracle服务器时,本地客户端Oracle的任务服务都可以不启动,配置好tnsnames.ora就可以了