跳到主要內容

發表文章

EBS 清除 FND_LOBS 過大的附件空間

測試的DB是9.2.0.7,而EBS則是11i,因為上傳檔案佔用太多空間,而且都只是使用一次就不再更新,
因此想縮小FND_LOBS的大小

找出 FND_LOBS 的欄位 FILE_DATA 的 Segment Name
select * from dba_lobs where table_name =  'FND_LOBS';

FND_LOBS 與 FILE_DATA 的大小並一樣,上傳的文件資料顯然是放在SYS_LOB0000066009C00004$$
select round(sum(bytes)/1024/1024) Mb from dba_segments where segment_name='FND_LOBS';
select round(sum(bytes)/1024/1024) Mb from dba_segments where segment_name='SYS_LOB0000066009C00004$$';

因為這次想要清除的是上傳的csv檔,所以先找出符合條件的資料來確認。
select * from fnd_lobs where program_name <> 'FND_HELP'
    and (file_name like '%.csv' or file_name like '%.CSV' );

填上這些資料的過期日,在下一個步驟就可以只刪除過期的資料
update fnd_lobs set expiration_date = to_date('20060101','yyyyMMdd')  where file_id in
    ( select file_id from fnd_lobs where program_name <> 'FND_HELP'
     and (file_name like '%.csv' or file_name like '%.CSV' ));

接著以sysadmin登入到EBS,執行Request「Purge Obsolete Generic File Manager Data」,
參數的部份只…

EBS 11i。Concurrent Manager狀態及Log查詢

有一台EBS 11i 的測試機,有時候會遇到Concurrent Manager掛掉,因為Concurrent Manager是Request的管理程序,所以掛掉後所有待執行的Request狀態都變成Pending。

到 System Administrator -> Concurrent -> Manager -> Administer
查看 Internal Manager 的 Actual 是否 >0 ,Internal Manager就是管理程序。



如果發生問題,則可以按上 Processes,再按下Internal Manager Log查看訊息


查詢Log後發現問題,加大空間就解決了







Solaris、Linux刪除亂碼檔案

有時候會遇到使用者上傳中文檔名的檔案,但是系統並未安裝中文語系時,其檔案名稱會變成亂碼。
亂碼檔名讓我無法更名、刪除,因為系統會回覆找不到檔名,此時可利用檔案號碼來處理。

一、先用 ls -i 找出檔案號碼
# ls -i OMF555*
258337 OMF553_??????-).fmb

二、利用檔案號碼刪除檔案,find 的參數 -inum <FILE_NUMBER> 可以找出指定號碼的檔案
# find . -inum 258337 -exec rm -i  {} \;

三、更名
find . -inum 258337 -exec mv {} OMF553_2.fmb \;

Node.js & Firebase Functions:使用NodeMailer透過Gmail寄信

安裝套件:
npm install --save nodemailer

程式範例如下,利用自己的Gmail來寄信

var nodemailer = require('nodemailer');

var transporter = nodemailer.createTransport({
 service: 'gmail',
 auth: {
        user: 'myemail@gmail.com', //自己的Gmail Address
        pass: 'password'
    }
});

const mailOptions = {
  from: 'sender@email.com', //寄件者
  to: 'receivers@email.com', //收件者
  subject: '測試', //信件主旨
  html: '<p>Hello,the world</p>'  //信件內容
};

transporter.sendMail(mailOptions,(error, info) => {
      if (error) {
        console.log(error);
      } else {
console.log(info.response);
      }
});

因為我有啟用Gmail的兩階段認證,所以測試時出現密碼錯誤,需要特殊的密碼。


解決的方式是登入Google,在「登入和安全性」的頁面中選取「應用程式密碼」


在接下來的步驟中,應用程式選擇「郵件」,並在選取裝置中選擇「其他(自訂名稱)


輸入名稱後按下「產生」,會產生一組特殊的密碼,只要將這組密碼取代自己的Gmail密碼,
程式就可以不用經過兩階段認證而寄出信。

這組特殊的密碼僅供應用程式使用,所以原本的密碼及兩階段認證並不受影響。

Notepad++替換每行的行首行尾

因為有一串很長的SQL要轉成字串,所以需要在每行的首尾加上特殊符號如下圖:


按下Ctrl+H開啟取代視窗,在搜尋的欄位中輸入「^」表示行首;「$」表示行尾,
並將搜尋模式改為規則運算式,再按下取代即可修改每行的首尾,如下圖:




Solaris 批次更改檔名Script

因為剛好有需要,所以試著寫了一個簡易的Script來批次更改檔案名稱。

如下我想把檔名CK開頭的tmp檔全部改成FK:

#!/bin/sh
for old_name in CK*.tmp
do
echo $old_name | sed s/CK/FK/g >tmp.log
new_name=`tail -1 tmp.log`
cp $old_name new_name/$new_name
done



Google Blogger。自訂網域啟用HTTPS

Gooogle Blogger終於可以在自訂網域上使用HTTPS了,以往Blogger只允許自己的網域啟用HTTPS,可是我就是想用自己的網域名稱,如今終於開放自訂網域的HTTPS,啟用HTTPS後,安全性就更上一層樓了。

在「設定」-->「基本」頁面中,找到「HTTPS」,並將選項改為「是」
「HTTPS」重新導向我也把它改為「是」,這個選項的作用是無論使用者以HTTP或HTTPS連到我的網站,一律會以HTTPS的方式呈現,也就是說如果選擇「否」,則使用者以HTTP連線時,我的網站也會以HTTP的方式來回應,而不會以HTTPS來回應


設定完成後,等待一小段時間就系統完成設定後就可以了,當然之前在搜尋引擎內的HTTP網頁還是可以連接,不會失效