日常工作中sqlplus是維護資料庫使用最多的工具, 通常把一切配置到login.sql中在sqlplus調用時自動運作,以前都是通過SQLPATH或目前目錄的方式, 發現直到12.2 beta時還好用,但安裝了12.2 正式版後發現沒有運作, 後來看到Franck Pachot提到12.2 因為安全特性的原因,如果沒有配置ORACLE_PATH環境變量指定,目前目錄中的login.sql預設不再自動執行。
12.2 Beta 版
[oracle@anbob ~]$ env|grep ORA
ORACLE_SID=orcl
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/./db_1
[oracle@anbob ~]$ cat login.sql
prom hello
[oracle@anbob ~]$ sqlplus /nolog
SQL*Plus: Release ... Beta on Tue Mar ::
Copyright (c) , , Oracle. All rights reserved.
hello
SQL>
12.2正式版
[[email protected] ~]$ cat db2env
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u02/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/./db_1
export ORACLE_SID=anbob
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
alias sqlplus="rlwrap sqlplus"
[oracle@anbob ~]$ . db2env
[oracle@anbob ~]$ sqlplus /nolog
SQL*Plus: Release .. Production on Tue Mar ::
Copyright (c) , , Oracle. All rights reserved.
SQL>
NOTE:
目前目錄的login.sql從12.2正式版已經不在自動運作。
[oracle@anbob ~]$ export SQLPATH=/home/oracle/sql
[oracle@anbob ~]$ sqlplus /nolog
SQL*Plus: Release Beta on Tue Mar ::
Copyright (c) , , Oracle. All rights reserved.
hello
SQL> EXIT
[oracle@anbob ~]$ unset SQLPATH
[oracle@anbob ~]$ export ORACLE_PATH=/home/oracle/sql
[oracle@anbob ~]$ sqlplus /nolog
SQL*Plus: Release Beta on Tue Mar ::
Copyright (c) , , Oracle. All rights reserved.
hello
SQL>
正式版
[oracle@anbob ~]$ export SQLPATH=/home/oracle/sql
[oracle@anbob ~]$ sqlplus /nolog
SQL*Plus: Release Production on Tue Mar ::
Copyright (c) , , Oracle. All rights reserved.
SQL> exit
[oracle@anbob ~]$ export ORACLE_PATH=/home/oracle/sql
[oracle@anbob ~]$ sqlplus /nolog
SQL*Plus: Release Production on Tue Mar ::
Copyright (c) , , Oracle. All rights reserved.
hello
SQL>
NOTE:
對于過去版本中SQLPATH環境變量在12.2中login.sql已不再自動運作,但是其它腳本依舊可以指定腳本的路徑。對于ORACLE_PATH環境變量指定路徑後可以自動運作。對于12.2之前的版本含Beta版使用SQLPATH和ORACLE_PATH都可以自己運作。 關于12.2中sqlplus的環境變量配置參考
http://docs.oracle.com/database/122/SQPUG/configuring-SQL-Plus.htm#SQPUG012
Summary:
在12.2版本中目前目錄下的login.sql不再自動執行,可以通過ORACLE_PATH指定路徑解決,如[ORACLE_PATH=/home/oracle/scripts;. ] 配置多個路徑指定目前路徑。也可以配置以前的SQLPATH環境變量,除了login.sql外還可以執行。