2017年12月14日 星期四

ORACLE ORA-01034 and ORA-27101


AIX: 5300-07
oslevel -r

Oracle: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
select * from v$version



我們有一個ORACLE 資料庫,作業系統是AIX,運行已經有好幾年了。最近發生JBOSS AP在啟動建立資料庫連線的時候報錯,但不全然都會這樣,有些連線建立成功,因此這狀況就變成時有時無。在AP主機重啟時,就會報這錯,但AP還算能登入使用,只是有時候會反應有些功能沒有作業成功而報錯,錯誤訊息依然是以下這個。

WARN  [org.jboss.resource.connectionmanager.JBossManagedConnectionPool] Throwable while attempting to get a new connection: null
org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (java.sql.SQLException: ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
IBM AIX RISC System/6000 Error: 2: No such file or directory)

get a new connection: null
Could not create connection 
一般來說是無法連到DB主機

ORA-01034, ORA-27101: 網路上很多人說,這是資料庫沒有啟動好,或配置不良,應該是泛指剛剛建立完成的資料庫,但我們的已經運行好幾年了,應該不可能。

剛開始,就是拼命地把AP主機重新啟動,觀察AP主機上的執行環境是否有異常蠕蟲或病毒,甚至想要分散一台AP主機的負載量來測試,但方向都不正確。

觀察DB 主機的使用情況,使用ORACLE 身分登入主機
參考這篇文章 http://intermediatesql.com/aix/how-oracle-uses-memory-on-aix-part-1-processes/
$ ps -elf |
egrep " oracle${ORACLE_SID} | ora_.*_${ORACLE_SID} " |
grep -v egrep | awk '{sum += $10} END {print sum/1024}'
53688.7

$ sysresv

IPC Resources for ORACLE_SID "xxxxxxxx" :
Shared Memory:
ID              KEY
1048577         0x6598f430
Oracle Instance alive for sid "xxxxxxxx"

$ ipcs -bm|grep 1048577
m   1048577 0x6598f430 --rw-r-----   oracle      dba 524296192 <--500mb p="">

總共使用的記憶體: 53 GB + 500 MB =53.5 GB

ps -ef|grep oracle${ORACLE_SID}|grep -v grep |wc -l 
540

select * from v$version
161
從資料庫裡查看SESSION 大約是161
很明顯兩邊的數量差很多,可能是程序已經離開,但ORACLE認為還在用沒放開,導致資源消耗。

關閉所有AP連線行為,將ORACLE DB 重新啟動
shutdown immediate  等待約莫10分鐘,還是沒有shutdown

改用
shutdown abort 等待約莫3分鐘

觀察主機ORACLE 的程序數量
ps -ef|grep oracle${ORACLE_SID}|grep -v grep |wc -l 
0

啟動資料庫
Startup

重新啟動AP主機服務,AP 啟動建立資料庫連線的時候,沒有在報錯

說實在的,AIX上的記憶體還真的是不太會看,以下列一些相關指令,參考看看
$ vmstat -v
              2035712 memory pages
              1957164 lruable pages
                 2663 free pages
                    1 memory pools
               472236 pinned pages
                 80.0 maxpin percentage
                 10.0 minperm percentage
                 20.0 maxperm percentage
                 11.0 numperm percentage
               215325 file pages
                  0.0 compressed percentage
                    0 compressed pages
                 11.0 numclient percentage
                 20.0 maxclient percentage
               215323 client pages
                    0 remote pageouts scheduled
                  483 pending disk I/Os blocked with no pbuf
                60078 paging space I/Os blocked with no psbuf
                 2484 filesystem I/Os blocked with no fsbuf
                    0 client filesystem I/Os blocked with no fsbuf
               211963 external pager filesystem I/Os blocked with no fsbuf
                    0 Virtualized Partition Memory Page Faults
                 0.00 Time resolving virtualized partition memory page faults

$ vmstat

System configuration: lcpu=4 mem=7952MB

kthr    memory              page                            faults                    cpu
-----  ---------------- ------------------------ -----------------  -----------
 r   b   avm          fre      re  pi  po  fr     sr         cy  in  sy      cs    us  sy  id  wa
 1  2   1977424  2671   0   0   0     192 1610   0    76 2486 480  8   1   89  1


