常见原因:端口冲突(如1521端口被其他进程占用)、listener.ora配置文件错误(如主机名、端口填写错误)、权限不足(未以root或oracle用户启动)。
解决方法:
netstat -tulnp | grep 1521检查端口占用,若有冲突则停止占用进程;$ORACLE_HOME/network/admin/listener.ora中的HOST(如localhost或服务器IP)、PORT(默认1521)配置正确;lsnrctl start启动监听器,或以oracle用户执行(需提前配置环境变量)。常见错误:TNS: 无法解析指定的连接标识符、TNS:无监听程序、ORA-12514: 监听程序无法识别服务名。
解决方法:
tnsnames.ora(位于$ORACLE_HOME/network/admin)中的SERVICE_NAME或SID是否与数据库实例一致,或使用sqlplus sys/password@//hostname:port/service_name格式连接;lsnrctl start),并检查防火墙是否阻止1521端口(如firewall-cmd --add-port=1521/tcp --permanent后firewall-cmd --reload);listener.ora中的SID_DESC(如SID_NAME=orcl)与数据库实例SID一致,重启监听器使配置生效。原因:SQLPlus可执行文件未加入系统PATH环境变量。
解决方法:
$ORACLE_HOME/bin/sqlplus),将其复制到/bin目录(cp /u01/app/oracle/product/19.0.0/dbhome_1/bin/sqlplus /bin),并赋予执行权限(chmod +x /bin/sqlplus);$ORACLE_HOME/bin添加到用户环境变量PATH中(编辑~/.bash_profile,添加export PATH=$ORACLE_HOME/bin:$PATH,然后source ~/.bash_profile)。常见错误:ORA-27154: 内存分配失败、ORA-04031: 无法分配共享内存。
解决方法:
free -m),若物理内存不足,增加物理内存或关闭其他占用内存的程序;alter system set sga_target=4g scope=spfile;),PGA聚合目标设置为1-2GB(alter system set pga_aggregate_target=2g scope=both;),然后重启数据库使参数生效。常见错误:ORA-09925: No space left on device、ORA-01653: 表空间无法扩展。
解决方法:
df -h检查磁盘空间使用情况,清理/tmp、/var/log等目录下的临时文件或旧备份;alter tablespace users add datafile '/u01/app/oracle/oradata/ORCL/users02.dbf' size 1g;),或添加新磁盘并挂载到Oracle数据目录。常见错误:Permission denied(无法访问数据文件、日志文件)、ORA-09817: 写入审计文件失败。
解决方法:
oracle)对数据文件、日志文件、控制文件所在目录有读写权限(chown -R oracle:oinstall /u01/app/oracle/oradata,chmod -R 750 /u01/app/oracle/oradata);$ORACLE_BASE/admin/ORCL/adump)空间满,清理旧审计文件或扩展目录所在磁盘空间。常见错误:ORA-12505: TNS: 监听程序无法找到数据库实例(SID不匹配)、sqlplus无法启动(ORACLE_HOME未设置)。
解决方法:
~/.bash_profile文件,确认以下变量设置正确:export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1 # Oracle安装目录
export ORACLE_SID=orcl # 数据库实例SID(需与实际一致)
export PATH=$ORACLE_HOME/bin:$PATH # 添加Oracle命令到PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH # 添加Oracle库路径
保存后执行source ~/.bash_profile使配置生效。常见错误:TNS: 连接超时、无法连接到监听程序。
解决方法:
firewalld,开放Oracle监听端口(默认1521):firewall-cmd --add-port=1521/tcp --permanent,然后firewall-cmd --reload;iptables,添加规则允许1521端口:iptables -A INPUT -p tcp --dport 1521 -j ACCEPT,然后service iptables save保存规则。常见错误:TNS-12542: 地址已在使用、ORA-12514: 监听程序无法识别服务名。
解决方法:
/etc/hosts文件中主机名与IP地址对应正确(如127.0.0.1 localhost、192.168.1.100 orcl),避免多网卡或多IP导致的主机名冲突;listener.ora中的HOST参数是否与服务器实际IP或主机名一致,若有修改需重启监听器。常见错误:ORA-04031: 无法分配共享内存。
解决方法:
shared_pool_size参数),例如将SGA目标设置为8GB(alter system set sga_target=8g scope=spfile;),共享池自动分配(默认占SGA的10%-20%);alter system flush shared_pool;),释放临时占用的内存,但需注意可能影响正在运行的SQL性能。