Mostrando postagens com marcador 12c. Mostrar todas as postagens
Mostrando postagens com marcador 12c. Mostrar todas as postagens

quinta-feira, 19 de março de 2020

Pré-requisitos para instalação do Oracle Database no Linux

Quando pensamos em instalar um banco de dados Oracle é importante nos lembrarmos que existem um conjunto de requisitos de hardware, software e sistema operacional a serem atendidos e que estes podem facilmente serem encontrados nas documentações da Oracle através do Oracle Help Center (Oracle Docs) e MOS (My Oracle Support).



Ao vencermos etapas, como o provisionamento de hardware destinado ao banco de dados e a instalação de um sistema operacional homologado, como o Linux 7 para o Oracle Database 19c, por exemplo, que é facilmente identificado através da matriz de certificação disponível no MOS,





É necessário também proceder com alguns ajustes no sistema operacional de modo que todos os pré-requisitos relacionados ao produto e versão que será instalada sejam atendidos, pois o banco de dados requer pacotes específicos de software para garantir seu funcionamento bem como ajustes em determinados parâmetros do kernel. 

Estes pré-requisitos a nível de sistema operacional também podem ser encontrados nas fontes descritas acima, porém a muito tempo a Oracle já oferece alguns pacotes que facilitam estes ajustes básicos relacionados aos pré-requisitos de funcionamento do produto.

Os pacotes foram evoluindo e mudando de nome conforme versão do sistema operacional Linux e versão do produto Oracle:

  • oracle-validated
  • oracle-rdbms-server-11gR2-preinstall
  • oracle-rdbms-server-12cR1-preinstall
  • oracle-database-server-12cR2-preinstall
  • oracle-database-preinstall-18c
  • oracle-database-preinstall-19c

Para instalar um dos pacotes basta realizar o download do arquivo ou do repositório condizente a versão do sistema operacional e proceder com a instalação do pacote.


# cd /etc/yum.repos.d
# wget http://public-yum.oracle.com/public-yum-ol7.repo
# yum install oracle-database-preinstall-19c


# curl -o oracle-database-preinstall-19c-1.0-2.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-2.el7.x86_64.rpm
# yum -y localinstall oracle-database-preinstall-19c-1.0-2.el7.x86_64.rpm
# rm oracle-database-preinstall-19c-1.0-2.el7.x86_64.rpm


Concluída mais esta etapa de pré-requisitos, pode-se dar sequencia na instalação do Oracle Database onde durante sua instalação via GUI (Graphical User Interface), por exemplo, será realizada uma nova consistência de pre-requisitos e caso algum novo ajuste seja necessário será informado na tela do usuário para que possa ser ajustado ou ignorado (em alguns casos temos pacotes que podem ser ignorados, mas sempre confirme junto a documentação Oracle especialmente se for um ambiente produtivo para evitar problemas futuros).

Espero que as dicas possam ser úteis, até a próxima.
Mais informações →

sábado, 24 de agosto de 2019

SQL*Plus History a partir do 12.2

Um recurso muito útil, que digamos, demorou para ser inserido nas funcionalidades do SQL*Plus e ainda é pouco conhecido pela maioria é o comando HIST[ORY].

Em função desta "deficiência" da ferramenta ao longo dos anos, grande parte da comunidade passou a utilizar o rlwrap que proporciona um acesso rápido ao histórico de comandos do SQL*Plus e RMAN, por exemplo.

Apesar do RMAN ainda não possuir um comando history nativo, a funcionalidade introduzida a partir da versão 12.2 no SQL*Plus é bem interessante pois permite que o usuário consulte, edite, execute e remova comandos armazenados no histórico de sua sessão.

O comando show hist permite que seja consultado se a geração de histórico está habilitada ou não, bem como o tamanho (quantidade de comandos) armazenados no histórico caso este esteja habilitado.

Para habilitar a funcionalidade basta digitar set hist on


SQL> show hist
history is OFF
SQL> set hist on
SQL> show hist
history is ON and set to "100"

Para ajustar a quantidade de comandos mantidos no histórico utilize o comando set hist <quantidade> 

SQL> set hist 1000
SQL> show hist
history is ON and set to "1000"

Para exibir os comandos já executados a partir do histórico execute hist

SQL> hist
SP2-1651: History list is empty.
SQL> select 1 from dual;

         1
----------
         1

SQL> hist
  1  select 1 from dual;

SQL> show user
USER is "SYS"
SQL> hist
  1  select 1 from dual;
  2  show user

Para editar um comando do histórico utilize a opção hist <linha> edit 


SQL> hist 1 edit
select 1234 from dual;

A edição do histórico irá manter o comando original e ira adicionar ao histórico uma nova entrada contendo a alteração realizada

SQL> hist
  1  select 1 from dual;
  2  show user
  3  select 1234 from dual;

O comando edit irá utilizar o utilitário padrão do sistema operacional para realizar a edição do comando caso a variável _EDITOR não tenha sido definida na sessão. No caso de um ambiente Linux o vi será o padrão mas podemos alter-la para qualquer outro utilitário de edição através do comando define _EDITOR

Caso uma entrada inválida seja inserida receberemos erro ao executar o hist edit

SQL> define _EDITOR = nao_exite
SQL> hist 1 edit
/bin/bash: nao_exite: command not found
SQL> define _EDITOR = vi

Para re-executar um comando contido no histórico utilize o comando hist <linha> run

SQL> hist
  1  select 1 from dual;
  2  show user
  3  select 1234 from dual;

SQL> hist 3 run

      1234
----------
      1234

Para deletar um comando do histórico utilize hist <linha> del

SQL> hist
  1  select 1 from dual;
  2  show user
* 3  select 1234 from dual;

SQL> hist 3 del
SQL> hist
  1  select 1 from dual;
  2  show user

Para apagar todo o histórico utilize o comando hist clear

SQL> hist
  1  select 1 from dual;
  2  show user

SQL> hist clear
SQL> hist
SP2-1651: History list is empty.



Referência:

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqpug/HISTORY.html#GUID-CCF9B047-3122-4644-BA06-5FA4B5812E9F
Mais informações →

quinta-feira, 23 de março de 2017

Oracle Linux 12cR2 Preinstall

O pacote de preinstall da versão 12cR2 já está liberado no Oracle Public Yum Server para o OL 6 e 7.

Fique atento que o nome do pacote mudou!

Para as versões anteriores:

  • oracle-rdbms-server-11gR2-preinstall
  • oracle-rdbms-server-12cR1-preinstall


Para a 12cR2:
  • oracle-database-server-12cR2-preinstall

[root@db3 ~]# cd /etc/yum.repos.d
[root@db3 yum.repos.d]# wget http://public-yum.oracle.com/public-yum-ol6.repo
--2017-03-23 14:12:05--  http://public-yum.oracle.com/public-yum-ol6.repo
Resolving public-yum.oracle.com... 177.155.140.8, 177.155.140.10
Connecting to public-yum.oracle.com|177.155.140.8|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7301 (7.1K) [text/plain]
Saving to: “public-yum-ol6.repo.1”

100%[=============================================================================================================================>] 7,301       --.-K/s   in 0.05s

