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!