Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1373924
  • 博文数量: 140
  • 博客积分: 8518
  • 博客等级: 中将
  • 技术积分: 1822
  • 用 户 组: 普通用户
  • 注册时间: 2005-03-01 22:23
个人简介

嘿嘿!

文章分类
文章存档

2016年(2)

2015年(5)

2014年(6)

2013年(11)

2012年(11)

2011年(3)

2010年(4)

2009年(4)

2008年(8)

2007年(23)

2006年(26)

2005年(37)

分类: LINUX

2005-03-10 15:40:54

之所以写这篇文章,是为了让那些在linux上安装Oracle头痛不已的兄弟姐妹们。一次安装,多次克隆,而且可以跨平台克隆,也就是说在Reshat 7.2下克隆出来的Oracle,可以运行在AS3、Redhat9.0上

It's Very Easy

Let's go!

Oracle 8.1.7 for Linux系统,在安装上存在一切困难,尤其在Redhat7.2系统下安装的时候会出现很多意想不到的事情,譬如图形界面无法显示、xwin无法远程连接,在编译的过程中如果没有安装GCC,Glibc等等一些库文件,容易出现无法link的错误,而全部安装又会造成其他困难。因此在Oracle安装过程中总结出来了一些经验。介绍如下:
<1>:Oracle在一台服务器中安装成功后,可以作为种子系统,将其打成tar.gz包,并平滑转移到另外一台服务器上,经过测试没有问题;

Oracle 8.1.7 for Linux系统,在安装上存在一切困难,尤其在Redhat7.2系统下安装的时候会出现很多意想不到的事情,譬如图形界面无法显示、xwin无法远程连接,在编译的过程中如果没有安装GCC,Glibc等等一些库文件,容易出现无法link的错误,而全部安装又会造成其他困难。因此在Oracle安装过程中总结出来了一些经验。介绍如下:
<1>:Oracle在一台服务器中安装成功后,可以作为种子系统,将其打成tar.gz包,并平滑转移到另外一台服务器上,经过测试没有问题;

<2>: 另外一台没有事先安装oracle系统的服务器需要安装 JDK (java虚拟机),因为oracle一些jar文件需要java虚拟机来解释运行,假如没有jdk,即使转移安装好的oracle也会出现各种错误; (经过研究不需要JDK)

<3>:需要设置oracle用户的环境变量,在oracle系统用户登陆后,要读取 /home/oracle/.bash_proile的环境变量,如果没有这些变量,oracle一些程序无法找到或无法运行;

<4>:需要修改oracle的监听的Hostname,如果使用安装好的hostname,那么在使用oracle windows client远程连接数据库会出现无法远程连接数据库的问题;

<5>:oci8.so(php与oracle接口程序)仍然需要本地安装好gcc编译器,因为copy其他服务器的oci8.so文件,有可能不能正常连接运行。

<6>:用户登陆的启动oracle数据库,必须要用oracle用户来启动,如果用root用户来启动会造成安全隐患。


b):安装数据库步骤:
<1>:准备用户环境。

#groupadd dba

#groupadd oinstall

#useradd oracle -g oinstall -G dba

#passwd oracle

输入新用户的密码。
创建安装目录(以/var/oracle/为例)

#mkdir /var/oracle

#chown oracle.dba /var/oracle

#chmod 777 /var/oracle


  <2>:设置Oracle用户的登陆环境变量,编辑 /home/oracle/.bash_profile文件,将下列参数加入到 /home/oracle/.bash_profile中;
. /usr/i386-glibc21-linux/bin/i386-glibc21-linux-env.sh

export LD_ASSUME_KERNEL=2.2.5

export LDEMULATION=elf_i386_glibc21

export GCC_EXEC_PREFIX=/usr/i386-glibc21-linux/lib/gcc-lib/

export ORACLE_BASE=/var/oracle

export ORACLE_HOME=$ORACLE_BASE/product/8.1.7

export PATH=$PATH:$ORACLE_HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export ORACLE_SID=Billing

export ORACLE_TERM=vt100

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

umask 022




c):将OracleOk.tar.gz文件解压缩
    获得已经安装好的OracleOk.tar.gz文件,将其解压缩到/var/oracle目录中,安装方式如下:
[voipack@bobyang root]# cd /var/oracle
[voipack@bobyang root]# tar –xvzf oracleOk.tar.gz


d):安装JDK
将jdk118_v3-glibc-2.1.3.tar.bz2 copy到/usr/local
[voipack@bobyang root]# cp jdk118_v3-glibc-2.1.3.tar.bz2 /usr/local/
[voipack@bobyang root]# bunzip2 -d jdk118_v3-glibc-2.1.3.tar.bz2
[voipack@bobyang root]# tar xvf jdk118_v3-glibc-2.1.3.tar
[voipack@bobyang root]#ln -s /usr/local/jdk118_v3 /usr/local/java

:修改 /var/oracle/product/8.1.7/network/admin下的listener.ora跟tnsnames.ora文件中的HOST名字。将Host的名称修改为本地服务器Host名称。
# Generated by Oracle configuration tools.

