SUNOS export命令執行與bash

清風艾艾發表於2016-07-22
    今天,一小弟去巡檢ORACLE資料庫,出現了點小插曲,情況是:一臺伺服器上有2個oracle資料庫例項,均是10.2.0.1的,ORACLE_SID分別是APP、etos。
作業系統使用者oracle的預設環境變數配置ORACLE_SID是etos,從root切換到oracle時,以sqlplus / as sysdba預設登入到etos例項,且etos資料庫的巡檢也很順利,
但是,到巡檢APP時,那小弟傻了,登入不進去,使用export ORACLE_SID=APP指定ORACLE_SID時,系統無法執行export命令,報錯如下:

    然後,那小弟打電話向我求助,對於這種情況,總有點有家不能回,進家無門的感覺,讓人哭笑不得。
    我的做法是,首先確定作業系統型別:
$uname -a
SunOS kdswapdb01 5.10 Generic_127111-06 sun4u sparc SUNW,Sun-Fire-V890
    然後,檢視oracle家目錄下.profile的環境變數設定是如何宣告的:
$ vi .profile
".profile" 12 lines, 491 characters 
#       This is the default standard profile provided to a user.
#       They are expected to edit it to meet their own needs.
MAIL=/usr/mail/${LOGNAME:?}
ORACLE_BASE=/u01/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.0.2
ORACLE_SID=etos
NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280
PATH=$ORACLE_HOME/bin:/bin:/sbin:/usr/ccs/bin:/usr/local/bin
BRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/usr/local/lib:/usr/lib
TMPDIR=/var/tmp
export ORALCE_BASE ORACLE_HOME ORACLE_SID NLS_LANG PATH LD_LIBRARY_PATH
    明確SUNOS的使用者環境變數宣告是使用export的,然而當前export命令不能執行,SUNOS還有一種環境變數宣告方式即setenv,嘗試setenv ORACLE_SID=APP:

    當前SUNOS不支援setenv,這時結合linux作業系統進行對比,可能沒有執行bash,切換至bash環境下嘗試:
$ bash
bash-3.00$ 
bash-3.00$ export ORACLE_SID=APP
bash-3.00$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 21 20:49:01 2016
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL>
    問題解決,這裡不得不提LINUX和SUNOS的一點不同:shell,兩個作業系統的預設shell雖然都是/bin/sh,但linux預設shell是bash,/bin/sh僅是一個指向到/bin/bash的符號連結,
而solaris的預設shell是Bourne shell,名為/bin/sh。 所以,操作SUNOS時,最好首先執行bash,讓當前環境切換至bash狀態。





來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29357786/viewspace-2122374/,如需轉載,請註明出處,否則將追究法律責任。

相關文章