sexta-feira, 25 de junho de 2021

Consultando dados de uma partição


Algo que ainda não havia usado nem ao menos lido sobre.. mas fica a dica de como consultar dados de partições específicas.

select [columns] from [table] partition ([partition])

SQL> select partition_name from dba_tab_partitions where table_name='AUD$UNIFIED';

PARTITION_NAME
--------------------------------------------------------------------------------
AUD_UNIFIED_P0
SYS_P49826
SYS_P50746
SYS_P51806
SYS_P53186
SYS_P54526
SYS_P56266

7 rows selected.

SQL> select count(*) from AUDSYS.AUD$UNIFIED partition (SYS_P54526);

  COUNT(*)
----------
      2904

SQL> select count(*) from AUDSYS.AUD$UNIFIED partition (SYS_P56266);

  COUNT(*)
----------
      8997

SQL> select count(*) from AUDSYS.AUD$UNIFIED partition (SYS_P56266) where OS_USER='apache';

  COUNT(*)
----------
       142
Mais informações →

sexta-feira, 4 de junho de 2021

Recuperando credenciais de administrador no weblogic

 


Dica para quem esqueceu as credenciais de acesso ao Weblogic.

Capture as informações criptografadas a partir do arquivo boot.properties localizado no $USERDOMAIN_HOME/servers/AdminServer/security/


[root@wls ~]# export USERDOMAIN_HOME=/u01/Oracle/Middleware/Oracle_Home/user_projects/domains/app_domain
[root@wls ~]# cd $USERDOMAIN_HOME/servers/AdminServer/security/
[root@wls security]# cat boot.properties
# Generated by Configuration Wizard on Mon Jun 27 07:42:49 BRT 2016
username={AES}zoDTpzXJwBoWCPwqbTuoBhQiR8bIneBw1nnumM2XkAU=
password={AES}MRuZtj19v4RBzFCb4gX5IM+qItLDVAaP1IC13WvTitA=

Carregue as as variáveis de ambiente do domínio:

[root@wls security]# . $USERDOMAIN_HOME/bin/setDomainEnv.sh
Crie um arquivo chamado recoverpassword.java, por exemplo, contendo o seguinte comando:

[root@wls app_domain]# cat recoverpassword.java
public class recoverpassword {
 public static void main(String[] args)
 {
  System.out.println(
  new weblogic.security.internal.encryption.ClearOrEncryptedService(
  weblogic.security.internal.SerializedSystemIni.getEncryptionService(args[0]
   )).decrypt(args[1]));
  }
}
Chame a classe java criada passando a string criptografada do arquivo boot.properties como parâmetro:

[root@wls app_domain]# java -cp $CLASSPATH:. recoverpassword $DOMAIN_HOME {AES}zoDTpzXJwBoWCPwqbTuoBhQiR8bIneBw1nnumM2XkAU=
weblogic
[root@wls app_domain]# java -cp $CLASSPATH:. recoverpassword $DOMAIN_HOME {AES}MRuZtj19v4RBzFCb4gX5IM+qItLDVAaP1IC13WvTitA=
Passw0rd
A saída do comando trará em texto simples o nome de usuário e senha do administrador do Weblogic.

Mesmo que existam vários ambientes com as mesmas credenciais, o retorno do arquivo boot.properties pode conter textos criptografados diferentes, pois ao criptografar e descriptografar o weblogic usa a chave cifrada armazenada no arquivo "security/SerializedSystemIni.dat". Portanto, sendo a chave de cifra diferente, é possível obter um texto criptografado diferente até para a mesma entrada.
Mais informações →

domingo, 24 de janeiro de 2021

VM Guest lenta e com elevado percentual de CPU roubada (steal)

Acompanhando a performance de algumas máquinas virtualizadas em um ODA X7-2 HA foi observado durante o período alto percentual de CPU steal (%st) que mostra a porcentagem de tempo gasto (roubado)  em esperas involuntárias da CPU enquanto o hypervisor está atendendo outro processador virtual.

Para dar ênfase ao problema e posteriormente demonstrar a mudança de comportamento junto aos ajustes em uma VM com 8 vCPU, forcei a utilização de CPU disparando comandos "yes" em nohup onde dentro de alguns segundos o percentual de CPU roubada já atingiu 68%

[root@vm04 ~]# cat /proc/cpuinfo | egrep 'processor' | wc -l
8
[root@vm04 ~]#
[root@vm04 ~]# yes > /dev/null &
[1] 26080
[root@vm04 ~]# yes > /dev/null &
[2] 26135
[root@vm04 ~]# yes > /dev/null &
[3] 26137
[root@vm04 ~]# yes > /dev/null &
[4] 26138
[root@vm04 ~]#














Tratando-se de um Oracle engineered systems, busquei como referência o MOS (My Oracle Support) onde encontrei a Doc ID 1928868.1 falando exatamente sobre este comportamento destacando em seu título "Guest VM Running Slow and is not Able to Use All the CPUs Assigned to it on ODA"

Este comportamento ocorre devido ao parâmetro CPU_CAP estar definido como 100 que independente da quantidade de CPUs associados a máquina virtual ela utilizará apenas 1 CPU.

Cancelando o stress de CPU na VM

[root@vm04 ~]# pkill yes
[1]   Terminated              yes > /dev/null
[2]-  Terminated              yes > /dev/null
[3]-  Terminated              yes > /dev/null
[4]+  Terminated              yes > /dev/null

