【原創】《Oracle DBA日常工作和職責》

達芬奇的夢發表於2017-03-18

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),只要資料庫新增管理員就會在這裡新增對應的資訊

8dump檔案和歸檔日誌

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

Count1.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.選擇 這個部分中searchv$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:





  • ACTIVE - Session currently executing SQL
  • INACTIVE - Session which is inactive and either has no configured limits or has not yet exceeded the configured limits
  • KILLED - Session marked to be killed
  • CACHED - Session temporarily cached for use by Oracle*XA
  • SNIPED - An inactive session that has exceeded some configured limits (for example, resource limits specified for the resource manager consumer group or idle_time specified in the user's profile). Such sessions will not be allowed to become active again.

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章