使用sqlplus连接到Oracle XE版本,但不使用密码



是的,我见过https://dba.stackexchange.com/a/140147

这个答案和网络上其他地方提到的命令sqlplus / as sysdba仍然要求我在安装时输入密码:

Oracle Linux 7.7
oracle-database-xe-21c-1.0-1.x86_64

然而,该命令仍然要求我输入密码:

[root@localhost ~]# su - oracle
Last login: Fri Sep  2 09:01:34 EDT 2022 on pts/0
[oracle@localhost bin]$ export ORACLE_HOME=/opt/oracle/product/21c/dbhomeXE
[oracle@localhost bin]$ cd /opt/oracle/product/21c/dbhomeXE/bin/
[oracle@localhost bin]$ ./sqlplus  / as sysdba
SQL*Plus: Release 21.0.0.0.0 - Production on Fri Sep 2 09:02:24 2022
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle.  All rights reserved.
ERROR:
ORA-12162: TNS:net service name is incorrectly specified

Enter user-name: 

我真的不需要任何数据库。我的工作是收集一些关于Oracle安装的元信息,如版本、配置文件、数据库文件目录等。

是的,我可以从RedHat上的oracle系统文件和类似文件中读取一些信息(oracle Linux是从RH源编译的,它与RH非常相似(。尽管如此,一些信息仅在sqlplus中可用。

更新

关于我作为oracle用户所做的shell环境:

export ORACLE_HOME=/opt/oracle/product/21c/dbhomeXE

[oracle@localhost bin]$ ./oraenv 
ORACLE_SID = [oracle] ? 
ORACLE_HOME = [/home/oracle] ? /opt/oracle/product/21c/dbhomeXE
The Oracle base has been set to /opt/oracle

然而,以下命令仍然要求我输入密码:

[oracle@localhost bin]$ ./sqlplus -l / as sysdba
SQL*Plus: Release 21.0.0.0.0 - Production on Fri Sep 2 09:24:55 2022
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle.  All rights reserved.
ERROR:
ORA-12162: TNS:net service name is incorrectly specified

SP2-0751: Unable to connect to Oracle.  Exiting SQL*Plus
[oracle@localhost bin]$ 
[oracle@localhost bin]$ ./sqlplus  / as sysdba
SQL*Plus: Release 21.0.0.0.0 - Production on Fri Sep 2 09:24:59 2022
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle.  All rights reserved.
ERROR:
ORA-12162: TNS:net service name is incorrectly specified

Enter user-name: 

;输入用户名:";由于初始登录尝试失败,出现提示,ORA-12162。默认情况下,它最多会尝试登录三次,每次都会提示输入凭据,但第一次除外,因为您在命令行上提供了第一个尝试集。

如果你使用./sqlplus -l / as sysdba,那么它只会尝试登录一次,而不是在出现错误时重新尝试(稍微改写一下用法说明(。

但它仍然会在第一次出现ORA-12162错误。

您的环境设置不正确。您手动设置了ORACLE_HOME,但没有设置任何其他与Oracle相关的环境变量;特别是这里的ORACLE_SID(或者可能是远程连接的TWO_TASK(。您可能还想正确设置PATH之类的其他内容。

Oracle主目录bin包含一个oraenv脚本,您可以使用为特定的本地DB设置环境(而不仅仅是执行它(

. ${ORACLE_HOME}/bin/oraenv

source ${ORACLE_HOME}/bin/oraenv

但您可能更喜欢手动设置。

我真的不需要任何数据库。我的工作是收集一些关于Oracle安装的元信息,如版本、配置文件、数据库文件目录等。

您已经从ORACLE_HOME路径中有效地知道了数据库软件版本21c,但在bin目录中有一个oraversion可执行文件,可以让您获得有关该主页中Oracle二进制文件版本的更详细信息。

其余信息是特定于数据库的。您可能能够找到一个文本pfile,或者更可能是一个二进制spfile,但如果您使用的是ASM,这些可能不在正常的本地文件系统上。实际上,你确实需要连接到数据库来询问它的文件和目录位置等。

(也有可能数据库版本与二进制版本略有不同-这不应该是真的,但我认为如果一些升级脚本没有运行,则有可能在升级中期。不过我可能错了。但无论如何都要查询v$version。(

目标是检测安装在代理正在工作的所有端点上的软件系统,如Oracle

如果服务器充当Oracle数据库服务器,则它应该有一个oratab文件,通常为/etc/oratab/var/opt/oracle/oratab或类似文件-您可能需要locate

它以冒号分隔的形式列出了所有本地数据库,例如orcl:/opt/oracle/product/21c/dbhomeXE:Y,前两个元素是ORACLE_SIDORACLE_HOME值。(第三个是自动启动标志(。因此,您可以解析该文件以识别Oracle主目录(或多个目录;可能有多个(,以及每个版本要传递给oraenv的SID值,并且您可以尝试登录到该SID值。

最新更新