操作系统:CentOS release 6.5 (Final) 64位

oracle版本:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit



一、下载必须安装包:


# yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat


# yum install libXp


# yum -y install libXp.i686


# yum -y install libXt.i686


# yum -y install libXtst.i686



二、 修改 sysctl.conf 配置文件:


# vim /etc/sysctl.conf


   在文件末尾添加一下内容:


#use for Oracle

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 262144


立即执行修改:


# sysctl -p



三、 修改 limits.conf 配置文件. 此文件用于设置系统资源限制.


# vi /etc/security/limits.conf


在文件末尾加上以下内容:


oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536



四、 编辑 /etc/pam.d/login 文件:


# vi /etc/pam.d/login


在文件末尾加上以下内容:


session required /lib/security/pam_limits.so

session required pam_limits.so



五、创建oraInst.loc


# vim /etc/oraInst.loc


inventory_loc=/u01/oracle/oraInventory

inst_group=oinstall

更改属组及权限

chown oracle:oinstall /etc/oraInst.loc

chmod 664 /etc/oraInst.loc



六、 创建相应的用户名和用户组:


# groupadd oinstall


# groupadd dba


# useradd -g oinstall -G dba oracle


修改密码:


# passwd oracle



七、 修改 /etc/profile 限制其他用户使用:


# vim /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



八、修改Linux 发行版本. 因为Oracle10G发行的时候, Centos6.5还没有发行. 所以必须修改:


# vim /etc/redhat-release


删除文件本身内容, 重新录入以下内容:


redhat-4



九、 创建oralce安装目录以及数据存放目录.


# mkdir -p /home/oracle/ora10g


# chown -R oracle:oinstall /home/oracle/ora10g/


# chmod -R 775 /home/oracle/ora10g/



十、 配置Oracle用户环境变量:


# vi /home/oracle/.bash_profile


在文件末尾加入以下内容:


#Oracle Settings


export TMP=/tmp;

export TMPDIR=$TMP;

export ORACLE_BASE=/home/oracle/ora10g ;

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1;

export ORACLE_SID=orcl10g;

export ORACLE_TERM=xterm;

export PATH=/usr/sbin:$PATH;

export PATH=$ORACLE_HOME/bin:$PATH;

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

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;



十一、 使配置生效:


# source /home/oracle/.bash_profile



十二、 解压安装文件


将下载的10201_database_linux_x86_64.cpio.gz(数据库安装文件) 复制到 /home/oracle/ora10g/目录下.


# cp /usr/local/src/10201_database_linux_x86_64.cpio.gz /home/oracle/ora10g/


首先解压gz包.


# gzip -d 10201_database_linux_x86_64.cpio.gz


在使用cpio解压出文件.


# cpio -idmv < 10201_database_linux_x86_64.cpio



十三、更改解压出来的database文件件及文件的所有者和用户组为oracle和oinstall.


# chown -R oracle:oinstall /home/oracle/ora10g/database/



十四、编辑安装需要的应答文件

(1) 以root身份登录

(2) 静默模式(Silent)安装必须指定一个应答文件来完成安装过程所须的各类参数。

    在Oracle安装目录的response子目录里有enterprise.rsp、standard.rsp和custom.rsp三个应答文件,分别对应企业版、标准版和定制的安装。

(3) 以enterprise.rsp为例,用任意的文本编辑器打它,修改以下这些项目的值。


配置enterprise.rsp文件

vi /home/oracle/ora10g/database/response/enterprise.rsp

修改以下值  红色为必须修改项,其他按需要

RESPONSEFILE_VERSION=2.2.1.0.0

UNIX_GROUP_NAME="oinstall"

ORACLE_HOME_NAME="OraDb10g_home1"

ORACLE_HOME="/home/oracle/ora10g/product/10.2.0/db_1"

SHOW_INSTALL_PROGRESS_PAGE= true

SHOW_END_OF_INSTALL_MSGS= true

COMPONENT_LANGUAGES={"zh_CN"}   默认en

s_nameForDBAGrp= "dba"                         如设置无效组,会出现权限不够错误

s_nameForOPERGrp="dba"

INSTALL_TYPE="EE"

n_configurationOption=3                    安装类型(1为在安装后创建数据库, 2为安装后创建一个自动存储管理实例, 3为只安装服务器软件),这里我选择3。

RESTART_SYSTEM=false

RESTART_REMOTE_SYSTEM=false

