ORA 12154 - 无法从 toad/SQLplus 连接
ORA 12154 - unable to connect from toad/SQLplus
当我尝试连接我的 TNSNAMES.ora 文件中的任何数据库时,SQLPLUS 抛出
ORA-12154: TNS could not resolve service name
我已经检查过这些东西了:
TNS_ADMIN environment variable is defined as "C:\oraclexe\app\oracle\product.2.0\server\NETWORK\ADMIN"
"C:\oraclexe\app\oracle\product.2.0\server\NETWORK\ADMIN\tnsnames.ora" was located
The following connect descriptor was found for my_db in the tnsnames.ora file
my_db=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=local.db)
(PORT=1521)
)
(CONNECT_DATA=
(SID=SCMPROD)
)
)
"C:\oraclexe\app\oracle\product.2.0\server\NETWORK\ADMIN\sqlnet.ora" was located
NAMES.DIRECTORY_PATH specifies TNSNAMES in the sqlnet.ora file
问题是:
缺少什么?
更新
现在在 SqlPlus 上使用 the usr/pwd@SELFTEST
连接字符串可以正常工作
这不可能是服务器上的错误,因为在我的旧 PC 上它仍然接受我的连接并且我的所有公司都在使用它。
tnsname.ora
SELFTEST=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=10.100.2.7)
(PORT=1521)
)
(CONNECT_DATA=
(SERVER=dedicated)
(SERVICE_NAME=GOLDtest)
)
)
尝试从 Toad for Oracle 连接时问题仍然存在...
来自source
ORA-12154: TNS:could not resolve the connect identifier specified
Cause: A connection to a database or other service was requested using a connect identifier, and the connect identifier specified could
not be resolved into a connect descriptor using one of the naming
methods configured. For example, if the type of connect identifier
used was a net service name then the net service name could not be
found in a naming method repository, or the repository could not be
located or reached.
Action:
If you are using local naming (TNSNAMES.ORA file):
Make sure that "TNSNAMES" is listed as one of the values of the NAMES.DIRECTORY_PATH parameter in the Oracle Net profile (SQLNET.ORA)
Verify that a TNSNAMES.ORA file exists and is in the proper directory and is accessible.
Check that the net service name used as the connect identifier exists in the TNSNAMES.ORA file.
Make sure there are no syntax errors anywhere in the TNSNAMES.ORA file. Look for unmatched parentheses or stray characters. Errors in a
TNSNAMES.ORA file may make it unusable.
If you are using directory naming:
Verify that "LDAP" is listed as one of the values of the NAMES.DIRETORY_PATH parameter in the Oracle Net profile (SQLNET.ORA).
Verify that the LDAP directory server is up and that it is accessible.
Verify that the net service name or database name used as the connect identifier is configured in the directory.
Verify that the default context being used is correct by specifying a fully qualified net service name or a full LDAP DN as the connect
identifier
If you are using easy connect naming:
Verify that "EZCONNECT" is listed as one of the values of the NAMES.DIRETORY_PATH parameter in the Oracle Net profile (SQLNET.ORA).
Make sure the host, port and service name specified are correct.
Try enclosing the connect identifier in quote marks. See the Oracle Net Services Administrators Guide or the Oracle operating system
specific guide for more information on naming.
ORA-12154: TNS could not resolve service name
my_db=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=local.db)
(PORT=1521)
)
(CONNECT_DATA=
(SID=SCMPROD)
)
)
错误是关于不正确的服务名称。我看到您的 tnsnames.ora 没有 service_name,而是您提到了 SID。可能这是错误的原因。
您可以将 tnsnames.ora 编辑为:
SCMPROD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = SCMPROD)
)
)
假设,SCMPROD
是 service_name。
当我尝试连接我的 TNSNAMES.ora 文件中的任何数据库时,SQLPLUS 抛出
ORA-12154: TNS could not resolve service name
我已经检查过这些东西了:
TNS_ADMIN environment variable is defined as "C:\oraclexe\app\oracle\product.2.0\server\NETWORK\ADMIN"
"C:\oraclexe\app\oracle\product.2.0\server\NETWORK\ADMIN\tnsnames.ora" was located
The following connect descriptor was found for my_db in the tnsnames.ora file
my_db=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=local.db)
(PORT=1521)
)
(CONNECT_DATA=
(SID=SCMPROD)
)
)
"C:\oraclexe\app\oracle\product.2.0\server\NETWORK\ADMIN\sqlnet.ora" was located
NAMES.DIRECTORY_PATH specifies TNSNAMES in the sqlnet.ora file
问题是:
缺少什么?
更新
现在在 SqlPlus 上使用 the usr/pwd@SELFTEST
连接字符串可以正常工作
这不可能是服务器上的错误,因为在我的旧 PC 上它仍然接受我的连接并且我的所有公司都在使用它。
tnsname.ora
SELFTEST=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=10.100.2.7)
(PORT=1521)
)
(CONNECT_DATA=
(SERVER=dedicated)
(SERVICE_NAME=GOLDtest)
)
)
尝试从 Toad for Oracle 连接时问题仍然存在...
来自source
ORA-12154: TNS:could not resolve the connect identifier specified
Cause: A connection to a database or other service was requested using a connect identifier, and the connect identifier specified could not be resolved into a connect descriptor using one of the naming methods configured. For example, if the type of connect identifier used was a net service name then the net service name could not be found in a naming method repository, or the repository could not be located or reached.
Action:
If you are using local naming (TNSNAMES.ORA file):
Make sure that "TNSNAMES" is listed as one of the values of the NAMES.DIRECTORY_PATH parameter in the Oracle Net profile (SQLNET.ORA)
Verify that a TNSNAMES.ORA file exists and is in the proper directory and is accessible.
Check that the net service name used as the connect identifier exists in the TNSNAMES.ORA file.
Make sure there are no syntax errors anywhere in the TNSNAMES.ORA file. Look for unmatched parentheses or stray characters. Errors in a TNSNAMES.ORA file may make it unusable.
If you are using directory naming:
Verify that "LDAP" is listed as one of the values of the NAMES.DIRETORY_PATH parameter in the Oracle Net profile (SQLNET.ORA).
Verify that the LDAP directory server is up and that it is accessible.
Verify that the net service name or database name used as the connect identifier is configured in the directory.
Verify that the default context being used is correct by specifying a fully qualified net service name or a full LDAP DN as the connect identifier
If you are using easy connect naming:
Verify that "EZCONNECT" is listed as one of the values of the NAMES.DIRETORY_PATH parameter in the Oracle Net profile (SQLNET.ORA).
Make sure the host, port and service name specified are correct.
Try enclosing the connect identifier in quote marks. See the Oracle Net Services Administrators Guide or the Oracle operating system specific guide for more information on naming.
ORA-12154: TNS could not resolve service name
my_db= (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=local.db) (PORT=1521) ) (CONNECT_DATA= (SID=SCMPROD) ) )
错误是关于不正确的服务名称。我看到您的 tnsnames.ora 没有 service_name,而是您提到了 SID。可能这是错误的原因。
您可以将 tnsnames.ora 编辑为:
SCMPROD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = SCMPROD)
)
)
假设,SCMPROD
是 service_name。