AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 333883
Accepted
Daniel Soto
Daniel Soto
Asked: 2023-12-09 05:20:14 +0800 CST2023-12-09 05:20:14 +0800 CST 2023-12-09 05:20:14 +0800 CST

Precisa de ajuda com DBMS_COMPRESSION.GET_COMPRESSION_RATIO

  • 772

Preciso de ajuda sobre como executar o DBMS_COMPRESSION.GET_COMPRESSION_RATIOpacote em todas as tabelas de um banco de dados para ver se vale a pena implementar ou não.

Este é o procedimento que estou executando sozinho e preciso de uma forma de automatizá-lo para não precisar executá-lo manualmente tabela por tabela.

SET SERVEROUTPUT ON
DECLARE
 blkcnt_cmp PLS_INTEGER;
 blkcnt_uncmp PLS_INTEGER;
 row_cmp PLS_INTEGER;
 row_uncmp PLS_INTEGER;
 cmp_ratio NUMBER;
 comptype_str VARCHAR2(32767);
BEGIN
 DBMS_COMPRESSION.GET_COMPRESSION_RATIO (
scratchtbsname => 'USERS' ,
ownname => 'OWNER' ,
objname => 'TABLE_NAME' ,
subobjname => NULL ,
comptype => DBMS_COMPRESSION.COMP_ADVANCED,
blkcnt_cmp => blkcnt_cmp,
blkcnt_uncmp => blkcnt_uncmp,
row_cmp => row_cmp,
row_uncmp => row_uncmp,
cmp_ratio => cmp_ratio,
comptype_str => comptype_str,
subset_numrows=> DBMS_COMPRESSION.comp_ratio_minrows,
objtype => DBMS_COMPRESSION.objtype_table
);
DBMS_OUTPUT.put_line( 'Number of blocks used by the compressed sample of the object : ' ||
blkcnt_cmp);
DBMS_OUTPUT.put_line( 'Number of blocks used by the uncompressed sample of the object : ' ||
blkcnt_uncmp);
DBMS_OUTPUT.put_line( 'Number of rows in a block in compressed sample of the object : ' ||
row_cmp);
DBMS_OUTPUT.put_line( 'Number of rows in a block in uncompressed sample of the object : ' ||
row_uncmp);
DBMS_OUTPUT.put_line ('Estimated Compression Ratio of Sample : ' ||
cmp_ratio);
DBMS_OUTPUT.put_line( 'Compression Type : ' ||
comptype_str);
END;
oracle
  • 1 1 respostas
  • 31 Views

1 respostas

  • Voted
  1. Best Answer
    Paul W
    2023-12-10T08:33:39+08:002023-12-10T08:33:39+08:00

    É para isso que serve o PL/SQL, para escrever código para fazer chamadas programaticamente. Consulte o dicionário para obter os nomes das tabelas e, dentro de um loop, chame o procedimento. Algo assim:

    DECLARE
     blkcnt_cmp PLS_INTEGER;
     blkcnt_uncmp PLS_INTEGER;
     row_cmp PLS_INTEGER;
     row_uncmp PLS_INTEGER;
     cmp_ratio NUMBER;
     comptype_str VARCHAR2(32767);
    BEGIN
      FOR rec_table IN (SELECT owner,   -- open an implicit cursor containing table names. Each row will be assigned to the rec_table record variable
                               table_name 
                          FROM dba_tables
                         WHERE [whatever filter you need])
      LOOP -- execute the code within LOOP... END LOOP for each row in the cursor
        DBMS_COMPRESSION.GET_COMPRESSION_RATIO (
           scratchtbsname => 'USERS' ,
           ownname => rec_table.owner, -- binds to the owner col of the rec_table record variable
           objname => rec_table.table_name, -- binds to the table_name col of the rec_table record variable
           . . . [other params] . . .
        );
    
        DBMS_OUTPUT.put_line(rec_table.owner||'.'||rec_table.table_name||': Number of blocks used by the compressed sample of the object : ' ||blkcnt_cmp);
        . . . [other dbms outputs] . . .
      END LOOP;
    END;
    

    Você provavelmente não deseja usar dbms_outputpara isso, entretanto. Eu recomendaria inserir os resultados em uma tabela de log criada para essa finalidade, que você poderá consultar à vontade mais tarde.

    • 0

relate perguntas

  • Backups de banco de dados no Oracle - Exportar o banco de dados ou usar outras ferramentas?

  • ORDER BY usando prioridades personalizadas para colunas de texto

  • Interface sqlplus confortável? [fechado]

  • Como encontrar as instruções SQL mais recentes no banco de dados?

  • Como posso consultar nomes usando expressões regulares?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve