阿里云服务器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)这句注释掉就可以了