CentOS 7 安装 Oracle 11g

518 阅读6分钟

CentOS 7 安装 Oracle 11g

1.环境准备

官网下载安装包:

下载地址www.oracle.com/database/te…

或在此处搜索下载edelivery.oracle.com/osdc/faces/…

linux.x64_11gR2_database_1of2.zip

linux.x64_11gR2_database_2of2.zip

修改主机名

 [root@localhost ~]# hostname
 [root@localhost ~]# hostnamectl set-hostname server01
 [root@localhost ~]# systemctl restart network
 [root@localhost ~]# source /etc/profile

image-20240530144215954.png

开启1521端口:

firewall-cmd --zone=public --add-port=1521/tcp --permanent

–zone :作用域 –add-port=1521/tcp :添加端口,格式为:端口/通讯协议 –permanent :永久生效,没有此参数重启后失效

重启防火墙生效:

firewall-cmd --reload

关闭SELinux

getenforce
setenforce 0

image-20240530114321977.png

修改配置文件永久关闭SELinux

vi /etc/selinux/config

image-20240530114428500.png

此处改为disabled

安装前置工具:

yum -y install yum-utils net-tools wget vim unzip lrzsz

image-20240530114549973.png

安装依赖包:

yum -y install gcc gcc-c++ make binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static glibc glibc-common glibc-devel ksh libaio libaio-devel libgcc libstdc++ numactl-devel sysstat unixODBC unixODBC-devel kernel-headers pcre-devel readline rlwrap

image-20240530114745093.png

2.用户及目录准备

创建用户组(数据库安装):

groupadd oinstall

创建用户组(数据库管理):

groupadd dba

创建用户oracle并添加到用户组:

useradd -g oinstall -G dba oracle

设置oracle用户密码:

echo "123456" | passwd --stdin oracle

image.png

创建安装目录:

mkdir -p /data/u01/app/oracle/product/11.2.0/dbhome_1
mkdir /data/u01/app/oracle/{oradata,inventory,fast_recovery_area}

修改目录权限:

chown -R oracle:oinstall /data/u01/app/oracle
chmod -R 775 /data/u01/app/oracle

image-20240530115316532.png

可选安装tree

yum -y install tree

image-20240530115417807.png

可以查看文件夹结构

image-20240530115506096.png

3.安装

1)准备安装包

创建oracle安装包目录

mkdir -p /data/u01/software

切换到目录

cd /data/u01/software

上传oralce安装包

image-20240530135154578.png

解压安装包

unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip

解压完成

image-20240530135309753.png

静默安装Oracle11G数据库

2)修改内核配置文件

vim /etc/sysctl.conf

image-20240530135807860.png

在最后添加:

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1073741824
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

image-20240530135925846.png

按ESC,输入:wq退出

运行命令使配置文件生效:

sysctl -p

image-20240530140009926.png

3)修改用户限制

vim /etc/security/limits.conf

image-20240530140149781.png

添加如下内容:

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

image-20240530140242055.png

按ESC,输入:wq退出

4)修改/etc/pam.d/login 文件

vim /etc/pam.d/login

image-20240530140415299.png

添加如下内容:

session required /lib64/security/pam_limits.so
session required pam_limits.so

image-20240530140530339.png

按ESC,输入:wq退出

5)修改环境变量

vim /etc/profile

image-20240530140630512.png

添加如下内容:

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

image-20240530140742135.png

按ESC,输入:wq退出

6)设置oracle用户环境变量

切换oracle用户

su - oracle

编辑配置文件

vim .bash_profile

image-20240530140922938.png

添加如下内容:

export ORACLE_BASE=/data/u01/app/oracle
export ORACLE_HOME=/data/u01/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export ORACLE_UNQNAME=$ORACLE_SID
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=american_america.AL32UTF8
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

image-20240530141028400.png

按ESC,输入:wq退出

执行命令使配置文件生效:

source .bash_profile

7)修改静默安装响应文件

复制一份响应文件

