Centos7 安装oracle11

2019 Java 开发者跳槽指南.pdf (吐血整理)….>>>

点击上方'伦少的博客'关注与您一起成长~

Centos7 安装oracle11

前言

由于需要学习配置oracle goldengate(ogg),奈何没有oracle环境,所以想自己装一个oracle,搜了一下相关文档,跟着安装了一下,发现oracle安装比mysql安装麻烦多了,而且出现了很多博客上没有提到的错误,所以特此记录一下~

1、下载

下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html,我下载的是Oracle Database 11g Release 2
(11.2.0.1.0) Linux x86-64,注意File1和File2都要下载

2、为host添加映射

我的虚拟机之前已经配好

1192.168.44.128 ambari.master.com

3、安装依赖

3.1 先安装pdksh

centos7没有相关安装包可用,可下载pdksh的rpm包

1wget  http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm
2rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm

3.2 安装其他依赖

1yum -y install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat unixODBC unixODBC-devel

3.3 检查所有依赖是否安装完整

1rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat unixODBC unixODBC-devel | grep "not installed"

其中中文系统"not installed" 可能需要替换成中文相关的

4、添加oracle用户组和用户

1groupadd oinstall
2groupadd dba
3groupadd asmadmin
4groupadd asmdba
5useradd -g oinstall -G dba,asmdba oracle -d /home/oracle

查看oracle用户

1id oracle

为oracle 用户设置密码

1passwd oracle

5、优化系统内核

1vim /etc/sysctl.conf
 1fs.aio-max-nr=1048576
2fs.file-max=6815744
3kernel.shmall=2097152
4kernel.shmmni=4096
5kernel.shmmax = 2147483648
6kernel.sem=250 32000 100 128
7net.ipv4.ip_local_port_range=9000 65500
8net.core.rmem_default=262144
9net.core.rmem_max=4194304
10net.core.wmem_default=262144
11net.core.wmem_max=1048586

其中kernel.shmmax为内存的一半,比如内存为4G,则kernel.shmmax=210241024*1024=2147483648
使参数生效

1sysctl -p

6、限制oracle用户的shell权限

1vim /etc/security/limits.conf
1oracle              soft    nproc   2047
2oracle              hard    nproc   16384
3oracle              soft    nofile  1024
4oracle              hard    nofile  65536
1vim /etc/pam.d/login
1session  required   /lib64/security/pam_limits.so
2session  required   pam_limits.so
1vim /etc/profile
1if [ $USER = "oracle" ]; then
2if [ $SHELL = "/bin/ksh" ]; then
3ulimit -p 16384
4ulimit -n 65536
5else
6ulimit -u 16384 -n 65536
7fi
8fi

7、创建oracle相关目录

1mkdir -p /db/app/oracle/product/11.2.0
2mkdir /db/app/oracle/oradata
3mkdir /db/app/oracle/inventory
4mkdir /db/app/oracle/fast_recovery_area
5chown -R oracle:oinstall /db/app/oracle
6chmod -R 775 /db/app/oracle
7mkdir -p /u01/app/oracle/inventory
8chown -R oracle:oinstall /u01/app/oracle/inventory

8、配置oracle用户环境变量

1su oracle
2vim .bash_profile
 1umask 022
2export ORACLE_HOSTNAME=ambari.master.com
3export ORACLE_BASE=/db/app/oracle
4export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/
5export ORACLE_SID=ORCL
6export PATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH
7export LC_ALL="en_US"
8export LANG="en_US"
9export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
10export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"

使之生效

1source ~/.bash_profile 

关于Linux权限的小问题,此处网上资料是配置在.bash_profile即/home/oracle/.bash_profile文件里,我开始也是这样设置的,但每次重新登录切换到oracle用户发现每次都要重新source一下,后来发现必须以oracle用户登录才能每次都生效,不用重新source,如果用root用户登录,再切换到oracle用户的话,需要重新source的,为了方便,我把环境变量在/home/oracle/.bashrc里有配置了一份,这样我从root切换到oracle用户的也不需要重新source了,方便了我后面的使用,当然在生产上还是建议只配置在/home/oracle/.bash_profile,具体的Linux文件权限问题可自行在网上查一下相关资料,希望能对Linux文件权限不太熟悉的同学有所帮助,因为这也困扰了我好多天~

9、解压安装包

如果安装包在root用户下,现切换到root用户

1su
1unzip linux.x64_11gR2_database_1of2.zip -d /db
2unzip linux.x64_11gR2_database_2of2.zip -d /db

然后执行

