2012年5月31日 星期四

yum 使用方法



[轉貼]yum 使用方法
更新/升級 update/upgrade
(1)列出所有可更新的套件清單
yum check-update
(2)更新所有系統已安裝套件
yum update
(3)升級套件,會連一些過舊即將淘汰的套件也一併升級,用在做大規模的版本升級動作時 (如 8.0 升到 9.0)
yum upgrade

安裝/移除/搜尋 install/remove/search
(1)安裝指定的套件
yum install <package_name>
(2)移除指定的套件
yum remove <package_name>
(3)搜尋套件
yum search <keyword>

清除 clean
(1)清除暫存目錄(/var/cache/yum)下的套件
yum clean packages
(2)清除暫存目錄(/var/cache/yum)下的 headers
yum clean headers
(3)清除暫存目錄(/var/cache/yum)下舊的 headers
yum clean oldheaders
(4)清除暫存目錄(/var/cache/yum)下的套件及舊的 headers
yum clean all (= yum clean packages; yum clean oldheaders)
[註] yum clean 已不適用於新版的 yum,新版的 yum 在 clean 的後面必須明確指出要清除的東西,否則會有錯誤訊息「Error: clean requires an option: headers, packages, cache, metadata, all」,另補充兩個新版 yum clean 新增選項

(5)清除暫存目錄(/var/cache/yum)下的 cache
yum clean cache
(6)清除暫存目錄(/var/cache/yum)下的 metadata
yum clean metadata

列表 list
(1)列出所有可安裝的套件
yum list
(2)列出所有可更新的套件
yum list updates
(3)列出所有已安裝的套件
yum list installed
(4)列出所有已安裝但不在 Yum Repository 內的套件
yum list extras
(5)列出所指定的套件
yum list <package_name>

群組 group
(1)列出所有可安裝的群組套件
yum grouplist
(2)安裝群組套件
yum groupinstall
(3)更新群組套件
yum groupupdate
(4)移除群組套件
yum groupremove
(5)列出群組套件資訊
yum groupinfo

資訊 info
(1)列出所有套件的資訊
yum info
(2)列出所有可更新的套件資訊
yum info updates
(3)列出所有已安裝的套件資訊
yum info installed
(4)列出所有已安裝但不在 Yum Repository 內的套件資訊
yum info extras
(5)列出所指定的套件資訊
yum info <package_name>
(6)列出套件提供哪些檔案
yum provides <package_name>

設定檔
(1)/etc/yum.conf
設定排除更新的套件,加上一行,如不更新核心套件

exclude=kernel* 或 exclude=kernel kernel-devel

狀況排除
Q1. 執行 yum 時,系統找不到 RPM-GPG-KEY
A1.
手動安裝 RPM-GPG-KEY 即可
Fedora Core 3
rpm --import /usr/share/doc/fedora-release-3/RPM-GPG-KEY-fedora
Fedora Core 4
rpm --import /usr/share/doc/fedora-release-4/RPM-GPG-KEY-fedora

Q2. 如何安裝某個套件的完整版
A2.
用 yum install <package_name>,yum 也不會安裝該套件的所有元件,僅會安裝一般常用的
比如說 yum install php,就會發現漏裝很多東西,像 php-mysql
此時可用 yum install php*,即可安裝該套件的所有程式
如果不是真的對套件各個元件非常了解,建議安裝任何套件時,都直接在後面加上 *
以避免缺東缺西,導致整體服務運作失常
原文出處:yum 使用方法 @ 誰住在深海大鳳梨裡? :: 痞客邦 PIXNET ::


[轉貼]YUM常用命令介紹
去論壇討論 來源: 作者: 發佈時間:2008-01-05
1.列出所有可更新的軟件清單
命令:yum check-update
2.安裝所有更新軟件
命令:yum update
3.僅安裝指定的軟件
命令:yum install <package_name>
4.僅更新指定的軟件
命令:yum update <package_name>
5.列出所有可安裝的軟件清單
命令:yum list
用YUM安裝刪除軟件
裝了系統添加刪除軟件是常事,yum同樣可以勝任這一任務,只要軟件是rpm安裝的。
安裝的命令是,yum install xxx,yum會查詢數據庫,有無這一軟件包,如果有,則檢查其依賴衝突關係,如果沒有依賴衝突,那麼最好,下載安裝;如果有,則會給出提示,詢問是否要同時安裝依賴,或刪除衝突的包,你可以自己作出判斷。
刪除的命令是,yum remove xxx,同安裝一樣,yum也會查詢數據庫,給出解決依賴關係的提示。

1.用YUM安裝軟件包
命令:yum install <package_name>
2.用YUM刪除軟件包
命令:yum remove <package_name>

用YUM查詢軟件信息
我 們常會碰到這樣的情況,想要安裝一個軟件,只知道它和某方面有關,但又不能確切知道它的名字。這時yum的查詢功能就起作用了。你可以用 yum search keyword這樣的命令來進行搜索,比如我們要則安裝一個Instant Messenger,但又不知到底有哪些,這時不妨用 yum search messenger這樣的指令進行搜索,yum會搜索所有可用rpm的描述,列出所有描述中和messeger有關的rpm包,於 是我們可能得到gaim,kopete等等,並從中選擇。
有時我們還會碰到安裝了一個包,但又不知道其用途,我們可以用yum info packagename這個指令來獲取信息。

