terça-feira, 29 de novembro de 2011

Entendendo os modos ARCHIVELOG e NOARCHIVELOG no Oracle

O modo ARCHIVELOG nos bancos de dados Oracle é uma das configurações exigidas para todo DBA que se preze. Como já disse nosso grande amigo Oracle ACE Ricardo Portilho:
"- Se o Banco de Dados é importante, deve estar em ARCHIVELOG.

- Se o Banco de Dados não é importante, para que colocar dados nele? ",

Então por ai já percebemos a importância do seu banco estar em modo ARCHIVELOG.



Em resumo as todas as modificação executadas ao banco de dados que são feitas ficarão gravadas nos archives de redo log. A maioria dos recursos de alta disponibilidade do Oracle requer que você ative o modo ARCHIVELOG para o seu banco de dados. Quando você ativar esse modo os redo log serão arquivados em vez de substituído. Os archives devem ser armazenados em um local separado e backupeados regularmente por segurança a depender de sua Estratégia de backup. Os archives são  também utilizados pelo RMAN, Data Guard, Flashback Database e muitas outras ferramentas usadas para voltar o estado do banco de dados em um determinado momento após um Recover.

No modo NOARCHIVELOG os arquivos de redo log não serão gerados, e após restaurar um backup o dba fica impossibilitado de restaurar qualquer transação até o ultimo backup efetuado e válido.Digamos que seu ultimo backup foi de hoje as 04:00 e aconteceu o desastre natural as 14:00, como você explicará a ausência dos dados da manhã inteira?Claro não tem os archives.Então recomendo alterar logo..rsss...

Para habilitar o modo ARCHIVELOG é muito simples:

