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

问题描述 投票:3回答:3

我非常绝望,我刚刚在this steps之后创建了一个新的Oracle数据库,其sys和系统密码为“ 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
database oracle listener
3个回答
2
投票

@ TEST

表示:在目录中查找(tnsnames.ora,ldap等),然后解析 我的别名TEST为主机名和数据库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_CONNECT(host:port / SERVICE_NAME)

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

或使用TWO_TASK env变量:

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

祝你好运!


1
投票

[日常情况中的[ORA-12154错误]可能是这样的:您想通过电话呼叫某人,但不知道他们的电话号码,因此您拿了电话簿进行搜索,但是-没有电话号码该人。

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

请注意-如果您在同一台计算机上安装了多个Oracle产品-每个产品都有其自己的TNSNAMES.ORA

电话簿

,对吗?)文件,因此您随时可以添加新数据库别名,则必须在每个这些文件中执行此操作。在这种情况下,请创建一个TNS_ADMIN环境变量,该变量指向某个包含TNSNAMES.ORA文件的目录,并且仅在该单个文件中维护所有更改。 Oracle将知道在哪里查看。

0
投票
有两个错误。

    缺少orapwdSID
  1. TNSNAMES.ORA(如@littlefoot和@ bjarte-brandt所述)

  • 1.缺少orapwdSID

    一些教程发现Google错过了orapwdSID的创建,我一经创建[遵循Burlesonndesilets就可以通过SQLDeveloper进行远程连接。

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

    我不记得放置orapwdSID文件后是否重新启动数据库。

    密码必须至少包含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
    2。 TNSNAMES.ORA

    [另一方面,我发现this post reply之后缺少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

    谢谢你们的帮助。    
  • © www.soinside.com 2019 - 2024. All rights reserved.