1.使用YUM查找軟件包
命令:yum search <keyword>
2.列出所有可安裝的軟件包
命令:yum list
3.列出所有可更新的軟件包
命令:yum list updates
4.列出所有已安裝的軟件包
命令:yum list installed
5.列出所有已安裝但不在 Yum Repository 內的軟件包
命令:yum list extras
6.列出所指定的軟件包
命令:yum list <package_name>
7.使用YUM獲取軟件包信息
命令:yum info <package_name>
8.列出所有軟件包的信息
命令:yum info
9.列出所有可更新的軟件包信息
命令:yum info updates
10.列出所有已安裝的軟件包信息
命令:yum info installed
11.列出所有已安裝但不在 Yum Repository 內的軟件包信息
命令:yum info extras
12.列出軟件包提供哪些文件
命令:yum provides <package_name>

清除YUM緩存
yum 會把下載的軟件包和header存儲在cache中,而不會自動刪除。如果我們覺得它們佔用了磁盤空間,可以使用yum clean指令進行清除,更精確 的用法是yum clean headers清除header,yum clean packages清除下載的rpm包,yum clean all一 股腦兒端

1.清除緩存目錄(/var/cache/yum)下的軟件包
命令:yum clean packages
2.清除緩存目錄(/var/cache/yum)下的 headers
命令:yum clean headers
3.清除緩存目錄(/var/cache/yum)下舊的 headers
命令:yum clean oldheaders
4.清除緩存目錄(/var/cache/yum)下的軟件包及舊的headers
命令:yum clean, yum clean all (= yum clean packages; yum clean oldheaders)
原文出處:YUM常用命令介绍 - Linux天空

Linux mount iso檔的語法

Linux mount iso檔的語法

# mkdir /mnt/iso
# mount -o loop -t iso9660 <filename.iso> /mnt/iso
# unmount /mnt/iso

2012年5月24日 星期四

Oracle Update/Delete in a loop


rem -----------------------------------------------------------------------
rem Filename:  plsloop.sql
rem Purpose:   Example: UPDATE/DELETE in a loop and commit very X records
rem            Handy for huge tables that cause rollback segment problems
rem            DON'T ISSUE COMMIT TOO FREQUENTLY!
               Run "set serveroutput on" first in SQL*PLUS
rem Date:      09-Apr-1999; Updated: 25-Nov-2004
rem Author:    Frank Naude, Oracle FAQ
rem -----------------------------------------------------------------------

declare
  i number := 0;
  cursor s1 is SELECT rowid, t.* FROM tab1 t WHERE col1 = 'value1';
begin
  for c1 in s1 loop
      update tab1 set col1 = 'value2'
             where rowid = c1.rowid;

      i := i + 1;              -- Commit after every X records
      if i > 10000 then
         commit;
         i := 0;
      end if;

  end loop;
  commit;
end;
/

-- Note: More advanced users can use the mod() function to commit every N rows. 
--       No counter variable required:
--
-- if mod(i, 10000) 
--    commit;
--    dbms_output.put_line('Commit issued for rows up to: '||c1%rowcount);
--  end if;
--

2012年5月22日 星期二

Oracle 10g 的資料回溯機制


現象:
!我不小心droptable!!

目的:
Windows作業系統裡面有"資源回收筒",防止使用者誤刪資料,但是資料庫往往將table殺掉之後,DBA需要花費極大的成本才能將資料restore回來,是否能徹底解決這項困擾呢?
Oracle 10g的資料回溯機制(Flashback)將會徹底這個問題!!

如何查詢:
查詢user_recyclebin的資料字典
SQL*Plus內執行show recyclebin指令
直接查詢Recyclebin Table

Oracle如何處理Recyclebin內的物件:
一般來說,Oracle不會主動清除,除非:
- tablespace space不夠
- 執行purge指令
- 執行undrop指令

如何清除資源回收筒:
purge table "recyclebin table name";
purge tablespace <tablespace_name>;

哪幾種drop不會寫到recyclebin
drop tablespace <tablespace_name> including contents;
drop user <user_name> cascade;

如何復原資源回收桶的物件:
undrop table <table_name> as <table_name>;
undrop之前,index,trigger以及constrate會回復嗎?
=> 會以recyclebin_name呈現,所以在undrop之前,要先到recyclebin查原始名稱

資料庫 "倒帶"
flashback database to timestamp(sysdate-1/24);
flashback database to scn <scn_number>;

總結:
        如果你的應用系統背後的資料庫用的是Oracle 10g版本的話,那恭喜你,你再也不用為了誤刪資料或是table而感到心驚膽跳,但是並不是因為這樣就不用審慎的對待任何一筆與公司有關的交易。
        如果你的應用系統背後的資料庫用的不是Oracle 10g版本的話,趕快將這個新功能告訴你的DBA!!

