在Linux系统上安装Oracle数据库需要经过详细的系统准备、依赖安装、环境配置和软件部署等步骤,以下是详细的操作流程,以Oracle Database 19c在CentOS 7/8系统上的安装为例(其他发行版如RHEL、Oracle Linux操作类似,需注意包名差异)。
系统准备
硬件要求
Oracle数据库对硬件资源有明确要求,需确保系统满足最低配置(推荐生产环境更高):
组件 | 最低配置 | 推荐配置 |
---|---|---|
内存 | 2GB RAM | 8GB+ RAM |
交换空间 | 2GB SWAP | 8GB+ SWAP(内存≤16GB时SWAP=内存;>16GB时SWAP=16GB) |
磁盘空间 | 20GB可用 | 50GB+可用(安装文件+数据文件) |
CPU核心数 | 2核 | 4+核 |
操作系统配置
-
关闭防火墙和SELinux
防火墙会阻止Oracle监听端口(默认1521),SELinux可能限制数据库访问,需临时关闭或配置策略(此处以关闭为例):systemctl stop firewalld && systemctl disable firewalld setenforce 0 # 临时关闭,永久修改需编辑/etc/selinux/config,将SELINUX=disabled
-
配置主机名和hosts文件
确保系统主机名可解析,编辑/etc/hosts
,添加IP与主机名映射(示例):echo "192.168.1.100 oracle.example.com oracle" >> /etc/hosts hostnamectl set-hostname oracle.example.com # 设置永久主机名
-
安装必要工具
yum install -y wget unzip tar gcc make ksh compat-libstdc++-33 elfutils-libelf-devel
安装依赖包
Oracle数据库需要大量Linux开发库和工具,根据发行版安装对应包(以CentOS 7为例):
yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc-c++ ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
若为CentOS 8/RHEL 8,部分包名变更(如compat-libstdc++-33
需替换为compat-libstdc++-33-33.64.el7.x86_64
),可通过yum search
查找对应包名。
创建Oracle用户和组
Oracle数据库不允许使用root用户安装,需创建专用用户和组:
groupadd oinstall # 安装组 groupadd dba # 数据库管理员组 useradd -g oinstall -G dba oracle # 创建oracle用户,加入oinstall和dba组 passwd oracle # 设置oracle用户密码
创建安装目录并授权(根据需求调整路径,此处以默认为例):
mkdir -p /u01/app/oracle/product/19c/dbhome_1 chown -R oracle:oinstall /u01 chmod -R 775 /u01
配置内核参数和资源限制
修改内核参数(/etc/sysctl.conf)
添加以下参数,确保Oracle数据库运行所需的系统资源:
fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 4398046511104 # 物理内存的50%(单位字节,示例为4TB) kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 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
执行sysctl -p
使参数立即生效。
配置资源限制(/etc/security/limits.conf)限制oracle用户的资源使用:
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768 oracle soft memlock 134217728 oracle hard memlock 134217728
编辑/etc/pam.d/login
,确保包含session required pam_limits.so
(默认已存在)。
安装Oracle数据库软件
下载安装包
从Oracle官网下载Oracle Database 19c for Linux x86-64安装包(如LINUX.X64_193000_db_home.zip
),上传至Linux服务器(如/tmp
目录)。
解压并安装
使用oracle用户登录,解压安装包:
su - oracle unzip /tmp/LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19c/dbhome_1
进入安装目录,运行安装程序:
cd /u01/app/oracle/product/19c/dbhome_1/ ./runInstaller
若为图形界面安装,需确保服务器已安装X Window(yum groupinstall "X Window System"
)或通过Xmanager等工具远程显示图形界面。
图形界面安装步骤
- 欢迎界面:选择“Create and configure a database”→“Advanced Installation”。
- 安装选项:选择“Enterprise Edition”,安装类型“典型安装”。
- 网格安装选项:直接点击“下一步”(无需配置集群)。
- 指定安装位置:确认ORACLE_BASE(
/u01/app/oracle
)和ORACLE_HOME(/u01/app/oracle/product/19c/dbhome_1
)。 - 创建数据库:设置数据库名(如
ORCL
)、管理员密码(sys/system)、字符集(建议AL32UTF8)、内存分配(建议总内存的40%-50%)。 - 安装前检查:若提示依赖包缺失,根据提示安装后重新检查。
- 安装进度:等待安装完成,根据提示执行脚本(如
/u01/app/oraInventory/orainstRoot.sh
和/u01/app/oracle/product/19c/dbhome_1/root.sh
,需root用户执行)。
验证安装
检查监听状态
lsnrctl status
若显示“Listener is running”,表示监听启动成功。
检查数据库实例
sqlplus / as sysdba SQL> startup SQL> select status from v$instance;
若返回“OPEN”,表示数据库实例正常启动。
测试连接
使用SQL Developer或PL/SQL Developer,以sys/system用户连接数据库(主机名/IP、端口1521、服务名ORCL)。
常见问题处理
-
安装时提示“swap空间不足”:
增加swap空间,例如创建2GB swap文件:fallocate -l 2G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo "/swapfile swap swap defaults 0 0" >> /etc/fstab
或调整
kernel.shmmax
参数,使其小于物理内存大小。 -
安装后无法启动数据库:
检查环境变量($ORACLE_HOME/bin
是否加入PATH)、日志文件($ORACLE_BASE/diag/rdbms/*/trace/alert_*.log
),确认权限和配置是否正确。
FAQs
Q1:安装过程中提示“libaio.so.1: cannot open shared object file”怎么办?
A:缺少libaio库,执行yum install -y libaio-devel
安装后重新检查,若为CentOS 8,可尝试dnf install -y libaio
。
Q2:如何修改Oracle数据库的字符集?
A:需确保数据库为非归档模式且无连接,步骤如下:
- 以sysdba身份登录,关闭数据库并以mount模式启动:
sqlplus / as sysdba SQL> shutdown immediate SQL> startup mount
- 修改字符集(如从WE8MSWIN1252改为AL32UTF8):
SQL> alter system set job_queue_processes=0 scope=spfile; SQL> alter system aq_tm_processes=0 scope=spfile; SQL> shutdown immediate SQL> startup restrict SQL> alter database character set internal_use AL32UTF8; SQL> shutdown immediate SQL> startup
注意:字符集修改需谨慎,建议备份数据库,且仅支持从子集到超集的修改。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/18563.html