6/25/2010

MAC上也可使用支付寶的安全控件_for Safari only

前一陣子加入中國最大的網拍平台-淘寶網,裡面有個線上付費的平台,叫「支付寶」,由於牽扯到網上交易,所以就有一個東西叫「安全控件」,以前都是只有for Windows的於去年的四月一日正式支援蘋果系統(OS X),下面是官方下載連結:

6/22/2010

系統管理_Profile Values_參數修改

職責:系統管理員(System Administrator)

路徑:Profile -> System

彈出Find System Profile Values視窗,並於下面的Profile欄位輸入待修改參數之名稱,按下Find以進行搜尋

彈出System Profile Values視窗,依Profile Option Name進行Site欄位設定,存檔

1、Java 色彩設計 (Java Color Scheme)
定義Form的顯示色彩。預設值:swan

2、幣種:負格式 (Currency:Negative Format)
定義負數的顯示格式。預設值:

3、ICX:日期顯示樣式 (ICX: Date format mask)
定義系統的日期顯示格式。預設值:31-DEC-1999

4、ICX:會話超時 (ICX: Session Timeout)
定義系統保持一個非活動的用戶會話的超時間隔。預設值:30(分)

5、ICX:限制時間 (ICX: Limit time)
定義系統保持一個用戶會話的最長登錄時間。預設值:999

6、ICX:限制連結(ICX: Limit connect)
定義活動的資料庫連接的最大數量。預設值:9000

7、FA:安全設定(FA: Security Profile)
指定固定資產帳本的安全。

8、ICX:語言(ICX: Language)
修改系統預設語言。預設值:American English

Reference
---------------------------------------------------------------------------------------------
http://space.itpub.net/7434747/viewspace-659671

6/21/2010

MacBook Pro 17" pre-Unibody 雙硬碟 & SSD改裝

筆者這台是2008年的MacBook Pro 17" 4.1版本,用了兩年,沒買阿婆保固,本來想賣掉換新的MBP,但是Apple不爭氣,沒出四核版的INTEL i7版本,沒四核沒意思,所以作罷,也因此興起了這次改裝的念頭。

我的小老婆

倒過來的蘋果

先聊聊為什麼要改裝好了,由於內置的光碟機,一年用不到幾次,加上原配的5400RPM 250G的硬碟已經不是很夠力了,而且老是帶著外接硬碟走跳也不方便,因此換裝SSD和雙硬碟應該是不錯的選擇。
另外200G的SSD幾乎是一台便宜筆電的費用了,但是如果要換成新的MBP加上選配SSD應該是天價來的,改裝以後再快樂的撐個兩年,感覺還是比較划算的。
舊款MBP的硬傷應該是來自於FSB只有800,最高只能插到4G DDR II的ram,還有SATA一代的硬碟介面接口,這些應該都會影響到SSD的效能發揮,不過預算跟效能比較一下的話,還是算值得了。更何況換新機的時候可以把SSD給拆下來。

改裝前作的功課,有幾點要特別注意:
1.裝原始2.5"硬碟的第二顆硬碟盒(取代光碟機的位置),尺寸是:128.0(W) x 12.7(H) x 129.0(D) mm。由於舊款MBP的光碟機是IDE介面,所以硬碟盒要買IDE(外) to SATA(內)
關鍵字:12.7mm、硬碟、IDE、SATA

2.拆下來的光碟機可以買個外殼,組起來就是外接光碟機,這個沒什麼特別的,就此帶過。

3.這次選中的SSD固態硬碟是OCZ VERTEX 2 SATA II 2.5" SSD 200G,型號:OCZSSD2-2VTX200G,生產地是台灣(Made in Taiwan),在連MBP都Made in China的時代,相當難得,對我來說更是值得一買。這顆的特色是支援原生TRIM、讀取最高285MB/s、寫入最高275MB/s3年聯保,看起來應該是相當兇狠的利器,我入手的價格是27,000(NTD)左右,現在記錄下來,看明年200g會掉到剩多少扣扣。

正面先來一張

盒子背面

拆開來的模樣,內含一個3.5"的架子,可以讓這顆硬碟可裝性更為提升

配件一覽

拿在手上的感覺真輕,這個1G要135元的東西,還真沒存在感

SATA介面接口,還有背面上小小的「MADE IN TAIWAN」

至於怎麼拆開主機跟換裝,可以參考iFixitOWC這兩個網站,筆者就不獻醜,這上面有相當專業與詳細的說明與步驟。另外拆機時要用到一種星星形狀叫T6的起子,聽說光華商場有賣,我是用比較克難的工具來拆卸。

鋼鋸改裝起子,純手工的喔

OCZ SSD裝上去的模樣

原裝的硬碟放到光碟機的位置

合起來之前的脫光照

我是拿新裝的OCZ SSD來當系統碟(廢話),關於如何CLONE硬碟,節省時間,可以參考MAC資源的好朋友MacUKnow

最後奉上相關系統截圖:

效能果然被限制了,好一個TOC法則啊!

系統描述(原裝硬碟在接光碟位置的IDE/ATA)

TRIM支援狀態為:否

5/14/2010

問題記錄_AP_錯誤 APP-SQLAP-10000: ORA-01400

Symptoms
--------------------------------------------------------------------
應付模組下,商業發票比對採購單時提示下列錯誤資訊:

APP-SQLAP-10000: ORA-01400: cannot insert NULL into ("AP"."AP_INVOICE_LINE_ALL"."AMOUNT") occurred in
Insert_Invoice_Line<-AP_MATCHING_PKG.base_credit_rcv_match<-
APXRMTCH
with parameters (Invoice_ED = 13161, Invoice Line Number =
10, PO Distribution Id = 20399, Project Id = ,Task_Id =,
Expenditure Type = , Expenditure_Organization_id =)
while performing the following operation:
Inserting Item Line Matched to a RCV


