Linux 5 安装 oracle 10g

1)网卡设置
安装完成后网卡无法通过自动获取ip地址激活,手动设置IP后成功激活网卡。
2)远程控制
默认已经开启SSH2端口,通过使用SecureCRT6.5.4的ssh2功能链接到linux5系统,端口22
3)文件传输
通过rz上传,sz下载命令,通过ZModem功能传输文件


安装oralce
1)修改Linux发行版本信息
我们需要手工修改Linux的发行注记,让Oracle 10g支持RedHat Enterprise Linux 5。
编辑/etc/redhat-release文件
# vi /etc/redhat-release
将其中的内容Red Hat Enterprise Linux Server release 5 (Tikanga)修改为Red Hat Enterprise Linux AS release 4 (Nahant Update 4)
2)修改系统内核参数
# vi /etc/sysctl.conf
kernel.shmall = 2097152              //  该参数表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改kernel.shmmax = 2147483648            //  该参数定义了共享内存段的最大尺寸(以字节为单位)。缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G
kernel.shmmni = 4096                 //  这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改
kernel.sem = 250 32000 100 128       //  表示设置的信号量
fs.file-max = 65536                  //  表示文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144         //  默认的接收窗口大小
net.core.rmem_max=262144             //  接收窗口的最大大小
net.core.wmem_default=262144         //  默认的发送窗口大小
net.core.wmem_max=262144             //  发送窗口的最大大小
修改好内核参数后,执行如下命令使新的设置生效
# /sbin/sysctl -p

3)创建Oracle用户、组、安装目录
在这里我只讨论单主机环境,不考虑RAC环境的配置,在以后我会专门写一篇如何配置Oracle RAC环境的文章。
(1) 创建Oracle用户组
# groupadd oinstall
# groupadd dba
(2) 创建Oracle用户
# useradd -m -g oinstall -G dba oracle
(3) 设置Oracle用户口令
# passwd oracle
(4) 创建Oracle安装目录以及数据存放目录
# mkdir -p /DBSoftware/app/oracle
# mkdir -p /DBData/oradata
(5) 修改目录权限
# chown -R oracle:oinstall /DBSoftware/app/oracle/ /DBData/oradata/
# chmod -R 755 /DBSoftware/app/oracle/ /DBData/oradata/
5.添加以下内容到/etc/security/limits.conf
# vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
6.添加以下内容到/etc/pam.d/login
# vi /etc/pam.d/login
session required /lib/security/pam_limits.so
session required pam_limits.so
7.添加以下内容到/etc/profile
# vi /etc/profile
if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi



4)
配置Linux主机
检查/etc/hosts文件中是否有localhost的记录(指向127.0.0.1即可),若没有的话,在后面配置Oracle监听的时候会出现一些问题,导致无法启动监听,在此手工添加此记录即可。
5)
配置oracle用户环境变量
# su - oracle
$ vi ~/.bash_profile
增加如下内容:
export ORACLE_BASE=/DBSoftware/app/oracle  
export ORACLE_SID=orcl
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBARY_PATH=$ORACLE_HOME/lib
export PATH
umask 022
保存后使用如下命令,使设置生效:
$ source ~/.bash_profile



6)安装Oracle,并进行相关设置

1.解压缩安装文件
    Oracle的安装包有这样几种格式:
    (1) zip
    这种格式最好解压缩,直接使用命令unzip 文件名即可
    (2) cpio.gz
    这种格式有这样几种解压缩方式
    a.  # zcat XXXX.cpio.gz | cpio -idmv
    b.  # gunzip XXXX.cpio.gz解压出XXXX.cpio文件然后再 # cpio -idvm < XXXX.cpio
    解压缩完成后,设置oracle帐户可以操作安装文件所在的目录
    chown -R oracle:oinstall 安装文件所在目录

2. 用oracle帐户进入安装文件所在目录,执行如下命令即可看到安装界面:
    $ ./runInstaller
    如果无法看到安装界面,请使用root帐户执行如下命令后再运行安装程序:
    # export DISPLAY=:0.0
    # xhost +
    $ ./runInstaller


注意:

