database - ORACLE - 连接到最近创建的数据库
问题描述
我很绝望,我刚刚使用 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
解决方案
@测试
意味着:在目录中查找(tnsnames.ora,ldap,more..)并将我的别名TEST解析为主机名和数据库 SERVICE_NAME = TEST。
配置 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@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 环境变量:
export TWO_TASK=localhost:1521/TEST
sqlplus sys/oracle as sysdba
祝你好运!
推荐阅读
- javascript - LitElement Web 组件表单事件目标设置为 null
- python - 如何在 Flask/Connexion 中获取原始请求负载?
- reactjs - 在 React js 中运行测试用例时包含 PDF 文件时没有此类文件或目录错误
- r - 以闪亮的方式显示地图
- python - 如何检测我的 Python 脚本是否在“Windows 终端”中运行
- python - 熊猫:无法将对象转换为日期时间
- unix - 从每一行获取最大值和最小值(unix)
- java - 如何定义用于 apache camel 的 MS SQL 数据源?
- windows - 列表项中的嵌套 UI 未正确水平对齐
- javascript - FirebaseError:无效的文档参考。文档引用必须有偶数个段