2017-03-23 14:12:06 (143 KB/s) - “public-yum-ol6.repo.1” saved [7301/7301]

[root@db3 yum.repos.d]# yum install oracle-database-server-12cR2-preinstall
Loaded plugins: refresh-packagekit, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package oracle-database-server-12cR2-preinstall.x86_64 0:1.0-1.el6 will be installed
--> Processing Dependency: compat-libcap1 for package: oracle-database-server-12cR2-preinstall-1.0-1.el6.x86_64
--> Processing Dependency: ksh for package: oracle-database-server-12cR2-preinstall-1.0-1.el6.x86_64
--> Processing Dependency: libaio-devel for package: oracle-database-server-12cR2-preinstall-1.0-1.el6.x86_64
--> Processing Dependency: xorg-x11-utils for package: oracle-database-server-12cR2-preinstall-1.0-1.el6.x86_64
--> Processing Dependency: glibc-devel for package: oracle-database-server-12cR2-preinstall-1.0-1.el6.x86_64
--> Processing Dependency: compat-libstdc++-33 for package: oracle-database-server-12cR2-preinstall-1.0-1.el6.x86_64
--> Processing Dependency: libstdc++-devel for package: oracle-database-server-12cR2-preinstall-1.0-1.el6.x86_64
--> Running transaction check
---> Package compat-libcap1.x86_64 0:1.10-1 will be installed
---> Package compat-libstdc++-33.x86_64 0:3.2.3-69.el6 will be installed
---> Package glibc-devel.x86_64 0:2.12-1.192.el6 will be installed
--> Processing Dependency: glibc = 2.12-1.192.el6 for package: glibc-devel-2.12-1.192.el6.x86_64
--> Processing Dependency: glibc-headers = 2.12-1.192.el6 for package: glibc-devel-2.12-1.192.el6.x86_64
--> Processing Dependency: glibc-headers for package: glibc-devel-2.12-1.192.el6.x86_64
---> Package ksh.x86_64 0:20120801-33.el6 will be installed
---> Package libaio-devel.x86_64 0:0.3.107-10.el6 will be installed
---> Package libstdc++-devel.x86_64 0:4.4.7-17.el6 will be installed
--> Processing Dependency: libstdc++(x86-64) = 4.4.7-17.el6 for package: libstdc++-devel-4.4.7-17.el6.x86_64
---> Package xorg-x11-utils.x86_64 0:7.5-14.el6 will be installed
--> Processing Dependency: libdmx.so.1()(64bit) for package: xorg-x11-utils-7.5-14.el6.x86_64
--> Processing Dependency: libXxf86dga.so.1()(64bit) for package: xorg-x11-utils-7.5-14.el6.x86_64
--> Running transaction check
---> Package glibc.x86_64 0:2.12-1.107.el6 will be updated
--> Processing Dependency: glibc = 2.12-1.107.el6 for package: glibc-common-2.12-1.107.el6.x86_64
---> Package glibc.x86_64 0:2.12-1.192.el6 will be an update
---> Package glibc-headers.x86_64 0:2.12-1.192.el6 will be installed
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.12-1.192.el6.x86_64
--> Processing Dependency: kernel-headers for package: glibc-headers-2.12-1.192.el6.x86_64
---> Package libXxf86dga.x86_64 0:1.1.4-2.1.el6 will be installed
--> Processing Dependency: libX11 >= 1.5.99.902 for package: libXxf86dga-1.1.4-2.1.el6.x86_64
---> Package libdmx.x86_64 0:1.1.3-3.el6 will be installed
---> Package libstdc++.x86_64 0:4.4.7-3.el6 will be updated
---> Package libstdc++.x86_64 0:4.4.7-17.el6 will be an update
--> Running transaction check
---> Package glibc-common.x86_64 0:2.12-1.107.el6 will be updated
---> Package glibc-common.x86_64 0:2.12-1.192.el6 will be an update
--> Processing Dependency: tzdata >= 2015g-4 for package: glibc-common-2.12-1.192.el6.x86_64
---> Package kernel-headers.x86_64 0:2.6.32-642.15.1.el6 will be installed
---> Package libX11.x86_64 0:1.5.0-4.el6 will be updated
---> Package libX11.x86_64 0:1.6.3-2.el6 will be an update
--> Processing Dependency: libX11-common = 1.6.3-2.el6 for package: libX11-1.6.3-2.el6.x86_64
--> Running transaction check
---> Package libX11-common.noarch 0:1.5.0-4.el6 will be updated
---> Package libX11-common.noarch 0:1.6.3-2.el6 will be an update
---> Package tzdata.noarch 0:2012j-1.el6 will be updated
---> Package tzdata.noarch 0:2017a-1.el6 will be an update
--> Processing Conflict: libX11-1.6.3-2.el6.x86_64 conflicts libxcb < 1.9.1-3
--> Restarting Dependency Resolution with new changes.
--> Running transaction check
---> Package libxcb.x86_64 0:1.8.1-1.el6 will be updated
---> Package libxcb.x86_64 0:1.11-2.el6 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================================================================================
 Package                                                     Arch                       Version                                   Repository                      Size
=======================================================================================================================================================================
Installing:
 oracle-database-server-12cR2-preinstall                     x86_64                     1.0-1.el6                                 ol6_latest                      18 k
Updating:
 libxcb                                                      x86_64                     1.11-2.el6                                ol6_latest                     142 k
Installing for dependencies:
 compat-libcap1                                              x86_64                     1.10-1                                    ol6_latest                      17 k
 compat-libstdc++-33                                         x86_64                     3.2.3-69.el6                              ol6_latest                     183 k
 glibc-devel                                                 x86_64                     2.12-1.192.el6                            ol6_latest                     988 k
 glibc-headers                                               x86_64                     2.12-1.192.el6                            ol6_latest                     617 k
 kernel-headers                                              x86_64                     2.6.32-642.15.1.el6                       ol6_latest                     4.4 M
 ksh                                                         x86_64                     20120801-33.el6                           ol6_latest                     760 k
 libXxf86dga                                                 x86_64                     1.1.4-2.1.el6                             ol6_latest                      17 k
 libaio-devel                                                x86_64                     0.3.107-10.el6                            ol6_latest                      13 k
 libdmx                                                      x86_64                     1.1.3-3.el6                               ol6_latest                      14 k
 libstdc++-devel                                             x86_64                     4.4.7-17.el6                              ol6_latest                     1.6 M
 xorg-x11-utils                                              x86_64                     7.5-14.el6                                ol6_latest                     100 k
Updating for dependencies:
 glibc                                                       x86_64                     2.12-1.192.el6                            ol6_latest                     3.8 M
 glibc-common                                                x86_64                     2.12-1.192.el6                            ol6_latest                      14 M
 libX11                                                      x86_64                     1.6.3-2.el6                               ol6_latest                     586 k
 libX11-common                                               noarch                     1.6.3-2.el6                               ol6_latest                     169 k
 libstdc++                                                   x86_64                     4.4.7-17.el6                              ol6_latest                     295 k
 tzdata                                                      noarch                     2017a-1.el6                               ol6_latest                     454 k

