阿里云服务器CentOS5.8安装Oracle10g-阿里云开发者社区

开发者社区> 数据库> 正文

阿里云服务器CentOS5.8安装Oracle10g

简介:

oracle安装了至少5、6次,折腾了好多天,现在记录下来,等后续了解更深一步的时候,再补充相关操作。



操作系统:ALI ECS CentOS release 5.8 (Final) 64位
oracle版本:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit

一、下载必须安装包:

# yum -y install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers ksh libaio libaio-devel  libgcc  libstdc++  libstdc++-devel libXp libXt libXtst make sysstat
# yum clean all
#这里放入了 libXp libXt libXtst ,如果不安装,会提示njni10 getoraclehome错误
#网上教程多写的64位文件为i686,新版实际为x86_64,这点请注意

二、 修改 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=/home/oracle/ora10g/oraInventory
inst_group=oinstall
#请注意复制的时候,是否inventory_loc完整,如果少一个i,后边安装会提示java heap不足

六、 创建相应的用户名和用户组:
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
 修改密码:
# passwd oracle

更改属组及权限
chown oracle:oinstall /etc/oraInst.loc
chmod 664 /etc/oraInst.loc

七、 修改 /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
# mkdir -p  /home/oracle/ora10g/oraInventory
# 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 /home/software/10201_database_linux_x86_64.cpio.gz /home/oracle/ora10g
首先解压gz包.
# cd /home/oracle/ora10g
# 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="/home/oracle/ora10g/product/10.2.0/db_1"
ORACLE_HOME_NAME="OraDb10g_home1"
SHOW_INSTALL_PROGRESS_PAGE= true
RESTART_SYSTEM=false
RESTART_REMOTE_SYSTEM=false
SHOW_END_OF_INSTALL_MSGS= true
COMPONENT_LANGUAGES={"zh_CN"}   默认en
INSTALL_TYPE="EE"
s_nameForDBAGrp= "dba"                         如设置无效组,会出现权限不够错误
s_nameForOPERGrp="dba"
n_configurationOption=3                    安装类型(1为在安装后创建数据库, 2为安装后创建一个自动存储管理实例, 3为只安装服务器软件),这里我选择3。

说明:这几项要视情况而定比如说 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 -cloneTemplate -silent –responseFile /home/oracle/ora10g/database/response/dbca.rsp

二十、修改Oracle启动配置文件:/etc/oratab
(1) 以oracle用户登录
(2) 然后编辑 /etc/oratab
    将<Oracle的SID>:<Oracle的主目录>:N
    修改为ora10g:/app/oracle/10g:Y
orcl10g:/home/oracle/ora10g/product/10.2.0/db_1: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)这句注释掉就可以了



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章