一、安装前准备:夯实稳定基础
dba(数据库管理员)、oinstall(Oracle安装)组,及oracle用户(归属oinstall主组、dba次组),并为oracle用户设置强密码。/etc/sysctl.conf,调整关键参数以支持Oracle运行:
kernel.shmmax:设置为大于SGA大小的值(如2147483648,即2GB),确保SGA可分配在单个共享内存段中;kernel.shmall:计算公式为物理内存(KB)/4(如8GB内存则为2097152),表示共享内存总量(页);fs.file-max:设置为65536以上,增加系统可打开文件数;net.ipv4.ip_local_port_range:设置为9000-65500,扩大应用程序可用端口范围;sysctl -p使参数生效。/etc/security/limits.conf,添加oracle用户的限制:
soft nproc 2047(软限制进程数)、hard nproc 16384(硬限制);soft nofile 1024(软限制打开文件数)、hard nofile 65536(硬限制);soft stack 10240(软限制栈大小,单位KB)。二、系统环境配置:确保Oracle正常运行
oracle用户的~/.bash_profile(或/etc/profile),添加以下变量:
ORACLE_BASE:Oracle软件安装基目录(如/opt/oracle);ORACLE_HOME:Oracle软件主目录(如$ORACLE_BASE/product/19.3.0/dbhome_1);ORACLE_SID:数据库实例名(如orcl);PATH:包含$ORACLE_HOME/bin;LD_LIBRARY_PATH:包含$ORACLE_HOME/lib;source ~/.bash_profile使变量生效。systemctl stop firewalld)、NetworkManager(systemctl stop NetworkManager)(若无需远程访问),减少安全风险。setenforce 0),永久禁用需编辑/etc/selinux/config,将SELINUX=enforcing改为disabled,避免SELinux限制Oracle操作。/etc/hosts,添加主机名与IP的映射(如127.0.0.1 localhost localhost.localdomain),确保数据库能正确解析网络资源。三、Oracle数据库配置:优化性能与稳定性
SGA_TARGET参数实现SGA自动管理(如ALTER SYSTEM SET sga_target=2G SCOPE=SPFILE),涵盖共享池、数据缓冲区、重做日志缓冲区等组件;PGA_AGGREGATE_TARGET(如ALTER SYSTEM SET pga_aggregate_target=1G SCOPE=SPFILE),实现PGA自动管理,减少手动调整工作量。vm.dirty_background_ratio(后台脏页写回阈值,如10%)、vm.dirty_ratio(强制脏页写回阈值,如20%),优化磁盘I/O写回策略。listener.ora(位于$ORACLE_HOME/network/admin),添加监听地址(如LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))));lsnrctl start),并设置开机自启(lnsrctl enable);CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS),定期执行完整备份(BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG),并将备份文件存储在异地,防止数据丢失。四、性能监控与维护:持续保障稳定
SELECT dbms_workload_repository.awr_report_text(dbid, instance_number, between_date, end_date) FROM dual),分析数据库性能瓶颈(如CPU、内存、I/O);通过ADDM(Active Data Discovery and Performance Modeling)获取优化建议,针对性调整参数。EXPLAIN PLAN分析SQL执行计划(如EXPLAIN PLAN FOR SELECT * FROM employees WHERE department_id = 10),避免全表扫描(添加索引)、减少子查询(使用JOIN)、使用绑定变量(减少SQL解析时间),提升SQL执行效率。DBMS_STATS.GATHER_SCHEMA_STATS收集表、索引的统计信息,帮助优化器生成更好的执行计划;ALTER TABLE table_name MOVE PARTITION partition_name)、重建索引(如ALTER INDEX index_name REBUILD),提升查询性能;DBMS_SCHEDULER创建自动任务,如每日收集统计信息(BEGIN DBMS_SCHEDULER.create_job(job_name => 'gather_stats_job', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN DBMS_STATS.GATHER_SCHEMA_STATS(''MY_SCHEMA''); END;', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=DAILY; BYHOUR=2', enabled => TRUE); END;),确保维护任务按时执行。