当前位置: 首页 > 知识库问答 >
问题:

ORACLE-连接到最近创建的数据库

强金鑫
2023-03-14

我很绝望,我刚刚使用sys和系统密码“oracle”按照此步骤创建了一个新的Oracle数据库。创建成功完成,但当我尝试远程连接到此数据库时。

通过SQLDeveloper,我发现了一个错误

ORA-01017 invalid username/password denied

并且对于用户scott/tiger(手动创建并授予连接权限)来说效果很好。

新创建的实例是TEST。如果我通过sqlplus/连接,效果很好

$ ORACLE_SID=TEST
$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Fri Jun 5 19:32:52 2020

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production

SQL>

当我尝试连接时,说用户名/密码不连接

$ ORACLE_SID=TEST
$ sqlplus sys/oracle@TEST as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Fri Jun 5 19:35:30 2020

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified


Enter user-name: 

但听众显然知道新的实例

$ lsnrctl status

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 05-JUN-2020 19:37:06

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                05-JUN-2020 18:56:57
Uptime                    0 days 0 hr. 40 min. 8 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Log File         /u01/app/oracle/diag/tnslsnr/d69dcf11a559/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=d69dcf11a559)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=d69dcf11a559)(PORT=8080))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "TEST" has 1 instance(s).
  Instance "TEST", status READY, has 1 handler(s) for this service...
Service "TESTXDB" has 1 instance(s).
  Instance "TEST", status READY, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

共有3个答案

强德厚
2023-03-14

有2个错误。

  1. 缺少orapwdSID

一些教程发现google错过了orapwdSID的创建,一旦我创建了它(遵循Burleson或ndesilets),我就能够通过SQLDeveloper远程连接。

orapwd FILE="$ORACLE_HOME/dbs/orapw$ORACLE_SID" PASSWORD="$ORACLE_TEMP_PASSWORD" SYS="$ORACLE_TEMP_PASSWORD"

我不记得在放入orapwdSID文件后是否重新启动了数据库

Mind密码必须至少包含8个字符,包括字符、数字和符号。您可以稍后通过SQL语句进行更改

echo "alter user sys identified by ${ORACLE_SYS_PASSWORD}" | sqlplus / as sysdba
echo "alter user system identified by ${ORACLE_SYSTEM_PASSWORD}" | sqlplus / as sysdba

另一方面,我在这篇文章回复后发现缺少TNSNAMES. ORA

$ strace sqlplus -L sys/oracle@TEST 2>&1 | grep -i 'tnsnames.ora'
access("/home/oracle/.tnsnames.ora", F_OK) = -1 ENOENT (No such file or directory)
access("/etc/tnsnames.ora", F_OK)       = -1 ENOENT (No such file or directory)
access("/u01/app/oracle/product/12.2.0/SE/network/admin/tnsnames.ora", F_OK) = -1 ENOENT (No such file or directory)

正如两位用户所说,@TEST只是一个客户端别名。据我所知,客户端程序用来将别名转换为连接到数据库的方式。

实际上,在我的情况下,我不在乎通过别名(@TEST)连接,因为我可以通过EZ_CONNECT实现@bjarte brandt所说的相同。

sqlplus sys/oracle@localhost:1521/TEST as sysdba

谢谢你们俩的帮助。

隆向晨
2023-03-14

ORA-12154日常情况下的错误是这样的:您想打电话给某人,但不知道他们的号码,因此您拿起电话簿并搜索它,但-没有那个人的号码。

可能此错误最常见的原因是在TNSNAMES. ORA文件中找不到数据库别名(TEST在您的情况下),因此-我建议您检查一下,如果确实如此,请在其中添加TEST并重试。

请注意-如果您在同一台计算机上安装了多个Oracle产品-它们中的每一个都有自己的TNSNAMES. ORA(电话簿,对吗?)文件,因此任何时候您都要添加一个新的数据库别名,您必须在每个文件中这样做。在这种情况下,创建一个TNS_ADMIN环境变量,该变量指向包含TNSNAMES. ORA文件的某个目录,并仅在该单个文件中维护所有更改;Oracle将知道在哪里查看。

白淇
2023-03-14

@测试

意思是:在目录中查找(tnsnames.ora、ldap等)并将别名测试解析为hostname和database SERVICE_NAME=TEST。

配置tnsname并隐藏连接字符串中的连接详细信息

cat >> $ORACLE_HOME/network/admin/tnsnames.ora <<EOF
TEST,YOU_CAN_NAME_IT_WHATERVER_SO_NOW_YOU_HAVE_TWO_ALIASES=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=TEST)))
EOF

现在你可以连接了

sqlplus sys/oracle@TEST as sysdba
sqlplus sys/oracle@YOU_CAN_NAME_IT_WHATERVER_SO_NOW_YOU_HAVE_TWO_ALIASES as sysdba

如果您正在执行临时任务,并且不想配置别名,则不必这样做

sqlplus sys/oracle@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db-hostname)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=TEST))) as sysdba

另一种选择是使用EZ\u CONNECT(主机:端口/服务名称)

sqlplus sys/oracle@localhost:1521/TEST as sysdba

或者使用两个任务环境变量:

export TWO_TASK=localhost:1521/TEST
sqlplus sys/oracle as sysdba

祝你好运!

 类似资料:
  • 主要内容:使用SQL * Plus连接到Oracle数据库服务器,使用SQL Developer连接到Oracle数据库服务器在本教程中,您将学习如何使用和SQL Developer 工具连接到Oracle数据库服务器。 使用SQL * Plus连接到Oracle数据库服务器 是安装Oracle数据库服务器或客户端时自动安装的交互式查询工具。 有一个命令行界面,允许您连接到Oracle数据库服务器并交互执行语句。 注意:如果有使用过MySQL或PostgreSQL,与MySQL中的mysql程序

  • 问题内容: 我是Java的初学者,也是我的一项工作。我必须做数据库操作。我有用于将数据插入数据库的Java代码,它工作正常。 我的问题是,每次代码运行时,我的代码都必须创建一个数据库连接和准备好的语句对象,据我所知,这是一项昂贵的操作。 有什么方法可以保持与数据库的单个连接并使用该连接来执行数据库工作? 问题答案: 您可以像这样使用设计模式Singleton Connection: 1-创建一个类

  • 问题内容: 使用SQL检查Oracle数据库允许的最大连接数的最佳方法是什么?最后,我想显示当前的会话数和允许的总数,例如“当前使用80个连接中的23个”。 问题答案: 确定Oracle数据库支持的连接数时可能会有一些不同的限制。最简单的方法是使用SESSIONS参数和V $ SESSION,即 数据库配置为允许的会话数 当前活动的会话数 但是,正如我所说,在数据库级别和操作系统级别,以及是否已配

  • 我无法连接到我的。这是代码: 我得到了这个信息: 在学校,这个例子是有效的。问题出在哪里??

  • 我试图创建一个连接到一个oracle db实例(oracle:薄)使用Airflow。 根据他们的文档,我输入了我的主机名,后跟端口号和SID: 主持人:举个例子。通讯:1524/sid 填写其他字段为: 控制类型:甲骨文 模式:用户名(文档说明:使用您的用户名作为模式) 登录:用户名 密码: * * * 建立连接后,它会为我尝试执行的每个查询(ORA-12514)提供保存错误代码。甲骨文似乎不让

  • context.xml 感谢Sh AntiBhushan