2.用SQL计算出你所用数据库的总容量,给出SQL语句和结果。
如果要计算数据库的总容量就需要知道数据库由哪几部分组成的,然后计算每部分的容量之和即可
(1)数据文件
我们看一下对应表空间的使用情况
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)临时文件
我们看一下对应表空间的使用情况
select file_name,tablespace_name,bytes/1024/1024,user_bytes/1024/1024 from dba_temp_files;
(3)重做日志文件
(4)控制文件
(5)参数文件
参数文件是描述数据库属性的,记录了数据库非默认值的所有初始化参数
(6)告警日志
路径:/u01/app/oracle/diag/rdbms/leo1/LEO1/trace
告警日志 字节 M
alert_LEO1.log 2271951 2.166
告警日志记录数据库中所有的报错信息,会随着信息量的多少而变化,我们也可以清空告警日志
(7)密码文件
密码文件保存着数据库管理员信息(ID passwd),只要数据库添加管理员就会在这里添加对应的信息
(8)dump文件和归档日志
Adump
Bdump
Cdump
Udump
这些都是记录数据库信息的日志文件,把它们的容量加在一起就是数据库总容量了
数据库容量公式:数据文件+临时文件+重做日志文件+控制文件+参数文件+告警日志+密码文件+……
小结:所谓数据库就是文件的集合,那么数据库容量就是文件集合的容量。
3.用SQL计算出某个用户下所有对象的大小,给出SQL语句和结果。
我们要计算用户的所有对象就是计算一个schema的大小
段对象:凡是分配存储空间的对象就叫段对象
我最常用的用户名LEO1,下面我们就来看看这个用户的schema的所有对象
> select owner,segment_name,segment_type,partition_name,bytes from dba_segments where wner='LEO1';
对象类型:表 分区表 索引 分区索引共四种
我们统计一下不同种类对象各多少size
> 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语句和结果。
我们看一下所有表空间的使用率(除了临时表空间)
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 ;
我们经常使用的LEO1表空间使用情况已经perfect显示,现在我们需要统计的是LEO1表空间包含对象的大小,由于记录数较多,只把SQL语句写在这里了
> 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.在告警日志中找到一条错误信息,并贴出来(如果没有,自己造出一条错误信息)。
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 我们重命名这个数据文件名
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.Oracle Database, 11g Release 2 (11.2) 所以我们应该查这个文档
2.左上角找到 Master Boot List 官方文档的索引
3.如果想查看《初始化视图+数据字典+动态性能视图》请参考《Reference》
4.选择Part III Dynamic Performance Views 这个部分中search:v$session,结果中排在第一行的就是v$session信息,列举了每个字段的含义,v$session相应的命令