【原創】《Oracle DBA日常工作和職責》
《Oracle DBA日常工作和職責》
1.資料庫環境
LEO1@LEO1> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
2.用SQL計算出你所用資料庫的總容量,給出SQL語句和結果。
如果要計算資料庫的總容量就需要知道資料庫由哪幾部分組成的,然後計算每部分的容量之和即可
(1)資料檔案
路徑:/u01/app/oracle/oradata/LEO1/
資料檔名 位元組 M
leo1_01.dbf 419438592 400M
sysaux01.dbf 639639552 610M
system01.dbf 734011392 700M
undotbs01.dbf 173023232 165M
users01.dbf 5251072 5M
我們看一下對應表空間的使用情況
LEO1@LEO1> select df.tablespace_name "表空間名",totalspace "總空間M",freespace "剩餘空間M",round((1-freespace/totalspace)*100,2) "使用率%"
from
(select tablespace_name,round(sum(bytes)/1024/1024) totalspace from dba_data_files group by tablespace_name) df,
(select tablespace_name,round(sum(bytes)/1024/1024) freespace from dba_free_space group by tablespace_name) fs
where df.tablespace_name=fs.tablespace_name order by df.tablespace_name ; 2 3 4 5
表空間名 總空間M 剩餘空間M 使用率%
--------------------------------------------------------------------------------------
LEO1 400 237 40.75
SYSAUX 610 31 94.92
SYSTEM 700 8 98.86
UNDOTBS1 165 137 16.97
USERS 5 4 20
(2)臨時檔案
路徑:/u01/app/oracle/oradata/LEO1/
臨時檔名 位元組 M
temp01.dbf 128983040 123
我們看一下對應表空間的使用情況
LEO1@LEO1> select file_name,tablespace_name,bytes/1024/1024,user_bytes/1024/1024 from dba_temp_files;
FILE_NAME TABLESPACE_NAME BYTES/1024/1024
--------------------------------------------------------------------------------------------------------------------------------------------
/u01/app/oracle/oradata/LEO1/temp01.dbf TEMP 123
(3)重做日誌檔案
路徑:/u01/app/oracle/oradata/LEO1/
重做日誌檔名 位元組 M
redo01.log 52429312 50
redo02.log 52429312 50
redo03.log 52429312 50
三個是映象關係,所以大小都一樣
(4)控制檔案
路徑:/u01/app/oracle/oradata/LEO1/
控制檔名 位元組 M
control01.ctl 9748480 9.29
control02.ctl 9748480 9.29
control03.ctl 9748480 9.29
三個也是映象關係,所以大小都一樣,控制檔案的大小會根據資料庫結構的變化而變化
(5)引數檔案
路徑:/u01/app/oracle/product/11.2.0/db_1/dbs
引數檔名 位元組 M
spfileLEO1.ora 2560 0.003
引數檔案是描述資料庫屬性的,記錄了資料庫非預設值的所有初始化引數
(6)告警日誌
路徑:/u01/app/oracle/diag/rdbms/leo1/LEO1/trace
告警日誌 位元組 M
alert_LEO1.log 2271951 2.166
告警日誌記錄資料庫中所有的報錯資訊,會隨著資訊量的多少而變化,我們也可以清空告警日誌
(7)密碼檔案
路徑:/u01/app/oracle/product/11.2.0/db_1/dbs
密碼檔名 位元組 M
orapwLEO1 1536 0.002
密碼檔案儲存著資料庫管理員資訊(ID passwd),只要資料庫新增管理員就會在這裡新增對應的資訊
(8)dump檔案和歸檔日誌
Adump
Bdump
Cdump
Udump
這些都是記錄資料庫資訊的日誌檔案,把它們的容量加在一起就是資料庫總容量了
資料庫容量公式:資料檔案+臨時檔案+重做日誌檔案+控制檔案+引數檔案+告警日誌+密碼檔案+……
Count:(400+610+700+165+5)+123+(50+50+50)+(9.29+9.29+9.29)+0.003+2.166+0.002=2183.041M
小結:所謂資料庫就是檔案的集合,那麼資料庫容量就是檔案集合的容量。
3.用SQL計算出某個使用者下所有物件的大小,給出SQL語句和結果。
我們要計算使用者的所有物件就是計算一個schema的大小
段物件:凡是分配儲存空間的物件就叫段物件
我最常用的使用者名稱LEO1,下面我們就來看看這個使用者的schema的所有物件
LEO1@LEO1> select owner,segment_name,segment_type,partition_name,bytes from dba_segments where wner='LEO1';
OWNER SEGMENT_NAME SEGMENT_TYPE PARTITION_NAME BYTES
------------------------------ ---------------------------------------- ------------------ -------------------- ----------
LEO1 LEO_WAGE TABLE 65536
LEO1 A TABLE 9437184
LEO1 B TABLE 131072
LEO1 LOCK1 TABLE 65536
LEO1 BIN$0tjf3nEXpL7gQKjAZAFAMQ==$0 TABLE 17825792
LEO1 C TABLE 65536
LEO1 LEO6 TABLE 9437184
LEO1 BIN$1Tcm4Wga5rPgQKjAZAEJvg==$0 TABLE 9437184
LEO1 BIN$1TkC0Ugo8mvgQKjAZAFAtQ==$0 TABLE 9437184
LEO1 LEO7 TABLE 9437184
LEO1 T1 TABLE 9437184
LEO1 LEO8 TABLE 9437184
LEO1 LEO9 TABLE 9437184
LEO1 LEO2 TABLE 9437184
LEO1 LEO3 TABLE 9437184
LEO1 LEO4 TABLE 9437184
LEO1 LEO1 TABLE 65536
LEO1 LEO5 TABLE 9437184
LEO1 PARTITION_LEO9 TABLE PARTITION P1 2097152
LEO1 PARTITION_LEO9 TABLE PARTITION P2 2097152
LEO1 PARTITION_LEO9 TABLE PARTITION P3 2097152
LEO1 PARTITION_LEO9 TABLE PARTITION P4 2097152
LEO1 PARTITION_LEO9 TABLE PARTITION P5 2097152
LEO1 PARTITION_LEO9 TABLE PARTITION P6 2097152
LEO1 PARTITION_LEO9 TABLE PARTITION PM 2097152
LEO1 PARTITION_LEO10 TABLE PARTITION P1 2097152
LEO1 PARTITION_LEO10 TABLE PARTITION P2 2097152
LEO1 PARTITION_LEO10 TABLE PARTITION P3 2097152
LEO1 PARTITION_LEO10 TABLE PARTITION P4 2097152
LEO1 PARTITION_LEO10 TABLE PARTITION P5 2097152
LEO1 PARTITION_LEO10 TABLE PARTITION P6 2097152
LEO1 PARTITION_LEO10 TABLE PARTITION PM 2097152
LEO1 PARTITION_LEO5 TABLE PARTITION P1 2097152
LEO1 PARTITION_LEO5 TABLE PARTITION P2 2097152
LEO1 PARTITION_LEO5 TABLE PARTITION P3 2097152
LEO1 PARTITION_LEO5 TABLE PARTITION P4 2097152
LEO1 PARTITION_LEO5 TABLE PARTITION P5 2097152
LEO1 PARTITION_LEO5 TABLE PARTITION P6 2097152
LEO1 PARTITION_LEO5 TABLE PARTITION PM 2097152
LEO1 SYS_C0010833 INDEX 65536
LEO1 BIN$0tjf3nEWpL7gQKjAZAFAMQ==$0 INDEX 3145728
LEO1 IDX_PARTITION_LEO9 INDEX 2097152
LEO1 LEO8_IDX INDEX 2097152
LEO1 LEO9_IDX INDEX 4194304
LEO1 IDX_LEO3 INDEX 2097152
LEO1 IDX_LEO1 INDEX 65536
LEO1 IDX_PARTITION_LEO10 INDEX PARTITION P1 262144
LEO1 IDX_PARTITION_LEO10 INDEX PARTITION P2 262144
LEO1 IDX_PARTITION_LEO10 INDEX PARTITION P3 262144
LEO1 IDX_PARTITION_LEO10 INDEX PARTITION P4 262144
LEO1 IDX_PARTITION_LEO10 INDEX PARTITION P5 262144
LEO1 IDX_PARTITION_LEO10 INDEX PARTITION P6 262144
LEO1 IDX_PARTITION_LEO10 INDEX PARTITION PM 327680
53 rows selected.
物件型別:表 分割槽表 索引 分割槽索引共四種
我們統計一下不同種類物件各多少size
LEO1@LEO1> select segment_type,sum(bytes)/1024/1024 total_size from dba_segments where wner='LEO1' group by segment_type;
SEGMENT_TYPE TOTAL_SIZE
------------------ ----------------------- -------
INDEX PARTITION 1.8125M
TABLE PARTITION 42M
TABLE 125.375M
INDEX 13.125M
公式:INDEX PARTITION+TABLE PARTITION+TABLE+INDEX
Count:1.8125+42+125.375+13.125=182.3125M
LEO1使用者下所有物件的大小:182.3125M
4.用SQL計算某個表空間的大小及所包含物件的大小,給出SQL語句和結果。
我們看一下所有表空間的使用率(除了臨時表空間)
LEO1@LEO1> select df.tablespace_name "表空間名",totalspace "總空間M",freespace "剩餘空間M",round((1-freespace/totalspace)*100,2) "使用率%"
from
(select tablespace_name,round(sum(bytes)/1024/1024) totalspace from dba_data_files group by tablespace_name) df,
(select tablespace_name,round(sum(bytes)/1024/1024) freespace from dba_free_space group by tablespace_name) fs
where df.tablespace_name=fs.tablespace_name order by df.tablespace_name ; 2 3 4 5
表空間名 總空間M 剩餘空間M 使用率%
--------------------------------------------------------------------------------------
LEO1 400 237 40.75
SYSAUX 610 31 94.92
SYSTEM 700 8 98.86
UNDOTBS1 165 137 16.97
USERS 5 4 20
我們經常使用的LEO1表空間使用情況已經perfect顯示,現在我們需要統計的是LEO1表空間包含物件的大小,由於記錄數較多,只把SQL語句寫在這裡了
LEO1@LEO1> select o.object_name,o.object_type,o.owner,s.tablespace_name,s.segment_name,s.bytes from dba_objects o,dba_segments s where s.tablespace_name='LEO1' and o.owner=s.owner and o.owner='LEO1' and o.object_type=s.segment_type;
5.在告警日誌中找到一條錯誤資訊,並貼出來(如果沒有,自己造出一條錯誤資訊)。
LEO1@LEO1> select name,status from v$datafile;
NAME STATUS
----------------------------------------------------------------------------------------------------------------------------------------------
/u01/app/oracle/oradata/LEO1/system01.dbf SYSTEM
/u01/app/oracle/oradata/LEO1/sysaux01.dbf ONLINE
/u01/app/oracle/oradata/LEO1/undotbs01.dbf ONLINE
/u01/app/oracle/oradata/LEO1/users01.dbf ONLINE
/u01/app/oracle/oradata/LEO1/leo1_01.dbf ONLINE 我們重新命名這個資料檔名
LEO1@LEO1> alter database rename file '/u01/app/oracle/oradata/LEO1/leo1_01.dbf' to '/u01/app/oracle/oradata/LEO1/leo1_01_bak.dbf';
alter database rename file '/u01/app/oracle/oradata/LEO1/leo1_01.dbf' to '/u01/app/oracle/oradata/LEO1/leo1_01_bak.dbf'
*
ERROR at line 1:
ORA-01511: error in renaming log/data files 在重新命名資料檔案時報錯
ORA-01121: cannot rename database file 5 - file is in use or recovery不能重新命名資料檔案,檔案正在使用
ORA-01110: data file 5: '/u01/app/oracle/oradata/LEO1/leo1_01.dbf' 報錯的是資料檔案5
我們在重新命名資料檔案時報錯
看一下alert_LEO1.log日誌的內容
[oracle@leonarding1 trace]$ tail -200f alert_LEO1.log
Tue Mar 05 20:22:06 2013 這是錯誤發生的時間
alter database rename file '/u01/app/oracle/oradata/LEO1/leo1_01.dbf' to '/u01/app/oracle/oradata/LEO1/leo1_01_bak.dbf'
ORA-1511 signalled during: alter database rename file '/u01/app/oracle/oradata/LEO1/leo1_01.dbf' to '/u01/app/oracle/oradata/LEO1/leo1_01_bak.dbf'...
紅色代表錯誤標識和我們在sqlplus中看到的一樣,1511代表錯誤編號
[oracle@leonarding1 trace]$ oerr ora 1511 還可以使用oerr檢視錯誤編碼的英文解釋
01511, 00000, "error in renaming log/data files" 重新命名資料檔案發生的錯誤編碼1511
// *Cause: An error occurred during the ALTER DATABASE RENAME FILE command.
// *Action: Check the error stack for detailed error information.
6.學會使用官方文件,在網站tahiti.oracle.com 上查詢V$session的描述資訊,查出dbms_stats包的資訊,並截圖貼出來。
這是Oracle所有文件的統一入口,在這裡可以找到資料庫 應用服務 合併應用等所有的參考文件
我們資料庫版本:Release 11.2.0.1.0
1. 所以我們應該查這個文件
2.左上角找到 Master Boot List 官方文件的索引
3.如果想檢視《初始化檢視+資料字典+動態效能檢視》請參考《Reference》
4.選擇 這個部分中search:v$session,結果中排在第一行的就是v$session資訊,列舉了每個欄位的含義,v$session相應的命令
V$SESSION displays session information for each current session.
Column |
Datatype |
Description |
SADDR |
RAW(4 | 8) |
Session address |
SID |
NUMBER |
Session identifier |
SERIAL# |
NUMBER |
Session serial number. Used to uniquely identify a session's objects. Guarantees that session-level commands are applied to the correct session objects if the session ends and another session begins with the same session ID. |
AUDSID |
NUMBER |
Auditing session ID |
PADDR |
RAW(4 | 8) |
Address of the process that owns the session |
USER# |
NUMBER |
Oracle user identifier |
USERNAME |
VARCHAR2(30) |
Oracle username |
COMMAND |
NUMBER |
Command in progress (last statement parsed); for a list of values, see . These values also appear in the AUDIT_ACTIONS table. |
OWNERID |
NUMBER |
Identifier of the user who owns the migratable session; the column contents are invalid if the value is 2147483644 For operations using Parallel Slaves, interpret this value as a 4-byte value. The low-order 2 bytes represent the session number and the high-order bytes represent the instance ID of the query coordinator. |
TADDR |
VARCHAR2(8) |
Address of the transaction state object |
LOCKWAIT |
VARCHAR2(8) |
Address of the lock the session is waiting for; NULL if none |
STATUS |
VARCHAR2(8) |
Status of the session:
|
dbms_stats包資訊在《PL/SQL Packages and Types Reference》文件中找,也是利用書列表,在這個文件中查詢如下關鍵字即可找到
141 DBMS_STATS
Using DBMS_STATSThis section contains topics which relate to using the DBMS_STATS package.· Overview 概述
· Types 包型別
· Constants 常數
· Operational Notes 操作說明
· Deprecated Subprograms 不用的子過程
· Examples 例子,這段是非常常用的部分
這是DBMS_STATS包在官方文件中的描述
EXEC DBMS_STATS.GATHER_TABLE_STATS ('hr', 'employees'); 這是我們經常使用的分析表統計資訊的儲存過程。
資料庫容量 schema segment object 告警日誌 DBMS_STATS V$SESSION
2013.3.5
天津&spring
分享技術~成就夢想
Blog:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31444259/viewspace-2135606/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle DBA 日常工作職責Oracle
- Oracle DBA職責及日常工作分析Oracle
- Oracle DBA職責及日常工作分析(轉)Oracle
- DBA日常工作職責總結
- 【ZT】DBA職責與日常工作計劃
- Oracle DBA的職責Oracle
- DBA日常工作職責 - 我對DBA的七點建議
- 專職DBA的日常工作
- MySQL DBA工作角色和職責介紹MySql
- oracle dba 日常工作內容Oracle
- Oracle DBA的日常工作(zt)Oracle
- 單一職責原則
- DBA Responsibilities(DBA職責,很詳細的說明了DBA的主要任務)
- DBA的日常工作
- 單一職責原則筆記筆記
- 單一職責原則詳解
- Linux運維職責是什麼?日常工作內容有哪些?Linux運維
- 設計原則之【單一職責原則】
- 一 :SRP(單一職責原則)
- 流程、規則和管理職責
- ORACLE EBS中提示職責無效Oracle
- ORACLE 資料庫管理員的職責Oracle資料庫
- 被誤解的單一職責原則 - Joe
- 編碼最佳實踐——單一職責原則
- 物件導向設計原則之單一職責原則物件
- 物件的責任與職責物件
- 產生《Oracle DBA高效入職指南》原因Oracle
- 【原創】Oracle RAC原理和安裝Oracle
- 【原創】oracle spfile和pfile小結Oracle
- ORACLE 資料庫管理員的職責(轉)Oracle資料庫
- 職責鏈模式模式
- 單一職責原則在 iOS 中的應用iOS
- [譯] 更可靠的 React 元件:單一職責原則React元件
- 創業公司CTO/技術總監的崗位職責及任職要求創業
- 設計模式六大原則(一)----單一職責原則設計模式
- 設計模式六大原則(1):單一職責原則設計模式
- 專業DBA的職業習慣及操作原則
- Oracle DBA 和Oracle EBS DBA 的最大區別Oracle