Transaction Summary
=======================================================================================================================================================================
Install      12 Package(s)
Upgrade       7 Package(s)

Total download size: 28 M
Is this ok [y/N]: y
Downloading Packages:
(1/19): compat-libcap1-1.10-1.x86_64.rpm                                                                                                        |  17 kB     00:00
(2/19): compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm                                                                                             | 183 kB     00:01
(3/19): glibc-2.12-1.192.el6.x86_64.rpm                                                                                                         | 3.8 MB     00:24
(4/19): glibc-common-2.12-1.192.el6.x86_64.rpm                                                                                                  |  14 MB     01:35
(5/19): glibc-devel-2.12-1.192.el6.x86_64.rpm                                                                                                   | 988 kB     00:06
(6/19): glibc-headers-2.12-1.192.el6.x86_64.rpm                                                                                                 | 617 kB     00:02
(7/19): kernel-headers-2.6.32-642.15.1.el6.x86_64.rpm                                                                                           | 4.4 MB     00:27
(8/19): ksh-20120801-33.el6.x86_64.rpm                                                                                                          | 760 kB     00:06
(9/19): libX11-1.6.3-2.el6.x86_64.rpm                                                                                                           | 586 kB     00:02
(10/19): libX11-common-1.6.3-2.el6.noarch.rpm                                                                                                   | 169 kB     00:00
(11/19): libXxf86dga-1.1.4-2.1.el6.x86_64.rpm                                                                                                   |  17 kB     00:00
(12/19): libaio-devel-0.3.107-10.el6.x86_64.rpm                                                                                                 |  13 kB     00:00
(13/19): libdmx-1.1.3-3.el6.x86_64.rpm                                                                                                          |  14 kB     00:00
(14/19): libstdc++-4.4.7-17.el6.x86_64.rpm                                                                                                      | 295 kB     00:02
(15/19): libstdc++-devel-4.4.7-17.el6.x86_64.rpm                                                                                                | 1.6 MB     00:10
(16/19): libxcb-1.11-2.el6.x86_64.rpm                                                                                                           | 142 kB     00:00
(17/19): oracle-database-server-12cR2-preinstall-1.0-1.el6.x86_64.rpm                                                                           |  18 kB     00:00
(18/19): tzdata-2017a-1.el6.noarch.rpm                                                                                                          | 454 kB     00:02
(19/19): xorg-x11-utils-7.5-14.el6.x86_64.rpm                                                                                                   | 100 kB     00:00
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                  153 kB/s |  28 MB     03:09
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Retrieving key from http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
Importing GPG key 0xEC551F03:
 Userid: "Oracle OSS group (Open Source Software group) "
 From  : http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating   : libX11-common-1.6.3-2.el6.noarch                                                                                                                   1/26
  Installing : libaio-devel-0.3.107-10.el6.x86_64                                                                                                                 2/26
  Installing : kernel-headers-2.6.32-642.15.1.el6.x86_64                                                                                                          3/26
  Updating   : tzdata-2017a-1.el6.noarch                                                                                                                          4/26
  Updating   : glibc-2.12-1.192.el6.x86_64                                                                                                                        5/26
  Updating   : glibc-common-2.12-1.192.el6.x86_64                                                                                                                 6/26
  Updating   : libstdc++-4.4.7-17.el6.x86_64                                                                                                                      7/26
  Updating   : libxcb-1.11-2.el6.x86_64                                                                                                                           8/26
  Updating   : libX11-1.6.3-2.el6.x86_64                                                                                                                          9/26
  Installing : libXxf86dga-1.1.4-2.1.el6.x86_64                                                                                                                  10/26
  Installing : libdmx-1.1.3-3.el6.x86_64                                                                                                                         11/26
  Installing : xorg-x11-utils-7.5-14.el6.x86_64                                                                                                                  12/26
  Installing : libstdc++-devel-4.4.7-17.el6.x86_64                                                                                                               13/26
  Installing : compat-libcap1-1.10-1.x86_64                                                                                                                      14/26
  Installing : ksh-20120801-33.el6.x86_64                                                                                                                        15/26
  Installing : compat-libstdc++-33-3.2.3-69.el6.x86_64                                                                                                           16/26
  Installing : glibc-headers-2.12-1.192.el6.x86_64                                                                                                               17/26
  Installing : glibc-devel-2.12-1.192.el6.x86_64                                                                                                                 18/26
  Installing : oracle-database-server-12cR2-preinstall-1.0-1.el6.x86_64                                                                                          19/26
  Cleanup    : libX11-1.5.0-4.el6.x86_64                                                                                                                         20/26
  Cleanup    : libxcb-1.8.1-1.el6.x86_64                                                                                                                         21/26
  Cleanup    : libstdc++-4.4.7-3.el6.x86_64                                                                                                                      22/26
  Cleanup    : libX11-common-1.5.0-4.el6.noarch                                                                                                                  23/26
  Cleanup    : glibc-common-2.12-1.107.el6.x86_64                                                                                                                24/26
  Cleanup    : glibc-2.12-1.107.el6.x86_64                                                                                                                       25/26
  Cleanup    : tzdata-2012j-1.el6.noarch                                                                                                                         26/26
  Verifying  : tzdata-2017a-1.el6.noarch                                                                                                                          1/26
  Verifying  : kernel-headers-2.6.32-642.15.1.el6.x86_64                                                                                                          2/26
  Verifying  : libaio-devel-0.3.107-10.el6.x86_64                                                                                                                 3/26
  Verifying  : glibc-2.12-1.192.el6.x86_64                                                                                                                        4/26
  Verifying  : libstdc++-4.4.7-17.el6.x86_64                                                                                                                      5/26
  Verifying  : compat-libcap1-1.10-1.x86_64                                                                                                                       6/26
  Verifying  : ksh-20120801-33.el6.x86_64                                                                                                                         7/26
  Verifying  : compat-libstdc++-33-3.2.3-69.el6.x86_64                                                                                                            8/26
  Verifying  : libXxf86dga-1.1.4-2.1.el6.x86_64                                                                                                                   9/26
  Verifying  : glibc-common-2.12-1.192.el6.x86_64                                                                                                                10/26
  Verifying  : libdmx-1.1.3-3.el6.x86_64                                                                                                                         11/26
  Verifying  : glibc-devel-2.12-1.192.el6.x86_64                                                                                                                 12/26
  Verifying  : xorg-x11-utils-7.5-14.el6.x86_64                                                                                                                  13/26
  Verifying  : libstdc++-devel-4.4.7-17.el6.x86_64                                                                                                               14/26
  Verifying  : oracle-database-server-12cR2-preinstall-1.0-1.el6.x86_64                                                                                          15/26
  Verifying  : glibc-headers-2.12-1.192.el6.x86_64                                                                                                               16/26
  Verifying  : libxcb-1.11-2.el6.x86_64                                                                                                                          17/26
  Verifying  : libX11-1.6.3-2.el6.x86_64                                                                                                                         18/26
  Verifying  : libX11-common-1.6.3-2.el6.noarch                                                                                                                  19/26
  Verifying  : libxcb-1.8.1-1.el6.x86_64                                                                                                                         20/26
  Verifying  : libstdc++-4.4.7-3.el6.x86_64                                                                                                                      21/26
  Verifying  : tzdata-2012j-1.el6.noarch                                                                                                                         22/26
  Verifying  : glibc-2.12-1.107.el6.x86_64                                                                                                                       23/26
  Verifying  : libX11-common-1.5.0-4.el6.noarch                                                                                                                  24/26
  Verifying  : glibc-common-2.12-1.107.el6.x86_64                                                                                                                25/26
  Verifying  : libX11-1.5.0-4.el6.x86_64                                                                                                                         26/26

