Ubuntu上配置Oracle数据库的详细步骤解析
确保Ubuntu系统满足Oracle数据库的最低要求:
/u01);Oracle数据库需要依赖Ubuntu系统中的库文件,通过以下命令安装:
sudo apt update
sudo apt install alien libaio1 unixodbc build-essential gcc make binutils
libaio1:异步I/O库,Oracle数据库必需;unixodbc:ODBC驱动管理器,用于数据库连接;build-essential:编译工具链,用于安装过程中的源码编译。Oracle数据库需以专用用户身份运行,避免使用root账户,提升安全性:
# 创建用户组(oinstall:安装组;dba:数据库管理员组)
sudo groupadd -g 503 oinstall
sudo groupadd -g 504 dba
# 创建oracle用户(归属oinstall组,附加dba权限)
sudo useradd -u 501 -g oinstall -G dba -d /home/oracle -s /bin/bash oracle
# 设置oracle用户密码
sudo passwd oracle
oinstall:负责Oracle软件的安装和管理;dba:拥有数据库的最高权限(如创建、删除数据库)。Oracle数据库对系统资源的使用有较高要求,需调整内核参数以优化性能:
# 编辑sysctl.conf文件(永久生效)
sudo nano /etc/sysctl.conf
添加以下内容(根据系统内存调整数值):
kernel.shmmax = 3147483648 # 最大共享内存段大小(建议为物理内存的80%)
kernel.shmmni = 4096 # 共享内存段最大数量
kernel.shmall = 2097152 # 共享内存总页数
kernel.sem = 250 32000 100 128 # 信号量参数
fs.file-max = 65536 # 最大文件句柄数
net.ipv4.ip_local_port_range = 9000 65500 # 本地端口范围
使参数生效:
sudo sysctl -p
编辑/etc/security/limits.conf文件(限制用户资源):
sudo nano /etc/security/limits.conf
添加以下内容:
oracle soft nofile 65536 # 用户oracle的最大打开文件数(软限制)
oracle hard nofile 65536 # 用户oracle的最大打开文件数(硬限制)
oracle soft nproc 16384 # 用户oracle的最大进程数(软限制)
oracle hard nproc 16384 # 用户oracle的最大进程数(硬限制)
注销并重新登录oracle用户,使限制生效。
Oracle软件和数据需存放在专用目录,建议使用/u01:
# 创建Oracle基目录和产品目录
sudo mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
sudo mkdir -p /u01/app/oracle/oradata # 数据库数据文件目录
sudo mkdir -p /u01/app/oracle/script # SQL脚本目录
# 设置目录所有权(oracle用户:oinstall组)
sudo chown -R oracle:oinstall /u01/app/oracle
sudo chmod -R 775 /u01/app/oracle
/u01/app/oracle/product/19.0.0/dbhome_1:Oracle 19c软件安装目录;/u01/app/oracle/oradata:数据库数据文件(如system01.dbf)、控制文件(control01.ctl)的存储路径。为了让oracle用户能直接使用Oracle命令(如sqlplus、lsnrctl),需配置环境变量:
# 编辑oracle用户的.bashrc文件(永久生效)
sudo nano /home/oracle/.bashrc
添加以下内容(根据实际安装路径调整):
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=orcl # 数据库实例名(默认orcl,可自定义)
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
使环境变量立即生效:
source /home/oracle/.bashrc
验证环境变量:
echo $ORACLE_HOME # 应输出/u01/app/oracle/product/19.0.0/dbhome_1
echo $ORACLE_SID # 应输出orcl
从Oracle官方网站下载适合Ubuntu的Oracle数据库安装包(如19c或21c的Linux x64版本),例如:
linuxx64_19c_database.zip;linuxx64_21c_database.zip。# 解压安装包到指定目录
unzip linuxx64_19c_database.zip -d /u01/app/oracle/product/19.0.0/
# 切换到oracle用户
su - oracle
# 运行安装程序
cd /u01/app/oracle/product/19.0.0/
./runInstaller
按照安装向导操作:
/u01/app/oracle/product/19.0.0/dbhome_1);Oracle123);若安装时未创建数据库,可通过DBCA(数据库配置助手)创建:
dbca
按照向导操作:
orcl)和SID(如orcl);AL32UTF8,支持多语言);# 以sysdba身份登录
sqlplus / as sysdba
# 启动数据库
SQL> STARTUP
# 查看数据库状态
SQL> SELECT status FROM v$instance;
OPEN,表示数据库启动成功。为了让Oracle数据库在系统重启后自动启动,需配置systemd服务:
# 创建systemd服务文件
sudo nano /etc/systemd/system/oracle.service
添加以下内容(根据实际路径调整):
[Unit]
Description=Oracle Database Auto Start Service
After=network.target
[Service]
Type=forking
User=oracle
Group=oinstall
Environment="ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1"
Environment="ORACLE_SID=orcl"
ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart $ORACLE_HOME
ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbshut $ORACLE_HOME
Restart=on-failure
RestartSec=30s
[Install]
WantedBy=multi-user.target
使服务生效:
sudo systemctl daemon-reload
sudo systemctl enable oracle.service # 开机自启
sudo systemctl start oracle.service # 立即启动
验证服务状态:
sudo systemctl status oracle.service
active (running),表示自动启动配置成功。sqlplus sys/Oracle123@orcl as sysdba
sys:数据库管理员账号;Oracle123:安装时设置的密码;orcl:数据库SID。若能成功登录并执行SELECT * FROM dual;(返回X),则表示安装成功。
若安装时选择了OEM,可通过浏览器访问https://<服务器IP>:5500/em,使用sys账号登录,进行图形化管理。
oracle:oinstall);/etc/sysctl.conf中的参数并执行sudo sysctl -p;sqlplus命令,需执行source ~/.bashrc使环境变量生效。