cp -R /data/u01/software/database/response/ .

切换目录

cd response/

修改响应文件

vim db_install.rsp

image-20240530143649672.png

修改以下内容(对应行数)

ORACLE_HOSTNAME:主机名

29 oracle.install.option=INSTALL_DB_SWONLY
37 ORACLE_HOSTNAME=server01
42 UNIX_GROUP_NAME=oinstall
47 INVENTORY_LOCATION=/data/u01/app/oracle/inventory

image-20240530150943039.png

78 SELECTED_LANGUAGES=en,zh_CN
83 ORACLE_HOME=/data/u01/app/oracle/product/11.2.0/dbhome_1
88 ORACLE_BASE=/data/u01/app/oracle
99 oracle.install.db.InstallEdition=EE

image-20240530151126559.png

142 oracle.install.db.DBA_GROUP=dba
147 oracle.install.db.OPER_GROUP=dba

image-20240530151222661.png

385 DECLINE_SECURITY_UPDATES=true

image-20240530151356302.png

按ESC,输入:wq退出

8)执行安装

切换到安装包目录

cd /data/u01/software/database/

image-20240530151501695.png

执行安装命令:

./runInstaller -silent -ignoreSysPrereqs -ignorePrereq -responseFile /home/oracle/response/db_install.rsp

image-20240530182522885.png

安装过程中可以开启终端实时查看安装日志

tail -f /data/u01/app/oracle/inventory/logs/installActions2024-05-31_06-22-50PM.log

时间会有些长,耐心等待

image-20240530183137173.png

出现此信息

新开一个终端

执行这两个脚本

sh /data/u01/app/oracle/inventory/orainstRoot.sh
sh /data/u01/app/oracle/product/11.2.0/dbhome_1/root.sh

image-20240530183454327.png

执行完成后切换回oracle安装页面回车显示

image-20240530183546915.png

*)执行sqlplus缺少rlwrap命令

image-20240530184052399.png

yum安装失败

image-20240530184113013.png

安装依赖:

yum install readline readline-devel libtermcap-devel

下载rlwrap安装包

下载地址:Release v0.45.2 · hanslub42/rlwrap · GitHub

上传到服务器

解压:

tar zxvf rlwrap-0.45.2.tar.gz

切换到解压目录

cd rlwrap-0.45.2

执行安装

./configure && make && make install

image-20240530202915465.png

执行:

rlwrap

查看是否安装成功

image-20240530202950672.png

9)安装成功

执行命令:

sqlplus / as sysdba

出现

image-20240530203050077.png

则,安装成功

* )磁盘空间不足解决方案:

执行命令:

创建新分区

fdisk /dev/sda

image-20240530165555078.png

image-20240530165609162.png

执行重启:

partprobe

查询:

ls /dev/sda3

创建新物理卷

pvcreate /dev/sda3

将新物理卷添加到卷组中

vgextend centos /dev/sda3

image-20240530170005058.png

查看逻辑卷名字

lvs

image-20240530170022457.png

扩展逻辑卷

lvextend /dev/centos/root -L +10G

查看是否支持

pvdisplay /dev/sda3

查看系统的文件系统类型

lsblk -f

扩容文件系统

xfs_growfs /dev/centos/root

image-20240530170101603.png

扩容成功

4.Oracle 11g 创建数据库实例

1)修改相应配置文件

vim /home/oracle/response/dbca.rsp

image-20240531101419309.png

修改以下内容:

78 GDBNAME = "xx"

image.png

149 SID= "xx"

image.png

SYSPASSWORD = "密码"

SYSTEMPASSWORD = "密码"

190 SYSPASSWORD = "123456"
200 SYSTEMPASSWORD = "123456"

image.png

SYSMANPASSWORD = "密码"

DBSNMPPASSWORD = "密码"

231 SYSMANPASSWORD = "123456"
241 DBSNMPPASSWORD = "123456"

image.png

