1. 安装依赖 1 sudo apt-get install automake autotools-dev binutils bzip2 elfutils expat gawk gcc gcc-multilib g++-multilib lib32ncurses5 lib32z1 ksh less libmotif-dev lib32z1 libaio1 libaio-dev libc6-dev libc6-dev-i386 libc6-i386 libelf-dev libltdl-dev libxm4:i386 libuil4:i386 libmrm4:i386 libxm4 libuil4 libmrm4 libmotif-common libodbcinstq4-1 libodbcinstq4-1:i386 libpth-dev libpthread-stubs0-dev libstdc++5 lsb lsb-core make openssh-server mksh rlwrap rpm sysstat unixodbc unixodbc-dev unzip x11-utils zlibc
手动安装以下安装包:
lesstif2 暂时忽略
对于 libpthread-stubs0
包
1 2 3 4 5 6 7 sudo su echo 'deb http://cz.archive.ubuntu.com/ubuntu precise main universe' >> /etc/apt/sources.list.d/extra.list apt-get update apt-get install libpthread-stubs0 mv /etc/apt/sources.list.d/extra.list /etc/apt/sources.list.d/extra.list.backup apt-get update exit
2. 检测系统变量 1 2 3 4 5 6 7 8 9 sudo /sbin/sysctl -a | grep sem sudo /sbin/sysctl -a | grep shm sudo /sbin/sysctl -a | grep file-max sudo /sbin/sysctl -a | grep aio-max sudo /sbin/sysctl -a | grep ip_local_port_range sudo /sbin/sysctl -a | grep rmem_default sudo /sbin/sysctl -a | grep rmem_max sudo /sbin/sysctl -a | grep wmem_default sudo /sbin/sysctl -a | grep wmem_max
然后根据上面命令中得到的参数值在/etc/sysctl.conf中增加对应数据
1 sudo vim /etc/sysctl.conf
把sysctl.conf中的以下内容用查得的值填上
1 2 3 4 5 6 7 8 9 10 11 fs.aio-max-nr = ? fs.file-max = ? kernel.shmall = ? kernel.shmmax = ? kernel.shmmni = ? kernel.sem = ? net.ipv4.ip_local_port_range = ? net.core.rmem_default = ? net.core.rmem_max = ? net.core.wmem_default = ? net.core.wmem_max = ?
运行一下命令更新内核参数:
修改安装Oracle的用户的资源限制
对于Ubuntu 16.04.2 LTS仅需添加下面的内容:
1 2 3 4 5 6 root@dbserver:~# vi /etc/security/limits.conf oracle hard nproc 16384 oracle soft stack 10240 oracle hard stack 32768 oracle soft memlock 3145728 oracle hard memlock 3145728
3. 创建用户组和用户 创建oinstall、dba、oper用户组和oracle用户:
1 2 3 4 5 6 7 8 9 10 11 root@dbserver:~# groupadd oinstall root@dbserver:~# groupadd dba root@dbserver:~# groupadd oper root@dbserver:~# useradd -g oinstall -G dba,oper oracle root@dbserver:~# passwd oracle Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully //Ubuntu下需要手动创建主目录: root@dbserver:~# mkdir /home/oracle root@dbserver:~# chown oracle:oinstall ~oracle
检查umask变量,使用oracle用户登录:
1 2 3 4 5 6 7 root@dbserver:~# su - oracle # su - oracle $ umask 0022 //确保umask=022,否则修改.bash_profile添加如下行: $ vi ~/.profile umask 0022
4. 创建软件安装目录 创建ORACLE_BASE并授权:
1 2 3 root@dbserver:~# mkdir -p /u01/app/ root@dbserver:~# chown -R oracle:oinstall /u01 root@dbserver:~# chmod -R 775 /u01
1 2 3 4 5 6 7 8 9 10 11 #oracle安装目录,本步创建的文件夹 export ORACLE_BASE=/u01/app/oracle #网上说可以随便写 export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 #数据库的sid export ORACLE_SID=orcl export ORACLE_UNQNAME=orcl #默认字符集 export NLS_LANG=.AL32UTF8 #环境变量 export PATH=${PATH}:${ORACLE_HOME}/bin/:$ORACLE_HOME/lib64;
关于oracle图形化安装过程中出现的黑色竖线的处理办法
默认我们安装的时候都是: ./runInstaller 也就是直接运行安装文件,但是这种默认安装的方式就会出现上述错误,为了避免上述情况出现可以通过指定参数安装:
1 ./runInstaller -jreLoc /usr/lib/jvm/jdk1.8.0_211
链接一下
1 2 3 4 5 6 7 8 9 10 11 sudo mkdir /usr/lib64 sudo ln -s /etc /etc/rc.d sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/ sudo ln -s /usr/bin/awk /bin/awk sudo ln -s /usr/bin/basename /bin/basename sudo ln -s /usr/bin/rpm /bin/rpm sudo ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/libc_nonshared.a sudo ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/libpthread_nonshared.a sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /lib64/ sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/ echo 'Red Hat Linux release 5' > /etc/redhat-release
环境变量
1 2 3 4 5 6 7 8 9 10 11 12 #oracle安装目录,第5步创建的文件夹 export ORACLE_BASE=/u01/app/oracle #网上说可以随便写 export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 #数据库的sid export ORACLE_SID=orcl export ORACLE_UNQNAME=orcl #默认字符集 export NLS_LANG=.AL32UTF8 #环境变量 export PATH=${PATH}:${ORACLE_HOME}/bin/:$ORACLE_HOME/lib64;
错误1:Error in invoking target ‘client_sharedlib’ of makefile ‘/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/ins_rdbms.mk’.
打开日志文件,查找出错原因
1 2 3 root@dbserver:~# find /usr -name libpthread_nonshared.a /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a root@dbserver:~# ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/libpthread_nonshared.a
错误2: lib//libagtsh.so: undefined reference to `nnfyboot’ in make: rdbms/lib/dg4odbc] Error 1
1 2 3 4 5 6 7 8 9 sudo ln -sf /bin/bash /bin/sh sudo ln -s /usr/bin/awk /bin/awk sudo ln -s /usr/bin/rpm /bin/rpm sudo ln -s /usr/bin/basename /bin/basename cd $ORACLE_HOME/lib ln -s libclient11.a libagtsh.a $ORACLE_HOME/bin/genagtsh $ORACLE_HOME/lib/libagtsh.so 1.0
错误3:libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14 ‘
1 2 3 4 这是因为ubuntu 13.04带的libstdc++5.0 和oracle所要不兼容所致 从这里 ftp://rpmfind.net/linux/Mandriva/official/2010.0/x86_64/media/contrib/release/libstdc++5-3.3.6-4mdv2009.0.x86_64.rpm 下载, 直接安压缩包打开提取,并提取到/usr/lib/x86_64-linux-gnu,然后重试就可以了
错误4 :
1 2 3 4 5 /u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib//libnmectl.a(nmectlt.o): In function `nmectlt_genSudoProps': nmectlt.c:(.text+0x76): undefined reference to `B_DestroyKeyObject' nmectlt.c:(.text+0x7f): undefined reference to `B_DestroyKeyObject' nmectlt.c:(.text+0x88): undefined reference to `B_DestroyKeyObject' nmectlt.c:(.text+0x91): undefined reference to `B_DestroyKeyObject'
解决办法:修改“emdctl”的编译参数,编辑“/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk”文件,将
1 sed -i 's/^(\s$(MK_EMAGENT_NMECTL))\s$/\1 -lnnz11/g' $ORACLE_HOME/sysman/lib/ins_emagent.mk
1 2 3 4 5 6 171 #=========================== 172 # emdctl 173 #=========================== 174 175 $(SYSMANBIN)emdctl: 176 $(MK_EMAGENT_NMECTL)
改为:
1 2 3 4 5 6 171 #=========================== 172 # emdctl 173 #=========================== 174 175 $(SYSMANBIN)emdctl: 176 $(MK_EMAGENT_NMECTL) -lnnz11
错误5:
1 2 3 4 kdxd4.c:(text.hot+0x2587): undefined reference to `lnxren' collect2: error: ld returned 1 exit status INFO: /u01/app/oracle/product/11.2.0/dbhome_1/bin/genorasdksh: Failed to link liborasdk.so.11.1
解决:
直接修改“/u01/app/oracle/product/11.2.0/dbhome_1/bin/genorasdksh”文件,将
1 2 289 $LD $LD_RUNTIME $LD_OPT $LD_OUT $LD_SELF_CONTAINED $BASE_LIB \ 290 $LD_OBJS $LD_SYMS $OLIBS $SYSLIBS $USRLIBS
改为
1 2 289 $LD $LD_RUNTIME $LD_OPT -Wl,--no-as-needed $LD_OUT $LD_SELF_CONTAINED $BASE_LIB \ 290 $LD_OBJS $LD_SYMS $OLIBS $SYSLIBS $USRLIBS
安装完成后,执行Root Scripts。 执行orainstRoot.sh:
1 root@dbserver:~# /u01/app/oraInventory/orainstRoot.sh
错误7:
1 libhasgen11.so: undefined reference to `procr_get_last_error'
解决:
1 sed -i 's/^\(\s*\)\(\$(OCRLIBS_DEFAULT)\)/\1 -Wl,--no-as-needed \2/g' /u01/app/oracle/product/11.2.0/dbhome_1/srvm/lib/ins_srvm.mk
错误8:
1 nsglsn.c:(.text+0xc29): undefined reference to `ons_subscriber_close
解决:
sed -i ‘s/^(TNSLSNR_LINKLINE.*$(TNSLSNR_OFILES)) ($(LINKTTLIBS))/\1 -Wl,–no-as-needed \2/g’ /u01/app/oracle/product/11.2.0/dbhome_1/network/lib/env_network.mk
1 2 To solve error # libocrutl11.so: undefined reference to `lfifcp' rdbms/lib/ins_rdbms.mk, enter the commands: sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \(\$(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/env_rdbms.mk