说明:这几项要视情况而定比如说 UNIX_GROUP_NAME="oinstall" 和s_nameForDBAGrp= "dba" s_nameForOPERGrp="dba"还有环境变量都要参照前面自己定义好的来



十五、开始安装

(1) 用oracle用户登录,然后在Oracle安装目录里执行

    $ ./runInstaller -ignoreSysPrereqs -silent -responseFile <应答文件的绝对路径>

(2) 接下来就是等待安装结束了。

各安装参数的含义如下:

-ignoreSysPrereqs 让Oracle忽略系统检查,因为Oracle官方声明只支持Linux服务器产品,所以要在非服务器产品的Linux上安装就必须指定此参数。

-silent 表示以静默方式安装,不会有任何提示

-force 允许安装到一个非空目录

-noconfig 表示不运行配置助手netca

-responseFile 表示使用哪个响应文件,必需使用绝对路径


在这里我输入:

./runInstaller -silent -ignoreSysPrereqs -responseFile /home/oracle/ora10g/database/response/enterprise.rsp



十六、系统初始化

(1) 以root用户登录

(2) 运行以下两个脚本:

    /home/oracle/ora10g/oraInventory/orainstRoot.sh

    /home/oracle/ora10g/product/10.2.0/db_1/root.sh



十七、安装网络监听器

vi ./response/netca.rsp

(1) 以oracle登陆

(2) 没有网络监听器,客户端就无法通过网络连接Oralce服务器。要在命令行安装网络监听器,也只能使用静默模式。

(3) 编辑Oracle安装目录里response子目录下的应答文件 netca.rsp, 修改以下项目:

INSTALL_TYPE=""CUSTOM"" 安装的类型,这里我使用默认值

LISTENER_NUMBER=1 监听器数量,这里我使用默认值

LISTENER_NAMES={"LISTENER"} 监听器的名称列表,这里我使用默认值

LISTENER_PROTOCOLS={"TCP;1521"} 监听器使用的通讯协议列表,这里我使用默认值

LISTENER_START=""LISTENER"" 监听器启动的名称,这里我使用默认值

(4) 然后运行

    $ORACLE_HOME/bin/netca /silent /responseFile <应答文件的绝对路径>

 这里我输入的命令为:

$ORACLE_HOME/bin/netca /silent /responseFile /home/oracle/ora10g/database/response/netca.rsp



十八、修改dbstart

(1) 以oracle身份登录

(2) 打开 $ORACLE_HOME/bin/dbstart,将

    ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle

 改为

    ORACLE_HOME_LISTNER=$ORACLE_HOME

    否则网络监听器可能无法自动启动。



十九、安装数据库实例

vi ./response/dbca.rsp


OPERATION_TYPE = "createDatabase"

GDBNAME = "oracle10g"

SID = "orcl10g"

TEMPLATENAME = "General_Purpose.dbc"   如不设置会出现“静默DBCA创建数据库时遭遇模板不存在问题

SYSPASSWORD = "oracle"

SYSTEMPASSWORD = "oracle"

CHARACTERSET = "ZHS16GBK"


运行以下命令安装实例

$ORACLE_HOME/bin/dbca -silent –responseFile /home/oracle/ora10g/database/response/dbca.rsp -cloneTemplate



二十、修改Oracle启动配置文件:/etc/oratab

(1) 以oracle用户登录

(2) 然后编辑 /etc/oratab

    将::N

    修改为ora10g:/app/oracle/10g:Y

    使数据库实例能够自动启动。



二十一、 启动和关闭监听


  启动监听:lsnrctl start


  关闭监听:lsnrctl stop


    检查监听:lsnrctl status


二十二、启动Oracle实例


su - oracle


export ORACLE_SID=orcl10g


以sysdba身份登入数据库,输入:


sqlplus '/ as sysdba'


SQL> startup


就可以正常的启动数据库了。


备注:也可以用$ORACLE_HOME/bin/dbstart启动数据库实例



二十三、关闭数据库实例


SQL> shutdown immediate


备注:也可以用 $ORACLE_HOME/bin/dbstart 启动数据库实例



二十四、创建用户


create user test identified by test account unlock;


grant resource,connect to test;



二十五、其他

#创建表空间

create TEMPORARY TABLESPACE AFINITOR_TEMP TEMPFILE '/u01/app/oracle/oradata/orcl/AFINITOR_TEMP.ORA' SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL;

#创建临时表空间

create TABLESPACE AFINITOR LOGGING DATAFILE '/u01/app/oracle/oradata/orcl/AFINITOR.DBF' SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL;

#创建用户

