在开始配置前,确保已完成以下基础准备:
sudo apt-get update && sudo apt-get upgrade更新系统软件包;alien工具用于转换Oracle Instant Client的RPM包(若使用Instant Client),命令为sudo apt-get install alien;ORACLE_HOME(如/u01/app/oracle/product/19.0.0/dbhome_1)和ORACLE_SID(如orcl)。Oracle数据库需要稳定的网络环境,首先配置Debian系统的静态IP地址:
sudo nano /etc/network/interfaces;auto eth0
iface eth0 inet static
address 192.168.1.100 # 数据库服务器IP
netmask 255.255.255.0 # 子网掩码
gateway 192.168.1.1 # 网关地址
dns-nameservers 8.8.8.8 8.8.4.4 # DNS服务器
sudo systemctl restart networking;ping www.google.com(若能ping通,说明网络配置正常)。Oracle网络组件依赖特定的环境变量,需为oracle用户设置以下变量:
oracle用户:sudo su - oracle;.bashrc文件:nano ~/.bashrc;/u01/app/oracle/product/19.0.0/dbhome_1为你的ORACLE_HOME路径):export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin # 指定TNS配置文件目录
source ~/.bashrc。监听器负责接收客户端的连接请求,配置文件位于$ORACLE_HOME/network/admin/listener.ora:
oracle用户编辑listener.ora:nano $ORACLE_HOME/network/admin/listener.ora;your_host_name为服务器主机名或IP,your_sid为数据库SID):LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name)(PORT = 1521)) # 监听TCP协议的1521端口
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = your_sid) # 数据库SID
(ORACLE_HOME = your_oracle_home) # ORACLE_HOME路径
)
)
lsnrctl start;lsnrctl status(应显示“Listener is running”及监听的地址、端口)。若需要通过服务名连接数据库,需配置tnsnames.ora文件(位于$ORACLE_HOME/network/admin/):
oracle用户编辑tnsnames.ora:nano $ORACLE_HOME/network/admin/tnsnames.ora;your_host_name为服务器IP,your_sid为数据库SID,YOUR_DB为自定义服务名):YOUR_DB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name)(PORT = 1521)) # 连接地址
(CONNECT_DATA =
(SERVER = DEDICATED) # 连接模式(专用服务器)
(SID = your_sid) # 数据库SID
)
)
tnsping YOUR_DB(若返回“OK”,说明配置正确)。确保防火墙允许Oracle监听端口(默认1521)的流量:
ufw(Ubuntu默认防火墙),运行以下命令:sudo ufw allow 1521/tcp # 允许TCP协议的1521端口
sudo ufw enable # 启用防火墙
sudo ufw status # 验证规则(应显示“1521/tcp ALLOW”)
firewalld,运行:sudo firewall-cmd --permanent --add-port=1521/tcp
sudo firewall-cmd --reload
```。
使用sqlplus工具验证客户端是否能通过网络连接到数据库:
sqlplus命令(替换username、password为数据库用户名和密码,YOUR_DB为tnsnames.ora中的服务名):sqlplus username/password@YOUR_DB
listener.ora文件语法(如括号匹配)、端口是否被占用(netstat -tulnp | grep 1521);tnsnames.ora文件路径是否正确(TNS_ADMIN环境变量是否指向该目录)、服务名是否拼写错误;ping测试)、监听器是否监听正确的主机名(lsnrctl status查看)。