安装oracle时报错 i386 libawt.so libXp.so.6解决办法
打开Linux 安装盘, server目录中找到 libXp-1.0.0-8.1.el5.i386.rpm 安装。。。
OEL5的linux 也安装libXP就对了,安装过程选择[无论如何都安装]。

如果linux为中文系统这时,系统弹出的安装UI界面为中文并且显示不全,这时就要停止安装,关闭安装界面。在系统下输入:export LANG=en_us,将安装界面调成英文。再次使用./runInstaller命令运行安装。此时界面为英文!


    出现安装界面后,根据界面提示进行相关的设置,我的建议是在安装过程中不创建数据库,只安装程序,监听和创建数据库等安装完成后再进行相关的操作。
    安装过程中,需要使用root权限执行两个脚本。
    3. 安装完成后,将/etc/redhat-release文件中的内容修改回Red Hat Enterprise Linux Server release 5 (Tikanga)
    4.创建监听以及创建数据库,需要将用户切换至oracle用户
    su - oracle
    (1) 创建监听程序
    使用Oracle提供的NET CONFIGURATION ASSISTANT创建TNS监听
    $export LANG=en_us
    $ netca
    基本上就是一直Next就可以了,当然你也可以在这期间修改TNS的监听端口号
    TNS监听创建完成后可以使用如下命令进行检查:
    # netstat -atln    检查监听端口是否打开
    $ lsnrctl status    检查TNS监听状态
    确认监听已经成功启动后,即可执行Database Configure Assistant进行数据库的创建,执行命令如下:
    $ dbca
    在创建数据库的过程中,建议将数据库的字符集设置为Unicode UTF-8,防止出现乱码。




登陆oracle数据建立表
使用ssh工具链接linux,切换到oracle用户环境下链接到指定数据库:
$export ORACLE_SID=mhdb
$sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Nov 1 15:27:03 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.

Total System Global Area  553648128 bytes
Fixed Size                  1220508 bytes
Variable Size             159383652 bytes
Database Buffers          385875968 bytes
Redo Buffers                7168000 bytes
Database mounted.

Database opened.


为程序建立数据库访问用户:用户mhdbuser/密码mhdb123
SQL>create user mhdbuser identified by mhdb123;
用户授权,对用户mhdbuser授予了连接数据库和访问资源的权限
SQL>grant connect,resource to mhdbuser;
CREATE SESSION是一个系统特权,它可以为用户提供连接数据库的能力。
SQL>grant create session,dba to mhdbuser;
修改用户表空间使用users
SQL>alter user mhdbuser default tablespace users
SQL>temporary tablespace temp;

为程序建立数据库访问用户:用户mhdbuser/密码mhdb123
SQL>create user mhdbuser identified by mhdb123;
用户授权,对用户mhdbuser授予了连接数据库和访问资源的权限
SQL>grant connect,resource to mhdbuser;
CREATE SESSION是一个系统特权,它可以为用户提供连接数据库的能力。
SQL>grant create session,dba to mhdbuser;
可以改变用户的密码,将用户mhdbuser的密码改变为:oracle.
SQL>alter user mhdbuser identified by oracle;
# 锁定帐号以及解锁,注意:用户解锁后,要重启服务。
SQL>alter user mhdbuser account unlock;


使用telnet检测,linux防火墙是否放行了tcp 1521端口,以提供应用程序访问。
启用监听为程序访问提供接口:
检测实际telnet失败,通过命令开启linux端口监听,使用oracle用户输入以下命令
$lsnrctl start
此时telnet成功,说明端口以开启!



进行表的创建:

举例:建立MHDB_DATA_PROCESS表,以此类推

SQL> CREATE TABLE "MHDB_DATA_PROCESS"
  2     (       "ID" VARCHAR2(32),
  3     "CRON" VARCHAR2(255),
  4     "DELETE_EMPTY_FLODER" NUMBER(1,0) DEFAULT 0,
  5     "ENABLE_PATTERN" NUMBER(1,0) DEFAULT 0,
  6     "FLODER" VARCHAR2(300),
  7     "INGORE_SUFFIX" VARCHAR2(100),
  8     "NAME" VARCHAR2(100),
  9     "PATTERN_REGEX" VARCHAR2(300),
10     "ENABLE_LOG" NUMBER(1,0) DEFAULT 1
11     ) ;

