内存表信息查看

CREATE OR REPLACE VIEW ADM_TABLE AS
SELECT /* for Memory Tables */
 'SYS_TBS_MEMORY' TBS_NAME,
 B.USER_NAME || '.' || A.TABLE_NAME TABLE_NAME,
 (C.FIXED_ALLOC_MEM + C.VAR_ALLOC_MEM) ALLOCSIZE,
 TABLE_ID,
 REPLICATION_COUNT REPL_COUNT
 FROM SYSTEM_.SYS_TABLES_ A, SYSTEM_.SYS_USERS_ B, V$MEMTBL_INFO C
 WHERE A.USER_ID = B.USER_ID
  AND A.TABLE_OID = C.TABLE_OID
  AND A.TBS_ID = 1
  AND A.USER_ID != 1
  AND A.TABLE_TYPE = 'T';

 

exec showTables('User_name');  --查看某个用户的表信息

 

 

create or replace procedure SHOWTABLES(p1 in varchar(40))
as
-- exec showTables('User_name');
  cursor c1 is
         select SYSTEM_.SYS_TABLES_.TABLE_NAME
            from SYSTEM_.SYS_TABLES_
            where SYSTEM_.SYS_TABLES_.USER_ID =
    (select SYSTEM_.SYS_USERS_.USER_ID
                from SYSTEM_.SYS_USERS_
    where SYSTEM_.SYS_USERS_.USER_NAME = upper(p1)
    AND system_.SYS_TABLES_.TABLE_TYPE = 'T');
   v1 CHAR(40);    
   
   begin
             open c1;
    SYSTEM_.PRINTLN('-------------------');
    system_.print(p1);
             SYSTEM_.PRINTLN(' Table');
             SYSTEM_.PRINTLN('-------------------');
                loop
                 fetch C1 into v1;
                 exit when C1%NOTFOUND;
                 system_.print(' ');
                    SYSTEM_.PRINTLN(v1);
    end loop;
             SYSTEM_.PRINTLN('-------------------');
           
                close c1;
   end;
/

### 查看 Oracle 空间的内存使用情况 在 Oracle 数据库中,“空间”的概念主要涉及磁盘存储而非内存。然而,可以通过分析 SGA(System Global Area)和 PGA(Program Global Area)的相关信息间接了解某些特定场景下空间与内存之间的关系。对于直接查看空间的内存使用情况,通常是指临时空间如何利用内存以及磁盘作为交换区域的过程。 #### 使用 SQL 查询空间的磁盘使用情况 虽然严格意义上这不是“内存”,但以下查询可帮助理解空间的实际磁盘占用状况: ```sql SELECT TABLESPACE_NAME, SUM(BYTES) / 1024 / 1024 AS MB FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME; ``` 此查询统计了每个空间的数据文件总大小(单位为 MB)。这有助于评估各个空间的整体容量[^3]。 #### 检查临时空间的内存交互 临时空间主要用于处理排序、哈希联接以及其他需要大量计算的任务。当这些操作无法完全驻留在内存中时,它们会被写入临时空间对应的磁盘区域。要监控这种情况,可以执行如下查询: ```sql SELECT COMPONENT, CURRENT_SIZE / 1024 / 1024 AS MB_CURRENT, MAX_SIZE / 1024 / 1024 AS MB_MAX FROM V$SGA_DYNAMIC_COMPONENTS WHERE COMPONENT LIKE 'shared pool%'; ``` 尽管上述查询针对的是共享池部分,但它揭示了 SGA 如何动态调整以适应工作负载变化。更重要的是,通过观察 `V$SORT_SEGMENT` 视图可以获得关于临时段的具体细节: ```sql SELECT SEGMENT_TYPE, COUNT(*), SUM(BYTES) / 1024 / 1024 AS MB_USED FROM USER_SEGMENTS WHERE SEGMENT_TYPE = 'TEMPORARY' GROUP BY SEGMENT_TYPE; ``` 这里显示了当前正在使用的临时段数量及其合计大小[^2]。 #### 综合分析 SGAs 和 PGAs 对空间的影响 更全面的方法是结合多个视图来获取整个数据库层面的内存分配概况: ```sql SELECT NAME, VALUE / 1024 / 1024 AS MB_VALUE FROM V$SYSSTAT WHERE NAME IN ('session pga memory', 'session uga memory'); ``` 这段脚本提供了会话级别消耗的 PGA 和 UGA 数量,进一步解释为什么某些大查询可能会溢出至临时空间[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值