在CentOS上配置Oracle前,需先确认系统符合Oracle的最低要求,并调整系统标识以绕过官方限制(Oracle官方不直接支持CentOS,需模拟RHEL环境)。
/etc/redhat-release文件,将内容改为类似Red Hat Enterprise Linux Server release 7.9 (Maipo)的格式(需匹配Oracle支持的RHEL版本)。Oracle数据库需要依赖多个系统库,使用yum命令安装必要依赖包,避免安装过程中出现缺失库的错误:
sudo yum install -y binutils compat-libcap1 compat-libstdc++ gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
上述命令覆盖了Oracle安装所需的编译工具、库文件及系统工具。
为Oracle创建专用用户和组,避免使用root用户运行数据库,提升安全性:
sudo groupadd oinstall(Oracle Inventory组)、sudo groupadd dba(数据库管理员组)。sudo useradd -g oinstall -G dba oracle(将oracle用户加入oinstall和dba组)。sudo passwd oracle(为oracle用户设置强密码)。Oracle对系统内核参数有特定要求,需调整/etc/sysctl.conf文件以提升数据库性能:
# 文件IO参数
fs.aio-max-nr = 1048576 # 异步IO最大请求数
fs.file-max = 6815744 # 系统最大文件描述符数
kernel.shmall = 2097152 # 共享内存总页数(每页4KB)
kernel.shmmax = 4294967295 # 单个共享内存段最大大小(约4GB)
kernel.shmmni = 4096 # 系统最大共享内存段数
kernel.sem = 250 32000 100 128 # 信号量参数(semmsl, semmns, semopm, semmni)
# 网络参数
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 # 发送缓冲区最大大小
修改后执行sudo sysctl -p使配置立即生效。
为oracle用户配置环境变量,确保能正确找到Oracle软件和库文件:
编辑/home/oracle/.bashrc文件,添加以下内容(根据实际安装路径调整):
export ORACLE_BASE=/u01/app/oracle # Oracle基目录
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1 # Oracle主目录
export ORACLE_SID=orcl # 数据库实例名
export PATH=$PATH:$ORACLE_HOME/bin # 添加Oracle命令到PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH # 添加Oracle库路径
export LANG=en_US.UTF-8 # 字符集
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 # 数据库字符集
执行source /home/oracle/.bashrc使配置生效。
linux.x64_193000_db_home.zip)上传至服务器,解压到指定目录(如/u01/app/oracle/),并修改权限:unzip linux.x64_193000_db_home.zip -d /u01/app/oracle/
chown -R oracle:oinstall /u01/app/oracle/
su - oracle
cd /u01/app/oracle/database/response/
./runInstaller
按照向导选择“Create and configure a database”(创建并配置数据库)、“General Purpose”(通用用途)、设置数据库名(如orcl)和SID(如orcl),完成安装。netca(Net Configuration Assistant)工具配置监听器,监听1521端口(Oracle默认端口):netca
按照向导选择“Listener configuration”→“Add”→设置主机名(localhost)和端口(1521),完成配置后启动监听器:lsnrctl start
dbca(Database Configuration Assistant)工具创建数据库,选择“General Purpose”模板,设置数据库名、SID、管理员密码(如admin123),完成创建。SGA(系统全局区)是Oracle共享内存区域,需根据服务器内存大小调整:
ALTER SYSTEM SET sga_target=10G SCOPE=BOTH; -- 设置SGA目标大小
ALTER SYSTEM SET pga_aggregate_target=2G SCOPE=BOTH; -- 设置PGA聚合目标大小(PGA用于排序、哈希等操作)
hugepages=ceil(Oracle_SGA_size / 2MB) # 如SGA=10GB,hugepages=5120
编辑/etc/sysctl.conf添加:vm.nr_hugepages=hugepages
执行sysctl -p生效,并在/etc/security/limits.conf中为oracle用户添加:oracle soft memlock hugepages
oracle hard memlock hugepages
WHERE、JOIN、ORDER BY的列创建索引(如主键、外键、高频查询字段)。ALTER INDEX index_name REBUILD;,保持索引效率。SELECT *:明确列出需要的列,减少I/O开销(如SELECT id, name FROM employees)。SELECT * FROM employees WHERE id = :1),提升SQL执行效率。JOIN操作:选择合适的JOIN类型(如INNER JOIN、LEFT JOIN),确保JOIN条件使用索引。WHERE条件过滤数据(如SELECT * FROM orders WHERE customer_id = 100)。DBMS_STATS包收集表、索引的统计信息,帮助优化器生成最佳执行计划:EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SCHEMA_NAME'); -- 收集指定schema的统计信息
ALTER TABLE table_name MOVE;,整理数据碎片。RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';)。AWR(自动工作负载仓库)和ASH(活动会话历史)生成性能报告,分析瓶颈(如CPU、内存、I/O占用高的SQL)。alert.log(警报日志,位于$ORACLE_BASE/diag/rdbms/orcl/orcl/trace/)中的错误信息,定位数据库异常。SQL*Plus、Toad、PL/SQL Developer等工具执行SQL语句、查看执行计划,优化查询性能。