Table created.
SQL> COMMENT ON COLUMN "MHDB_DATA_PROCESS"."ID" IS 'id';

Comment created.

SQL> 
SQL>    COMMENT ON COLUMN "MHDB_DATA_PROCESS"."CRON" IS 'cron表达式';

Comment created.

SQL> 
SQL>    COMMENT ON COLUMN "MHDB_DATA_PROCESS"."DELETE_EMPTY_FLODER" IS '是否删除空子文件夹';

Comment created.

SQL> 
SQL>    COMMENT ON COLUMN "MHDB_DATA_PROCESS"."ENABLE_PATTERN" IS '启用正则过滤';

Comment created.

SQL> 
SQL>    COMMENT ON COLUMN "MHDB_DATA_PROCESS"."FLODER" IS '目录名称';

Comment created.

SQL> 
SQL>    COMMENT ON COLUMN "MHDB_DATA_PROCESS"."INGORE_SUFFIX" IS '忽略的后缀名';

Comment created.

SQL> 
SQL>    COMMENT ON COLUMN "MHDB_DATA_PROCESS"."NAME" IS '进程名称';

Comment created.

SQL> 
SQL>    COMMENT ON COLUMN "MHDB_DATA_PROCESS"."PATTERN_REGEX" IS '正则表达式';

Comment created.

SQL> 
SQL>    COMMENT ON COLUMN "MHDB_DATA_PROCESS"."ENABLE_LOG" IS '是否记录日志';

Comment created.

SQL> 
SQL>    COMMENT ON TABLE "MHDB_DATA_PROCESS"  IS '进程信息';

Comment created.


验证表的创建是否都完成了:
select table_name from user_tables where user='SYS'

编码测试连接性:

package model;

import java.sql.*;

/**
/**
* <p>文件名称: MyConn </p>
* <p>文件描述: 数据库连接</p>
* <p>版权所有: 版权所有(C)2006-2006</p>
* <p>公    司: 中兴软件技术</p>
* <p>内容摘要: 提供一个统一的数据库连接,getConn方法获取连接实例.</p>
* <p>其他说明: 无</p>
* <p>完成日期:2006年4月18日</p>
* <p>修改记录1: </p>
* <pre>
*    修改日期:2006年4月18日
*    版 本 号:V1.1
*    修 改 人:张锋
*    修改内容:修正
* </pre>
* @version 1.1
* @author  张锋
*/
public class MyConn {

/** 静态变量 DRIVEURL 存放驱动串*/
private static final String DRIVEURL = "oracle.jdbc.driver.OracleDriver";


/** 静态变量 URL 存放连接串*/
private static final String URL = "jdbc:oracle:thin:@172.17.88.66:1521:mhdb";

/** 静态变量 USER 存放访问数据库用户名*/
private static final String USER = "mhdbuser";

/** 静态变量 PASSWORD 存放数据库连接密码*/
private static final String PASSWORD = "mhdb123";


/**
* 获取到数据库的连接实例
* @return 数据连接对象
*/
public static Connection getConn(){

Connection conn = null;
try{
Class.forName(DRIVEURL);
}catch(Exception e){
System.out.print("数据库驱动失败:");
e.printStackTrace();
}

try{
conn = DriverManager.getConnection(URL,USER,PASSWORD);
}catch(Exception e){
System.out.print("数据库登陆失败");
}

return conn;
}

/**
* 数据库连接测试
* @param arg 控制台参数
*/
public static void main(String[] arg){
Connection conn = MyConn.getConn();
try{
Statement state = conn.createStatement();
String sql = "select * from MHDB_DATA_PROCESS";
ResultSet rs = state.executeQuery(sql);
while(rs.next()){
System.out.print(rs.getString("ID"));
System.out.print(rs.getString("CRON"));
}
rs.close();
state.close();
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}

}









猜你喜欢

转载自cash.iteye.com/blog/1342330