Issue
--------------------------------------------------------------------
重啟應用後,有問題的商業發票就可以進行比對了,仍待觀察。

5/13/2010

問題記錄_AP_錯誤 APP-SQLAP-10771:無法保留記錄

Symptoms
--------------------------------------------------------------------
錄入付款之商業發票,比對完成後無法保留紀錄情況,無法進行驗證動作。


Cause
--------------------------------------------------------------------
引起原因是記錄(record)被鎖定(lock)了


Solution





--------------------------------------------------------------------
1)運行下例SQL語句找出被鎖定的AP session:




select t3.object_name, -- 对象名称
       t3.object_type, -- 对象类型
       t1.locked_mode 锁模式,
       count(t3.object_name) over(partition by t3.object_name order by t3.object_name range unbounded preceding) 被锁定的会话数r,
       decode(t1.locked_mode,
              0,
              'none',
              1,
              '空',
              2,
              '行共享(RS)-共享表锁',
              3,
              '行专用(RX)-用于行的修改',
              4,
              '共享锁(S)-阻止其他DML操作',
              5,
              '共享行专用(SRX)-阻止其他事务操作',
              6,
              '专用(X)-独立访问使用') 锁类型, --锁模式
       t2.logon_time 会话连接时间,
       round((sysdate - t2.logon_time) * 24 * 60, 2) 连接持续时间,
       t2.sid sid, --SESSION标识,常用于连接其它列
       t2.serial# serial#, --SERIAL#:如果某个SID又被其它的session使用的话则此数值自增加(当一个       SESSION结束,另一个SESSION开始并使用了同一个SID)。
       t2.status, -- Achtive:正执行SQL语句(waiting for/using a resource)   Inactive:等待操作(即等待需要执行的SQL语句    Killed:被标注为删除
       t2.audsid, --审查session ID唯一性,确认它通常也用于当寻找并行查询模式
       t2.username, --当前session在oracle中的用户名。
       t2.process, --客户端进程的ID
       t2.osuser, --客户端操作系统用户名
       t2.terminal, --客户端运行的终端
       t2.machine, --客户端执行的机器
       t2.program, --客户端执行的客户端程序
       t2.module, -- DBMS_APPLICATION_INFO中设置
       t2.action, --DBMS_APPLICATION_INFO中设置
       t2.logon_time,
       t1.oracle_username as ora_username, -- ORACLE系统用户名称
       t1.os_user_name as os_username, -- 操作系统用户名称
       t1.process as process, --进程编号
       'alter system kill session''' || t2.sid || ',' || t2.serial# || '''' kill_session
from   v$locked_object t1,
       v$session       t2,
       all_objects     t3
where  t1.session_id = t2.sid
and    t3.object_id = t1.object_id
and    t3.object_name not like '%$%'
--   and t3.object_name like '%表名%'
order  by 4 desc,
          1;

2)
找出對應的kill session欄位,執行該欄位的alter system kill session 'number',再重新進行驗證動作。


Reference





--------------------------------------------------------------------







    Sign off application, bounce the database and the lock will be released.  Or run the following scripts to identify the locked record and release the lock:
    1. Identify the Oracle serial ID, SID ID and terminate without shutting the database down.
    2. Make sure that the user is logged off.
    3. Type ps -ef |grep
    4. Kill all processes related to that user.
    5. Identify SID, serial#
              select distinct           acc.object, ses.osuser, ses.process,           ses.sid, ses.serial#           from v$access acc,           v$session ses           where (acc.owner != 'SYS'           or acc.object = 'PLAN_TABLE')           and acc.sid = ses.sid           and ses.status != 'INACTIVE'           and ses.type != 'BACKGROUND'           and acc.object not in ('V$ACCESS','V$SESSION')           and ses.audsid != userenv('SESSIONID')           order by 1,2,3           /     6  Double-check the identified SID and serial ID:          SELECT osuser,          username,          process,          sid,          serial#,          status,          to_char(logon_time,'DD-MON HH24:MI:SS') logon_time,          machine,          program          FROM v$session          WHERE sid = &SID_NUM          /        7  ALTER SYSTEM KILL SESSION '&SID_NUM,&SERIAL_NUM';            Alternatively use the following scripts to identify the blocking session:            -- check for locked tables            select a.object_id, a.session_id, substr(b.object_name, 1, 40)            from v$locked_object a,            dba_objects b            where a.object_id = b.object_id            order by b.object_name ;            --find_blocked.sql            select sid,            decode(block ,0,'NO','YES') BLOCKER,            decode(request,0,'NO','YES') WAITER            from v$lock            where request > 0 or block > 0 order by block desc            /            SELECT 'alter system kill session '''||vs.sid||','||vs.serial#||'''' ,al.object_name, al.object_type, vs.status,            fu.user_name,vs.process,vs.osuser,vs.username,            to_char(vs.logon_time,'DD-MON HH24:MI:SS') logon_time, vs.program            FROM fnd_logins fl, fnd_user fu, all_objects al, v$lock vl, v$session vs            WHERE fl.pid = vl.sid            AND vl.id1 = al.object_id (+)            AND fl.user_id = fu.user_id            AND to_char (start_time, 'DD-MON-RR') = to_char (sysdate, 'DD-MON-RR')            and vs.sid=vl.sid            and vl.sid = &sid            'ALTERSYSTEMKILLSESSION'''||VS.SID||','||VS.SERIAL#||''''