LISTENER =
  (DEs criptION_LIST =
    (DEs criptION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = Bobyang)(PORT = 1521))
      )
    )
    (DEs criptION =
      (PROTOCOL_STACK =
        (PRESENTATION = GIOP)
        (SESSION = RAW)
      )
      (ADDRESS = (PROTOCOL = TCP)(HOST = Bobyang)(PORT = 2481))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /var/oracle/product/8.1.7)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = Billing)
      (ORACLE_HOME = /var/oracle/product/8.1.7)
      (SID_NAME = Billing)
    )
  )




f):oracle系统启动
<1>:以oracle用户登陆到Linux系统
[oracle@bobyang oracle]$ sqlplus /nolog (本地连接数据库oracle)
SQL*Plus: Release 8.1.7.0.0 - Production on Fri May 23 14:56:21 2003
(c) Copyright 2000 Oracle Corporation. All rights reserved.

SQL>connect /as sysdba (以sysdba超级用户连接数据库)
Connected.
SQL> startup (启动oracle数据库)

ORACLE instance started.

Total System Global Area 72704160 bytes
Fixed Size 73888 bytes
Variable Size 55681024 bytes
Database Buffers 16777216 bytes
Redo Buffers 172032 bytes
Database mounted.
Database opened.
SQL>exit (退出oracle数据库)
Disconnected from Oracle8i Enterprise Edition Release 8.1.7.0.1 - Production
With the Partitioning option
JServer Release 8.1.7.0.1 - Production
[oracle@bobyang oracle]$ lsnrctl start (启动Oracle net8远程监听端口)
LSNRCTL for Linux: Version 8.1.7.0.0 - Production on 23-MAY-2003 14:59:35

(c) Copyright 1998 Oracle Corporation. All rights reserved.

Starting /var/oracle/product/8.1.7/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 8.1.7.0.0 - Production
System parameter file is /var/oracle/product/8.1.7/network/admin/listener.ora
Log messages written to /var/oracle/product/8.1.7/network/log/listener.log
Listening on: (DEs criptION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
Listening on: (DEs criptION=(ADDRESS=(PROTOCOL=tcp)(HOST=netbank)(PORT=1521)))
Listening on: (DEs criptION=(ADDRESS=(PROTOCOL=tcp)(HOST=netbank)(PORT=2481))(PROTOCOL_STACK=(PRESENTATION=GIOP)(SESSION=RAW)))

Connecting to (DEs criptION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 8.1.7.0.0 - Production
Start Date 23-MAY-2003 14:59:35
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security OFF
SNMP OFF
Listener Parameter File /var/oracle/product/8.1.7/network/admin/listener.ora
Listener Log File /var/oracle/product/8.1.7/network/log/listener.log
Services Summary...
  Billing has 1 service handler(s)
  PLSExtProc has 1 service handler(s)
The command completed successfully
[voipack@boyang oracle]$ lsnrctl stop (关闭Oracle net8远程监听端口)
LSNRCTL for Linux: Version 8.1.7.0.0 - Production on 23-MAY-2003 14:59:31

(c) Copyright 1998 Oracle Corporation. All rights reserved.

Connecting to (DEs criptION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
The command completed successfully

SQL> shutdown (关闭数据库)
Database closed.
Database dismounted.
ORACLE instance shut down

至此,Oracle克隆到另外一台服务器的安装完毕!够简单了吧。不需要图形界面,不需要GCC等众多软件。


编译oci8.so(PHP与Oracle接口程序)
<1>:需要将php-4.0.6.tar.gz原代码拷到目标机器,解包,到php-4.0.6目录下,运行如下:
[voipack@bobyang root]# ./configure (编译PHP前的配置)
[voipack@bobyang root]# make (开始编译PHP)
[voipack@bobyang root]# make install (安装php程序)
[voipack@bobyang root]# cd ext/oci8       (进入到oci8接口库)
[voipack@bobyang root]# phpize
[voipack@bobyang root]# aclocal (生成配置文件)
[voipack@bobyang root]# ./configure (Oci8接口配置)
[voipack@bobyang root]# make (编译Oci8)
[voipack@bobyang root]# make install (安装ori8接口程序,当前目录下的modules子目录下的oci8.so将被拷到/usr/lib/php4目录下)
<1>:同时需要将oci8.so在php.ini文件中去掉注释
;extension=mhash.so
;extension=mssql65.so
;extension=mssql70.so
;extension=mysql.so
;extension=oas.so
;extension=odbc.so
extension=oci8.so (将注释去掉)
;extension=oracle.so
;extension=pdf.so
extension=pgsql.so
;extension=sablot.so
;extension=swf.so
;extension=sybase_ct.so
;extension=zlib.so

<3>:重新启动Apache服务器
[voipack@bobyang root]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
注释:另外发现安装jdk根本没这个需要。我安装oracle8.1.7目前只是简化到了三个步骤:
一:设置oracle环境变量
二:解压缩克隆过来的oracle文件
三:修改listener.ora 跟 tnsnames.ora文件,修改host名称
不过不同的linux系统能否运行这种方式的oracle,我测试过可以保证,呵呵!如果你愿意这个项目的话,可以共同研究 :P

阅读(3367) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~