2016年10月19日 星期三

[英語學習]十個人有八個會說錯:「睡過頭」英文怎麼說?

睡覺是sleep,over是過頭,兩個字拼在一起當然「睡過頭」,好像完全沒問題。錯了!sleep over是到別人家過夜,sleep in才是睡過頭。老外當然理解這類錯,但學生說想來真是糗,還好是在教室裡犯錯,如果是和老闆開會,說自己sleep over,不更糟嗎!
來看幾個和sleep相關的表達:
1、sleep in:比平常起床的時間晚
例句:I planned to sleep in tomorrow.(我明天打算睡晚一點。)也可以說sleep late,但不要理解成oversleep(睡過頭),後者是指比原訂的起床時間晚,如:Sorry for not attending the meeting this morning; I overslept.(很抱歉早上沒去參加會議,我睡過頭了。)
相反地,如果要表達上床的時間很晚,可以說go to bed late,或是stay up late(熬夜)。
2、sleep over:這是美國的學生常掛在嘴邊的片語,意思是到朋友家過夜
例句:My mom said I could sleep over in your house on Saturday night.(我媽說我星期六晚上可以在你家過夜。)
因為美國的住宅區域較不集中,大眾運輸工具的選擇也不多,所以美國的小朋友周末到同學家玩後,有時就乾脆住上一晚。
3、sleep out:顧名思義,這是指在外頭過夜,就像dine out(出外用餐)一樣
例句:Let’s go camping this weekend and sleep out under the stars.(這周末我們去露營,就睡在星空下吧!)
4、sleep around:在現在這麼開放的時代,大家一定也得學會這個片語──跟很多人上床
例句:Our culture is usually fine about guys sleeping around, but not girls.(我們社會的價值觀通常能接受男性有多重性伴侶,但不能接受女性這麼做。)
5、sleep like a log:我們中文說「睡得像頭豬」,英文要說「睡得像木頭」,意思是「睡得很沈」
例句:After this show, I was finally able to sleep like a log for the first time in the past several months.(這個展覽結束後,我總算可以安穩地睡覺了,過去好幾個月一直睡不好。)
另外,我們也可以用sound sleep(n.)和deep sleep(n.)來形容熟睡,light sleep(n.)則用來形容淺眠。以此類推,a heavy sleeper就是用來敘述一向都睡得很熟的人,a light sleeper則用來形容比較淺眠的人。
以上摘錄自世界公民文化中心
http://www.businessweekly.com.tw/KBlogArticle.aspx?ID=5156&pnumber=1

2016年10月3日 星期一

[Oracle]ORA-00031:session marked for kill 處理Oracle中殺不掉的Table Lock [ORA-04021 + ORA-02049]

在客戶端的Oracle DB環境遇到無法Update資料的情況
會出現ORA-02049: timeout: distributed transaction waiting for lock tips 
           發生逾時狀況 分散式交易可繼續等候鎖定權的時間已過
連Compile Prcedure時都無法成功Compile
會出現ORA-04021: timeout occurred while waiting to lock object
            等待鎖定物件時 發生逾時的情況
這兩個錯誤訊息其實都是一樣的狀況,就是遇到了Table Lock的狀況

我是使用PLSQL Developer,這套軟體,平常就是去Tool->Sessions裡
把所有的認識的Session刪掉,不過沒有刪除掉真的卡住的Session所以還是無法Update資料

使用以下語法可以查出被Lock的Session
select b.SID,b.SERIAL#,c.SQL_TEXT
from v$locked_object a, v$session b, v$sqlarea c
where a.SESSION_ID = b.SID
and b.SQL_ADDRESS = c.ADDRESS
and c.sql_text like '%table_name%'
只後再使用標準的Kill Session語法
alter system kill session 'sid,serial#';
ex:ALTER SYSTEM KILL SESSION '11,2727';

但不知為何砍不掉Session 出現ORA-00031:session marked for kill

一些ORACLE中的Session被殺掉後,狀態為"killed",但是鎖定的資源很長時間不釋放,有時實在沒辦法,只好重啟資料庫。但是shutdown immediate又怕可能Session殺不掉會一直停留在shutdown immediate,直接shutdown abort又怕損壞資料庫。 
解決方案之一,就是在ORACLE中殺不掉的,在OS一級再殺。 
採取以下方式流程處理:
1.查詢已經為KILLED狀態但仍未釋放資源的Session
select a.spid,b.sid,b.serial#,b.username from v$process a,v$session b where a.addr=b.paddr and b.status='KILLED';
2.在windows(unix也適用)用orakill殺死線程,orakill是oracle提供的一個可執行命令,
語法為︰orakill sid thread 
其中︰ 
sid︰表示要殺死的進程屬於的實例名 
thread︰是要殺掉的線程號,即第1步查詢出的spid
例︰c:>orakill orcl 12345