資料庫日常運維中的幾個操作建議

531968912發表於2016-06-28
    如果你去看其他DBA的操作的時候,如果要判斷他們水平的高低,我想就是透過一些操作的差別來看了,而水平高低就體現於此。細節決定成敗,越是看起來簡單的操作越是要嚴謹,一絲不苟。
我們來簡單舉幾個例子,可以作為參考。有更多的見解歡迎大家提出來,我們來集思廣益,把大家認為需要的,重要的操作都整理成可行的,實用的。
1.停止資料庫
shutdown immediate應該是停止資料庫的首先方案,而如果你選擇shutdown abort的方式,先去面壁。
在刪除資料庫之前,你需要考慮哪些方面呢。
    首先你需要判斷這是一個主庫還是備庫,
select database_role from v$database;
如果顯示為Primary,那就一定要小心了。你是否確實要停這個庫
    然後檢視資料庫的狀態
select open_mode from v$database;
有RAED ONLY,READ WRITE,MOUNTED幾種狀態
    然後檢視會話的使用情況
select username,count(*)from v$session group by username;
這個步驟是停止資料庫必看,如果已經有會話一定要確認是否需要停止應用端,是否連線了正確的資料庫。
明確了以上的基本條件,確認沒有相關的會話,那就可以shutdown immediate了。

2.啟動資料庫
資料庫啟動中的問題較多,我只是簡單給出幾個概要步驟,如果你啟動資料庫是直接一條命令startup,也需要面壁
啟動最起碼是從nomount,mount,open這幾個階段一步一步來。尤其是哪些異常當機的資料庫,你的有些不經意的操作就會使得恢復從可能變為不可能。在此主要說計劃內的資料庫重啟。
首先是startup nomount這個階段啟動之後,還是需要檢視是否啟用spfile,使用show parameter spfile來看,然後檢視資料庫日誌,啟動的過程中是否有一些異常,大頁是否開啟,是否有NUMA的報警,是否有memlock的報警。
alter database mount,資料庫啟動到這個階段本身不難,但是這個階段是一個分水嶺,資料庫還原恢復相關的操作都需要在這個階段完成
所以我們需要檢視v$recover_file是否資料檔案狀態都正常.
如果需要更多的恢復,這個階段就要把握好了。
最後是alter database open階段,資料庫是否可用就在這個階段了。可用使用select open_mode,database_role from v$database來檢視.
計劃外的場景要複雜的多,就不再贅述了。

3.殺掉會話
殺掉會話,整個世界就清淨了。但是kill session這種操作還是有些建議。
首先我們得到的是一個基本的資訊,session的sid,serial#資訊,我們在kill  之前還是需要做一些簡單的準備工作。
select paddr,username,osuser,machine from v$session where sid=xxx and serial#='xxxx';
得到了會話的基本資訊之後,我們在資料庫中關聯程式得到系統的程式pid,主要適應輸出的paddr欄位。
然後關聯v$process來得到對應的程式號。
select spid from v$process where addr='xxxxx'
如果確認需要kill  session,則有很大的餘地,如果清理資料庫層面的會話有一些較大的延遲,我們可以直接清理系統級程式,否則這個過程就會麻煩很多。

4.建立使用者
如果有一天,接到了一個需求是建立一個使用者,需要有查詢表test_tab的許可權即可。對於這個需求我們還是需要考慮很多的方面。
--查詢表屬主
select SYNONYM_NAME, TABLE_OWNER, TABLE_NAME from dba_synonyms where SYNONYM_NAME=upper(‘test_tab’);
--建立profile,限制訪問的會話數
create profile app_smartpt_db_profile limit SESSIONS_PER_USER 5;  
--建立使用者
create user app_smartpt_db identified by xxx;
alter user app_smartpt_db profile app_smartpt_db_profile;
--或
--create user app_smartpt_db identified by asdfwegweger profile app_smartpt_db_profile;

--授權,注意此處,多一點許可權都不多給
grant create session to app_smartpt_db;
grant select on ACCSTAT.security_phone_apply to app_smartpt_db;

--建立同義詞
create synonym app_smartpt_db.test_tab for ACCSTAT.test_tab;

所以不要忽視這些看起來很簡單的操作。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2121124/,如需轉載,請註明出處,否則將追究法律責任。

相關文章