一、系统准备:满足Oracle运行的基础条件
在CentOS上配置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* unixODBC* unzip lrzsz。二、用户与组管理:隔离Oracle运行权限
Oracle需以专用用户身份运行,避免权限过高导致系统安全风险:
oinstall(Oracle软件安装组)和dba(数据库管理员组)。groupadd oinstall; groupadd dbaoracle用户,加入上述两组,并设置密码。useradd -m -g oinstall -G dba oracle; passwd oracle/u01/app/oracle)和数据目录(如/u01/app/oracle/oradata)需归属oracle:oinstall,并赋予读写执行权限。chown -R oracle:oinstall /u01/app/oracle; chmod -R 755 /u01/app/oracle。三、内核参数调优:适配Oracle内存与进程需求
Oracle对系统内核参数(如内存、进程、网络)有特定要求,需修改/etc/sysctl.conf文件优化:
fs.aio-max-nr = 1048576 # 异步I/O最大请求数
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 # 发送缓冲区最大大小
vm.swappiness = 10 # 减少内存交换(0-100,值越小越少交换)
sysctl -p命令加载修改后的参数。四、环境变量配置:确保Oracle命令全局可用
为oracle用户配置环境变量,使其能正确识别Oracle软件路径和库文件:
/home/oracle/.bashrc文件,添加以下内容(以Oracle 19c为例):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=$ORACLE_HOME/bin:$PATH # 将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命令。五、Oracle安装:静默或图形化方式部署
Oracle安装分为图形化(适合有界面的CentOS)和静默(适合无界面的服务器)两种方式:
oracle用户,进入安装包目录(如/data/src/database),运行./runInstaller,按照向导选择“典型安装”(指定ORACLE_BASE、ORACLE_HOME、ORACLE_SID等参数),完成安装后执行/u01/app/oraInventory/orainstRoot.sh和/u01/app/oracle/product/19.3.0/dbhome_1/root.sh脚本。/data/src/response/db_install.rsp),修改关键参数(如ORACLE_BASE、ORACLE_HOME、ORACLE_SID),然后执行./runInstaller -silent -responseFile /data/src/response/db_install.rsp。六、监听器与数据库实例配置:启用数据库服务
安装完成后,需配置监听器和创建数据库实例:
netca(Net Configuration Assistant)工具,选择“监听程序配置”,添加TCP协议(主机名为localhost,端口为1521),保存配置后启动监听器:lsnrctl start(查看状态:lsnrctl status)。dbca(Database Configuration Assistant)工具,选择“创建数据库”,按照向导设置数据库名(如orcl)、SID、字符集(如AL32UTF8)、密码等参数,完成实例创建。也可通过命令行创建:sqlplus / as sysdba
CREATE DATABASE orcl
USER SYS IDENTIFIED BY password
USER SYSTEM IDENTIFIED BY password
CONTROLFILE REUSE
LOGFILE GROUP 1 ('/u01/app/oracle/oradata/orcl/redo01.log') SIZE 500M,
GROUP 2 ('/u01/app/oracle/oradata/orcl/redo02.log') SIZE 500M,
GROUP 3 ('/u01/app/oracle/oradata/orcl/redo03.log') SIZE 500M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/u01/app/oracle/oradata/orcl/system01.dbf' SIZE 325M REUSE
SYSAUX DATAFILE '/u01/app/oracle/oradata/orcl/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TABLESPACE users
DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf'
SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf'
SIZE 20M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
七、性能优化:提升Oracle运行效率
Oracle性能优化需从操作系统、数据库参数、SQL语句多方面入手:
firewalld、SELinux):systemctl stop firewalld; systemctl disable firewalld; setenforce 0(修改/etc/selinux/config中的SELINUX=disabled永久生效)。sga_target/2MB),修改/etc/sysctl.conf:vm.nr_hugepages = 2048(示例),然后执行sysctl -p。sga_target=8G、pga_aggregate_target=4G)。processes=300、sessions=335(sessions=processes*1.1+5),避免连接过多导致资源耗尽。SELECT *:明确列出所需列,减少I/O开销。SELECT * FROM employees WHERE id = :1),提高查询效率。WHERE、JOIN、ORDER BY子句中的列创建索引(如CREATE INDEX idx_emp_name ON employees(name)),但避免过度索引(影响DML性能)。EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SCHEMA_NAME');(帮助优化器生成最佳执行计划)。ALTER INDEX idx_emp_name REBUILD;(定期清理碎片,提高索引效率)。SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(1,1,1,1));生成报告,分析性能瓶颈(如CPU、内存、I/O使用情况)。