centos系统安装oracle数据库教程(linux命令行安装)
一般来说我们Windows下进行安装Oracle都很简单,但Linux下却要输入很多命令,配置比较麻烦。
以下的安装步骤是本人经过安装Linux下的Oracle经验,希望能帮到大家。
网上找的oracle 11c安装包:
链接:https://pan.baidu.com/s/1X1IM8-opOlJY0LiBcXhDsA?pwd=9527
提取码:9527
一、在Linux服务器上创建oracle数据库安装目录
1、创建Oracle数据库安装目录:
mkdir -p /data/oracle
2、创建Oracle数据库配置文件目录:
mkdir -p /data/oraInventory
3、创建Oracle数据包解压目录:
mkdir -p /data/database
二、创建运行oracle数据库的系统用户和用户组
1、创建用户组oinstall:
groupadd oinstall
2、创建用户组dba:
groupadd dba
3、创建用户Oracle,并将Oracle用户加入到oinstall和dba用户组中:
useradd -g oinstall -G dba -m oracle
4、设置Oracle用户的密码,根据提示输入2次密码:
passwd oracle
5、设置目录所有者为oinstall用户组的Oracle用户:
chown -R oracle:oinstall /data/oracle
chown -R oracle:oinstall /data/oraInventory
chown -R oracle:oinstall /data/database
三、关闭防火墙
在Linux系统中安装Oracle数据库时,通常建议关闭SELinux(Security-Enhanced Linux)和Firewalld(防火墙),主要是为了简化安装过程并避免一些潜在的配置问题。
1.关闭SELINX:
在root用户下关闭防火墙
编辑config配置文件:vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
保存退出。
2.关闭防火墙服务
systemctl status firewalld.service //查看防火墙状态
systemctl stop firewalld.service //关闭防火墙
systemctl disable firewalld.service //禁止使用防火墙(重启也是禁止的)
四、设置系统内核参数
1、编辑etc下的sysctl.conf文件:
vi /etc/sysctl.conf #编辑,在最后添加以下代码
#这个设置用来防止ICMP广播请求(ping)响应,以减少网络攻击的风险。设置为1表示忽略广播请求。
net.ipv4.icmp_echo_ignore_broadcasts = 1
#启用反向路径过滤(Reverse Path Filtering)。这个功能可以帮助防止IP欺骗和一些类型的DDoS攻击。设置为1表示在所有接口上启用严格的反向路径过滤。
net.ipv4.conf.all.rp_filter = 1
#设置系统中可以同时打开的最大文件数。这对于需要处理大量并发连接或文件操作的应用程序非常重要,如数据库服务器。
fs.file-max = 6815744
#设置异步I/O子系统的最大请求数。这对于提高I/O密集型应用程序的性能很有帮助。
fs.aio-max-nr = 1048576
#设置系统中所有共享内存段的总页数。每页通常是4KB,所以这里的值乘以4KB就是总的共享内存大小。例如,2097152 * 4KB = 8GB。
kernel.shmall = 2097152
#设置单个共享内存段的最大大小(以字节为单位)。这里设置为2GB。对于大型数据库应用,可能需要更大的值。
kernel.shmmax = 2147483648
#设置整个系统中共享内存段的最大数量。这对于多用户或多进程环境下的共享内存使用很重要。
kernel.shmmni = 4096 #整个系统共享内存端的最大数
#设置信号量的相关参数:
#第一个数字是SEMMSL:每个信号集中的最大信号量数。
#第二个数字是SEMMNS:系统范围内可用的信号量总数。
#第三个数字是SEMOPM:在一个semop调用中允许的最大操作数。
#第四个数字是SEMMNI:系统中信号量集合的最大数量。
#这些设置通常是为了满足数据库和其他高并发应用的需求。
kernel.sem = 250 32000 100 128
#设置TCP/UDP本地端口范围。这指定了可用于出站连接的端口范围。扩大这个范围可以增加并发连接的数量。
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
保存退出后,输入以下命令使配置立即生效:
sysctl -p
这里因为我的虚拟机是32G物理内存,所以配置了28G的共享存储以及单个最大15G的共享内存段。
kernel.shmall = 7340032 # 28GB / 4KB
kernel.shmmax = 16106127360 # 15GB (单个共享内存段的最大大小)
五、设置oracle用户限制,提高软件运行性能
1、编辑/etc/security/limits.conf 文件:
/etc/security/limits.conf 文件用于设置用户或组的资源限制。
这些限制可以是软限制(soft limit)和硬限制(hard limit)。
软限制是可以由用户自行调整的上限,而硬限制是系统管理员设置的绝对上限,用户不能超过这个值。
vi /etc/security/limits.conf (#在末尾添加以下代码)
# 这表示 oracle 用户可以同时运行的最大进程数的软限制是2047个。
# 软限制是可以由用户通过 ulimit 命令自行调整的。
oracle soft nproc 2047
# 这表示 oracle 用户可以同时运行的最大进程数的硬限制是16384个。
# 硬限制是系统管理员设置的绝对上限,用户不能超过这个值。
oracle hard nproc 16384
# 这表示 oracle 用户可以同时打开的最大文件描述符数的软限制是1024个。
# 软限制是可以由用户通过 ulimit 命令自行调整的。
oracle soft nofile 1024
# 这表示 oracle 用户可以同时打开的最大文件描述符数的硬限制是65536个。
# 硬限制是系统管理员设置的绝对上限,用户不能超过这个值。
oracle hard nofile 65536
解释
- nproc:表示用户可以同时运行的最大进程数。这对于像Oracle数据库这样的应用非常重要,因为它们可能会启动多个子进程来处理不同的任务。
- nofile:表示用户可以同时打开的最大文件描述符数。文件描述符用于访问文件和其他I/O资源。对于数据库等需要频繁进行I/O操作的应用来说,较高的文件描述符限制可以提高性能。
为什么设置这些限制?
- 性能优化:通过增加进程数和文件描述符数的限制,可以确保Oracle数据库有足够的资源来处理高并发请求和大量I/O操作。
- 稳定性:适当的限制可以防止某个用户或进程消耗过多的系统资源,从而影响其他用户或系统的整体稳定性。
- 安全性:限制用户的资源使用可以减少潜在的安全风险,例如防止恶意用户通过创建大量进程或打开大量文件来耗尽系统资源。
你可以使用 ulimit 命令来查看当前的限制,并验证配置是否正确:
测试配置
你可以使用 ulimit 命令来查看当前的限制,并验证配置是否正确:
# 切换到 oracle 用户
sudo su - oracle
# 查看当前的进程数限制
ulimit -u
# 查看当前的文件描述符限制
ulimit -n
六、配置用户环境
1、编辑.bash_profile文件:
切换到oracle用户下
su - oracle
打开并编辑环境变量文件,配置oracle用户环境变量
vi /home/oracle/.bash_profile
在最后添加以下代码:
export ORACLE_BASE=/data/oracle #oracle数据库安装目录
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 #oracle数据库路径
export ORACLE_SID=orcl #oracle启动数据库实例名
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安装时设置的字符集保持一致,如:ZHS16GBK,否则出现数据导入导出中文乱码问题
进入到home目录下的Oracle目录运行以下命令使设置立刻生效:
source .bash_profile
七、安装Oracle软件包
1、解压oracle压缩文件到解压目录(压缩包一定要放在解压的目录下)
unzip p13390677_112040_Linux-x86-64_1of7.zip -d /data/database
unzip p13390677_112040_Linux-x86-64_2of7.zip -d /data/database
unzip没装的,记得安装。
yum install unzip
若没无法安装,检查下是否切换了国内的镜像源
# 1. 备份当前的YUM源配置
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 2. 下载阿里云的CentOS 7 YUM源配置文件
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 3. 清理YUM缓存并生成新的缓存
yum clean all
yum makecache
授权oracle目录
chown -R oracle:oinstall /data/database/database
2、安装oracle数据库所需要的软件包
安装过程全都选择yes
yum install gcc* gcc-* gcc-c++-* glibc-devel-* glibc-headers-* compat-libstdc* libstdc* elfutils-libelf-devel* libaio-devel* sysstat* unixODBC-* pdksh-*
单独安装pdksh-5.2.14-37.el5.x86_64.rpm包:
yum install pdksh-5.2.14-37.el5.x86_64.rpm
3、静默安装
切换到oracle用户,进入安装包目录
su - oracle
cd /data/database/database #进入安装包目录
由于我安装的centos系统没有图形化界面,所以需要使用静默安装。
静默安装需要配置响应文件(.rsp),这个响应文件(.rsp)用于配置Oracle数据库的静默安装。
每个参数都有特定的含义和用途,下面是对提供的配置文件中各个参数的详细解释:
# 指定安装选项。INSTALL_DB_AND_CONFIG ,安装Oracle数据库软件并创建和配置一个初始数据库实例。其他常见的选项包括 INSTALL_DB_SWONLY (表示只安装Oracle数据库软件)。
[oracle.install.option]=INSTALL_DB_AND_CONFIG
# 指定安装Oracle数据库的主机名。你需要将其替换为实际的主机名。(就是命令行执行抬头@后面的值,比如我的是172-16-68-152)
[ORACLE_HOSTNAME]=your_hostname
# 指定Oracle安装用户所属的主组。通常情况下,这个组是 oinstall。
UNIX_GROUP_NAME=oinstall
# 指定Oracle Inventory目录的位置。Inventory目录用于存储有关已安装Oracle产品的信息(填前面创建的目录/data/oraInventory)。
INVENTORY_LOCATION=/data/oraInventory
# 指定安装过程中使用的语言。这里设置为英文 (en)。
SELECTED_LANGUAGES=en
# 指定Oracle Home目录的位置。Oracle Home是安装Oracle数据库软件的主要目录(必须要放ORACLE_BASE后面)。
ORACLE_HOME=/data/oracle/product/11.2.0/dbhome_1
# 指定Oracle Base目录的位置。Oracle Base是包含多个Oracle Home的根目录(填前面创建的目录/data/oracle)。
ORACLE_BASE=/data/oracle
# 指定要安装的Oracle数据库版本。EE 表示企业版 (Enterprise Edition)。其他可能的值包括 SE(标准版)、PE(个人版)等。
oracle.install.db.InstallEdition=EE
# 指定数据库管理员组。通常情况下,这个组是 dba。
oracle.install.db.DBA_GROUP=dba
# 指定初始数据库的类型。GENERAL_PURPOSE 表示通用目的数据库。其他可能的值包括 DATA_WAREHOUSE(数据仓库)、TRANSACTION_PROCESSING(事务处理)等。
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
# 指定全局数据库名称。这是数据库在网络中的唯一标识符。
oracle.install.db.config.starterdb.globalDBName=orcl
# 指定系统标识符 (SID)。SID 是数据库实例的唯一标识符。
oracle.install.db.config.starterdb.SID=orcl
# 指定数据库的字符集。AL32UTF8 是一种常用的Unicode字符集。
oracle.install.db.config.starterdb.characterSet=AL32UTF8
# 指定内存配置选项。DEFAULT 表示使用默认的内存配置。其他可能的值包括 CUSTOM(自定义内存配置)。
oracle.install.db.config.starterdb.memoryOption=DEFAULT
# 指定安全配置选项。DEFAULT 表示使用默认的安全配置。其他可能的值包括 ADVANCED(高级安全配置)。
oracle.install.db.config.starterdb.securityOption=DEFAULT
# 指定是否将数据库创建为容器数据库 (CDB)。false 表示不创建CDB。true 表示创建CDB。
oracle.install.db.config.starterdb.createAsContainerDatabase=false
# 指定是否启用可插拔数据库 (PDB)。false 表示不启用PDB。true 表示启用PDB。
oracle.install.db.config.starterdb.enablePluggableDatabase=false
# 设置自动内存管理(Automatic Memory Management, AMM)的最大内存限制。7077 表示 7077 MB。
oracle.install.db.config.starterdb.memoryLimit=7077
# 为所有数据库用户设置相同的密码。
oracle.install.db.config.starterdb.password.ALL=your_password
# 控制是否通过My Oracle Support接收安全更新。
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
#指定是否拒绝接收安全更新通知。true 表示拒绝接收安全更新通知。false 表示接受安全更新通知。
DECLINE_SECURITY_UPDATES=true
按自身需求,按上述配置编辑响应文件
vi /data/database/database/response/db_install.rsp
执行静默安装
./runInstaller -ignoreSysPrereqs -ignorePrereq -showProgress -silent -responseFile /data/database/database/response/db_install.rsp
安装完成后,开启实例。
sqlplus / as sysdba
SQL>