![](/img/trans.png)
[英]How can we pipe oracle password to background running sqlplus process on windows/Linux?
[英]Connecting to Oracle XE edition with sqlplus but without password
是的,我見過https://dba.stackexchange.com/a/140147
在這個答案和 web 的其他地方提到的命令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
中可用。
更新:
關於 shell 環境,我作為oracle
用戶完成的是:
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。 默認情況下,它最多會嘗試登錄 3 次,每次都提示輸入憑據 - 第一次除外,因為您提供了第一個在命令行上嘗試的設置。
如果您執行./sqlplus -l / as sysdba
那么它只會嘗試登錄一次,而不是重新提示錯誤(稍微解釋一下使用說明)。
但它仍然會在第一次出現 ORA-12162 錯誤。
您的環境設置不正確。 您手動設置了ORACLE_HOME
,但沒有設置任何其他Oracle 相關的環境變量; 特別是這里ORACLE_SID
(或者可能是TWO_TASK
遠程連接)。 您可能還想正確設置PATH
等其他內容。
Oracle 主bin
目錄包含一個oraenv
腳本,您可以獲取該腳本(而不僅僅是執行它)來為特定的本地數據庫設置環境,使用
. ${ORACLE_HOME}/bin/oraenv
或者
source ${ORACLE_HOME}/bin/oraenv
...但您可能更喜歡手動設置。
我真的不需要任何數據庫。 我的工作是收集有關 Oracle 安裝的一些元信息,例如版本、配置文件、數據庫文件目錄等。
您已經從ORACLE_HOME
路徑有效地知道了數據庫軟件版本 21c,但是bin
目錄中有一個oraversion
可執行文件,可讓您獲得有關該主目錄中 Oracle 二進制文件版本的更多詳細信息。
信息的 rest 特定於數據庫。 您可能能夠找到一個文本pfile
,或者更可能是一個二進制spfile
,但是您使用的 ASM 可能不在正常的本地文件系統上。 真的,你確實需要連接到數據庫來詢問它的文件和目錄位置等。
(數據庫版本也可能與二進制版本略有不同 - 它不應該是真的,但我認為如果某些升級腳本尚未運行,則可能會在升級中進行。不過我可能是錯的。但是無論如何查詢v$version
以確定。)
目標是檢測安裝在代理工作的所有端點上的軟件系統,例如 Oracle
如果服務器充當 Oracle 數據庫服務器,那么它應該有一個oratab
文件,通常是/etc/oratab
或/var/opt/oracle/oratab
或類似文件 - 您可能需要locate
它。
這以冒號分隔的形式列出了所有本地數據庫,例如orcl:/opt/oracle/product/21c/dbhomeXE:Y
,前兩個元素是ORACLE_SID
和ORACLE_HOME
值。 (第三個是自動啟動標志)。 因此,您可以解析該文件以識別 Oracle 主目錄(或多個目錄;可能有多個),以及為每個版本傳遞給oraenv
並且您可以嘗試登錄的 SID 值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.