一、系统环境准备:确保基础兼容性与稳定性
在Ubuntu上安装Oracle前,需严格匹配Oracle最低系统要求(如Ubuntu 20.04及以上版本,推荐使用LTS版本以保证长期支持);配置足够的硬件资源(建议至少4GB内存、2核CPU、50GB以上高速磁盘空间,优先选择SSD/NVMe存储以提升IO性能);安装必要软件包(如gcc、make、binutils、libc6-dev等编译工具,以及libaio1、libaio-dev等异步IO库),并通过dpkg -i命令安装Oracle官方提供的Ubuntu兼容包,避免因环境不匹配导致的安装失败或运行异常。
二、Oracle安装与配置:规范流程减少错误
oracle)及组(如oinstall、dba),将Oracle安装目录(如/u01/app/oracle/product/19.0.0/dbhome_1)和数据目录(如/u01/app/oracle/oradata)的所有权赋予oracle:oinstall,并设置目录权限为750(防止未授权访问);oracle用户的~/.bashrc文件中添加关键变量(如ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1、ORACLE_SID=orcl、PATH=$ORACLE_HOME/bin:$PATH),并执行source ~/.bashrc使变量生效;sqlplus / as sysdba登录数据库,执行SELECT status FROM v$instance;确认数据库状态为OPEN。三、内核参数调优:适配Oracle资源需求
Ubuntu默认内核参数无法满足Oracle的高并发需求,需修改/etc/sysctl.conf文件优化以下参数(调整后执行sysctl -p使配置生效):
fs.file-max=6815744(最大文件描述符数,满足大量并发连接)、kernel.shmall=2097152(共享内存总页数,需大于SGA大小)、kernel.shmmax=4294967296(单块共享内存最大大小,建议设置为物理内存的一半)、kernel.shmmni=4096(共享内存段最大数量);kernel.pid_max=65536(最大进程数)、vm.swappiness=10(减少内存交换,优先使用物理内存)、vm.dirty_ratio=10(脏页占比阈值,触发后台刷盘)、vm.dirty_background_ratio=5(后台刷盘触发阈值)。四、性能优化:提升数据库吞吐与响应速度
ALTER SYSTEM SET SGA_TARGET=2G SCOPE=BOTH;(启用自动SGA管理)、ALTER SYSTEM SET PGA_AGGREGATE_TARGET=500M SCOPE=BOTH;(设置PGA总大小),避免手动配置的繁琐与误差;CREATE INDEX idx_emp_dept ON employees(department_id);),使用EXPLAIN PLAN分析查询计划(识别全表扫描、索引缺失等问题),启用绑定变量(如SELECT * FROM employees WHERE department_id = :dept_id;)减少硬解析(降低CPU开销);PARTITION BY RANGE(sale_date)),提升查询效率;对BLOB/CLOB等大对象使用SecureFile特性(如CREATE TABLE documents (id NUMBER, content CLOB) LOB(content) STORE AS SECUREFILE;),提高大对象存储与读取性能;EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SCOTT');(收集指定Schema的统计信息),帮助优化器生成更优的执行计划。五、高可用性配置:保障业务连续性
LOG_ARCHIVE_DEST_N参数指定备库位置(如ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=standby_db VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby_db';),主库故障时可通过ALTER DATABASE SWITCHOVER TO standby_db;快速切换,确保数据零丢失;六、监控与维护:主动发现问题与优化
$ORACLE_BASE/diag/rdbms/$ORACLE_SID/trace/alert_$ORACLE_SID.log)和监听日志($ORACLE_HOME/network/log/listener.log),及时发现数据库错误(如ORA-00600内部错误)、连接问题(如监听超时);@?/rdbms/admin/awrrpt.sql),识别性能瓶颈(如慢查询、锁争用);RMAN> BACKUP DATABASE PLUS ARCHIVELOG;)、清理归档日志(RMAN> DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-7';),每月执行统计信息收集(确保优化器准确性)、无效对象重建(ALTER PACKAGE invalid_pkg COMPILE;),每季度执行数据库健康检查(如DBMS_TDB.CHECK_DB)。七、安全加固:防范未授权访问与数据泄露
ufw)限制Oracle监听端口(默认1521)的访问,仅允许业务服务器IP地址访问(如sudo ufw allow from 192.168.1.0/24 to any port 1521);sqlnet.ora文件中的SQLNET.ENCRYPTION_SERVER=REQUIRED、SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED),确保客户端与数据库之间的数据传输安全;CONNECT、RESOURCE),避免授予DBA权限给非管理员用户;定期审计用户权限(SELECT * FROM dba_sys_privs;),撤销未使用的权限(REVOKE UNLIMITED TABLESPACE FROM username;)。