CentOS 7.9 下安装Oracle 11gR2(图形化)

安装环境:

系统:CentOS7.4 4核4G 磁盘50G

Oracle软件版本:

linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip

一、下载Oracle

官方下载地址:https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

官网下载需要登陆Oracle账号,没有的可以注册一个。

这里我分享一个百度云盘的下载链接(只有64位的):https://pan.baidu.com/s/1hjRj4M7v9WxsAoSyWCiqCQ?pwd=9351 提取码:9351

二、关闭安全措施

1.关闭防火墙:systemctl stop firewalld(由于是测试环境,为了方便,将防火墙关闭。但是,在正式的生产环境,千万不要这样做。)

当然我们也可以不关闭防火墙,只需要开放1521端口(oracle默认是1521端口,如果你修改为其它的端口了,这里就要开放对应的端口)

firewall-cmd --zone=public --add-port=1521/tcp --permanent //放开1521端口

firewall-cmd --reload //在不改变状态的条件下重新加载防火墙配置文件

其他常用命令:

查看防火墙的状态:systemctl status firewalld

启动防火墙服务:systemctl start firewalld

禁用防火墙:systemctl disable firewalld

重载配置文件:firewall-cmd --reload

查看已经开放的端口:firewall-cmd --list-ports

2.关闭selinux(需重启生效)

selinux提供了很多Linux的系统安全措施,演示系统中,将其关闭,方便操作。需要注意的是,在正式生产环境下,千万不要这样做。

执行命令getenforce(或者sestatus -v)查看selinux的状态,初始安装的CentOS7是打开状态。

vim /etc/selinux/config,修改SELINUX的值为disabled image-20240222085059613

修改了之后需要重启服务器,selinux才能生效(这一步非常重要),重启后可以通过getenforce(或者sestatus -v)命令来查看,值一定要disabled才行。

[root@oracle~]$ sestatus -v
SELinux status:                 disabled

三、创建运行oracle数据库的用户和用户组

[root@oracle~]$ groupadd oinstall
[root@oracle~]$ groupadd dba
[root@oracle~]$ useradd -g oinstall -g dba -m oracle
[root@oracle~]$ echo 1 | passwd --stdin oracle
更改用户 oracle 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@oracle~]$ id oracle
uid=1000(oracle) gid=1001(dba) 组=1001(dba)

4.修改操作系统标识:

这一步是因为oracle默认不支持在centos上安装。

查看/etc下的redhat-release:

[root@oracle~]$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

# 把它修改为redhat-7。

[root@oracle~]$ vim /etc/redhat-release
redhat-7

5.安装oracle所需要依赖的包:

[root@oracle~]$ yum -y install binutils* compat-libcap1* compat-libstdc++* gcc* gcc-c++* glibc* glibc-devel* ksh* libaio* libaio-devel* libgcc* libstdc++* libstdc++-devel* libXi* libXtst* make* sysstat* elfutils* unixODBC*

四、修改oracle用户限制

执行vim /etc/security/limits.conf命令,编辑**/etc/security/limits.conf**文件,修改操作系统对oracle用户资源的限制。在该文件中添加如下行:

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

要使limits.conf文件配置生效,必须要确保pam_limits.so文件被加入到启动文件中。

编辑文件:vim /etc/pam.d/login,加入以下语句:

session    required     pam_limits.so

编辑 /etc/profile ,输入命令:vim /etc/profile,按i键进入编辑模式,将下列内容加入该文件。

if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi

五、调整内核参数

要求配置:

image-20240222085827113

编辑/etc/sysctl.conf文件,设置相关参数的系统默认值。如果该文件中已有相关参数的设置,则确保参数值不小于如下对应值;如果还没有相关参数的设置,则按照如下格式添加相应的参数设置行。

# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744 #设置最大打开文件数
fs.aio-max-nr = 1048576
kernel.shmall = 2097152 #共享内存的总量,8G内存设置:2097152*4k/1024/1024
kernel.shmmax = 2147483648 #最大共享内存的段大小
kernel.shmmni = 4096 #整个系统共享内存端的最大数
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500 #可使用的IPv4端口范围
net.core.rmem_default = 262144
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 1048576

要使 /etc/sysctl.conf 更改立即生效,执行以下命令。 输入:sysctl -p 显示如下:

image-20240223112344270

六、创建数据库软件目录和数据文件存放目录(目录的位置,根据自己的情况来定),并改变相应的权限

[root@oracle~]$ mkdir -p /data/oracle   #oracle安装目录
[root@oracle~]$ mkdir -p /data/oraInventory     #oracle配置文件目录
[root@oracle~]$ mkdir -p /data/database     #oracle软件包解压目录
[root@oracle~]$ cd /data
[root@oracle/data]$ ll
总用量 0
drwxr-xr-x. 2 root root 6 2月  23 11:24 database
drwxr-xr-x. 2 root root 6 2月  23 11:24 oracle
drwxr-xr-x. 2 root root 6 2月  23 11:24 oraInventory

