错误Oracle 12504错误:解决方案指南(oracle的12504)
Oracle 12504错误以"ORA-12504"的形式表示,它表明Oracle服务器实例无法解析指定的模式名。
错误消息如下:
‘ORA-12504 TM:模式名无法解析’
这是因为在建立新会话时,Windows客户端尝试连接到非可见数据库或模式。由于Intrenet环境中的防火墙或DSN配置,该连接无法建立。
为了解决这个问题,您必须检查该客户端是否已正确设置,使其可以完全访问您要连接到的数据库。 您也可以在TNSNAMES.ORA中查看客户端连接到的服务器:
# This file is actually generated by netca. But if customers choose to
# install “Software Only”, this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
MYDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.11)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DB1)
)
)
您可以执行以下操作以查看是否可以解析模式名称:
# sqlplus /@:/
例如:
sqlplus system/password@192.168.1.11:1521/DB1
如果可以正常连接,则模式名称可被解析,服务器监听已经正确配置。如果连接失败,请检查您的Oracle客户端是否正确配置。
另外,您也可以使用以下SQL语句来检查已配置的监听器:
SELECT * FROM v$listener;
如果Oracle监听器未正确配置,请重新配置:
# lsnrctl start/stop/status
在操作 Oracle 阅读器时,最好使用 Windows 身份验证。在使用 Windows 身份验证时,您需要确保将其添加到某个组中,并启用 Windows 身份验证:
# sqlplus /nolog
SQL > connect / as sysdba
SQL > alter system set local_listener=MYDB;
SQL > alter system register;
对于 macOS 和 Linux 用户,请在客户端中运行以下语句:
# sqlplus /nolog
SQL > connect / as sysdba
SQL > alter system set local_listener=;
SQL > alter system register;
最后,您还可以运行以下SQL语句测试其连接:
SELECT count(*) FROM [TABLENAME]
这将测试和模式的连接,如果连接成功,则返回表记录的总数,表示您已成功解决了该问题。
总之,解决Oracle 12504错误需要检查客户端是否正确配置,例如TNSNAMES.ORA,服务器上的监听器,以及Windows身份验证设置。如果一切正常,您就可以使用上面的SQL语句来测试连接。