ORA-12547

ORA-12547: TNS:lost contact之oracle执行文件权限问题

--有人将 oracle 执行文件及$ORACLE_HOME的权限修改为775了。
[orabiprd@p1bidb01 ~]$ ls -ltr $ORACLE_HOME/bin/oracle
-rwxrwxr-x 1 orabiprd dba 210824714 Sep 14 11:59 /u01/bidb/11.2.0/bin/oracle


[oracle@orcl ~]$ echo $ORACLE_HOME
/u01/app/oracle/product/11.2
[oracle@orcl ~]$ cd /u01/app/oracle/product/11.2
[oracle@orcl 11.2]$ ls
apex deinstall jdev opmn slax
assistants demo jdk oracore sqldeveloper
bin diagnostics jlib oraInst.loc sqlj
ccr dv ldap ord sqlplus
cdata emcli lib oui srvm
cfgtoollogs EMStage log owb suptools
clone has md owm sysman
config hs mesg perl timingframework
crs ide mgw plsql ucp
csmig install network precomp uix
css instantclient nls racg usm
ctx inventory oc4j rdbms utl
cv j2ee odbc relnotes wwg
dbs javavm olap root.sh xdk
dc_ocm jdbc OPatch scheduler


修改oracle的权限为6751默认权限,问题解决;这说明oracle数据库的权限不要随意修改。

chmod 6751 /u01/app/oracle/product/11.2.0.1.0/db_1/bin/oracle

ls -ltr $ORACLE_HOME/bin/oracle


### Oracle 更改最大连接数后 PLSQL 连接失败 Ora-12547 的解决方案 在调整Oracle数据库的最大连接数并重启数据库后,如果PL/SQL客户端无法连接,并出现ORA-12547错误,通常是由于以下几个方面的问题:参数配置不当、监听器问题或网络设置错误。以下是详细的排查与解决方法: #### 参数配置检查 确保以下关键参数被正确设置以支持更多的连接: - `PROCESSES` 参数控制了数据库可以同时处理的最大进程数。如果将其设置得过低,可能会导致连接失败。 - `SESSIONS` 参数定义了可以并发运行的最大会话数。一般建议将该值设置为 `(1.1 * PROCESSES) + 5`[^1]。 可以通过以下命令检查当前参数设置: ```sql SHOW PARAMETER PROCESSES; SHOW PARAMETER SESSIONS; ``` 如果需要调整这些参数,可以在初始化参数文件(如 `spfile` 或 `pfile`)中进行修改,例如: ```sql ALTER SYSTEM SET PROCESSES=500 SCOPE=SPFILE; ALTER SYSTEM SET SESSIONS=550 SCOPE=SPFILE; ``` 完成后需要重启数据库以使更改生效。 #### 监听器状态和配置验证 监听器是PL/SQL客户端与数据库之间通信的关键组件。如果监听器未启动或配置不正确,可能导致连接失败。可以通过以下步骤验证监听器的状态: - 使用 `lsnrctl status` 命令检查监听器是否正常运行。 - 确保监听器配置文件 `listener.ora` 中的端口和服务名与数据库一致。例如: ```plaintext LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name)(PORT = 1521)) ) ) ``` 如果发现配置错误,请使用 `lsnrctl reload` 命令重新加载监听器配置。 #### 网络设置检查 确认客户端的 `tnsnames.ora` 文件中包含正确的连接字符串,并且主机名或IP地址能够解析成功。示例配置如下: ```plaintext ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = your_service_name) ) ) ``` 此外,确保防火墙规则允许通过指定端口(如默认的1521端口)访问数据库服务器。 #### 日志文件中的错误信息分析 如果上述步骤均无误但仍然无法连接,可以查看以下日志文件以获取更多信息: - 数据库告警日志:位于 `$ORACLE_BASE/diag/rdbms/<dbname>/<instance>/trace/alert_<instance>.log`。 - 监听器日志:通常位于 `$ORACLE_HOME/network/log/listener.log`。 通过分析这些日志中的错误消息,可以进一步定位问题的根本原因。 #### 测试连接 在完成所有配置更改后,使用 `sqlplus` 或其他工具测试连接是否恢复: ```bash sqlplus username/password@your_service_name ``` 如果连接成功,则说明问题已解决。 --- #### ORA-12547 错误原因及解决方法 ORA-12547 错误通常表示客户端与服务器之间的连接存在问题,可能的原因包括: - **监听器未启动**:确保监听器服务已启动并正常运行[^2]。 - **操作系统权限问题**:检查数据库用户是否有足够的权限启动监听器服务。 - **网络配置错误**:确认客户端和服务器之间的网络连接正常,且端口未被防火墙阻止。 可以通过以下命令检查监听器状态并尝试启动: ```bash lsnrctl status lsnrctl start ``` 如果监听器启动失败,检查 `listener.ora` 文件中的配置是否正确,特别是 `HOST` 参数是否与当前计算机名称匹配[^3]。 --- ### 示例代码 以下是一个用于检查和调整 `PROCESSES` 和 `SESSIONS` 参数的完整脚本: ```sql -- 查看当前参数值 SHOW PARAMETER PROCESSES; SHOW PARAMETER SESSIONS; -- 修改参数值 ALTER SYSTEM SET PROCESSES=800 SCOPE=SPFILE; ALTER SYSTEM SET SESSIONS=880 SCOPE=SPFILE; -- 重启数据库以应用更改 SHUTDOWN IMMEDIATE; STARTUP; ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值