系统要求,你的系统真的安全吗?揭秘隐藏的风险与防护策略!,你的系统真的安全吗?黑客可能正在窥探的5大漏洞!
系统要求
- 操作系统: RHEL/CentOS 5 或 6(32位/64位版本需与Oracle版本严格匹配)。
- 内存: 最低1GB(生产环境推荐4GB以上以获得最佳性能)。
- 磁盘空间:
- 基础安装:1.5GB(Oracle软件)+ 1GB(临时空间)
- 数据库文件:根据数据量预估,建议至少预留10GB空间
- Swap空间:
- 内存≤2GB时:Swap=内存×2
- 内存2-8GB时:Swap=内存×1.5
- 内存>8GB时:Swap=内存×1或8GB固定值
安装前准备
(1) 获取Oracle 10g安装包
从Oracle官网下载安装包(需注册OTN账号):
- 32位系统:
10201_database_linux32.zip
- 64位系统:
10201_database_linux_x86_64.zip
安全提示:
- 建议通过官方渠道下载,避免使用第三方来源的安装包
- 下载完成后执行校验:
md5sum 10201_database_linux*.zip
,验证结果应与官网公布的校验值一致
(2) 安装必要依赖包
使用root账户执行以下命令安装基础依赖:
yum groupinstall -y "Development Tools" yum install -y binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel \ glibc glibc-common glibc-devel gcc gcc-c++ libaio libaio-devel libgcc \ libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel pdksh \ libXp libXtst libXt libXau libXext xorg-x11-xauth
版本适配说明:
- RHEL/CentOS 6用户需额外安装:
compat-libstdc++-296
- 若无法找到
pdksh
包,可从EPEL仓库获取或手动编译安装- 图形界面依赖包建议全部安装,避免安装过程中出现界面异常
(3) 创建Oracle用户和组
执行以下命令创建必要的用户和组:
# 创建主要组和辅助组 groupadd -g 1000 oinstall groupadd -g 1001 dba groupadd -g 1002 oper创建Oracle用户并设置密码
useradd -u 1000 -g oinstall -G dba,oper -s /bin/bash -d /home/oracle oracle echo "oracle:YourSecurePassword123!" | chpasswd
创建必要的目录结构
mkdir -p /home/oracle/.ssh chmod 700 /home/oracle/.ssh
安全最佳实践:
- 避免使用默认组ID(如500),采用1000以上的自定义ID
- 密码应包含大小写字母、数字和特殊字符,长度不少于12位
- 建议配置SSH密钥认证,禁用密码登录
(4) 优化系统内核参数
编辑/etc/sysctl.conf
,添加以下优化配置:
# 内核共享内存配置 kernel.shmall = 2097152 kernel.shmmax = 4294967296 kernel.shmmni = 4096信号量设置
kernel.sem = 250 32000 100 128
文件系统优化
fs.file-max = 6815744 fs.aio-max-nr = 1048576
网络参数优化
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 vm.dirty_ratio = 40 vm.dirty_background_ratio = 10
应用配置并验证:
sysctl -p sysctl -a | grep -E 'shm|sem|file-max'
(5) 配置用户资源限制
编辑/etc/security/limits.conf
,添加以下内容:
# Oracle用户资源限制 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft stack 10240 oracle hard stack 32768 oracle soft memlock 3145728 oracle hard memlock 3145728
同时修改/etc/pam.d/login
,确保包含:
session required pam_limits.so
(6) 准备Oracle安装目录
# 创建目录结构 mkdir -p /u01/app/oracle/product/10.2.0/db_1 mkdir -p /u01/app/oracle/admin/orcl/adump mkdir -p /u01/oradata/orcl设置权限
chown -R oracle:oinstall /u01 chmod -R 775 /u01 chmod g+s /u01/app/oracle/product
存储规划建议:
- Oracle软件:/u01(独立分区,建议ext4文件系统)
- 数据文件:/oradata(单独分区,建议XFS文件系统)
- 备份文件:/backup(单独分区或存储)
(7) 配置Oracle用户环境
编辑/home/oracle/.bash_profile
,添加以下内容:
# Oracle基础环境变量 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 export ORACLE_SID=orcl export ORACLE_UNQNAME=orcl export ORACLE_TERM=xterm路径设置
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
字符集设置
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
临时目录
export TMP=/tmp export TMPDIR=$TMP
别名设置
alias sql='sqlplus / as sysdba' alias lsnr='lsnrctl status'
设置umask
umask 022
使配置生效:
source ~/.bash_profile
Oracle 10g安装过程
(1) 解压安装包
# 创建临时目录 mkdir -p /stage/oracle unzip 10201_database_linux_x86_64.zip -d /stage/oracle验证解压结果
ls -l /stage/oracle/database
(2) 启动图形化安装
# 切换到oracle用户 su - oracle启动安装程序
cd /stage/oracle/database ./runInstaller -ignoreSysPrereqs
图形界面问题排查:
- 确保X11转发配置正确:
ssh -X oracle@server_ip
- 测试图形支持:
xclock &
- 如遇乱码:
export LANG=en_US.UTF-8
(3) 图形界面安装步骤详解
-
欢迎界面
- 选择"Advanced Installation"进行自定义安装
- 勾选"Skip software updates"跳过更新
-
安装类型选择
- 选择"Enterprise Edition"企业版
- 取消不必要的组件(如Oracle Text等按需选择)
-
安装位置配置
- Oracle Base:
/u01/app/oracle
- Oracle Home:
/u01/app/oracle/product/10.2.0/db_1
- 路径名称保持全小写
- Oracle Base:
-
产品组件选择
- 核心数据库组件必选
- Oracle JVM(Java应用需要)
- Oracle XML DB(Web服务需要)
-
权限组配置
- OINSTALL组:
oinstall
- OSDBA组:
dba
- OSOPER组:
oper
- OINSTALL组:
-
数据库配置
- 选择"Create a starter database"
- 全局数据库名:
orcl.yourdomain.com
- SID保持与全局名一致:
orcl
-
数据库特性选择
- 字符集: AL32UTF8(支持多语言)
- 国家字符集: UTF8
- 示例Schema: 开发环境建议安装
-
管理选项
- 选择"Use Database Control for Database Management"
- 配置通知邮箱(可选)
-
数据库存储
- 存储类型: 文件系统
- 数据文件位置:
/u01/oradata
- 启用自动扩展
-
备份与恢复
- 生产环境建议启用自动备份
- 设置备份位置:
/u01/backup
-
数据库凭证
- 为SYS/SYSTEM设置不同密码
- 密码复杂度要求:至少8字符,包含数字和字母
-
安装摘要
- 仔细核对所有配置
- 保存响应文件以备后续使用
-
安装执行
- 监控安装进度条
- 注意弹出的脚本执行提示
(4) 执行配置脚本
安装过程中会提示以root身份执行以下脚本:
# 第一个脚本 /u01/app/oracle/oraInventory/orainstRoot.sh第二个脚本
/u01/app/oracle/product/10.2.0/db_1/root.sh
脚本执行注意事项:
- 按顺序执行脚本
- 记录脚本输出内容
- 如遇错误不要继续,先解决问题
安装后配置
数据库初始化验证
# 检查数据库状态 sqlplus / as sysdba SQL> SELECT name, open_mode, database_role FROM v$database;验证组件状态
SQL> SELECT comp_name, status, version FROM dba_registry;
检查表空间
SQL> SELECT tablespace_name, status, contents FROM dba_tablespaces;
监听器配置
# 启动网络配置助手 netca手动验证监听器
lsnrctl status lsnrctl start
设置开机自启动
创建/etc/init.d/oracle
服务脚本:
#!/bin/bash # chkconfig: 345 99 10 # description: Oracle auto start-stop scriptORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 ORACLE_OWNER=oracle
case "$1" in 'start') su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl start dbconsole" ;; 'stop') su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME" su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl stop dbconsole" ;; *) echo "Usage: $0 {start|stop}" exit 1 ;; esac exit 0
设置执行权限并注册服务:
chmod 750 /etc/init.d/oracle chkconfig --add oracle chkconfig oracle on
性能优化建议
内存配置调整
-- SGA配置 ALTER SYSTEM SET sga_max_size=2G SCOPE=spfile; ALTER SYSTEM SET sga_target=2G SCOPE=spfile;-- PGA配置 ALTER SYSTEM SET pga_aggregate_target=1G SCOPE=spfile;
-- 共享池配置 ALTER SYSTEM SET shared_pool_size=500M SCOPE=spfile;
-- 缓冲区缓存 ALTER SYSTEM SET db_cache_size=1G SCOPE=spfile;
存储优化配置
-- I/O配置优化 ALTER SYSTEM SET disk_asynch_io=TRUE SCOPE=spfile; ALTER SYSTEM SET filesystemio_options=SETALL SCOPE=spfile;-- 重做日志优化 ALTER DATABASE ADD LOGFILE GROUP 4 '/u01/oradata/orcl/redo04.log' SIZE 100M; ALTER DATABASE ADD LOGFILE GROUP 5 '/u01/oradata/orcl/redo05.log' SIZE 100M;
关键参数调整
-- 会话级参数 ALTER SYSTEM SET processes=300 SCOPE=spfile; ALTER SYSTEM SET sessions=335 SCOPE=spfile; ALTER SYSTEM SET transactions=400 SCOPE=spfile;-- 诊断参数 ALTER SYSTEM SET diagnostic_dest='/u01/app/oracle' SCOPE=spfile; ALTER SYSTEM SET audit_trail='DB' SCOPE=spfile;
-- 性能参数 ALTER SYSTEM SET optimizer_index_cost_adj=20 SCOPE=spfile; ALTER SYSTEM SET statistics_level='TYPICAL' SCOPE=spfile;
日常维护指南
监控脚本示例
空间监控脚本:
#!/bin/bash # Oracle表空间监控sqlplus -s / as sysdba << EOF set lines 200 pages 100 col tablespace_name for a20 col "Used MB" for 999,999.99 col "Free MB" for 999,999.99 col "Total MB" for 999,999.99 col "Pct Used" for 999.99
SELECT df.tablespace_name, df.bytes/1024/1024 "Total MB", (df.bytes-fs.bytes)/1024/1024 "Used MB", fs.bytes/1024/1024 "Free MB", ((df.bytes-fs.bytes)/df.bytes)100 "Pct Used" FROM (SELECT tablespace_name, SUM(bytes) bytes FROM dba_data_files GROUP BY tablespace_name) df, (SELECT tablespace_name, SUM(bytes) bytes FROM dba_free_space GROUP BY tablespace_name) fs WHERE df.tablespace_name = fs.tablespace_name ORDER BY ((df.bytes-fs.bytes)/df.bytes)100 DESC; EOF
备份策略示例
RMAN全备脚本:
#!/bin/bash # Oracle RMAN全备脚本export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 export PATH=$PATH:$ORACLE_HOME/bin export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
rman target / << EOF run { allocate channel ch1 device type disk format '/u01/backup/full%U.bak'; allocate channel ch2 device type disk format '/u01/backup/full%U.bak'; backup as compressed backupset database plus archivelog; backup current controlfile format '/u01/backup/ctl%U.bak'; backup spfile format '/u01/backup/spfile%U.bak'; release channel ch1; release channel ch2; } crosscheck backup; delete noprompt obsolete; delete