Installed:
  oracle-database-server-12cR2-preinstall.x86_64 0:1.0-1.el6

Dependency Installed:
  compat-libcap1.x86_64 0:1.10-1               compat-libstdc++-33.x86_64 0:3.2.3-69.el6  glibc-devel.x86_64 0:2.12-1.192.el6  glibc-headers.x86_64 0:2.12-1.192.el6
  kernel-headers.x86_64 0:2.6.32-642.15.1.el6  ksh.x86_64 0:20120801-33.el6               libXxf86dga.x86_64 0:1.1.4-2.1.el6   libaio-devel.x86_64 0:0.3.107-10.el6
  libdmx.x86_64 0:1.1.3-3.el6                  libstdc++-devel.x86_64 0:4.4.7-17.el6      xorg-x11-utils.x86_64 0:7.5-14.el6

Updated:
  libxcb.x86_64 0:1.11-2.el6

Dependency Updated:
  glibc.x86_64 0:2.12-1.192.el6 glibc-common.x86_64 0:2.12-1.192.el6 libX11.x86_64 0:1.6.3-2.el6 libX11-common.noarch 0:1.6.3-2.el6 libstdc++.x86_64 0:4.4.7-17.el6
  tzdata.noarch 0:2017a-1.el6

Complete!

Mais informações →

quarta-feira, 22 de março de 2017

Preservando o estado dos pluggable databases após o restart do container database

Com a introdução da arquitetura multitenant na versão 12c do Oracle Database, passamos a ter múltiplos pluggable databases (PDBs) abaixo de um único container database (CDB). Anterior a versão 12.1.0.2, sempre que um container database era iniciado todos os pluggable databases associados permaneciam por padrão no estado MOUNT (com exceção do pluggable database SEED que fica em READ-ONLY).

Um mecanismo muito utilizado até então para se iniciar os pluggable databases eram triggers de startup. Quando o container era iniciado a trigger era disparada e todos os pluggable databases configurados abaixo da trigger eram automaticamente alterados para READ WRITE ou READ ONLY.


create or replace trigger startup_pdbs 
after startup on database
begin
  execute immediate 'alter pluggable database DBHMG1 open';
end;
/

Em um container database (CDB) com vários pluggable databases (PDBs) associados a solução começava a se tornar mais complexa, pois cada PDB poderia ter seu OPEN MODE diferente dos demais (MOUNTED, READ WRITE, READ ONLY). A cada necessidade de se disponibilizar um PDB em outro modo se tornava necessário também alterar a trigger manualmente ajustando o novo estado do PDB.

Iniciando na versão 12.1.0.2, a Oracle disponibilizou a feature pdb_save_or_discard_state junto ao comando ALTER PLUGGABLE DATABASE onde permite que o estado (state) de um PDB seja salvo ou descartado, agora sempre que o CDB é iniciado os pluggable databases (PDBs) voltam ao seu estado em que foram salvos (READ WRITE/READ ONLY).


Se um PDB não possui estado salvo ou ele foi descartado, então por default o estado dele será MOUNT quando o CDB for novamente iniciado.


SAVE: Salva o atual estado de OPEN MODE do(s) PDB(s) de modo que seja mantido após o restart do CDB;

DISCARD: Descarta o estado salvo do(s) PDB(s) resultando no retorno ao padrão MOUNTED;

INSTANCES_CLAUSE: Adicionado ao comando, permite salvar/descartar o estado de uma instance específica ou para todas as instances (RAC) - instances = ('cdb1','cdb2'). Se omitido, modifica o estado do PDB apenas para a instance corrente;

ALL: Salva/descarta o estado para todos pluggable database;

ALL EXCEPT: Salva/descarta o estado para todos pluggable databases exceto pelos listados na cláusula EXCEPT;

Demonstrações de uso:

-- Verificando o estado corrente dos pluggable databases

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DBHMG1                         READ WRITE NO
         4 DBHMG2                         READ ONLY  NO
         5 DBHMG3                         READ WRITE YES

Existem diferentes estados (open mode) para os pluggable databases, incluindo o DBHMG3 em modo restrito.

-- Verificando o estado salvo dos pluggable databases

SQL> select con_name, instance_name, state, restricted from dba_pdb_saved_states;

no rows selected

Neste momento nenhum PDB possuía seu estado salvo, ou seja, se o container database (CDB) for reiniciado, todos os pluggable databases irão ficar em estado MOUNT.


-- Salvando o estado de apenas um pluggable database

SQL> alter pluggable database DBHMG1 save state;

Pluggable database altered.

-- Salvando o estado de todos os pluggable databases exceto o DBHMG3

SQL> alter pluggable database ALL EXCEPT DBHMG3 save state;

Pluggable database altered.

-- Salvando o estado de todos os pluggable databases

SQL> alter pluggable database ALL save state;

Pluggable database altered.

-- Verificando o estado salvo dos pluggable databases

SQL> select con_name, instance_name, state, restricted from dba_pdb_saved_states;

CON_NAME                       INSTANCE_NAME   STATE          RES
------------------------------ --------------- -------------- ---
DBHMG3                         cdb             OPEN           YES
DBHMG1                         cdb             OPEN           NO
DBHMG2                         cdb             OPEN READ ONLY NO


O retorno da DBA_PDB_SAVED_STATES representa o estado salvo de cada PDB, se um outro PDB existir e o mesmo não for listado significa que ele não possui nenhum estado salvo até o momento, desta forma, um restart do container resultaria no retorno dele ao estado default, MOUNT.

-- Forçando um restat do container

SQL> startup force
ORACLE instance started.

Total System Global Area  629145600 bytes
Fixed Size                  2927528 bytes
Variable Size             281019480 bytes
Database Buffers          339738624 bytes
Redo Buffers                5459968 bytes
Database mounted.
Database opened.

-- Verificando o estado corrente dos pluggable databases

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DBHMG1                         READ WRITE NO
         4 DBHMG2                         READ ONLY  NO
         5 DBHMG3                         READ WRITE YES


Com o restart do CBD, todos os pluggable databases voltaram ao seu estado salvo.

Sempre que o estado de um PDB for alterado e este precise ser persistido após um restart do container, execute um novo SAVE STATE, sem o SAVE STATE ele voltara ao antigo estado salvo.

-- Descartando o estado salvo de um pluggalbe database

SQL> alter pluggable database DBHMG3 discard state;

Pluggable database altered.

-- Verificando o estado salvo dos pluggable databases

SQL> select con_name, instance_name, state, restricted from dba_pdb_saved_states;

