Acessando ASM via FTP?

Neste post explicarei, de maneira simples, como colocar e remover arquivos do ASM sem usar o ASMCMD ou o SQLPLUS.

Usando ASM via FTP

Isso mesmo, vamos configurar nosso listener para aceitar conexões FTP e que estas sejam controladas pelos mecanismos do Oracle XML DB access.
Como configurar?

Execute o comando abaixo para configurar a porta do FTP:

[oracle@oraclerac01 ~]$ sqlplus / as sysdba @catxdbdbca 10021 10080

Explicação

Acima, executamos um script chamado catxdbdbca com dois parâmetros.
O primeiro informa qual a porta será tratada pelo processo de FTP e a segunda qual porta será tratada pelo processo HTTP.
OBS: Este script utiliza functions e pacotes do próprio oracle para controlar a gravação e leitura de arquivos.

Uma vez executado este script, execute o lsnrctl status e observe duas entradas RAW novas.

[oracle@oraclerac01 ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 09-OCT-2012 17:09:20

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                06-SEP-2012 17:57:12
Uptime                    32 days 23 hr. 12 min. 8 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/11.2.0/grid/network/admin/listener.ora
Listener Log File         /u01/app/grid/diag/tnslsnr/oraclerac01/listener/
alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XX.XX.XX.XX)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XX.XX.XX.XY)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XX.XX.XX.XX)(PORT=10021))
(Presentation=FTP)(Session=RAW))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XX.XX.XX.XX)(PORT=10080))
(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "+ASM" has 1 instance(s).
...

Utilizando a conexão FTP

E como adicionar ou remover um arquivo no ASM?

Conecte via ftp no servidor usando a porta fornecida como parâmetro no script anterior:

[oracle@oraclerac01 ~]$ ftp localhost 10021
Connected to localhost (127.0.0.1).
220- oraclerac01.local 
Unauthorised use of this FTP server is prohibited and may be subject to civil and criminal prosecution.
220 oraclerac01.local FTP Server (Oracle XML DB/Oracle Database) ready.
Name (localhost:oracle): dartanghan
331 pass required for DARTANGHAN
Password:
230 DARTANGHAN logged in
Remote system type is Unix.
ftp> ls
227 Entering Passive Mode (10,178,217,245,5,68)
150 ASCII Data Connection
drw-r--r--   2 SYS      oracle         0 JUN 09 19:31 public
drw-r--r--   2 SYS      oracle         0 JUN 09 19:32 sys
-rw-r--r--   1 SYS      oracle         0 OCT 09 16:57 xdbconfig.xml
226 ASCII Transfer Complete

Os arquivos ASM ficam dentro da pasta /sys/asm

ftp> cd /sys/asm
250 CWD Command successful
ftp> ls
227 Entering Passive Mode (10,178,217,245,124,73)
150 ASCII Data Connection
drw-r--r--   2 SYS      oracle         0 OCT 09 17:00 UNDO
drw-r--r--   2 SYS      oracle         0 OCT 09 17:00 SYS
drw-r--r--   2 SYS      oracle         0 OCT 09 17:00 OCR
drw-r--r--   2 SYS      oracle         0 OCT 09 17:00 INDX
drw-r--r--   2 SYS      oracle         0 OCT 09 17:00 DATA
drw-r--r--   2 SYS      oracle         0 OCT 09 17:00 ARCH
226 ASCII Transfer Complete

Mas cuidado, o usuário do FTP deve ser um usuário do BANCO DE DADOS e não so sistema operacional!

Para ter permissão de gravação e e leitura na pasta sys, você precisará de GRANTs. Eu normalmente atribuo DBA e removo após a atividade.

Pronto!

Agora é só usar os comandos mput e mget e resolver todos os problemas 🙂

Abraço!

Deixe uma resposta