$ df -k
Filesystem    1024-blocks      Free %Used    Iused %Iused Mounted on
/dev/hd4           524288    257492   51%     8417    13% /
/dev/hd2          6291456   1376552   79%    95241    24% /usr
/dev/hd9var        524288         0  100%     2921    61% /var
/dev/hd3          1048576    508024   52%     2081     2% /tmp
/dev/fwdump        524288    523536    1%        5     1% /var/adm/ras/platform
/dev/hd1           524288    249000   53%      524     1% /home
/proc                   -         -    -         -     -  /proc
/dev/hd10opt      1048576    532384   50%     8599     7% /opt
/dev/lv00          524288    507776    4%       18     1% /var/adm/csd
/dev/fslv00      10485760   4881856   54%     5167     1% /source
/dev/fslv01      94371840  21525676   78%    98843     3% /oradata

2017年9月30日 星期六

YUM EPEL INSTALL

在CentOS 相關系列裡,YUM 是個非常方便的安裝管理套件工具,但本身提供的套件數,畢竟還是有限。有些套件必須要設定額外的YUM REPOSITORIES,例如EPEL套件

一般可以輸入以下指令安裝
yum install epel-release

但你可能會遇到YUM 不接受(或找不到)第三方套件的安裝,你可以輸入以下指令安裝
yum --enablerepo=extras install epel-release

如果這樣還是不行,你也可以根據自己的OS版本進行以下的安裝
rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm

其中的 epel-release-7-8.noarch.rpm  7-8就是對應的版號,如果不確定你可以到以下位置確認
http://dl.fedoraproject.org/pub/epel 

參考來源
https://wiki.centos.org/zh-tw/AdditionalResources/Repositories

2017年9月11日 星期一

SSL 憑證證書格式轉換

SSL 憑證格式還挺多種的,如果想要再不同格式接轉換,除了請原廠發憑證公司提供外,也可以透過open ssl 這個軟體來進行。

open ssl 在多數的Linux 環境中,都已經是預設就有安裝的套件了,不需要額外安裝。

以下資訊摘錄自 http://netkiller.sourceforge.net/cryptography/openssl/format.html

PKCS 全稱是 Public-Key Cryptography Standards ,是由 RSA 實驗室與其它安全系統開發商為促進公鑰密碼的發展而制訂的一系列標準,PKCS 目前共發佈過 15 個標準。 常用的有:
PKCS#7 Cryptographic Message Syntax Standard
PKCS#10 Certification Request Standard
PKCS#12 Personal Information Exchange Syntax Standard
X.509是常見通用的證書格式。所有的證書都符合為Public Key Infrastructure (PKI) 制定的 ITU-T X509 國際標準。
PKCS#7 常用的尾碼是: .P7B .P7C .SPC
PKCS#12 常用的尾碼有: .P12 .PFX
X.509 DER 編碼(ASCII)的尾碼是: .DER .CER .CRT
X.509 PAM 編碼(Base64)的尾碼是: .PEM .CER .CRT
.cer/.crt是用於存放證書,它是2進制形式存放的,不含私鑰。
.pem跟crt/cer的區別是它以Ascii來表示。
pfx/p12用於存放個人證書/私鑰,他通常包含保護密碼,2進制方式
p10是證書請求
p7r是CA對證書請求的回覆,只用於導入
p7b以樹狀展示證書鏈(certificate chain),同時也支持單個證書,不含私鑰。

7.6.1. 去除私鑰的密碼
$ openssl rsa -in neo.key -out nopassword.keyEnter pass phrase for neo.key:writing RSA key

7.6.2. CA證書
用openssl創建CA證書的RSA密鑰(PEM格式):
openssl genrsa -des3 -out ca.key 1024

7.6.3. 創建CA證書有效期為一年
用openssl創建CA證書(PEM格式,假如有效期為一年):
openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config openssl.cnf
openssl是可以生成DER格式的CA證書的,最好用IE將PEM格式的CA證書轉換成DER格式的CA證書。