357 DATAFILEDESTINATION =/data/u01/app/oracle/oradata
367 RECOVERYAREADESTINATION=/data/u01/app/oracle/fast_recovery_area

数据文件(Data Files)是Oracle数据库用来存储表、索引、表空间等数据库对象的物理文件。DATAFILEDESTINATION是一个数据库初始化参数,用于指定数据文件的默认存储路径。

恢复文件(Recovery Files)是用于数据库恢复和备份操作的文件,通常是归档日志和备份集。RECOVERYAREADESTINATION是一个数据库初始化参数,用于指定恢复文件的默认存储路径,也被称为Fast Recovery Area。

image-20240531102323069.png

415 CHARACTERSET = "AL32UTF8"

CHARACTERSET = "AL32UTF8"用于设置Oracle数据库的字符集。

image-20240531102439251.png

540 TOTALMEMORY = "4096"

TOTALMEMORY = "4096"TOTALMEMORY参数用于指定Oracle数据库实例可以使用的内存总量,以MB为单位。

image-20240531102910962.png

按ESC,输入:wq保存退出

2)检查配置

egrep -v "(^#|^$)" /home/oracle/response/dbca.rsp

image-20240531103554668.png

配置文件中各个部分的说明:

  1. [GENERAL]  通用配置信息部分。 
  • RESPONSEFILE_VERSION: 响应文件的版本号。
  • OPERATION_TYPE: 操作类型,指定为createDatabase表示创建数据库实例。
  1. [ATEDATABASE]  创建数据库实例的配置信息部分。 
  • GDBNAME: 创建的全局数据库名。
  • SID: 创建的系统标识。
  • TEMPLATENAME: 使用的数据库配置模板。
  • SYSPASSWORD: SYS用户的密码。
  • SYSTEMPASSWORD: SYSTEM用户的密码。
  • SYSMANPASSWORD: SYSMAN用户的密码。
  • DBSNMPPASSWORD: DBSNMP用户的密码。
  • DATAFILEDESTINATION: 数据文件存储的目路径。
  • RECOVERYAREADESTINATION: 恢复区域存储的目录路径。
  • CHARACTERSET: 数据库的字符集。
  • TOTALMEMORY: 数据库实例的总内存大小。
  1. [createTemplateFromDB]  从现有数据库创建模板的配置部分。 
  • SOURCEDB: 要复制的源数据库。
  • SYSDBAUSERNAME: SYSDBA角色的用户名。
  • TEMPLATENAME: 创建的模板名称。
  1. [createCloneTemplate]  创建克隆模板的配置信息部分。 
  • SOURCEDB: 要克隆的源数据库。
  • TEMPLATENAME: 创建的克隆模板名称。
  1. [DELETEDATABASE]  删除数据库的配置信息部分。 
  • SOURCEDB 要删除的数据库。
  1. [generateScripts]  生成脚本的配置信息部分。 
  • TEMPLATENAME: 要使用的模板名称。
  • GDBNAME: 创建的全局数据库名。
  1. [CONFIGUREDATABASE]  配置数据库的配置信息部分。 
  2. [ADDINSTANCE]  添加数据库实例的配置信息部分。 
  • DB_UNIQUE_NAME: 数据库实例的唯一名称。
  • NODELIST: 节点列表。
  • SYSDBAUSERNAME: SYSDBA角色的用户名。
  1. [DELETEINSTANCE]  删除数据库实例的配置信息部分。 
  • DB_UNIQUE_NAME: 数据实例的唯一名称。
  • INSTANCENAME: 实例名称。
  • SYSDBAUSERNAME: SYSDBA角色的用户名。

3)安装创建

执行以下命令创建:

dbca -silent -responseFile /home/oracle/response/dbca.rsp

image-20240531110802596.png

查看默认实例:

env|grep ORACLE_UNQNAME

image-20240531110855791.png

4)启动监听

lsnrctl start

image-20240531111201693.png

重启Oracle数据库操作步骤

