如果你去看其他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;
是以不要忽視這些看起來很簡單的操作。