[root@oracle/data]$ chown -R oracle:oinstall /data/oracle     #将以上目录的权限赋给oinstall组中的oracle用户
[root@oracle/data]$ chown -R oracle:oinstall /data/oraInventory
[root@oracle/data]$ chown -R oracle:oinstall /data/database
[root@oracle/data]$ ll
总用量 0
drwxr-xr-x. 2 oracle oinstall 6 2月  23 11:24 database
drwxr-xr-x. 2 oracle oinstall 6 2月  23 11:24 oracle
drwxr-xr-x. 2 oracle oinstall 6 2月  23 11:24 oraInventory

七、配置oracle用户的环境变量

1.切换到新创建的oracle用户下:su oracle

2.输入命令:vim /home/oracle/.bash_profile

3.按i进入编辑模式,增加以下内容

export ORACLE_BASE=/data/oracle #oracle数据库安装目录
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 #oracle数据库路径
export ORACLE_SID=orcl #oracle启动数据库实例名
export ORACLE_TERM=xterm #xterm窗口模式安装
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH #添加系统环境变量
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib #添加系统环境变量
export LANG=C #防止安装过程出现乱码
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK  #设置Oracle客户端字符集,必须与Oracle安装时设置的字符集保持一致
 
====================================================================
#如果安装的时候界面都是乱码,可以替换如下
export NLS_LANG=AMERICAN_AMERICA.UTF8
export LANG=en_US.UTF8
 
 
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
 
export PATH

4.切回root,执行以下命令使配置生效:source /home/oracle/.bash_profile,让配置立即生效。

八、安装Oracle

1.使用Xftp将下载好的Oracle安装文件上传到CentOs上去,我这里放到了/home/oracle目录下

image-20240222090505234

2.使用unzip命令解压oracle安装文件,如下:

[root@oracle oracle]# yum install -y unzip zip

[root@oracle oracle]# unzip linux.x64_11gR2_database_1of2.zip -d /data/database/
[root@oracle oracle]# unzip linux.x64_11gR2_database_2of2.zip -d /data/database/

[root@oracle oracle]# chown -R oracle:oinstall /data/database/database/

3.解压完成后进入其解压后的目录database,使用ls命令可以查看解压后database所包含的文件,如下图:

image-20240222090838076

4.Xmanager实现图像映射

# 安装依赖
[root@oracle/data/database]$ yum -y install libglvnd-glx && yum -y groupinstall Fonts
# 配置环境变量
[root@oracle/data/database]$ vim /etc/profile
export DISPLAY=10.0.0.66:0.0
# 使环境变量生效
[root@oracle/data/database]$ source /etc/profile

5.执行安装,输入命令:./runInstaller -jreLoc /usr/lib/jvm/jre-1.8.0(我直接使用命令./runInstaller安装时会出现提示框显示不完全的问题)

[root@oracle/data/database]$ su oracle		# 切换到oracle用户

[oracle@oracle database]$ pwd
/data/database

[oracle@oracle database]$ ll
total 16
drwxr-xr-x. 12 root root  203 Aug 17  2009 doc
drwxr-xr-x.  4 root root  223 Aug 15  2009 install
drwxrwxr-x.  2 root root   61 Aug 15  2009 response
drwxr-xr-x.  2 root root   34 Aug 15  2009 rpm
-rwxr-xr-x.  1 root root 3226 Aug 15  2009 runInstaller
drwxrwxr-x.  2 root root   29 Aug 15  2009 sshsetup
drwxr-xr-x. 14 root root 4096 Aug 15  2009 stage
-rw-r--r--.  1 root root 5402 Aug 18  2009 welcome.html


[oracle@oracle database]$ ./runInstaller 
Starting Oracle Universal Installer...

image-20240222111059428

image-20240222093253330

image-20240222092659592

(安装过程中如果出现问题,可以参考:https://blog.csdn.net/qq_32786873/article/details/82257870)

6.取消选中这个界面上的I wish to receive security updates via My Oracle Support复选框,点击Next

image-20240222101248958

image-20240222101314399

7.在Select Installation Option(选择安装选项)界面上,选择Install database software only选项,点击Next

Create and configure a database(创建和配置数据库) 这个选项是默认的安装选项,它安装Oracle RAC二进制文件,并根据预先配置的模板创建一个数据库。这个选项对于初学者非常有用,因为Oracle为不同类型的工作量提供了不同模板,如用于OLTP和决策支持系统的不同模板。

Install database software only(仅安装数据库软件) 这个选项在集群中的所有服务器上安装Oracle RAC软件。数据库管理员大多使用这一选项,这样,在安装了Oracle RAC二进制文件之后,他们可以使用数据库配置助手来创建数据库,从而拥有更大的灵活性。

Upgrade an existing database(升级已有数据库) 这一选项对集群中的已有Oracle RAC数据库进行升级。 image-20240222101349882

8.在Grid Installation Options(网格安装选项)界面上,可以选择以下2种选项之一:

Single instance database installation(单实例数据库安装) 这一选项允许仅在本地节点上安装单实例数据库软件。

Real Application Clusters database installation(Oracle RAC数据库安装) 这一选项允许在集群中的选定节点上选择和安装Oracle RAC二进制文件。

在这个界面上,选择Single instance database installation选项,点击Next image-20240222101438796

9.在Select Product Languages界面,选择安装语言(默认情况下选择英文),点击Next

image-20240222101510037

10.在Select Database Edition(选择数据库版本)界面,选择企业版,点击Next

image-20240222101636837

11.在Specify Installation Location界面,为Oracle Base和Software Location指定存储位置,点击Next

image-20240223113241513

12.选择清单目录、指定清单组名称,点击Next

image-20240223113422959

13.在Privileged Operating System Groups界面,从提供的值列表中选择数据库管理员和数据库操作员操作系统组,点击Next

image-20240223113529409

14.使用root账户安装缺少的包,那个OS Kernel Parameter.semmi不用管:

[root@localhost ~]# yum -y install libaio* glibc* compat-libstdc++-* libaio-devel-* libgcc-* libstdc++-* unixODBC-* unixODBC-devel* pdksh-*

image-20240223113831115

安装完之后,再去oracle图形界面中check again:

check again的结果还是有错,这是因为系统中已经安装了高版本,比检测的版本高,无法识别,所以此处我们选择右上角的ignore all:

image-20240222102106519

当所有包都安装完成后,点击"Check Again"

image-20240222102130608

可以看到还是有错,有些系统报错是因为现有的包的版本比检测的要高,Oracle 11g check的时候不识别高版本lib包,我们把右上角的"Ignore All"勾选上,然后点击Next

15.在Summary界面,点击Finish

image-20240223114117275

15.安装过程需要点时间,我们耐心等候,安装完成后点击close,结束

image-20240223114141364

安装中出现报错:

image-20240223114808623

先在root下查看一下/usr/lib64下是否有libc.a:

[root@oracle~]$ ll /usr/lib64/libc.a 
-rw-r--r--. 1 root root 5105516 5月  19 2022 /usr/lib64/libc.a

修改**/data/oracle/product/11.2.0/db_1/ctx/lib/ins_ctx.mk**这个文件:

[root@oracle/data/oracle/product/11.2.0/db_1/ctx/lib]$ vim /data/oracle/product/11.2.0/db_1/ctx/lib/ins_ctx.mk

ctxhx: $(CTXHXOBJ)
        $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)

# 替换为:

ctxhx: $(CTXHXOBJ)
        -static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/libc.a

image-20240223114433392

保存退出。


然后在oracle图形界面中retry一下,又报错误:

image-20240223115137365

解决方法:

进入ORACLE_HOME下:

[root@oracle~]$ cd /data/oracle/product/11.2.0/db_1/sysman/lib/

[root@oracle/data/oracle/product/11.2.0/db_1/sysman/lib]$ vim ins_emagent.mk +190

185 #===========================
186 #  emdctl
187 #===========================
188 
189 $(SYSMANBIN)emdctl:
190         $(MK_EMAGENT_NMECTL) -lnnz11

如图:

image-20240223120805100

保存退出。

image-20240223120953282

用 root 用户执行上述两个脚本:

[root@oracle~]$ sh /data/oraInventory/orainstRoot.sh 
Changing permissions of /data/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /data/oraInventory to dba.
The execution of the script is complete.
[root@oracle~]$ sh /data/oracle/product/11.2.0/db_1/root.sh 
Running Oracle 11g root.sh script...

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /data/oracle/product/11.2.0/db_1

Enter the full pathname of the local bin directory: [/usr/local/bin]: 
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
[root@oracle~]$ 

image-20240223121353154

到这一步就安装成功了。。。

九、创建一个数据库实例

创建监听:

以oracle账户执行:

[oracle@oracle ~]$ netca

这时监听界面启动:

image-20240223131402695

image-20240223131413273

image-20240223131427482

image-20240223131441336

image-20240223131449912

image-20240223131503945

image-20240223131518280

然后以oracle身份查看监听状态:

[oracle@oracle ~]$  lsnrctl status

image-20240223132902618

说明监听没有启动。

启动监听:

[oracle@oracle ~]$  lsnrctl start

image-20240223132541152

启动成功。

以Oracle用户进入到ORACLE_HOME下:

[oracle@oracle ~]$ cd /data/oracle/product/11.2.0/db_1/bin

进入bin目录下执行:

[oracle@oracle bin]$ ./dbca

进入到oracle实例安装界面: image-20240223133209817

image-20240223133224852

image-20240223133238076

image-20240223133256509

image-20240223133320133

image-20240223133336583

设置所有账户使用相同密码,这个密码要和最开始创建的oracle用户身份的登陆密码一样:

image-20240223133907841

设置密码不符合规则:

image-20240223133815276

重新设置。

image-20240223134016300

image-20240223134035612

image-20240223134055446

image-20240223134113789

image-20240223134128413

image-20240223134139421

image-20240223134202075

开始创建数据库:

image-20240223134236710

image-20240223142022945

image-20240223142031010

image-20240223142103566

解锁需要使用的用户。也可以直接exit。

数据库创建成功后,通过如下命令进行测试:

image-20240223144116930

测试成功。

至此,Linux 下安装oracle 数据库的过程已完成。