CON_NAME                       INSTANCE_NAME   STATE          RES
------------------------------ --------------- -------------- ---
DBHMG1                         cdb             OPEN           NO
DBHMG2                         cdb             OPEN READ ONLY NO

-- Forçando um restat do container

SQL> startup force
ORACLE instance started.

Total System Global Area  629145600 bytes
Fixed Size                  2927528 bytes
Variable Size             281019480 bytes
Database Buffers          339738624 bytes
Redo Buffers                5459968 bytes
Database mounted.
Database opened.

-- Verificando o estado corrente dos pluggable databases

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DBHMG1                         READ WRITE NO
         4 DBHMG2                         READ ONLY  NO
         5 DBHMG3                         MOUNTED


A mudança proporcionada através da feature pdb_save_or_discard_state, embora pequena, representa uma melhoria significativa no mecanismo de gerenciamento dos pluggable databases (PDBs) principalmente aos DBAs que possuem muitos pluggable databases para gerenciar abaixo de um único container database (CDB).

Referências:

https://docs.oracle.com/database/121/NEWFT/chapter12102.htm#NEWFT514
https://docs.oracle.com/database/121/SQLRF/statements_2008.htm#CCHGJJHH
Mais informações →

terça-feira, 21 de março de 2017

Renomeando um Pluggable Database (PDB)

Para se renomear um database, seja non-CDB ou CDB (container database), utilitários como o NID (DBNEWID) ou a recriação do próprio controlfile ainda são válidas e totalmente funcionais, no entanto nenhum abrange o rename de um pluggable database (PDB).

Para se renomear um pluggable database, além de ser muito simples, nada além do próprio PDB precisa ficar indisponível.

Passo a passo de como renomear um pluggable databse (PDB):

Irei renomear o pluggable database DBHMG3 para DBHMG3NEW


SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DBHMG1                         READ WRITE NO
         4 DBHMG2                         MOUNTED
         5 DBHMG3                         READ WRITE NO

O nome de um database, non-CDB ou CDB (container) possui uma limitação de 9 caracteres, já um pluggable database possui uma limitação de 30 caracteres dando uma maior flexibilidade ao empregar um nome ao PDB.

1. Parando o pluggable database (PDB):

SQL> alter pluggable database DBHMG3 close immediate;

Pluggable database altered.



2. Iniciando o pluggable databse em modo restrito:

SQL> alter pluggable database DBHMG3 open restricted;

Pluggable database altered.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DBHMG1                         READ WRITE NO
         4 DBHMG2                         MOUNTED
         5 DBHMG3                         READ WRITE YES



3.  Renomeando o pluggable database:

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> alter session set container=DBHMG3;

Session altered.

SQL> show con_name

CON_NAME
------------------------------
DBHMG3
SQL> alter pluggable database rename global_name to DBHMG3NEW;

Pluggable database altered.



4. Reiniciando o pluggable database:

SQL> alter session set container=CDB$ROOT;

Session altered.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DBHMG1                         READ WRITE NO
         4 DBHMG2                         MOUNTED
         5 DBHMG3NEW                      READ WRITE YES

SQL> alter pluggable database DBHMG3NEW close immediate;

Pluggable database altered.

SQL> alter pluggable database DBHMG3NEW open;

Pluggable database altered.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DBHMG1                         READ WRITE NO
         4 DBHMG2                         MOUNTED
         5 DBHMG3NEW                      READ WRITE NO
Mais informações →

segunda-feira, 6 de março de 2017

segunda-feira, 25 de julho de 2016

Problemas no startup do Oracle agent 12c: 'Target Interaction Manager failed at Startup java.lang.OutOfMemoryError: Java heap space' - gcagent_errors.log

Na tentativa de iniciar o agent do Oracle Enterprise Manager Coud Control em um servidor me deparei com alguns alertas informando estouro de memória do Java "OutOfMemoryError". Realizei o aumento de memória através do parâmetro agentJavaDefines encontrado dentro do arquivo de configurações $AGENT_HOME/sysman/configemd.properties, contudo o problema persistiu. 

Buscando no MOS encontrei a solução via Doc ID 1902124.1 - "EM12c: emctl start agent Fails With 'Target Interaction Manager failed at Startup java.lang.OutOfMemoryError: Java heap space' reported in gcagent_errors.log"

Abaixo visão do problema e solução.

Tentativa de startup (falha):

srvtst-banco=orcl-> $AGENT_HOME/emctl start agent
Oracle Enterprise Manager Cloud Control 12c Release 5
Copyright (c) 1996, 2015 Oracle Corporation.  All rights reserved.
Starting agent .............................................. failed.
Fatal agent error: State Manager failed at Startup
Fatal agent error: State Manager failed at Startup
Fatal agent error: State Manager failed at Startup
EMAgent is Thrashing. Exiting watchdog
Consult emctl.log and emagent.nohup in: /u01/app/oracle/agent/agent_inst/sysman/log

Verificando log1:

srvtst-banco=orcl-> vi /u01/app/oracle/agent/agent_inst/sysman/log/emagent.nohup

2016-07-02 14:56:02,661 [1:main] WARN - Missing filename for log handler 'opsscfg'
Agent is going down due to an OutOfMemoryError

Verificando log2:
srvtst-banco=orcl-> vi /u01/app/oracle/agent/agent_inst/sysman/log/gcagent.log

2016-07-02 14:56:16,299 [1:main] FATAL - Fatal error: Target Interaction Manager failed at Startup
java.lang.OutOfMemoryError: Java heap space

Executando procedimento do Doc ID 1902124.1 

1. Parando todos os processos do agent:

$AGENT_HOME/bin/emctl stop agent
ps -ef | grep java | grep 'diretório do agent'
ps -ef | grep perl

Finalize qualquer processo JAVA / PERL ativo no diretório do Oracle agent (AGENT_HOME)

kill -9  numero_do_processo

2. Movendo arquivos antigos para um novo diretório:

srvtst-banco=orcl-> mv $AGENT_HOME/sysman/emd/state/* /orabackup/bkp_cloud/

3. Executando o "clearstate agent"

srvtst-banco=orcl-> $AGENT_HOME/bin/emctl clearstate agent
Oracle Enterprise Manager Cloud Control 12c Release 5
Copyright (c) 1996, 2015 Oracle Corporation.  All rights reserved.
EMD clearstate completed successfully


NOTA: O agent mantém internamente informações e status dos componentes que ele monitora, afim de evitar um tráfego de rede desnecessário junto ao OMS, contudo se ocorrer alguma mudança no alvo monitorado o agent inicia o upload das informações. O comando clearstate agent obriga o agente a realizar uma nova leitura de cada componentes e reenvia-las ao OMS.

Segundo a DOC, este comando deve ser executado apenas quando o suporte da Oracle recomenda.

4. Fazendo backup do arquivo de parâmetros e aumentando a memória Java:

srvtst-banco=orcl-> cd $AGENT_HOME/sysman/config
srvtst-banco=orcl-> cp emd.properties emd.properties.bkp

atual:
#
# These are the optional Java flags for the agent
#
agentJavaDefines=-Xmx128M -XX:MaxPermSize=96M

para:

#
# These are the optional Java flags for the agent
#
agentJavaDefines=-Xmx512M -XX:MaxPermSize=96M

* alterado o valor do -Xmx de 128M para 512M

5. Iniciando novamente o agent:

srvtst-banco=orcl-> $AGENT_HOME/bin/emctl start agent
Oracle Enterprise Manager Cloud Control 12c Release 5
Copyright (c) 1996, 2015 Oracle Corporation.  All rights reserved.
Starting agent ........................... started.
srvtst-banco=orcl-> $AGENT_HOME/bin/emctl status agent
Oracle Enterprise Manager Cloud Control 12c Release 5
Copyright (c) 1996, 2015 Oracle Corporation.  All rights reserved.
---------------------------------------------------------------
Agent Version          : 12.1.0.5.0
OMS Version            : 12.1.0.5.0
Protocol Version       : 12.1.0.1.0
Agent Home             : /u01/app/oracle/agent/agent_inst
Agent Log Directory    : /u01/app/oracle/agent/agent_inst/sysman/log
Agent Binaries         : /u01/app/oracle/agent/core/12.1.0.5.0
Agent Process ID       : 18183
Parent Process ID      : 18003
Agent URL              : https://srvtst:3872/emd/main/
Local Agent URL in NAT : https://srvtst:3872/emd/main/
Repository URL         : https://srvtst:4900/empbs/upload
Started at             : 2016-07-02 15:02:31
Started by user        : oracle
Operating System       : Linux version 2.6.39-400.126.1.el5uek (amd64)
Last Reload            : (none)
Last successful upload                       : 2016-07-02 15:03:01
Last attempted upload                        : 2016-07-02 15:03:01
Total Megabytes of XML files uploaded so far : 0.41
Number of XML files pending upload           : 0
Size of XML files pending upload(MB)         : 0
Available disk space on upload filesystem    : 48.47%
Collection Status                            : Collections enabled
Heartbeat Status                             : Ok
Last attempted heartbeat to OMS              : 2016-07-02 15:02:52
Last successful heartbeat to OMS             : 2016-07-02 15:02:52
Next scheduled heartbeat to OMS              : 2016-07-02 15:03:53

---------------------------------------------------------------
Agent is Running and Ready
srvtst-banco=orcl->


Espero ter ajudado.!
Mais informações →

quinta-feira, 28 de novembro de 2013

Alterando o tempo de inatividade do Enterprise Manager console

Quando o Enterprise Manager, seja database, grid ou cloud control console é acessado, por default exite um tempo de inatividade até que o client HTTP seja desconectado em função do tempo máximo inativo ser violado. Em um EM Coud Control 12c, por exemplo, o client HTTP recebe a mensagem “The page has expired. Click OK to continue”, já no EM Database Control 10g ao tentar reutiliza-lo ele automaticamente redireciona para a página de logon sendo necessário inserir novamente as credenciais de acesso.

Segundo a documentação da Oracle este timout ocorre para prevenir o acesso de pessoas não autorizadas a console, onde após o tempo de inatividade predefinido a página é automaticamente expirada.

“To prevent unauthorized access to the Cloud Control, Enterprise Manager will automatically log you out of Cloud Control when there is no activity for a predefined period of time. For example, if you leave your browser open and leave your office. This default behavior prevents unauthorized users from using your Enterprise Manager administrator account.”

Apesar do timeout ser uma forma de segurança predefinida, visualizar algumas vezes a mensagem de página expirada e/ou precisar inserir novamente as credenciais pode começar a causar certa aflição, principalmente para quem gosta de estar sempre acompanhando o “ambiente” pela console e não está ativamente interagindo com ela, fazendo o timeout ser constantemente alcançado.

Banco=unicloud-> $OMS_HOME/bin/emctl get property -name oracle.sysman.eml.maxInactiveTime
Oracle Enterprise Manager Cloud Control 12c Release 2
Copyright (c) 1996, 2012 Oracle Corporation.  All rights reserved.
SYSMAN password:
Value for property oracle.sysman.eml.maxInactiveTime for oms All Management Servers is null
Banco=unicloud->
É possível visualizar no exemplo acima(cloud control 12c) que o maxInactiveTime está definido como “null“, desta forma prevalece o tempo default de inatividade (45 minutos para grid/cloud control).

Alterando o value para -1 e restartando o OMS (Oracle Management Service), os serviços são ajustados para nunca expirarem, eliminando assim que a mensagem “The page has expired.” seja novamente visualizada no client HTTP.

Banco=unicloud-> $OMS_HOME/bin/emctl set property -name oracle.sysman.eml.maxInactiveTime -value -1
Oracle Enterprise Manager Cloud Control 12c Release 2
Copyright (c) 1996, 2012 Oracle Corporation.  All rights reserved.
SYSMAN password:
Property oracle.sysman.eml.maxInactiveTime has been set to value -1 for all Management Servers
OMS restart is required to reflect the new property value
Banco=unicloud->

O value é sempre especificado em minutos, caso não queira definir o tempo de inatividade como ilimitado(-1) coloque 1 (para 1 minuto), 2,3,4,5 … Para finalizar, reiniciar os serviços(solicitado apos o ajuste do maxInactiveTime):

Banco=unicloud-> $OMS_HOME/bin/emctl stop oms -all
Oracle Enterprise Manager Cloud Control 12c Release 2
Copyright (c) 1996, 2012 Oracle Corporation.  All rights reserved.
Stopping WebTier...
WebTier Successfully Stopped
Stopping Oracle Management Server...
Oracle Management Server Successfully Stopped
AdminServer Successfully Stopped
Oracle Management Server is Down
Banco=unicloud-> $OMS_HOME/bin/emctl start oms
Oracle Enterprise Manager Cloud Control 12c Release 2
Copyright (c) 1996, 2012 Oracle Corporation.  All rights reserved.
Starting Oracle Management Server...
Starting WebTier...
WebTier Successfully Started
Oracle Management Server Successfully Started
Oracle Management Server is Up
Banco=unicloud->

Para a versão 11.x Enterprise Manager Grid Console, o procedimento é basicamente o apresentado acima.

1. Navegar até o diretório de instalação do OMS software e setar o oracle.sysman.eml.maxInactiveTime para o valor requerido:

$ cd $OMS_HOME/bin
$ ./emctl set property -name oracle.sysman.eml.maxInactiveTime -value 60 -sysman_pwd password

2. Reiniciar o OMS:

$ cd $OMS_HOME/bin
$ ./emctl stop oms
$ ./emctl start oms
Na versão 10.x Enterprise Manager Grid Console é necessário editar o arquivo emoms.properties conforme abaixo:

1. Navegar até o diretório $OMS_HOME/sysman/config

2. Efetuar um backup(copia) do arquivo emoms.properties e abrir o arquivo original(emoms.properties) com um editor

3. Vá até o final do arquivo e adicione a seguinte linha: (60 é o tempo em minutos de idle time até que a sessão seja desconectada)
oracle.sysman.eml.maxInactiveTime=60

4. Reiniciar o OMS:
 
$ cd $OMS_HOME/bin
$ ./emctl stop oms
$ ./emctl start oms

Quando utilizamos o Database Control, seja 10 ou 11, devemos seguir as seguintes etapas: -> Diferentemente do grid/cloud control que o tempo default de inatividade é de 45 minutos o database control possui como default 35 minutos! 

1. Parar o dbconsole:
 
$ emctl stop dbconsole

2. Efetuar um backup(copia) do arquivo emoms.properties localizado no diretório $ORACLE_HOME//sysman/config e abrir o arquivo original(emoms.properties) com um editor adicionando ao final do arquivo a seguinte linha:

oracle.sysman.eml.maxInactiveTime=tempo em minutos

3. Atualizar o arquivo web.xml abaixo do diretorio 
$ORACLE_HOME/oc4j/j2ee/oc4j_applications/applications/em/em/WEB-INF com:

<session-config><session-timeout>-1</session-timeout></session-config>

onde o -1 indica que não existe timeout. Qualquer valor positivo indica o tempo de inatividade antes da sessão ser desconectada. 

4. Reiniciar o database console:

$ emctl start dbconsole

Referências:

12c Cloud Control: How to Change the Default Login (Idle) Timeout Value for the Enterprise Manager Cloud Console Connections? (Doc ID 1385996.1) 
How to Change the Default Session Timeout for Database Control/DB Control ? (Doc ID 1170373.1) 
How to Change the Default Login Timeout Value for the 10g/11g Enterprise Manager Grid Console Connections? (Doc ID 234875.1) 
http://docs.oracle.com/cd/E24628_01/install.121/e24089/addnl_tasks.htm#EMADV570
Mais informações →

sexta-feira, 6 de setembro de 2013

Enterprise Manager Database Express – 12c

Juntamente com o Oracle Database 12c, a Oracle introduziu um novo console de administração chamado Oracle Enterprise Manager Express (EM Express). O EM Express pode ser considerado como uma versão “ligth” do antigo Enterprise Manager Database control que já não é mais disponibilizado na versão 12c. Agora para gerenciar os bancos de dados 12c (cdb ou non-cdb) você pode utilizar o EM Cloud control 12c ou EM database Express.

O Oracle Enterprise Manager Express é uma ferramenta de gerenciamento de banco de dados baseado na web que é construído dentro do banco de dados Oracle. Ele suporta funções básicas de administração de banco de dados e gerenciamento de desempenho.

Configuração:
  • Gerenciamento dos parâmetros de inicialização (init.ora) 
  • Gerenciamento de memória 
  • Uso das features do banco de dados 
  • Propriedades de Banco de Dados 


Armazenamento:
  • Gerenciamento de Tablespace 
  • Gerenciamento de Undo 
  • Gerenciamento de Redo 
  • Gerenciamento de Archive log 
  • Gerenciamento de Control file 


Performance:
  • Hub de desempenho, que inclui os seguintes recursos: 
    • Monitoramento de desempenho e tuning em tempo real 
    • Histórico de desempenho e tuning 
    • Monitoramento de SQL (tempo real e histórico) 
    • Monitoramento de operações de banco de dados 
    • ADDM, incluindo ADDM em Tempo Real 
    • Active Session History (ASH) 
  • SQL Tuning Advisor, automático e manual 

Sua “instalação” diferentemente do que ocorria nas versões anteriores se tornou muito simples. Na verdade não há nenhuma instalação! Quando o database é criado é possível selecionar a opção Configurar EM (Enterprise Manager) Database Express que já deixa tudo ajustado para o acesso via web.

Para iniciar o EM Express utilize a URL informada durante o processo de configuração do Database via DBCA (Database Configuration Assistant) ou então utlize o pacote dbms_xdb_config para identificar a porta do EM Express.

SQL> select dbms_xdb_config.gethttpsport() from dual;
 
DBMS_XDB_CONFIG.GETHTTPSPORT()
------------------------------
                          5500

Agora basta acessar a URL:

https://database-hostname:portnumber/em/

Exemplo:

https://note-anderson:5500/em

Caso o EM Express não tenha sido configurado durante a criação do database, não seja exibido nenhuma porta pelo dbms_xdb_config.gethttpsport ou você necessita alterar a porta default, utilize o dbms_xdb_config.sethttpsport

Primeiro verifique se o parâmetro dispatchers está habilitado:

SQL> show parameter dispatchers
 
NAME                 TYPE        VALUE
-------------------- ----------- ---------------------------------
dispatchers          string      (PROTOCOL=TCP) (SERVICE=homolXDB)

Se não estiver habilitado, habilite e reinicie o database:

dispatchers=”(PROTOCOL=TCP)(SERVICE=<sid>XDB)”

Agora utilize o dbms_xdb_config.sethttpsport para setar uma porta para o EM Express:

SQL> select dbms_xdb_config.gethttpsport() from dual;
 
DBMS_XDB_CONFIG.GETHTTPSPORT()
------------------------------
 
SQL> exec DBMS_XDB_CONFIG.SETHTTPSPORT(5500);
 
Procedimento PL/SQL concluido com sucesso.
 
SQL> select dbms_xdb_config.gethttpsport() from dual;
 
DBMS_XDB_CONFIG.GETHTTPSPORT()
------------------------------
                          5500

Pronto! Agora é só acessar o Enterprise Manager Database Express


Permissão de acesso ao EM Express para usuário não-administrativos:

Como administrador, você pode logar no EM Express utilizando as constas SYS e SYSTEM para executar as operações administrativas e outras tarefas necessárias. Para logar no EM com um usuário não-administrativo é necessário conceder uma das seguintes roles:

EM_EXPRESS_BASIC: Permite que o usuário conecte no EM Express e visualize as paginas em modo read-only(apenas leitura). A role EM_EXPRESS_BASIC inclui a role SELECT_CATALOG_ROLE.

EM_EXPRESS_ALL: Permite que o usuário conecte no EM Epress e utilize de todas as funcionalidades providas pelo EM Express (read/write). A role EM_EXPRESS_ALL contém a EM_EXPRESS_BASIC.



Referência:

http://docs.oracle.com/cd/E16655_01/server.121/e17643/em_manage.htm#BABCGBJF
Mais informações →

quarta-feira, 31 de julho de 2013

12c new feature: Colunas invisíveis


Mais uma nova feature que surgiu na versão 12c são as colunas invisíveis(invisible columns). Seu proposito é permitir que alterações em uma tabela possam ser feitas sem afetar os usuários e as aplicações que utilizam a tabela de modo que após as aplicações serem atualizadas para utilizarem as novas colunas podemos tornar as colunas invisíveis visíveis.

Quando uma coluna invisível é criada, consultas e operações podem utilizá-la apenas referenciando explicitamente o nome da coluna, caso contrário ela é totalmente invisível nas operações.

Por padrão em qualquer acesso genérico realizado sobre uma tabela todas as colunas invisíveis são omitidas, como no SQL*Plus:


--Criando uma tabela com coluna invisível
 
SQL> create table teste (a number, b varchar2(5) invisible);
 
Tabela criada.
 
SQL> desc teste
 Nome                                      Nulo?    Tipo
 ----------------------------------------- -------- ----------------------------
 A                                                  NUMBER
 
SQL> insert into teste values (1);
 
1 linha criada.
 
SQL> select * from teste;
 
         A
----------
         1
 
SQL> insert into teste values (2,'par');
insert into teste values (2,'par')
            *
ERRO na linha 1:
ORA-00913: valores demais
 
-- referenciando explicitamente o nome da coluna invisível
 
SQL> insert into teste (a,b) values (2,'par');
 
1 linha criada.
 
SQL> select * from teste;
 
         A
----------
         1
         2
 
SQL> select a,b from teste;
 
         A B
---------- -----
         1
         2 par

Alterando a coluna invisível para visível:
SQL> alter table teste modify (b visible);
 
Tabela alterada.
 
SQL> desc teste;
 Nome                                      Nulo?    Tipo
 ----------------------------------------- -------- ----------------------------
 A                                                  NUMBER
 B                                                  VARCHAR2(5)
 
SQL> select * from teste;
 
         A B
---------- -----
         1
         2 par

Adicionando mais colunas invisíveis:
SQL> alter table teste add (c char invisible, d int invisible);
 
Tabela alterada.
 
SQL> desc teste;
 Nome                                      Nulo?    Tipo
 ----------------------------------------- -------- ----------------------------
 A                                                  NUMBER
 B                                                  VARCHAR2(5)
 
SQL> alter table teste modify (a invisible);
 
Tabela alterada.
 
SQL> desc teste
 Nome                                      Nulo?    Tipo
 ----------------------------------------- -------- ----------------------------
 B                                                  VARCHAR2(5)

Apesar das colunas invisíveis serem omitidas por default no SQL*Plus, ainda podemos fazê-lo mostrar as colunas invisíveis no DESCRIBE(DESC):

SQL> show colinvisible
colinvisible OFF
SQL> set colinvisible ON
SQL>
SQL> desc teste
 Nome                                      Nulo?    Tipo
 ----------------------------------------- -------- ----------------------------
 B                                                  VARCHAR2(5)
 A (INVISIBLE)                                      NUMBER
 C (INVISIBLE)                                      CHAR(1)
 D (INVISIBLE)                                      NUMBER(38)

Colunas virtuais também podem ser invisível bem como podemos utilizar uma coluna invisível como chave de particionamento durante a criação de uma tabela.

- Tipos de tabelas que não podem conter colunas invisíveis:


  • External tables 
  • Cluster tables 
  • Temporary tables 


Um fator que sofre influência com a utilização das colunas invisíveis é a ordenação das colunas da tabela.

Normalmente as colunas são exibidas(listadas) na ordem em que elas foram criadas no CREATE TABLE, ou mesmo quando são adicionadas posteriormente elas são exibidas por ultimo na ordem da lista de colunas.

Quando utilizamos colunas invisíveis, as colunas invisíveis não são incluidas na ordem de colunas da tabela, desta forma sempre que tornamos uma coluna visível ela será a ultima da ordem de colunas e quando tornamos uma coluna invisível ocorre uma reorganização na ordem das colunas. Veja o exemplo abaixo:

SQL> create table exemplo (a int, b int invisible, c int);
 
Tabela criada.
 
SQL> col column_name for a15
SQL> select column_name, column_id
  2     from dba_tab_cols
  3    where table_name='EXEMPLO'
  4    order by 2
  5  /
 
COLUMN_NAME      COLUMN_ID
--------------- ----------
A                        1
C                        2
B
 
SQL> desc exemplo
 Nome                                      Nulo?    Tipo
 ----------------------------------------- -------- ----------------------------
 A                                                  NUMBER(38)
 C                                                  NUMBER(38)
 
-- Alterando coluna B para visível
 
SQL> alter table exemplo modify (b visible);
 
Tabela alterada.
 
SQL> select column_name, column_id
  2     from dba_tab_cols
  3    where table_name='EXEMPLO'
  4    order by 2
  5  /
 
COLUMN_NAME      COLUMN_ID
--------------- ----------
A                        1
C                        2
B                        3
 
SQL> desc exemplo
 Nome                                      Nulo?    Tipo
 ----------------------------------------- -------- ----------------------------
 A                                                  NUMBER(38)
 C                                                  NUMBER(38)
 B                                                  NUMBER(38)
 
-- Alterando coluna A para invisível
 
SQL> alter table exemplo modify (a invisible);
 
Tabela alterada.
 
SQL> select column_name, column_id
  2     from dba_tab_cols
  3    where table_name='EXEMPLO'
  4    order by 2
  5  /
 
COLUMN_NAME      COLUMN_ID
--------------- ----------
C                        1
B                        2
A
 
SQL> desc exemplo
 Nome                                      Nulo?    Tipo
 ----------------------------------------- -------- ----------------------------
 C                                                  NUMBER(38)
 B                                                  NUMBER(38)
 
-- Alterando coluna A para visível
 
SQL> alter table exemplo modify (a visible);
 
Tabela alterada.
 
SQL> select column_name, column_id
  2     from dba_tab_cols
  3    where table_name='EXEMPLO'
  4    order by 2
  5  /
 
COLUMN_NAME      COLUMN_ID
--------------- ----------
C                        1
B                        2
A                        3
 
SQL> desc exemplo
 Nome                                      Nulo?    Tipo
 ----------------------------------------- -------- ----------------------------
 C                                                  NUMBER(38)
 B                                                  NUMBER(38)
 A                                                  NUMBER(38)

Referência:

http://docs.oracle.com/cd/E16655_01/server.121/e17636/tables.htm#ADMIN13866
Mais informações →

12c new feature: Move datafile online

O Oracle 12c chegou! e com ele inúmeras melhorias e novas features surgiram. Confira no Oracle® Database New Features Guide 12c Release 1 (12.1).
Uma destas novas features (1.5.5.6 Move a Data File Online) realmente chama a atenção, pois agora nos permite mover os datafiles de forma online totalmente transparente para os usuários, com o banco OPEN e os usuários acessando o datafile, com isso resolver problemas de área livre ou distribuir os datafiles entre dispositivos de armazenamento conforme carga de I/O (para melhorar a performance) se tornou muito prático e rápido.

C:\Users\Anderson Graf>sqlplus sys as sysdba
 
SQL*Plus: Release 12.1.0.1.0 Production on Sex Jul 26 09:36:24 2013
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
Informe a senha:
 
Conectado a:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
 
SQL> col file_name for a70
SQL> select file_name from dba_data_files where tablespace_name='USERS';
 
FILE_NAME
----------------------------------------------------------------------
D:\ORACLE\ORADATA\ORCL\DATAFILE\O1_MF_USERS_8Z4SMH74_.DBF
 
SQL> alter database move datafile 'D:\ORACLE\ORADATA\ORCL\DATAFILE\O1_MF_USERS_8Z4SMH74_.DBF' to 'C:\USERS01.DBF';
 
Banco de dados alterado.
 
SQL> select file_name from dba_data_files where tablespace_name='USERS';
 
FILE_NAME
----------------------------------------------------------------------
C:\USERS01.DBF

Continue lendo mais em oraclehome.com.br
Mais informações →

sábado, 29 de junho de 2013

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