No dom0 confirme o valor do CPU CAP e ajuste dinamicamente seu valor para 0. 

[root@dom0 ~]# xm sched-credit
Name                                ID Weight  Cap
Domain-0                             0  65535    0
oakDom1                              1    256    0
vm03                                 3    256  100
vm04                                 4    256  100


[root@dom0 ~]# xm sched-credit -d vm04 -c 0
[root@dom0 ~]# xm sched-credit
Name                                ID Weight  Cap
Domain-0                             0  65535    0
oakDom1                              1    256    0
vm03                                 3    256  100
vm04                                 4    256    0
[root@dom0 ~]#

Ao ser criado uma VM, o valor padrão para o parâmetro é 100%. Esse valor é então convertido em um limite de utilização da CPU no arquivo vm.cfg para a máquina virtual. 

O valor definido no arquivo vm.cfg limita a quantidade de CPU que um convidado (VM Guest) pode consumir. Se o Processor Cap for definido como 100% no Oracle VM, o valor definido em vm.cfg será 0, o que significa que não há limite para a utilização da CPU.

Retornando a VM vou proceder com um novo teste forçando a utilização das CPUs da mesma forma que a anterior

[root@vm04 ~]# yes > /dev/null &
[1] 31926
[root@vm04 ~]# yes > /dev/null &
[2] 31928
[root@vm04 ~]# yes > /dev/null &
[3] 31929
[root@vm04 ~]# yes > /dev/null &
[4] 31976

Com alguns segundos já foi perceptível que o percentual de CPU roubada não sofria oscilações, estava de forma constante em 0%















Comparando o antes e depois do ajuste

















Referência:

Guest VM Running Slow and is not Able to Use All the CPUs Assigned to it on ODA (Doc ID 1928868.1)

Mais informações →

quarta-feira, 29 de julho de 2020

sábado, 18 de julho de 2020

terça-feira, 16 de junho de 2020

segunda-feira, 18 de maio de 2020

Exibindo valores válidos para parâmetros de múltiplas opções

Dentre seus milhares de parâmetros, o Oracle Database possui parâmetros do tipo string, número, booleano e os que aceitam uma lista predeterminada de valores como o cursor_sharing, por exemplo, que pode ser configurado com os valores SIMILAR, EXACT e FORCE.

Para sabermos os valores válidos para estes parâmetros de múltiplas opções predeterminadas podemos:


1. Consultar a documentação Oracle onde será exibido a lista de valores válidos, desde que o parâmetro não seja oculto.

Adicionar legenda

2. Alterar o parâmetro, incluindo os ocultos para um valor não válido, desta forma a lista de valores suportados será exibida:

SQL> alter system set cursor_sharing='X';
alter system set cursor_sharing='X'
*
ERROR at line 1:
ORA-00096: invalid value X for parameter cursor_sharing, must be from among SIMILAR, EXACT, FORCE

SQL> alter system set "_mv_refresh_enhanced_dml_detection"='TST';
alter system set "_mv_refresh_enhanced_dml_detection"='TST'
*
ERROR at line 1:
ORA-00096: invalid value TST for parameter _mv_refresh_enhanced_dml_detection, must be from among ON_RC, ON, OFF

3. Utilizar a view v$parameter_valid_values, não é válida para parâmetros ocultos
set lines 200
col name for a50
col value for a30
select * from v$parameter_valid_values where name='use_large_pages';

       NUM NAME                                                  ORDINAL VALUE                          ISDEFAULT
---------- -------------------------------------------------- ---------- ------------------------------ -----------------------
       117 use_large_pages                                             1 TRUE                           TRUE
       117 use_large_pages                                             2 AUTO                           FALSE
       117 use_large_pages                                             3 ONLY                           FALSE
       117 use_large_pages                                             4 FALSE                          FALSE

4. ou, ainda utilizar a X$KSPVLD_VALUES onde podemos visualizar os valores válidos inclusive para os parâmetros ocultos
set lines 200
col ISDEFAULT_KSPVLD_VALUES for a15
col VALUE_KSPVLD_VALUES for a30
select PARNO_KSPVLD_VALUES NUM,
       NAME_KSPVLD_VALUES NAME,
       ORDINAL_KSPVLD_VALUES ORDINAL,
       VALUE_KSPVLD_VALUES VALUE,
       DECODE(ISDEFAULT_KSPVLD_VALUES, 'FALSE', '', 'DEFAULT') ISDEFAULT
  from X$KSPVLD_VALUES
 where NAME_KSPVLD_VALUES = '_mv_refresh_enhanced_dml_detection';

       NUM NAME                                                  ORDINAL VALUE                          ISDEFAU
---------- -------------------------------------------------- ---------- ------------------------------ -------
      2484 _mv_refresh_enhanced_dml_detection                          1 OFF
      2484 _mv_refresh_enhanced_dml_detection                          2 ON
      2484 _mv_refresh_enhanced_dml_detection                          3 ON_RC                          DEFAULT

enjoy!

Mais informações →
Postagens mais antigas Página inicial

Translate

# Suporte

# ACE Program

#Oracle

#Oracle
Disclaimer: The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.

#Blog reconhecido

#ARTICULISTA

Marcadores

Postagens populares