2012年5月13日 星期日

由erp function找erp user


1. 找出user/definefunction id
select user_function_name, function_id
from FND_FORM_FUNCTIONS_VL
where user_function_name like 'Users';

=> 86

2. 找出該function id 對應的menu id
select menu_id, menu_name, user_menu_name, description
from fnd_menus_vl
where menu_id in
(select menu_id
from fnd_menu_entries_vl
where function_id = 86);

=> menu_id = 1009879,67869

3. 找出該menu idmain menu (有可能step 2menusub-menu,而非main menu)
select level,
       (select user_menu_name from fnd_menus_vl where menu_id = fnd_menu_entries_vl.menu_id) as menu_name,
       menu_id,
       sub_menu_id,
       function_id,
       prompt,
       description
from fnd_menu_entries_vl
start with sub_menu_id in (1009879,67869)
connect by prior menu_id = sub_menu_id;

1009879,67869, menu_id and sub_menu_id 集合起來,去除重複的部份
=>
1001683
67860
67864
67869
68717
69399
69401
69402

4. menu id user name
select b.USER_NAME,
       d.APPLICATION_SHORT_NAME,
       d.APPLICATION_NAME,
       c.RESPONSIBILITY_NAME
from FND_USER_RESP_GROUPS_DIRECT a,
     FND_USER b,
     FND_RESPONSIBILITY_VL c,
     FND_APPLICATION_VL d
where b.USER_ID = a.USER_ID
and c.RESPONSIBILITY_ID = a.RESPONSIBILITY_ID
and c.APPLICATION_ID = a.RESPONSIBILITY_APPLICATION_ID
and d.APPLICATION_ID = a.RESPONSIBILITY_APPLICATION_ID
and (a.end_date is NULL or a.end_date > sysdate)
and (b.end_date is NULL or b.end_date > sysdate)
and (c.end_date is NULL or c.end_date > sysdate)
and b.user_id > 10
and c.menu_id in (
1001683
,67860
,67864
,67869
,68717
,69399
,69401
,69402
)
order by user_name,application_short_name;

=> 找出ERP username


2012年5月3日 星期四

vi 操作指令

離開 vi
ZZ :wq :x 先存檔再離開
:w     檔名 存成他檔
:q     離開 (檔案有改會提示)
:q!     放棄編輯,直接離開
:wq!    強制存檔,並離開


暫時離開 vi  :!      暫時執行一下UNIX指令
:sh     產生新shell, Ctrl + d 回原編輯處
Ctrl + z   回上一個 shell, 用 fg指令回 vi


插入/命令模式的切換ESC鍵  插入模式 --> 命令模式 

在命令模式下的指令
a    在游標右邊插入文字
i    在游標處插入文字
o    在游標下方增加新列
A    在游標那列末端插入文字
I    在游標那列開頭插入文字
O     在游標上方增加新列

移動游標k    往上移
j    往下移
h    往左移
l    往右移
^    移到列首
$    移到列尾
w    往右移一個字(word)
b    往左移一個字(word)
e    移到目前所在字(word)的最後字元
G    移到檔尾
nG   移到第 n 列

:n    游標移到第 n 列
:$    游標移到最後一列
H    游標移到螢幕頂端
M    游標移到螢幕中間
L    游標移到螢幕底端
ctrl + d  游標向下捲半頁
ctrl + u  游標向上捲半頁
ctrl + f  游標向上捲一頁
ctrl + b  游標向下捲一頁

ctrl + G  查詢目前的游標位置


刪除資料x    刪除游標所在字元(delete)
#x   從游標起,刪 # 個字元
X    刪除游標的前一字元(backspace)
#X   從游標起,往前刪 # 個字元
dw   刪一個字(word)
#dw   刪 # 個字(word)
D    刪字到列末
dd   整列刪除
#dd   從游標列開始,刪除 # 列
dG   從游標處刪到檔尾


搬移和複製
ndd   從游標處起 n 列, 剪到暫存區
nyy   從游標處起 n 列, 複製暫存區
p    將暫存區的內容貼到游標處
n,m co x  將 n 到 m 列的資料, 複製到 x 列
n,m m x  將 n 到 m 列的資料, 移到 x 列
.,$ co x  將游標所在列到檔尾的資料, 複製到 x 列


搜尋和取代/     字串搜尋
:set ic   搜尋時不考慮大小寫
:set noic  搜尋時需考慮大小寫
n    向下搜尋
N    向上搜尋

r    將游標所在換成另一字元
cw   取代一個字串
cc   取代一整列
:s    取代多個字串
:1,$s  /舊字串/新字串/g 1是第1列, $是最後一列, g是全檔
 例:下這段指令可以將檔案中所有的 a: b: ... z:  的字串改成*
   :1,$s/[a-z]:/*/g

合併 列/檔案J    合併兩列
:r    檔名 將他檔插在游標所在列之後
: n r   檔名 將他檔插在第 n 列之後

u    取消前一命令(undo)
U    對這列的修改全取消

:set nu  加上行號
:set nonu 不顯示行號