1)查看监听器状态:lsnrctl status
2)停止监听器:lsnrctl stop
3)连接数据库:sqlplus sys/密码 as sysdba
4)停止数据库:shutdown immediate
5)启动数据库:startup
6)退出数据库:exit
7)启动监听:lsnrctl start

5)测试链接成功

image-20240531111341333.png

5.配置开机自动启动

1)oracle用户修改Oracle实例配置文件

vim /etc/oratab

image.png

修改如下内容:

xx:/data/u01/app/oracle/product/11.2.0/dbhome_1:Y

image.png

按ESC,输入:wq保存并退出

2)root用户添加开机自启策略

增加权限:

chmod 777 /etc/rc.local

编辑文件:

vim /etc/rc.local

image-20240531112103127.png

添加如下内容:

# oracle开机自启
su - oracle -c "dbstart"
su - oracle -c "lsnrctl start"
su - oracle -c "lsnrctl start listenerl"

image-20240531112154322.png

按ESC,输入:wq保存并退出

6.配置参数

1)processes和sessions

查询连接数参数(processes)的设置情况

 select value from v$parameter where name = 'processes'

image-20240531113044911.png

以SYSDBA的权限登录sys进行如下操作:

使用SQLplus命令窗口执行:

查看processes:

show parameter processes;

image-20240531113311545.png

修改processes参数

alter system set processes=450 scope = spfile;
  • set processes=450:将数据库实例的processes参数设置为450。processes参数用于指定系统中可以同时运行的进程(会话)的最大数量。修改该参数可以增加或减少系统可以运行的并发会话数。
  • scope = spfile:表示将修改持久化到数据库实例的服务器参数文件(spfile中。scope参数指定了修改的生命周期和作用范围。在这种情况下,将修改应用到spfile中,这意味着当数据库实例重启时,参数值将会被保留下来并在实例启动时自动加载。

image-20240531113601223.png

执行成功

重启数据库

1)查看监听器状态:lsnrctl status
2)停止监听器:lsnrctl stop
3)连接数据库:sqlplus sys/密码 as sysdba
4)停止数据库:shutdown immediate
5)启动数据库:startup
6)退出数据库:exit
7)启动监听:lsnrctl start

查看processes参数和session参数

show parameter processes;
show parameter session;

image-20240531140718127.png

【注:sessions是个派生值,由processes的值决定,公式sessions=1.1*process + 5】

2)表空间

查看现有表空间

SELECT t.tablespace_name, d.file_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size   
FROM dba_tablespaces t, dba_data_files d   
WHERE t.tablespace_name = d.tablespace_name   
GROUP BY t.tablespace_name, d.file_name;

查询TEMP表空间

select tablespace_name, file_name, bytes/1024/1024 temp_mb from dba_temp_files

创建INDX表空间

CREATE TABLESPACE INDX DATAFILE '/data/u01/app/oracle/oradata/nmggk/indx01.dbf' SIZE 8192m autoextend on next 50M maxsize unlimited;   

查看表空间:

SELECT t.tablespace_name, d.file_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size   
FROM dba_tablespaces t, dba_data_files d   
WHERE t.tablespace_name = d.tablespace_name   
GROUP BY t.tablespace_name, d.file_name;

image-20240531150749050.png

表空间扩容

USERS表

ALTER DATABASE DATAFILE '/data/u01/app/oracle/oradata/nmggk/users01.dbf'RESIZE 8192M;

SYSTEM表

ALTER DATABASE DATAFILE '/data/u01/app/oracle/oradata/nmggk/system01.dbf'RESIZE 4096M;

UNDOTBS1表

ALTER DATABASE DATAFILE '/data/u01/app/oracle/oradata/nmggk/undotbs01.dbf'RESIZE 2048M;

SYSAUX表

ALTER DATABASE DATAFILE '/data/u01/app/oracle/oradata/nmggk/sysaux01.dbf'RESIZE 1024M;

TEMP表

alter database tempfile '/data/u01/app/oracle/oradata/nmggk/temp01.dbf' resize 1024M;