create user afinitor identified by afinitor default tablespace AFINITOR temporary tablespace AFINITOR_TEMP;

#给用户授权

grant resource,connect,EXP_FULL_DATABASE,IMP_FULL_DATABASE,CREATE SESSION to afinitor;

grant dba to afinitor;

#授权导入导出

GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,DBA,CONNECT,RESOURCE,CREATE SESSION TO afinitor;

#数据导入

cd /home

wget –c http://nadmin.haott.com/afinitor_db.dmp (此处是在另一服务器下载所需要的数据库dmp文件)

su – oracle

imp afinitor/afinitor@orcl file=/home/afinitor_data_20131206.dmp full=y ignore=y #导入命令




#监听文件

 [oracle@localhost admin]$  cat listener.ora


SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = orcl10g)

      (ORACLE_HOME = /home/oracle/ora10g/product/10.2.0/db_1)

#      (PROGRAM = extproc)           要注释掉,否则会出现ORA-28547:连接服务器失败,可能是Net8管理错误”          

    )

  )


LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

    )

  )



#tnsnames文件

[oracle@localhost admin]$ cat tnsnames.ora

EXTPROC_CONNECTION_DATA =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = oracle10g)

    )

  )



二十六、安装排障总结


故障一

ORA-01078: failure in processing system parameters

LRM-00123: invalid character 0 found in the input file

LRM-00109: could not open parameter file '/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora

   经查:pfile目录下无参数文件,SORACLE_HOME/dbs下无密码文件,flash_recovery_area下无相关实例文件

   解决:实例未创建成功,dbca重新创建实例即可,如果有实例情况下,则拷贝pfile下参数文件到dbs下并命名即可。



故障二

     ORA-01031: insufficient privileges

     原因一:组配置错误

[oracle@wz_oracle2 ~]$ cat enterprise.rsp | egrep -i "grp|group"

UNIX_GROUP_NAME="dba"

s_nameForDBAGrp="oracle"

s_nameForOPERGrp="oracle"

   解决:

[oracle@wz_oracle2 ~]$ cat $ORACLE_HOME/rdbms/lib/config.c

/*  SS_DBA_GRP defines the UNIX group ID for adminstrative access.  */

/*  Refer to the Installation and User's Guide for further information.  */




#define SS_DBA_GRP "oracle"  /* 改成 dba */

#define SS_OPER_GRP "oracle"  /* 改成 dba */




char *ss_dba_grp[] = {SS_DBA_GRP, SS_OPER_GRP};

然后

[oracle@wz_oracle2 ~]$ relink all




故障三


 ORA-01031: insufficient privileges

 原因:system无法登陆,sys和其他普通登陆能正常登陆,经查是登陆验证问题

 解决:cat /home/oracle/ora10g/product/10.2.0/db_1/network/admin/sqlnet.ora

      SQLNET.AUTHENTICATION_SERVICES   不设置即可



故障四

使用Oracle 10g的dbca.rsp文件静默创建数据库的时候遭遇模板不存在的问题


[oracle@newadm database]$ dbca -silent -responseFile /home/oracle/database/response/dbca.rsp

Template General Purpose does not exist. Please specify an existing template for database creation.


解决:更改dbca.rsp文件中的General Purpose为 General_Purpose.dbc即可

    TEMPLATENAME = "General_Purpose.dbc"



故障五

ORA-27125: unable to create shared memory segment


查询了一下,发现问题和linux上的hugetbl有关。


解决方法也很简单,首先检查oracle用户的组信息:


[oracle@yans1 ~]$ id oracle


uid=500(oracle) gid=502(oinstall) groups=502(oinstall),501(dba)


[oracle@yans1 ~]$ more /proc/sys/vm/hugetlb_shm_group


0


下面用root执行下面的命令,将dba组添加到系统内核中:


# echo 501 > /proc/sys/vm/hugetlb_shm_group


然后启动数据库,问题消失。


但以上这种方式在重启操作系统后失效, /proc/sys/vm/hugetlb_shm_group又变为了0,建议采用以下方式解决:


加入vm.hugetlb_shm_group = 501 到/etc/sysctl.conf中来解决:


# vi /etc/sysctl.conf


加入如下的内容,其中501为dba组号,需要根据你实际的情况进行改变。


vm.hugetlb_shm_group = 501

# sysctl -p



故障六

远程客户端连接oracle出现错误:ORA-28547:连接服务器失败,可能是Net8管理错误

将listener.ora中的(PROGRAM = extproc)这句注释掉就可以了