怎么监控oracle数据库表和表空间

怎么监控oracle数据库表和表空间,第1张

怎么监控oracle数据库表和表空间的现状

declare

unf number;

unfb number;

fs number;

fs b number;

fs number;

fs b number;

fs number;

fs b number;

fs number;

fs b number;

full number;

fullb number;

begin

dbms_space space_usage( &

&

TABLE

unf

unfb

fs

fs b

fs

fs b

fs

fs b

fs

fs b

full

fullb);

dbms_output put_line( unformatted_blocks: || unf);

dbms_output put_line( full_blocks( % free): || full);

dbms_output put_line( fs _blocks( % free): || fs );

dbms_output put_line( fs _blocks( % free): || fs );

dbms_output put_line( fs _blocks( % free): || fs );

dbms_output put_line( fs _blocks( % free): || fs );

end;

/

表空间的使用历史记录(只输出了每天的第一次统计结果)

select b name

a rtime

a tablespace_usedsize

a tablespace_size

round( a tablespace_usedsize / a tablespace_size) used_percent

from dba_hist_tbspc_space_usage a

(select t name

min(rtime) rtime

min(tablespace_id) tablespace_id

from dba_hist_tbspc_space_usage t

inner join v$tablespace t on t tablespace_id = t TS#

where t NAME = upper( & )

group by name substr(rtime )

) b

where a tablespace_id = b tablespace_id

and a rtime = b rtime

order by a rtime;

表的剩余空间预测

lishixinzhi/Article/program/Oracle/201311/19053

很多人都有这样的了解 检测Oracle的可用性所需要的命令比简单的ping或者ps ef | grep 等Oracle的命令要多得多 有观点认为它需要一个使用SQLNet 来验证监听器已经开启并运行的测试访问Oracle——这是用户经常用到的访问 通过实际地登录到实际环境中 你可以确认这个实例环境可以接受登录的 如果你只是做了以上的检测的话 你如何才能知道是否登录没有被接受 只是因为需要等待文档日志

除了Oracle的激活和可用性之外 我们还需要进行检测以确保它可以用 这样我们还可以检测表空间的容量

检测的脚本:

假设所有的Oracle环境都已经搭建起来了

假设所有的扩展都已经达到了最大的限度

假设左右的表空间都缺乏运行的空闲空间

下面的脚本可以在你想要的任何时候通过crontab 来中断 另外 如果上面的例外情况出现了的话 您还可以就这个脚本写信或者电子邮件给支持人员获得帮助

如果您有什么其他的测试 这个脚本可以让您轻松地进行修改以加以利用 我使用这个Monitororcl 脚本作为模板并且在末尾添加了功能

按crontab来调用query_oracle_instances sh 脚本:

#!/bin/ksh /u /home/oracle/ profile /u /app/oracle/admin/monitororcl cat /u /app/oracle/admin/Get_Oracle_Instance_List exit

Get_Oracle_Instance_List 脚本如下:

instance_name tnsname sys_password_for_this_instance instance_name tnsname sys_password_for_this_instance instance_name tnsname sys_password_for_this_instance

下面是MONITORORCL脚本:

lishixinzhi/Article/program/Oracle/201311/17406

是谁 偷偷的 用了那么多空间呢(本来有几十个G的Free磁盘空间的)

检查数据库表空间占用空间情况:

SQL> select tablespace_name sum(bytes)/ / / GB

from dba_data_files group by tablespace_name

union all

select tablespace_name sum(bytes)/ / / GB

from dba_temp_files group by tablespace_name order by GB;

TABLESPACE_NAME                        GB

USERS                         

UNDOTBS                        

SYSTEM                        

SYSAUX                        

WAPCM_TS_VISIT_DETAIL           

HY_DS_DEFAULT                          

MINT_TS_DEFAULT                        

MMS_TS_DATA                        

MMS_IDX_SJH                            

MMS_TS_DEFAULT                         

IVRCN_TS_DATA                          

TABLESPACE_NAME                        GB

MMS_TS_DATA                            

CM_TS_DEFAULT                          

TEMP                          

UNDOTBS                       

rows selected

不幸的发现 UNDO表空间已经扩展至 G 而TEMP表空间也扩展至 G 这 个表空间加起来占用了 G的磁盘空间 导致了空间不足

显然曾经有大事务占用了大量的UNDO表空间和Temp表空间 Oracle的AUM(Auto Undo Management)从出生以来就经常出现只扩展 不收缩(shrink)的情况(通常我们可以设置足够的UNDO表空间大小 然后取消其自动扩展属性)

现在我们可以采用如下步骤回收UNDO空间:

确认文件

SQL> select file_name bytes/ / from dba_data_files

where tablespace_name like UNDOTBS ;

FILE_NAME

BYTES/ /

+ORADG/d y/datafile/undotbs

检查UNDO Segment状态

SQL> select usn xacts rssize/ / / hwmsize/ / / shrinks

from v$rollstat order by rssize;

USN      XACTS RSSIZE/ / / HWMSIZE/ / /     SHRINKS

                                            

                                            

                                              

                                            

                                            

                                            

                                            

                                            

                                            

                                            

                                              

rows selected

创建新的UNDO表空间

SQL> create undo tablespace undotbs ;

Tablespace created

切换UNDO表空间为新的UNDO表空间

SQL> alter system set undo_tablespace=undotbs scope=both;

System altered

此处使用spfile需要注意 以前曾经记录过这样一个案例:Oracle诊断案例 Spfile案例一则

等待原UNDO表空间所有UNDO SEGMENT OFFLINE

SQL> select usn xacts status rssize/ / / hwmsize/ / / shrinks

from v$rollstat order by rssize;

USN      XACTS STATUS          RSSIZE/ / / HWMSIZE/ / /     SHRINKS

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

USN      XACTS STATUS          RSSIZE/ / / HWMSIZE/ / /     SHRINKS

          PENDING OFFLINE                                    

rows selected

再看:

: : SQL> /

USN      XACTS STATUS          RSSIZE/ / / HWMSIZE/ / /     SHRINKS

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

          ONLINE                                           

rows selected

Elapsed: : :

删除原UNDO表空间

: : SQL> drop tablespace undotbs including contents;

Tablespace dropped

Elapsed: : :

检查空间情况

由于我使用的ASM管理 可以使用 gR 提供的信工具a cmd来察看空间占用情况

[oracle@d y ~]$ export ORACLE_SID=+ASM

[oracle@d y ~]$ a cmd

ASMCMD> du

Used_MB      Mirror_used_MB

              

ASMCMD> exit

lishixinzhi/Article/program/Oracle/201311/18992

以上就是关于怎么监控oracle数据库表和表空间全部的内容,包括:怎么监控oracle数据库表和表空间、Oracle数据库可用性和表空间容量、Oracle回滚段空间回收步骤等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10187586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存