[root@oralinux /]# su - oracle
[oracle@oralinux ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Wed Nov 23 16:51:27 2011
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     21
Current log sequence           23

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  422670336 bytes
Fixed Size                  1336960 bytes
Variable Size             322963840 bytes
Database Buffers           92274688 bytes
Redo Buffers                6094848 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.

SQL> archive log start;
Statement processed.
SQL> alter database open;
Database altered.
SQL>

Após configurado deverá configurar ainda o local onde os archives irão ser gerados através do parâmetro 
LOG_ARCHIVE_DEST_n. Com este parâmetro pode ser definido em até 10 diretórios ou discos diferentes por recomendação da oracle.

SQL> alter system set log_archive_dest_1='location=/u01/app/oracle/flash_recovery_area/DB11G/archivelog optional reopen=300' scope=spfile;
System altered.
SQL>

Para entendermos melhor a criação dos archives da base em ARCHIVELOG irei demonstrar a criação de uma tabela e efetuar alguns inserts e listar os archives criados a no diretório setado anteriormente.

SQL> create table teste01(valor integer);
Table created.
SQL> begin
  2  for i in 1..500000
  3  loop
  4  insert into teste01 values(i);
  5  end loop;
  6  end;
  7  /
PL/SQL procedure successfully completed.
SQL>

Listando os archives criados após o insert:

[oracle@oralinux 2011_11_23]$ pwd
/u01/app/oracle/flash_recovery_area/DB11G/archivelog/2011_11_23
[oracle@oralinux 2011_11_23]$ ls -lah
total 2,1G
drwxr-x--- 2 oracle oinstall 4,0K Nov 23 20:27 .
drwxr-xr-x 3 oracle oinstall 4,0K Nov 23 20:20 ..
-rw-r----- 1 oracle oinstall  50M Nov 23 20:20 o1_mf_1_23_7dtzxt9q_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:20 o1_mf_1_24_7dtzy2rb_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:20 o1_mf_1_25_7dtzycvt_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:20 o1_mf_1_26_7dtzypgz_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:21 o1_mf_1_27_7dtzyy6k_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:21 o1_mf_1_28_7dtzz9fy_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:21 o1_mf_1_29_7dtzzl70_.arc
-rw-r----- 1 oracle oinstall  45M Nov 23 20:21 o1_mf_1_30_7dtzzswx_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:21 o1_mf_1_31_7dv002rr_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:21 o1_mf_1_32_7dv00ccx_.arc
-rw-r----- 1 oracle oinstall  48M Nov 23 20:21 o1_mf_1_33_7dv00mmc_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:22 o1_mf_1_34_7dv00vfc_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:22 o1_mf_1_35_7dv0144t_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:22 o1_mf_1_36_7dv01cov_.arc
-rw-r----- 1 oracle oinstall  46M Nov 23 20:22 o1_mf_1_37_7dv01nrj_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:22 o1_mf_1_38_7dv01wvh_.arc
-rw-r----- 1 oracle oinstall  43M Nov 23 20:22 o1_mf_1_39_7dv023vd_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:22 o1_mf_1_40_7dv02c5w_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:23 o1_mf_1_41_7dv02ngt_.arc
-rw-r----- 1 oracle oinstall  44M Nov 23 20:23 o1_mf_1_42_7dv02vwv_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:23 o1_mf_1_43_7dv034vf_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:23 o1_mf_1_44_7dv03fg5_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:23 o1_mf_1_45_7dv03ors_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:23 o1_mf_1_46_7dv03xcc_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:23 o1_mf_1_47_7dv044y0_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:23 o1_mf_1_48_7dv04g9p_.arc
-rw-r----- 1 oracle oinstall  41M Nov 23 20:24 o1_mf_1_49_7dv04pg7_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:24 o1_mf_1_50_7dv04ydk_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:24 o1_mf_1_51_7dv05b4r_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:24 o1_mf_1_52_7dv05nn8_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:24 o1_mf_1_53_7dv05xxz_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:24 o1_mf_1_54_7dv066xl_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:25 o1_mf_1_55_7dv06l77_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:25 o1_mf_1_56_7dv06yyr_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:25 o1_mf_1_57_7dv075dw_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:25 o1_mf_1_58_7dv07cbs_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:25 o1_mf_1_59_7dv07k4c_.arc
-rw-r----- 1 oracle oinstall  45M Nov 23 20:25 o1_mf_1_60_7dv07tgw_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:25 o1_mf_1_61_7dv07zhs_.arc
-rw-r----- 1 oracle oinstall  46M Nov 23 20:26 o1_mf_1_62_7dv089n6_.arc
-rw-r----- 1 oracle oinstall  42M Nov 23 20:26 o1_mf_1_63_7dv08sn5_.arc
-rw-r----- 1 oracle oinstall  46M Nov 23 20:26 o1_mf_1_64_7dv094t9_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:26 o1_mf_1_65_7dv09m3r_.arc
-rw-r----- 1 oracle oinstall  49M Nov 23 20:26 o1_mf_1_66_7dv0b0q7_.arc
-rw-r----- 1 oracle oinstall  47M Nov 23 20:27 o1_mf_1_67_7dv0bh6p_.arc
[oracle@oralinux 2011_11_23]$

É isso ai pessoal!Até o próximo!

Referências:
Oracle RMAN 11g Backup and Recovery - Oracle Press
www.otn.oracle.com

terça-feira, 22 de novembro de 2011

Instalação o Oracle 11g R2 usando o pacote Oracle-Validated no Oracle Enterprise Linux


Demonstrarei nesse post a instalação do Oracle 11G R2 usando o pacote oracle-validated.
Esse pacote é instalado através do repositório do yum resolvendo as dependências necessárias para instalação, ficando apenas para o DBA ajustar os demais parametros do SO necessários para o banco de dados funcionar.

Cenário:
SO:Oracle Enterprise Linux 5.4
BD: Oracle 11G R2
Versão: Enterprise


1 - Configurar o Repositorio
[root@oralinux ~]# cd /etc/yum.repos.d/
[root@oralinux ~]# wget http://public-yum.oracle.com/public-yum-el5.repo

2 - Instalar o Oracle Validate
[root@oralinux ~]# yum install oracle-validated
Loaded plugins: security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package oracle-validated.i386 0:1.0.0-18.el5 set to be updated
--> Processing Dependency: kernel-headers for package: oracle-validated
--> Processing Dependency: gdb for package: oracle-validated
--> Processing Dependency: gcc-c++ for package: oracle-validated
--> Processing Dependency: gcc for package: oracle-validated
--> Processing Dependency: unixODBC-devel for package: oracle-validated
--> Processing Dependency: compat-db for package: oracle-validated
--> Processing Dependency: elfutils-libelf-devel for package: oracle-validated
--> Processing Dependency: libstdc++-devel for package: oracle-validated
--> Processing Dependency: libXp for package: oracle-validated
--> Processing Dependency: glibc-devel for package: oracle-validated
--> Processing Dependency: glibc-headers for package: oracle-validated
--> Processing Dependency: sysstat for package: oracle-validated
--> Processing Dependency: unixODBC for package: oracle-validated
--> Processing Dependency: libaio-devel for package: oracle-validated
--> Processing Dependency: compat-gcc-34-c++ for package: oracle-validated
--> Processing Dependency: compat-gcc-34 for package: oracle-validated
--> Running transaction check
---> Package compat-db.i386 0:4.2.52-5.1 set to be updated
---> Package compat-gcc-34.i386 0:3.4.6-4 set to be updated
---> Package compat-gcc-34-c++.i386 0:3.4.6-4 set to be updated
---> Package elfutils-libelf-devel.i386 0:0.137-3.el5 set to be updated
--> Processing Dependency: elfutils-libelf-devel-static-i386 = 0.137-3.el5 for package: elfutils-libelf-devel
---> Package gcc.i386 0:4.1.2-46.el5 set to be updated
--> Processing Dependency: libgomp >= 4.1.2-46.el5 for package: gcc
---> Package gcc-c++.i386 0:4.1.2-46.el5 set to be updated
---> Package gdb.i386 0:6.8-37.el5 set to be updated
---> Package glibc-devel.i386 0:2.5-42 set to be updated
---> Package glibc-headers.i386 0:2.5-42 set to be updated
---> Package kernel-headers.i386 0:2.6.18-164.el5 set to be updated
---> Package libXp.i386 0:1.0.0-8.1.el5 set to be updated
---> Package libaio-devel.i386 0:0.3.106-3.2 set to be updated
---> Package libstdc++-devel.i386 0:4.1.2-46.el5 set to be updated
---> Package sysstat.i386 0:7.0.2-3.el5 set to be updated
---> Package unixODBC.i386 0:2.2.11-7.1 set to be updated
---> Package unixODBC-devel.i386 0:2.2.11-7.1 set to be updated
--> Running transaction check
---> Package elfutils-libelf-devel-static.i386 0:0.137-3.el5 set to be updated
---> Package libgomp.i386 0:4.4.0-6.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================================================================================================
 Package                                                 Arch                            Version                                    Repository                              Size
=================================================================================================================================================================================
Installing:
 oracle-validated                                        i386                            1.0.0-18.el5                               el5_u4_base                             15 k
Installing for dependencies:
 compat-db                                               i386                            4.2.52-5.1                                 el5_u4_base                            1.7 M
 compat-gcc-34                                           i386                            3.4.6-4                                    el5_u4_base                            4.1 M
 compat-gcc-34-c++                                       i386                            3.4.6-4                                    el5_u4_base                             11 M
 elfutils-libelf-devel                                   i386                            0.137-3.el5                                el5_u4_base                             24 k
 elfutils-libelf-devel-static                            i386                            0.137-3.el5                                el5_u4_base                             66 k
 gcc                                                     i386                            4.1.2-46.el5                               el5_u4_base                            5.2 M
 gcc-c++                                                 i386                            4.1.2-46.el5                               el5_u4_base                            3.4 M
 gdb                                                     i386                            6.8-37.el5                                 el5_u4_base                            3.4 M
 glibc-devel                                             i386                            2.5-42                                     el5_u4_base                            2.0 M
 glibc-headers                                           i386                            2.5-42                                     el5_u4_base                            614 k
 kernel-headers                                          i386                            2.6.18-164.el5                             el5_u4_base                            1.0 M
 libXp                                                   i386                            1.0.0-8.1.el5                              el5_u4_base                             22 k
 libaio-devel                                            i386                            0.3.106-3.2                                el5_u4_base                             11 k
 libgomp                                                 i386                            4.4.0-6.el5                                el5_u4_base                             70 k
 libstdc++-devel                                         i386                            4.1.2-46.el5                               el5_u4_base                            2.9 M
 sysstat                                                 i386                            7.0.2-3.el5                                el5_u4_base                            170 k
 unixODBC                                                i386                            2.2.11-7.1                                 el5_u4_base                            830 k
 unixODBC-devel                                          i386                            2.2.11-7.1                                 el5_u4_base                            743 k

Transaction Summary
=================================================================================================================================================================================
Install     19 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 37 M
Is this ok [y/N]: y
Downloading Packages:
(1/19): libaio-devel-0.3.106-3.2.i386.rpm                                                                                                                 |  11 kB     00:00
(2/19): oracle-validated-1.0.0-18.el5.i386.rpm                                                                                                            |  15 kB     00:00
(3/19): libXp-1.0.0-8.1.el5.i386.rpm                                                                                                                      |  22 kB     00:00
(4/19): elfutils-libelf-devel-0.137-3.el5.i386.rpm                                                                                                        |  24 kB     00:00
(5/19): elfutils-libelf-devel-static-0.137-3.el5.i386.rpm                                                                                                 |  66 kB     00:00
(6/19): libgomp-4.4.0-6.el5.i386.rpm                                                                                                                      |  70 kB     00:00
(7/19): sysstat-7.0.2-3.el5.i386.rpm                                                                                                                      | 170 kB     00:01
(8/19): glibc-headers-2.5-42.i386.rpm                                                                                                                     | 614 kB     00:01
(9/19): unixODBC-devel-2.2.11-7.1.i386.rpm                                                                                                                | 743 kB     00:02
(10/19): unixODBC-2.2.11-7.1.i386.rpm                                                                                                                     | 830 kB     00:02
(11/19): kernel-headers-2.6.18-164.el5.i386.rpm                                                                                                           | 1.0 MB     00:03
(12/19): compat-db-4.2.52-5.1.i386.rpm                                                                                                                    | 1.7 MB     00:05
(13/19): glibc-devel-2.5-42.i386.rpm                                                                                                                      | 2.0 MB     00:05
(14/19): libstdc++-devel-4.1.2-46.el5.i386.rpm                                                                                                            | 2.9 MB     00:07
(15/19): gcc-c++-4.1.2-46.el5.i386.rpm                                                                                                                    | 3.4 MB     00:14
(16/19): gdb-6.8-37.el5.i386.rpm                                                                                                                          | 3.4 MB     00:12
(17/19): compat-gcc-34-3.4.6-4.i386.rpm                                                                                                                   | 4.1 MB     00:12
(18/19): gcc-4.1.2-46.el5.i386.rpm                                                                                                                        | 5.2 MB     00:14
(19/19): compat-gcc-34-c++-3.4.6-4.i386.rpm                                                                                                               |  11 MB     00:26
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                            319 kB/s |  37 MB     01:59
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : kernel-headers                                                                                                                                           1/19
  Installing     : glibc-headers                                                                                                                                            2/19
  Installing     : glibc-devel                                                                                                                                              3/19
  Installing     : libstdc++-devel                                                                                                                                          4/19
  Installing     : compat-gcc-34                                                                                                                                            5/19
  Installing     : unixODBC                                                                                                                                                 6/19
  Installing     : compat-gcc-34-c++                                                                                                                                        7/19
  Installing     : libXp                                                                                                                                                    8/19
  Installing     : compat-db                                                                                                                                                9/19
  Installing     : sysstat                                                                                                                                                 10/19
  Installing     : libgomp                                                                                                                                                 11/19
  Installing     : gcc                                                                                                                                                     12/19
  Installing     : gcc-c++                                                                                                                                                 13/19
  Installing     : gdb                                                                                                                                                     14/19
  Installing     : unixODBC-devel                                                                                                                                          15/19
  Installing     : libaio-devel                                                                                                                                            16/19
  Installing     : elfutils-libelf-devel                                                                                                                                   17/19
  Installing     : elfutils-libelf-devel-static                                                                                                                            18/19
  Installing     : oracle-validated                                                                                                                                        19/19

Installed:
  oracle-validated.i386 0:1.0.0-18.el5

Dependency Installed:
  compat-db.i386 0:4.2.52-5.1                         compat-gcc-34.i386 0:3.4.6-4         compat-gcc-34-c++.i386 0:3.4.6-4         elfutils-libelf-devel.i386 0:0.137-3.el5
  elfutils-libelf-devel-static.i386 0:0.137-3.el5     gcc.i386 0:4.1.2-46.el5              gcc-c++.i386 0:4.1.2-46.el5              gdb.i386 0:6.8-37.el5
  glibc-devel.i386 0:2.5-42                           glibc-headers.i386 0:2.5-42          kernel-headers.i386 0:2.6.18-164.el5     libXp.i386 0:1.0.0-8.1.el5
  libaio-devel.i386 0:0.3.106-3.2                     libgomp.i386 0:4.4.0-6.el5           libstdc++-devel.i386 0:4.1.2-46.el5      sysstat.i386 0:7.0.2-3.el5
  unixODBC.i386 0:2.2.11-7.1                          unixODBC-devel.i386 0:2.2.11-7.1

Complete!
[root@oralinux ~]#

3 - Configurar os parametros do kernel
vim /etc/sysctl.conf

fs.suid_dumpable = 1
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default=4194304
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586


4 - Adicionar as seguintes linhas no arquivo

vim /etc/security/limits.conf
oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile  4096
oracle              hard    nofile  65536
oracle              soft    stack   10240

5 - Criar usuarios e Grupos
groupadd oinstall
groupadd dba
groupadd oper
groupadd asmadmin
useradd -g oinstall -G dba,oper,asmadmin oracle
passwd oracle

6 - Criar a estrutura de instalação e setar as permissões para os usários
mkdir -p /u01/app/oracle/product/11.2.0/db_1
chown -R oracle:oinstall /u01
chmod -R 775 /u01


7 - Definir variáveis no arquivo .bash_profile
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

#ORACLE_HOSTNAME=ol5-112.localdomain; export ORACLE_HOSTNAME
ORACLE_UNQNAME=DB11G; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
ORACLE_SID=DB11G; export ORACLE_SID
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
~
8 - Descompactar os arquivos baixados no site da Oracle.com

[oracle@oralinux u01]$ ls -lah
total 4,3G
drwxrwxr-x  7 oracle oinstall 4,0K Nov 22 10:36 .
drwxr-xr-x 25 root   root     4,0K Nov 22 10:11 ..
-rwxrwxr-x  1 oracle oinstall 950M Nov 21 16:51 218_linux_11gR2_database_2of2.zip
-rwxrwxr-x  1 oracle oinstall 1,2G Nov 21 16:56 219_linux_11gR2_database_1of2.zip

unzip 219_linux_11gR2_database_1of2.zip
unzip 218_linux_11gR2_database_2of2.zip

9 - Acessar o diretório onde descompactou os arquivos
[oracle@oralinux u01]$ cd /u01/database/
[oracle@oralinux database]$ ls -lah
total 48K
drwxrwxr-x  8 oracle oinstall 4,0K Ago 18  2009 .
drwxrwxr-x  7 oracle oinstall 4,0K Nov 22 10:36 ..
drwxrwxr-x 12 oracle oinstall 4,0K Ago 17  2009 doc
drwxrwxr-x  4 oracle oinstall 4,0K Ago 14  2009 install
drwxrwxr-x  2 oracle oinstall 4,0K Ago 14  2009 response
drwxrwxr-x  2 oracle oinstall 4,0K Ago 14  2009 rpm
-rwxrwxr-x  1 oracle oinstall 4,3K Ago 14  2009 runInstaller
drwxrwxr-x  2 oracle oinstall 4,0K Ago 14  2009 sshsetup
drwxrwxr-x 14 oracle oinstall 4,0K Ago 14  2009 stage
-rwxrwxr-x  1 oracle oinstall 5,3K Ago 17  2009 welcome.html

10 - Com o usuário oracle executar o arquivo runInstaller

[oracle@oralinux database]$ ./runInstaller




Observem que não teremos que passar pelo processo de instalar biblioteca a biblioteca e suas dependências, agilizando a instalação;
A instalação foi concluída com sucesso em aproximadamente uns 20 minutos considerando que o Oracle Enterprise Linux 5 já estava instalado;

Referencias:




sexta-feira, 4 de novembro de 2011

Alterando usuário dono de várias tabelas após um import

Olá pessoal.

Hoje fazendo um import de um dump em uma base de dados no Postgres me deparei com um situação um tanto inusitada de acesso ao banco de dados.

Quando criamos um novo banco de dados com o usuário master "postgres", mesmo setando para o banco de dados um novo usuário para acesso aos objetos deste mesmo banco nos objetos  não são atualizadas, ficando assim o usuário sem acesso de select, insert, delete ou update mesmo definido em nível de ROLE.

1 - Criando o Banco de Dados no Cluster:


postgres@Debian01:~$ /usr/local/pgsql/bin/psql
psql (9.0.4)
Type "help" for help.


postgres=# create database testeblog;
CREATE DATABASE
postgres=#

2 - Realizando o import da base



3 - Após o import do dump criei o usuário que será padrão para a aplicação, e seta-lo como usuário padrão do banco de dados testeblog:




















O problema já estar bem visível na imagem, como o dump foi importado com o usuário master "postgres" então automaticamente ele tornou-se dono dos objetos:

4 - Nesse caso construi um script para ser executado no servidor para que possa corrigir o dono das tabelas;














Observe que o através do próprio psql exportamos um script com as linhas  contendo os comandos para alterar os donos de cada tabela importada anteriormente, optei por não executar via pgadmin para que pudessemos ver a possibilidade de exportar uma saida sql para um arquivo.

SELECT 'ALTER TABLE'||' '||tablename ||' '||'OWNER TO userblog;' FROM pg_tables where schemaname = 'public'

5 - Após isso podemos ter acesso normalmente a operações do tipo DDL e DML a essa base com o usuário criado.
















É isso ai pessoal!
Espero que seja útil assim como foi para mim..

Emerson Martins
DBA