2013年4月8日 星期一

[SHELL]搜尋檔案中的字串


案例1:
搜尋哪幾個sql檔中有用到某個table

方法:
1.find + grep
ex:
find ./ -name "*.sql" -exec grep -l "item_no" {} \; 2>/dev/null
(find 路徑 -name "檔案名稱" -exec grep -l "文件內容" {} \; 2>/dev/null)

2.find + xargs
ex:
find ./ -name "*.sql" | xargs grep "item_no"  2>/dev/null

備註:
2>/dev/null :
檔案描述元 - 標準輸入(STDIN),0/標準輸出(STDOUT),1/標準錯誤輸出(STDERR),2
/dev/null - 「訊息黑洞」,一般用來關閉程式的輸出訊息,只要把訊息往/dev/null丟,就不會顯示訊息

grep -l:只列出檔名。
grep -i:不分大小寫。
find -exec:對符合條件的檔案執行特定指令
xargs:將其他指令的輸出當成另一個指令的輸入參數

案例2:
搜尋哪幾個sql檔中有用到某些table

方法:
(利用for迴圈讀取資料表清單)
vDatFileName="vDataTable.txt"
vTableName=`cat ${vDatFileName}`
vLogFile="/home/tmp/DataTable.log"
for list in ${vTableName}
  do
   echo $list >>$vLogFile
   find /home/tmp -name "*.sql" -exec grep -l $list {} \; >>$vLogFile 2>/dev/null;
   #--find /home/tmp -name "*.sql" | xargs grep $list >>$vLogFile 2>/dev/null
  done

[轉]grep參數

[轉]http://huenlil.pixnet.net/blog/post/26326320-%5B%E8%BD%89%5Dgrep%E5%91%BD%E4%BB%A4%E4%BB%8B%E7%B4%B9

◎grep -- print lines matching a pattern (將符合樣式的該行列出) 

 ◎語法: grep [options]   PATTERN [FILE...]   grep用以在file內文中比對相對應的部分,或是當沒有指定檔案時,  
 由標準輸入中去比對。 在預設的情況下,grep會將符合樣式的那一行列出。 此外,還有兩個程式是grep的變化型,egrep及fgrep。其中egrep就等同於grep -E ,fgrep等同於grep -F 。 

 ◎參數 
    1. -A NUM,--after-context=NUM
               除了列出符合行之外,並且列出後NUM行。
 
              
         ex:   http://www.haoxiai.net/caozuoxitong/unixcaozuoxitong/89229.html
XXnbsp;grep -A 1 panda file  
               (從file中搜尋有panda樣式的行,並顯示該行的後1行) 

2013年4月3日 星期三

建立資料庫使用者create user[轉]


http://horace1123.pixnet.net/blog/post/26534906-oracle-create-user-%E6%96%B0%E5%A2%9Euser
http://bloodsucker.pixnet.net/blog/post/38649657-oracle-%E6%AC%8A%E9%99%90-(privileges)

1. 新增帳號CREATE USER 使用者名稱  IDENTIFIED BY 密碼;
2. 權限設定GRANT 權限 ON 資料庫物件 TO 使用者名稱;
                      GRANT 角色 TO 使用者名稱
3. 取消權限: REVOKE 權限 ON 資料庫物件 FROM 使用者名稱;
4. 新增角色: CREATE ROLE 角色名稱 [ NOT IDENTIFIED | IDENTIFIED { BY 密碼 | USING [ 鋼要 .] PACKAGE | EXTERNALLY | GLOBALLY } ] ;
5. 取消角色: DROP ROLE 角色名稱
6. 更改密碼ALTER USER  使用者名稱 IDENTIFIED BY 密碼;
7. 強制變更密碼ALTER USER 使用者名稱 PASSWORD EXPIRE;
8. 鎖住現有的使用者ALTER USER 使用者名稱 ACCOUNT LOCK;9. 解鎖現有的使用者ALTER USER 使用者名稱 ACCOUNT UNLOCK;10. 刪除現有的使用者DROP USER 使用者名稱;

一些針對 privileges 常用的 view
The views for Oracle object privileges 
USER_TAB_PRIVS 
ALL_TAB_PRIVS  
ROLE_TAB_PRIVS
DBA_TAB_PRIVS


Additionally there are Oracle object privileges that pertain to the whole system called system privileges.USER_SYS_PRIVS
ALL_SYS_PRIVS
ROLE_SYS_PRIVS
DBA_SYS_PRIVS
Then the VIEWS that contain information about the users in the database are:USER_USERS
ALL_USERS
DBA_USERS

--得知user授予哪些腳色
SELECT * FROM DBA_role_privs where grantee = 'P111';