小编Nap*_*Nap的帖子

Oracle:即使 SERVEROUTPUT 变量设置为 ON 也不显示输出

我想知道为什么即使我将 SERVEROUPUT 变量设置为 ON 也不显示输出。

我有以下匿名块代码:

DECLARE
    v_rec_count number:=0;
BEGIN
    for rec in (SELECT T_A.ROWID, T_A.OPEN_COUNT, T_B.OPEN_COUNT as NEW_OPEN_COUNT
            FROM T_A
            INNER JOIN T_B ON
                T_A.KEYA = T_B.KEYA
            AND T_A.KEYB = T_B.KEYB
            AND T_A.OPEN_COUNT <> T_B.OPEN_COUNT) 
    loop
        v_rec_count := v_rec_count + 1;

        update T_A t1
        set t1.OPEN_COUNT = rec.NEW_OPEN_COUNT,
            t1.UPD_USER_ID = 'batch',
            t1.UPD_DATE = SYSDATE
        where t1.rowid = rec.rowid;
    end loop;

    dbms_output.put_line ('T_A UPDATE_TOTAL: ' || v_rec_count);
END;
/
Run Code Online (Sandbox Code Playgroud)

当我执行以下代码时,当我通过 sqlplus 运行 sql 文件时,我希望看到 dbms_output.put_line 的输出到 sql 提示符并最终看到日志文件。该块所做的输出只是“PL/SQL 过程已成功运行”。

我已经在块之前设置了 …

oracle plsql

3
推荐指数
1
解决办法
5万
查看次数

为什么 DBA_SEGMENTS 显示的数据量是 DBA_TABLES 的两倍?

我尝试使用以下步骤计算审计日志表的使用情况:

  1. 截断所有审计日志表数据(即AUD$
  2. 执行插入和更新数据的测试用例,还有删除语句,但它不会删除任何内容。
  3. 测量 dba 段上使用的字节。

    select tablespace_name,bytes from dba_segments
    where tablespace_name ='SYSTEM'
    and SEGMENT_NAME = 'AUD$';
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重新计算统计数据。

  5. 检索统计数据中使用的字节。

    select NUM_ROWS * AVG_ROW_LEN as BYTE_USED
    from DBA_TABLES where TABLE_NAME = 'AUD$';
    
    Run Code Online (Sandbox Code Playgroud)

我从#3 得到的值是#5 的两倍多,为什么分配太多了?

oracle statistics tablespaces

2
推荐指数
1
解决办法
2776
查看次数

标签 统计

oracle ×2

plsql ×1

statistics ×1

tablespaces ×1