共计 1071 个字符,预计需要花费 3 分钟才能阅读完成。
最近生产上的 Oracle 数据库升级到了 11.2.0.4 当前最新的 PATCH——170418,但是在使用 sqlplus 登录数据库进行操作时,发现与以往登录时不同的地方。
打 PATCH 以前登录时的截图:
打 PATCH 之后 登录时的截图:
从截图上直观看到的是登录时的信息没有显示出来,但实际上是所有以前对 sqlplus 的配置都没有生效。这是什么原因呢。
先来看 sqlplus 启动过程:
sqlplus 在启动时会自动运行两个脚本:glogin.sql、login.sql 这两个文件
执行顺序为
1. 默认在在 $ORACLE_HOME/sqlplus/admin 路径下查找 glogin.sql 文件执行
2. 默认在在当前路径下查找 login.sql 文件执行,若未查找到对应文件则执行 3
3. 判断是否设置 SQLPATH 环境变量,如果设置了该变量则在对应路径下查找并执行,未找到则停止查找
可以在 login.sql 文件中加入一些常用设置使用 SQLPLUS 时更便捷。
当前系统中设置了 SQLPATH 环境变量,目录下也有 login.sql 文件,里面有对 sqlplus 做的所有设置。那为什么环境变量都没有变化,配置却不能生效了呢?
尝试直接调用 login.sql
没有任何反应,又想到调用 SQL 文件可以忽略后缀,再次尝试
从上图中看到期望的显示。
难道是因为打 PATCH 包导致的?于是在虚拟机做测试,由于虚拟机上已经打到最新的 PATCH 了,直接测试调用 login.sql 文件与生产上的现象一致。于是回滚最新的 PATCH
opatch rollback -id 24732075
回滚最新的 PATCH 后,再次 sqlplus 登录数据库,login.sql 文件中的对 sqlplus 设置恢复正常。
现在还不能确定是 BUG 还是升级的方式有问题。
处理方式:既然可以直接调用 login,就在 glogin.sql 中加入 @$SQLPATH/login 这一条,登录恢复如初。
http://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_two.htm#i1133106
How to Maintain SQL*Plus System Variable/Column Format Settings (文档 ID 1039268.6)
更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-06/144587.htm