image-20240531160827006.png

image-20240531160628030.png

image-20240531160838042.png

扩容完成

*)其他表空间操作

查看数据文件使用率

SELECT D.TABLESPACE_NAME, 
       SPACE || 'M' "SUM_SPACE(M)", 
       SPACE - NVL (FREE_SPACE, 0) || 'M' "USED_SPACE(M)", 
       ROUND ( (1 - NVL (FREE_SPACE, 0) / SPACE) * 100, 2) || '%' 
          "USED_RATE(%)", 
       FREE_SPACE || 'M' "FREE_SPACE(M)" 
  FROM ( SELECT TABLESPACE_NAME, 
                 ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE, 
                 SUM (BLOCKS) BLOCKS 
            FROM DBA_DATA_FILES 
        GROUP BY TABLESPACE_NAME) D, 
       ( SELECT TABLESPACE_NAME, 
                 ROUND (SUM (BYTES) / (1024 * 1024), 2) FREE_SPACE 
            FROM DBA_FREE_SPACE 
        GROUP BY TABLESPACE_NAME) F 
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+) 
UNION ALL 
SELECT D.TABLESPACE_NAME, 
       SPACE || 'M' "SUM_SPACE(M)", 
       USED_SPACE || 'M' "USED_SPACE(M)", 
       ROUND (NVL (USED_SPACE, 0) / SPACE * 100, 2) || '%' "USED_RATE(%)", 
       NVL (FREE_SPACE, 0) || 'M' "FREE_SPACE(M)" 
  FROM ( SELECT TABLESPACE_NAME, 
                 ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE, 
                 SUM (BLOCKS) BLOCKS 
            FROM DBA_TEMP_FILES 
        GROUP BY TABLESPACE_NAME) D, 
       ( SELECT TABLESPACE_NAME, 
                 ROUND (SUM (BYTES_USED) / (1024 * 1024), 2) USED_SPACE, 
                 ROUND (SUM (BYTES_FREE) / (1024 * 1024), 2) FREE_SPACE 
            FROM V$TEMP_SPACE_HEADER 
        GROUP BY TABLESPACE_NAME) F 
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+) 
ORDER BY 1;

image-20250506095816162.png

查看文件扩展性

SELECT
file_id,
file_name,
tablespace_name,autoextensible as autoextend,status,
round(bytes / (1024 * 1024 ), 0) total_space
FROM dba_data_files
ORDER BY tablespace_name;

image-20250506095941591.png

给表空间增加一个文件并设置自动增长

alter tablespace USERS add datafile 'G:\ORACLE\ADMINISTRATOR\ORADATA\NGGK\USERS02.DBF' 
size 8192M autoextend on next 50M maxsize 32479 M;

允许表空间数据文件自动增长

alter database datafile 'G:\ORACLE\ADMINISTRATOR\ORADATA\NGGK\INDX.DBF' autoextend on next 50 M maxsize 32479 M

查询temp表空间大小

SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS, 
USED_SPACE "USED_SPACE(M)",ROUND(NVL(USED_SPACE,0)/SPACE*100,2) "USED_RATE(%)",
NVL(FREE_SPACE,0) "FREE_SPACE(M)"
FROM 
(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS
FROM DBA_TEMP_FILES
GROUP BY TABLESPACE_NAME) D,
(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES_USED)/(1024*1024),2) USED_SPACE,
ROUND(SUM(BYTES_FREE)/(1024*1024),2) FREE_SPACE
FROM V$TEMP_SPACE_HEADER
GROUP BY TABLESPACE_NAME) F
WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME(+);

image-20250506112255368.png

查询temp表是否自动扩展

select d.file_name,d.tablespace_name,d.autoextensible from dba_temp_files d;

添加temp表空间,增加数据文件

ALTER TABLESPACE TEMP ADD TEMPFILE'G:\ORACLE\ADMINISTRATOR\ORADATA\NGGK\TEMP01.DBF' SIZE 2048m;