Linux系统如何开放1521端口?具体步骤是什么?

在Linux环境下开发涉及1521端口的应用,通常与Oracle数据库交互密切相关,因为1521是Oracle数据库的默认监听端口,开发过程中需要完成数据库安装、监听配置、防火墙规则设置、编程连接等步骤,以下是详细操作指南。

linux如何开发1521端口

1521端口背景与开发准备

1521端口是Oracle Net Services的默认监听端口,用于客户端与数据库服务器之间的通信,开发前需确保Linux系统满足Oracle数据库的运行要求,包括内核版本(建议3.8+)、内存(至少4GB)、磁盘空间(至少10GB)及必要的依赖库(如libaio、compat-libstdc++-33等),以CentOS 7为例,可通过以下命令安装依赖:

yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat

同时需创建Oracle专用用户和组,并配置环境变量(如ORACLE_HOME、PATH等),确保数据库安装和运行权限。

Oracle数据库安装与监听配置

安装Oracle数据库

下载Oracle Database 19c(或其他版本)的Linux安装包(如linuxx64_19c_database.zip),上传至服务器并解压,运行安装程序runInstaller,按照图形界面提示完成安装,过程中需设置管理员密码(SYS、SYSTEM用户)及数据库名(如ORCL)。

配置监听器(listener.ora)

安装完成后,监听器默认会配置在$ORACLE_HOME/network/admin目录下的listener.ora文件中,默认配置如下:

LISTENER =  
  (DESCRIPTION_LIST =  
    (DESCRIPTION =  
      (ADDRESS = (PROTOCOL = TCP)(HOST = 服务器IP)(PORT = 1521))  
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))  
    )  
  )  

需确保HOST为服务器IP(或localhost用于本地测试),PORT=1521,若需修改端口,可调整PORT参数,但开发中建议保持默认以兼容标准客户端。

启动并检查监听器

使用lsnrctl工具启动监听器:

lsnrctl start  

通过以下命令检查监听状态:

linux如何开发1521端口

lsnrctl status  

若显示“STATUS: READY”,表示监听器已正常启动,1521端口处于监听状态,可通过netstat -tuln | grep 1521进一步确认端口是否开放:

tcp        0      0 0.0.0.0:1521            0.0.0.0:*               LISTEN  

防火墙与安全组配置

Linux系统默认启用防火墙(如firewalld或iptables),需开放1521端口允许外部连接。

firewalld(CentOS 7+/RHEL 7+)

# 添加1521端口到永久规则  
firewall-cmd --permanent --add-port=1521/tcp  
# 重新加载防火墙  
firewall-cmd --reload  
# 检查端口是否开放  
firewall-cmd --list-ports | grep 1521  

iptables(CentOS 6/Ubuntu早期版本)

# 添加允许1521端口的规则  
iptables -A INPUT -p tcp --dport 1521 -j ACCEPT  
# 保存规则(CentOS 6: service iptables save; Ubuntu: iptables-save > /etc/iptables/rules.v4)  
service iptables save  

云服务器安全组

若部署在阿里云、AWS等云平台,需在安全组入方向规则中添加TCP协议、端口1521,并设置源IP(如0.0.0.0/0允许所有IP,或限制为特定客户端IP)。

编程连接1521端口

开发中可通过编程语言连接1521端口的Oracle数据库,以下是Python和Java的示例:

Python(使用cx_Oracle库)

import cx_Oracle
# 配置连接信息(用户名/密码@主机:端口/服务名)
dsn = cx_Oracle.makedsn("服务器IP", 1521, service_name="ORCL")
connection = cx_Oracle.connect(user="username", password="password", dsn=dsn)
# 执行查询
cursor = connection.cursor()
cursor.execute("SELECT * FROM employees WHERE department_id = 10")
for row in cursor:
    print(row)
# 关闭连接
cursor.close()
connection.close()

需提前安装cx_Oracle库:pip install cx_Oracle,并配置Oracle客户端库路径(如LD_LIBRARY_PATH=$ORACLE_HOME/lib)。

Java(使用JDBC)

