Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database ORACLE-连接到最近创建的数据库_Database_Oracle_Listener - Fatal编程技术网

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

Database ORACLE-连接到最近创建的数据库,database,oracle,listener,Database,Oracle,Listener,我非常绝望,我刚刚创建了一个新的Oracle数据库,下面是sys和系统密码“Oracle”。创建已成功完成,但当我尝试远程连接到此数据库时 通过SQLDeveloper,我得到了一个错误 ORA-01017 invalid username/password denied 并且对于用户scott/tiger(手动创建并授予连接权限)也可以正常工作 新创建的实例是TEST。如果我通过sqlplus/连接,工作正常 $ ORACLE_SID=TEST $ sqlplus / as sysdba

我非常绝望,我刚刚创建了一个新的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

ORA-12154
日常情况下的错误可能是这样的:你想打电话给某人,但不知道他们的号码,所以你拿了一本电话簿并搜索它,但是-这个人没有电话号码

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

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

@试验

意思是:在目录(tnsnames.ora、ldap等)中查找并解析 对主机名和数据库服务的别名测试\u NAME=测试

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

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@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db-hostname)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=TEST))) as sysdba
另一个选项是使用EZ_CONNECT(主机:端口/服务名称)

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

export TWO_TASK=localhost:1521/TEST
sqlplus sys/oracle as sysdba
祝你好运

有2个错误

  • 缺少orapwdSID
  • TNSNAMES.ORA(如littlefoot和bjarte brandt所述)

  • 1.缺少orapwdSID 一些教程发现google错过了orapwdSID的创建,当我创建orapwdSID后(遵循or),我就能够通过SQLDeveloper远程连接

    orapwd FILE="$ORACLE_HOME/dbs/orapw$ORACLE_SID" PASSWORD="$ORACLE_TEMP_PASSWORD" SYS="$ORACLE_TEMP_PASSWORD"
    
    我不记得在放入orapwdSID文件后是否重新启动了数据库

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

    2.特斯奈姆斯·奥拉 另一方面,我发现了丢失的TNSNAMES.ORA

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

    事实上,在我的例子中,我不在乎通过别名(@TEST)连接,因为我可以通过EZ_CONNECT实现@bjarte brandt所说的相同功能

    sqlplus sys/oracle@localhost:1521/TEST as sysdba
    
    谢谢你们两位的帮助

    orapwd FILE="$ORACLE_HOME/dbs/orapw$ORACLE_SID" PASSWORD="$ORACLE_TEMP_PASSWORD" SYS="$ORACLE_TEMP_PASSWORD"
    
    echo "alter user sys identified by ${ORACLE_SYS_PASSWORD}" | sqlplus / as sysdba
    echo "alter user system identified by ${ORACLE_SYSTEM_PASSWORD}" | sqlplus / as sysdba
    
    $ 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)
    
    sqlplus sys/oracle@localhost:1521/TEST as sysdba