《OracleDBA日常工作和职责》1.数据库环境LEO1@LEO1select*fromv$version;BANNER---------------------------------------------------------------------------
《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 owner='LEO1';
OWNER SEGMENT_NAME SEGMENT_TYPE PARTITION_NAME BYTES
------------------------------ ---------------------------------------- ------------------ -------------------- ----------