import java.sql.*;
public class OracleConnection {
    public static void main(String[] args) {
        String url = "jdbc:oracle:thin:@服务器IP:1521:ORCL";
        String user = "username";
        String password = "password";
        try (Connection conn = DriverManager.getConnection(url, user, password);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT * FROM employees WHERE department_id = 10")) {
            while (rs.next()) {
                System.out.println(rs.getString("employee_id") + " " + rs.getString("employee_name"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

需添加Oracle JDBC驱动(如ojdbc8.jar)到项目依赖,并确保Java环境变量配置正确。

常见问题排查

开发中可能遇到连接问题,可通过以下方式定位:

linux如何开发1521端口

  1. 监听器未启动:检查lsnrctl status,确认监听器状态为“READY”,并查看$ORACLE_HOME/network/log/listener.log日志。
  2. 端口被占用:使用netstat -tuln | grep 1521检查是否有其他进程占用1521端口,若占用则修改监听器端口或终止冲突进程。
  3. 防火墙阻止:在客户端服务器使用telnet 服务器IP 1521测试连通性,若无法连接,检查服务端和客户端防火墙规则。
  4. 服务名错误:使用tnsping ORCL命令测试服务名解析是否正确,确保tnsnames.ora文件(客户端配置)中的服务名与数据库服务名一致。

防火墙配置命令总结

防火墙工具 添加端口规则 重新加载/保存 检查端口状态
firewalld --permanent --add-port=1521/tcp --reload --list-ports
iptables -A INPUT -p tcp --dport 1521 -j ACCEPT service iptables save -L -n | grep 1521
云服务器安全组 TCP 1521 + 源IP范围 控制台保存 控制台查看规则

相关问答FAQs

Q1:Linux下如何检查1521端口是否被占用?
A:可通过以下命令检查:

# 查看监听1521端口的进程
netstat -tuln | grep 1521
# 或使用ss命令(推荐,更高效)
ss -tuln | grep 1521
# 若需查看具体进程PID,添加-p参数
netstat -tulnp | grep 1521

若输出显示LISTEN状态,表示端口被占用;若无输出,则端口未被使用。

Q2:连接Oracle数据库时提示“ORA-12541: TNS:无监听程序”怎么办?
A:该错误通常由监听器未启动、配置错误或防火墙阻止导致,排查步骤如下:

  1. 检查监听器状态:lsnrctl status,若未启动则执行lsnrctl start
  2. 检查listener.ora文件中的HOSTPORT配置是否正确(确保PORT=1521HOST为服务器IP);
  3. 检查防火墙是否开放1521端口(参考本文第三部分);
  4. 检查客户端tnsnames.ora文件中的服务名是否与数据库服务名一致,使用tnsping 服务名测试解析。

通过以上步骤,可完成Linux环境下1521端口的开发配置,实现与Oracle数据库的稳定连接和交互。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/22380.html

(0)
酷番叔酷番叔
上一篇 2025年9月9日 16:31
下一篇 2025年9月9日 16:43

相关推荐

  • 虚拟机Linux系统如何添加新硬盘并进行分区?

    在虚拟机环境中为Linux系统添加硬盘并分区是常见的操作,主要用于扩展存储空间、隔离数据或搭建特定服务环境,整个过程涉及虚拟机配置、系统检测、分区管理、格式化及挂载等步骤,下面将详细说明操作流程,虚拟机端添加硬盘首先需要在虚拟机管理软件(如VMware、VirtualBox等)中为新硬盘创建虚拟设备,以VMwa……

    2025年10月5日
    18300
  • Linux系统中打开文件,命令行和图形界面的具体操作步骤是什么?

    在Linux系统中,打开文件的方式多样,可根据文件类型、使用场景(图形界面或命令行)及个人习惯选择,无论是简单的文本查看还是复杂的二进制文件处理,Linux都提供了灵活的工具支持,以下从图形界面和命令行两个维度,详细介绍打开文件的方法及常用命令,图形界面打开文件对于习惯图形界面的用户,Linux桌面环境(如GN……

    2025年9月20日
    8100
  • 如何检查目录是否为空?,目录为空怎么办?,如何判断空目录?,你的目录是空的吗?

    核心命令与区别rmdir 命令作用:仅删除空目录(目录内无任何文件或子目录),命令格式: rmdir [选项] 目录名示例: rmdir old_folder # 删除空目录old_folderrmdir -p dir1/dir2 # 递归删除dir1/dir2,若dir1也变空则一并删除rm 命令作用:删除非……

    2025年7月31日
    8900
  • linux 如何管理raid1

    Linux环境下管理RAID1(磁盘镜像阵列)主要通过软件工具mdadm实现,RAID1通过将数据同时写入两块或多块磁盘,实现数据冗余和读写性能提升(读性能提升,写性能略有下降),以下从RAID1的创建、日常监控、故障处理及扩容等方面详细介绍管理流程,RAID1创建前的准备磁盘检查:确认至少两块可用磁盘(如/d……

    2025年9月22日
    7300
  • Linux服务器如何隐藏目录使其不被常规命令查看到?

    在Linux服务器管理中,隐藏目录是一种常见的需求,可能涉及系统安全、数据隔离或简化用户界面等场景,隐藏目录并非指“彻底不可见”,而是通过特定机制让目录在默认情况下不显示,或限制特定用户的访问权限,以下是实现隐藏目录的多种方法及其原理、操作步骤和注意事项,基础方法:文件名加点(“.”前缀)Linux文件系统约定……

    2025年10月6日
    5800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信