【发布时间】:2012-06-08 14:59:00
【问题描述】:
我在 Redhat 5.5 的终端中,我需要找出安装了哪个版本的 Oracle。我是 Linux 的新手,但我已经在 Google 上搜索了一段时间,但找不到我需要的东西。我必须找到通过终端安装的版本。我找到了 Oracle 文件,但似乎找不到版本。
【问题讨论】:
-
你能连接到oracle DB吗?如果是这样,只需运行
select * from v$version;
我在 Redhat 5.5 的终端中,我需要找出安装了哪个版本的 Oracle。我是 Linux 的新手,但我已经在 Google 上搜索了一段时间,但找不到我需要的东西。我必须找到通过终端安装的版本。我找到了 Oracle 文件,但似乎找不到版本。
【问题讨论】:
select * from v$version;
有点手动搜索,但它是另一种方式...
在您的 linux 服务器上找到 Oracle 主目录或 Oracle 安装文件的安装位置。
cd / <-- Goto root directory
find . -print| grep -i dbm*.sql
结果因您安装 Oracle 的方式而异,但我的会显示这一点
/db/oracle
转到文件夹
less /db/oracle/db1/sqlplus/doc/README.htm
向下滚动,您应该会看到类似这样的内容
SQL*Plus 发行说明 - 发行版 11.2.0.2
【讨论】:
在 sql*plus 中以 sys 用户身份登录。然后做这个查询:
select * from v$version;
或
select * from product_component_version;
【讨论】:
你也可以通过
ps -ef |grep -i ora
【讨论】:
我仅通过阅读启动脚本(在我的情况下为 /etc/init.d/oracle-xe)在大约 1 分钟内解决了这个问题:
少 /etc/init.d/oracle-xe
几乎在我找到的文件的开头:
ORACLE_HOME=[PATH_TO_INSTALLATION_INCLUDING_VERSION_NUMBER]
这对我来说是最快的解决方案,因为我知道脚本的位置,并且它用于启动/重新启动服务器。
当然,这依赖于版本号实际上对应于实际的服务器版本,对于正确安装的实例来说应该是这样。
【讨论】:
作为运行 Oracle 数据库的用户,还可以尝试$ORACLE_HOME/OPatch/opatch lsinventory,它显示了安装的确切版本和补丁。
例如,这是一个只返回版本号的快速单行器:
$ORACLE_HOME/OPatch/opatch lsinventory | awk '/^Oracle Database/ {print $NF}'
【讨论】:
select comments, version, bundle_series from sys.registry$history where bundle_series = 'PSU' order by action_time;
正如 A.B.Cada 指出的那样,您可以使用 sqlplus 查询数据库本身以获取 db 版本。这是找出正在运行的数据库版本的最简单方法。如果有多个实例,则必须适当设置 oracle_sid 并对每个实例运行查询。
您可以查看 /etc/oratab 文件以查看每个实例使用的实例和 db home。可以为每台服务器安装多个版本的 oracle 以及多个实例。 /etc/oratab 文件将列出所有实例和 db home。从 oracle db home 中,您可以运行“opatch lsinventory”来找出安装的数据库的精确版本以及应用于该数据库安装的任何补丁。
【讨论】:
输入sqlplus(你会看到版本号)
# su - oracle
oracle# sqlplus
或
echo $ORAHOME
将为您提供安装 Oracle 的路径,路径将包含版本号。
或
连接到 Oracle 数据库并运行
select * from v$version where banner like 'oracle%';
【讨论】: