淘先锋技术网

首页 1 2 3 4 5 6 7

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相应的命令