1mkdir /db/etc/
2cp /db/database/response/* /db/etc/
3vim /db/etc/db_install.rsp
 1oracle.install.option=INSTALL_DB_SWONLY
2DECLINE_SECURITY_UPDATES=true
3UNIX_GROUP_NAME=oinstall
4INVENTORY_LOCATION=/u01/app/oracle/inventory
5SELECTED_LANGUAGES=en,zh_CN
6ORACLE_HOSTNAME=ambari.master.com
7ORACLE_HOME=/db/app/oracle/product/11.2.0
8ORACLE_BASE=/db/app/oracle
9oracle.install.db.InstallEdition=EE
10oracle.install.db.isCustomInstall=true
11oracle.install.db.DBA_GROUP=dba
12oracle.install.db.OPER_GROUP=dba

10、安装

先切换到oracle

1su oracle
2cd /db/database/
3./runInstaller -silent -ignorePrereq -responseFile /db/etc/response/db_install.rsp
Centos7 安装oracle11


可按他提示的查看日志,新增一个命令窗口,执行


1tail -f  /u01/app/oracle/inventory/logs/installActions2018-05-04_11-48-18AM.log

安装成功:

Centos7 安装oracle11


根据提示,执行


1su
2sh /u01/app/oracle/inventory/orainstRoot.sh
3sh /db/app/oracle/product/11.2.0/root.sh

11配置静默监听

1su oracle
2netca /silent /responsefile /db/etc/netca.rsp

查看监听端口

1netstat -tnulp | grep 1521
Centos7 安装oracle11

11、静默创建数据库

 1vim /db/etc/dbca.rsp
2GDBNAME = "orcl"
3SID = "orcl"
4SYSPASSWORD = "oracle"
5SYSTEMPASSWORD = "oracle"
6SYSMANPASSWORD = "oracle"
7DBSNMPPASSWORD = "oracle"
8DATAFILEDESTINATION =/db/app/oracle/oradata
9RECOVERYAREADESTINATION=/db/app/oracle/fast_recovery_area
10CHARACTERSET = "AL32UTF8"
11TOTALMEMORY = "3277"

其中TOTALMEMORY 设置为总内存的80%(410240.8)
在root用户下执行(如果没有权限)

1chown -R oracle:oinstall /db/etc/dbca.rsp   

执行静默建库

1dbca -silent -responseFile /db/etc/dbca.rsp
Centos7 安装oracle11


然后查看一下日志看看有没有报错


1vim /db/app/oracle/cfgtoollogs/dbca/orcl/orcl.log

如下

 1Copying database files
2DBCA_PROGRESS : 1%
3DBCA_PROGRESS : 3%
4DBCA_PROGRESS : 11%
5DBCA_PROGRESS : 18%
6DBCA_PROGRESS : 26%
7DBCA_PROGRESS : 37%
8Creating and starting Oracle instance
9DBCA_PROGRESS : 40%
10DBCA_PROGRESS : 45%
11DBCA_PROGRESS : 50%
12DBCA_PROGRESS : 55%
13DBCA_PROGRESS : 56%
14DBCA_PROGRESS : 60%
15DBCA_PROGRESS : 62%
16Completing Database Creation
17DBCA_PROGRESS : 66%
18DBCA_PROGRESS : 70%
19DBCA_PROGRESS : 73%
20DBCA_PROGRESS : 85%
21DBCA_PROGRESS : 96%
22DBCA_PROGRESS : 100%
23Database creation complete. For details check the logfiles at:
24 /db/app/oracle/cfgtoollogs/dbca/orcl.
25Database Information:
26Global Database Name:orcl
27System Identifier(SID):orcl

查看oracle实例进程

1ps -ef | grep ora_ | grep -v grep
 1root@ambari:~# ps -ef | grep ora_ | grep -v grep
2oracle     3531      1  0 05:48 ?        00:00:00 ora_pmon_orcl
3oracle     3533      1 11 05:48 ?        00:00:12 ora_vktm_orcl
4oracle     3537      1  0 05:48 ?        00:00:00 ora_gen0_orcl
5oracle     3539      1  0 05:48 ?        00:00:00 ora_diag_orcl
6oracle     3541      1  0 05:48 ?        00:00:00 ora_dbrm_orcl
7oracle     3543      1  0 05:48 ?        00:00:00 ora_psp0_orcl
8oracle     3545      1  0 05:48 ?        00:00:00 ora_dia0_orcl
9oracle     3547      1 16 05:48 ?        00:00:17 ora_mman_orcl
10oracle     3549      1  0 05:48 ?        00:00:00 ora_dbw0_orcl
11oracle     3551      1  0 05:48 ?        00:00:00 ora_lgwr_orcl
12oracle     3553      1  0 05:48 ?        00:00:00 ora_ckpt_orcl
13oracle     3555      1  0 05:48 ?        00:00:00 ora_smon_orcl
14oracle     3557      1  0 05:48 ?        00:00:00 ora_reco_orcl
15oracle     3559      1  1 05:48 ?        00:00:01 ora_mmon_orcl
16oracle     3561      1  0 05:48 ?        00:00:00 ora_mmnl_orcl
17oracle     3563      1  0 05:48 ?        00:00:00 ora_d000_orcl
18oracle     3565      1  0 05:48 ?        00:00:00 ora_s000_orcl
19oracle     3615      1  0 05:48 ?        00:00:00 ora_qmnc_orcl
20oracle     4088      1  1 05:48 ?        00:00:00 ora_cjq0_orcl
21oracle     4121      1  0 05:48 ?        00:00:00 ora_q000_orcl
22oracle     4134      1  0 05:48 ?        00:00:00 ora_q001_orcl

查看监听状态

1lsnrctl status
Centos7 安装oracle11

12、登录到oracle,测试

1sqlplus / as sysdba
2select status from v$instance;

这是发现oracle执行任何语句报错如图:

Centos7 安装oracle11


崩溃~


13、各种错误及解决

13.1 首先检查前面的步骤有没有错的

如果没有,则执行后面,一开始我发现前面日志异常,第一次装没有经验,试了几下干脆卸载重装。

13.2 ORACLE not available

先根据ORACLE not available上网查了一下,解决方法:startup

13.3 startup 报错

错误:

1could not open parameter file '/db/app/oracle/product/11.2.0/dbs/initORCL.ora'

13.4解决could not open parameter

执行以下命令即可(确保oracle用户对下面的文件夹有权限,前面已经执行过)

1cp $ORACLE_BASE/admin/orcl/pfile/init.ora.43201822553 $ORACLE_HOME/dbs/initORCL.ora

参考:Linux下无法启动oracle could not open parameter file 解决方法
继续startup,又报错:MEMORY_TARGET not supported on this system

1SQL> startup
2ORA-00845: MEMORY_TARGET not supported on this system

13.5 解决 MEMORY_TARGET not supported on this system

root 用户下执行

1mount -t tmpfs shmfs -o size=7g /dev/shm

参考:ORA-00845: MEMORY_TARGET not supported on this system报错解决
继续startup

1SQL> startup
2ORACLE instance started.
3
4Total System Global Area 1720328192 bytes
5Fixed Size            2214056 bytes
6Variable Size         1006634840 bytes
7Database Buffers      704643072 bytes
8Redo Buffers            6836224 bytes
9ORA-01102: cannot mount database in EXCLUSIVE mode

如果执行查询会报错:database not mounted,因为上面已经报错ORA-01102: cannot mount database in EXCLUSIVE mode

13.6 解决 cannot mount database in EXCLUSIVE mode

先关闭数据库

1shutdown immediate
1SQL> shutdown immediate
2ORA-01507: database not mounted
3
4
5ORACLE instance shut down.

然后在root用户执行

1cd $ORACLE_HOME/dbs
2fuser -k lkORCL
3/db/app/oracle/product/11.2.0/dbs/lkORCL:  2933  2939  2943  2945  2949  2951  2953  2955  2957  2959  2961  2963  3138  3140  3142  3144  3341  3343  3345  3869  3961

其中lkORCL 为自己设置oracle实例名的大写。
再执行fuser -u lkORCL没有任何输出即可
参考:ORA-01507: database not mounted (转)

这时再执行startup就可以了

 1SQL> startup
2ORACLE instance started.
3
4Total System Global Area 1720328192 bytes
5Fixed Size            2214056 bytes
6Variable Size         1006634840 bytes
7Database Buffers      704643072 bytes
8Redo Buffers            6836224 bytes
9Database mounted.
10Database opened.
11SQL> select * from v$version;
12
13BANNER
14--------------------------------------------------------------------------------
15Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
16PL/SQL Release 11.2.0.1.0 - Production
17CORE    11.2.0.1.0  Production
18TNS for Linux: Version 11.2.0.1.0 - Production
19NLSRTL Version 11.2.0.1.0 - Production
20
21SQL>
 

再执行其他查询语句测试一下即可

14、创建用户供远程连接

开放1521端口

1firewall-cmd --zone=public --add-port=1521/tcp --permanent
2firewall-cmd --reload
1create user bigdata identified by bigdata;
2grant connectresource to bigdata;

利用连接数据库的工具就可以远程连接oracle,如DBeaver,然后建表,插入几条记录,查询测试一下,具体方法不再赘述。

参考资料

https://blog.csdn.net/Kenny1993/article/details/75038670

关注我


Centos7 安装oracle11



原文始发于微信公众号(伦少的博客):Centos7 安装oracle11