《Oracle DBA日常工作和职责》

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:
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 owner='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 owner='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包的信息,并截图贴出来。
http://tahiti.oracle.com/       这是Oracle所有文档的统一入口,在这里可以找到数据库  应用服务  合并应用等所有的参考文档
我们数据库版本:Release 11.2.0.1.0
1. Oracle Database, 11g Release 2 (11.2)        所以我们应该查这个文档
2.左上角找到 Master Boot List 官方文档的索引
3.如果想查看《初始化视图+数据字典+动态性能视图》请参考《Reference
4.选择 Part III Dynamic Performance Views  这个部分中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  Table 9-2. 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');   这是我们经常使用的分析表统计信息的存储过程。
 


 本文转自 leonarding151CTO博客,原文链接:http://blog.51cto.com/leonarding/1147984 ,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
人工智能 运维 Oracle
ChatGPT能代替Oracle DBA吗?用Oracle OCP(1z0-083)的真题测试一下(文末投票)
ChatGPT已经通过了很多考试,姚远老师是Oracle OCP和MySQL OCP讲师,我很好奇ChatGPT能不能通过Oracle OCP的考试呢?让我们拿Oracle 19c OCP考试(1z0-082)的真题对ChatGPT进行一个测试。
177 0
|
人工智能 运维 Oracle
ChatGPT能代替Oracle DBA吗?用Oracle OCP(1z0-083)的真题测试一下。
第1道题ChatGPT就做错了,姚远老师心里不禁窃喜,看来ChatGPT也不咋地,我们也许不会失业,让我们来看看第一道题的题目
160 0
|
Oracle 安全 关系型数据库
【Oracle】什么?作为DBA,你竟然不会安装Oracle??
很长一段时间内,国内互联网公司都在提倡“去IOE”,但是很多企业还是愿意为昂贵的Oracle数据库买单,不少读者所在的公司也在用Oracle,很多读者自行安装Oracle数据库时,多多少少遇到了些问题,苦恼于几天下来还是没能解决问题。这不,不少读者跑来问我,让我输出一篇如何在物理机上安装Oracle的文章,最好是安装过程中不会出现各种“疑难杂症”。哈哈,这要求不过分,我周末也着实捣鼓了一番,不过我是安装在CentOS 7/ CentOS 8虚拟机中的,效果和在物理机中一样,整个过程也算是小有所成吧!输出此文,记录捣鼓的过程,与各位Oracle开发者共勉。
135 0
【Oracle】什么?作为DBA,你竟然不会安装Oracle??
|
Oracle 关系型数据库 数据库管理
ORACLE分配DBA权限
ORACLE分配DBA权限
|
SQL 存储 监控
Oracle DBA遇到频次最高的五十个问题
随着数据价值在企业地位越来越高,DBA这一职位更是受到重视和支持,如何帮助各位数据达人维护好数据,也是ITPUB社区一直秉承的理念,本期我们将社区DBA关注最多的50个问题,已经各位大师对问题的解决方式进行了汇总和整理,期待大家更多给与问题和反馈,以下是问题和解决方案。 问题1:如何收集统计信息不影响数据库? 解决方案 大多数情况下,表的统计信息不准导致了优化器对于执行计划的错误计算,因此需要对表的统计信息进行更正, 以便让优化器重新选择准确的 执行计划。 但是在生产情况下,随意的收集统计信息,则会给数据库带来隐患: 1、对重新收集统计信息的表,对应的一些SQL可能需要重新硬解
376 0
|
SQL Oracle 关系型数据库
【学习资料】第1期Oracle DBA 增值 PostgreSQL,Greenplum 学习计划 - 珍藏级
大家好,这里是Oracle DBA 增值 PostgreSQL,Greenplum 学习计划 - 珍藏级
|
存储 SQL Oracle
【学习视频】第6期2019-Oracle迁移到PostgreSQL - 适合DBA与业务开发者
大家好,这里是《PG干O,仁心所象 - 去O实战培训》 公益活动纪录 - 《PG开发者指南、去O、管理与优化实践》
|
关系型数据库 物联网 数据库
|
Oracle 关系型数据库 数据库管理
ORACLE 角色、授权、表空间授权、授予用户使用表空间、dba的赋予与取消
授权某个权限给某个角色: GRANT DELETE ANY TABLE TO "UCITROLE"; 将DELETE ANY TABLE 权限授权给UCITROLE角色 权限: ALTER ...
1292 0