7.6.4. x509轉換為pfx
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

7.6.5. PEM格式的ca.key轉換為Microsoft可以識別的pvk格式
pvk -in ca.key -out ca.pvk -nocrypt -topvk

7.6.6. PKCS#12 到 PEM 的轉換
openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem
驗證
openssl pkcs12 -clcerts -nokeys -in cert.p12 -out cert.pem

7.6.7. 從 PFX 格式檔案中提取私鑰格式檔案 (.key)
openssl pkcs12 -in mycert.pfx -nocerts -nodes -out mycert.key

7.6.8. 轉換 pem 到到 spc

      openssl crl2pkcs7 -nocrl -certfile venus.pem  -outform DER -out venus.spc
      用 -outform -inform 指定 DER 還是 PAM 格式。例如:
      openssl x509 -in Cert.pem -inform PEM -out cert.der -outform DER

7.6.9. PEM 到 PKCS#12 的轉換

      openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem
      IIS 證書
      cd c:\opensslset OPENSSL_CONF=openssl.cnf
      openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt
      server.key和server.crt檔案是Apache的證書檔案,生成的server.pfx用於導入IIS
      加上中繼憑證
      openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem -certfile ssl_chain.crt

7.6.10. How to Convert PFX Certificate to PEM Format for SOAP

      $ openssl pkcs12 -in test.pfx -out client.pem
      Enter Import Password:
      MAC verified OK
      Enter PEM pass phrase:
      Verifying - Enter PEM pass phrase:

7.6.11. DER檔案(.crt .cer .der)轉為PEM格式檔案

      轉換DER檔案(一般尾碼名是.crt .cer .der的檔案)到PEM檔案
      openssl x509 -inform der -in certificate.cer -out certificate.pem
      轉換PEM檔案到DER檔案
      openssl x509 -outform der -in certificate.pem -out certificate.der

2017年3月27日 星期一

用 $(()) 做運算出現 value too great for base (error token is "08") 錯誤訊息

最近整理了一下檢查Linux伺服器的程序Script,有些服務是晚上00:00 ~08:00是不執行的,這樣一來,若每隔10分鐘就檢查一次的話,晚上就會有一堆報錯的郵件通知,這樣也不好,就跟狼來了是一樣情況。
為了避開該時段,因此寫了一段SCRIPT

其中一段是為了檢查現在的時間
TimeHour=`date +%H` #現在的小時 01-24
TimeMin=`date +%M` #現在的分鐘 01-59
setTimeStart='08:00'
setTimeEnd='24:00'
TSH=`echo $setTimeStart|awk -F: '{print $1}'` #取出08:00 的08
TSM=`echo $setTimeStart|awk -F: '{print $2}'` #取出08:00 的00
TEH=`echo $setTimeEnd|awk -F: '{print $1}'`  #取出24:00的24
TEM=`echo $setTimeEnd|awk -F: '{print $2'}`  #取出24:00的00

if ( [[ ${TimeHour} -gt ${TSH} ]] && [[ ${TimeHour} -lt ${TEH} ]] ) ; then
結果
[[ 15 -gt 08 ]]
錯誤訊息
[[: 08: value too great for base (error token is "08")
上網查了一下
http://blog.xuite.net/jyoutw/xtech/30862650

http://stackoverflow.com/questions/24777597/shell-script-error-value-too-great-for-base-error-token-is-08#comment38451327_24777667

原來是因為Linux Script 把 08、09 當做特殊運算符號了
因此要把檢查的那一段改成
if   ( [[ ${TimeHour#0} -gt ${TSH#0} ]] && [[ ${TimeHour#0} -lt ${TEH#0} ]] ) ; then
就可以囉

2017年3月24日 星期五

win 10 輸入法問題 預設已改為英數 開機時卻不是英數

參考來源:
https://answers.microsoft.com/zh-hant/windows/forum/windows_10-ime/win-10/198515cc-3414-4815-b9cb-7844b96981da


試試控制台的語言裡的進階設定
把切換輸入法的 " 讓我為每個應用程式視窗設定不同的輸入法 " 勾起來
然後再把預設輸入模式也改成 "英數模式"