O Oracle Database 10g Release 1 introduziu o Automatic Storage Management (ASM), uma nova estrutura para gerenciar arquivos de banco de dados Oracle. O ASM fornece uma base para gerenciamento de armazenamento altamente eficiente com E / S direta, redundância, striping e balanceamento de carga. Os arquivos armazenados no ASM são distribuídos uniformemente pelos discos em um grupo de discos e espelhados de acordo com as políticas definidas no grupo de discos. Como o ASM fornece uma maneira fácil e altamente eficiente de gerenciar o armazenamento, ele é o sistema de arquivos recomendado para armazenar arquivos de banco de dados para RAC, bem como bancos de dados de instância única.
Os seguintes tipos de arquivos de banco de dados podem ser armazenados em grupos de discos do ASM:
- Control files
- Datafiles, temporary datafiles, and datafile copies
- SPFILEs
- Online redo logs, archive logs, and Flashback logs
- RMAN backups
- Disaster recovery configurations
- Change tracking bitmaps
- Data Pump dumpsets
Para aproveitar o ASM com um banco de dados existente usando armazenamento não-ASM, todo ou parte do banco de dados precisa ser migrado para o ASM. Comandos nativos do sistema operacional, como o Linux cp ou o Windows COPY, não podem gravar ou ler arquivos no armazenamento do ASM. A Oracle fornece os seguintes meios para acessar e manipular arquivos ASM:
Oracle Recovery Manager (RMAN): O método preferido para backup e recuperação de bancos de dados contidos no ASM. O RMAN também pode ser usado para migrar bancos de dados não-ASM existentes para o ASM.
ASMCMD: A interface da linha de comandos do ASM é usada para interrogar e gerenciar o ASM. Ele inclui muitos comandos semelhantes ao UNIX que podem ser usados para gerenciar os arquivos e diretórios em um sistema ASM.
XML DB: Os arquivos e diretórios do ASM podem ser acessados por meio de uma pasta virtual no repositório XML DB. O XML DB fornece um meio de acessar e manipular os arquivos e diretórios do ASM com APIs programáticas, como o pacote DBMS_XDB e com serviços de protocolo XML DB, como FTP e HTTP / WebDAV.
DBMS_FILE_TRANSFER: O pacote DBMS_FILE_TRANSFER fornece procedimentos para:
- Copie arquivos ASM dentro de um banco de dados
- Transferir arquivos binários em qualquer direção entre uma instância local do ASM e um arquivo de banco de dados remoto
- Transferir todas as combinações envolvendo ASM e / ou sistema de arquivos local, a saber:
o Local file system to local file system
o Local file system to ASM
o ASM to local file system
o ASM to AS
Neste artigo, descreverei as etapas necessárias para migrar um banco de dados Oracle existente armazenado no sistema de arquivos local para o ASM usando RMAN. Isso incluirá todos os arquivos de dados, tempfiles, arquivos de redo log on-line, arquivos de controle e o SPfile.
Pré-requisitos
Oracle Grid instalado com os discos configurados no ASM
[oracle@+ASM oracle]$ crsctl status res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.DATA.dg ONLINE ONLINE db1-fs4 STABLE ora.LISTENER.lsnr ONLINE ONLINE db1-fs4 STABLE ora.asm ONLINE ONLINE db1-fs4 STABLE ora.ons OFFLINE OFFLINE db1-fs4 STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.cssd 1 ONLINE ONLINE db1-fs4 STABLE ora.diskmon 1 OFFLINE OFFLINE STABLE ora.evmd 1 ONLINE ONLINE db1-fs4 STABLE -------------------------------------------------------------------------------- sqlplus / as sysasm COL NAME FORMAT A10; COL PATH FORMAT A30; SELECT MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,TOTAL_MB,FREE_MB,NAME,PATH,LABEL FROM V$ASM_DISK; MOUNT_S HEADER_STATU MODE_ST STATE TOTAL_MB FREE_MB NAME PATH LABEL ------- ------------ ------- -------- ---------- ---------- ---------- ------------------------------ ------------- CACHED MEMBER ONLINE NORMAL 5116 5064 DATA01 ORCL:DATA01 DATA01 CACHED MEMBER ONLINE NORMAL 5116 5056 DATA02 ORCL:DATA02 DATA02 COL COMPATIBILITY FORMAT A10; SELECT NAME,STATE,TYPE,TOTAL_MB,FREE_MB,COMPATIBILITY,OFFLINE_DISKS FROM V$ASM_DISKGROUP; NAME STATE TYPE TOTAL_MB FREE_MB COMPATIBILITY OFFLINE_DISKS ------ ----------- ------ ---------- ---------- -------------- ------------- DATA MOUNTED EXTERN 10232 10120 12.2.0.1.0 0
Verificando os Discos e Serviços
Determine os nomes dos arquivos de controle, os arquivos de dados e os redo logs on-line, conforme existirem no sistema de arquivos local para o banco de dados ORCL. Todos os arquivos listados serão realocados do sistema de arquivos local para o ASM:
select name from v$datafile; NAME ---------------------------- /u02/ORCL/system01.dbf /u02/ORCL/sysaux01.dbf /u02/ORCL/undotbs01.dbf /u02/ORCL/users01.dbf /u02/ORCL/ts_dados01 /u02/ORCL/ts_indice01 /u02/ORCL/ts_maxima01.dbf /u02/ORCL/ts_mat01.dbf select name from v$controlfile; NAME -------------------------------------------------------- /u02/ORCL/control01.ctl /u01/app/oracle/fast_recovery_area/ORCL/control02.ctl select member from v$logfile; MEMBER -------------------- /u02/ORCL/redo03.log /u02/ORCL/redo02.log /u02/ORCL/redo01.log select name from v$tempfile; NAME --------------------- /u02/ORCL/temp01.dbf show parameter spfile; NAME TYPE VALUE ------------------------------------ ----------- ----------------------------------------------- spfile string /u01/app/oracle/12.2.0.1/db1/dbs/spfileORCL.ora
Etapas para migração
Acesse o banco de dados e altere os seguintes parâmetros
sqlplus / as sysdba alter system set DB_CREATE_FILE_DEST = '+DATA' SCOPE=SPFILE; alter system set CONTROL_FILES = '+DATA' SCOPE=SPFILE; shutdown immediate; Nota: DB_CREATE_FILE_DEST especifica o local padrão para arquivos de dados gerenciados pelo Oracle. Esse local também é usado como local padrão para arquivos de controle gerenciados pelo Oracle e redo logs on-line se nenhum dos parâmetros de inicialização DB_CREATE_ONLINE_LOG_DEST_n não for especificado.
Inicializar o banco de dados ORCL no modo NOMOUNT
rman target / startup nomount;
Conecte-se ao Rman para copiar o controlfile do sistema de arquivos local para o ASM Diskgroup “+DATA”
restore controlfile from '/u02/ORCL/control01.ctl';
Connect to SQL*Plus and mount the database
alter database mount; select name from v$crontolfile; NAME -------------------------------------------- +DATA/ORCL/CONTROLFILE/current.258.1009200779
Conecte-se à sessão do RMAN para copiar os arquivos do banco de dados do sistema de arquivos local para o ASM Diskgroup “+DATA”
backup as copy DATABASE format '+DATA';
Atualizar o arquivo de controle e dicionário de dados para os arquivos de banco de dados apontarem para o grupo de discos ASM “+DATA”
SWITCH DATABASE TO COPY; select name from v$datafile;
Mover Tempfile para o grupo de discos ASM “+DATA”
run { set newname for tempfile '/u02/ORCL/temp01.dbf' to '+DATA'; switch tempfile all; } alter database open; select name from v$tempfile;
Recriar os arquivos de log redo on-line para ASM Diskgroup “+DATA”
select group#, status from v$log; GROUP# STATUS ———- —————- 1 INACTIVE 2 CURRENT 3 INACTIVE (Nota: Só deletar grupos com status Inactive ou Unused) SQL> select member from V$logfile; MEMBER —————————————– /u02/ORCL/redo03.log /u02/ORCL/redo02.log /u02/ORCL/redo01.log alter database drop logfile group 1; alter database add logfile group 1 size 50m; alter database drop logfile group 3; alter database add logfile group 3 size 50m; alter system switch logfile; alter system checkpoint; alter database drop logfile group 2; alter database add logfile group 2 size 50m; select member from V$logfile; MEMBER ——————————————————————————– +DATA/orcl/onlinelog/group_3.291.978519961 +DATA/orcl/onlinelog/group_2.293.978519999 +DATA/orcl/onlinelog/group_1.289.978519919 +DATA/orcl/onlinelog/group_1.290.978519921 +DATA/orcl/onlinelog/group_3.292.978519961 +DATA/orcl/onlinelog/group_2.294.978520001
Referências bibliográficas
ASM Concepts
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/ostmg/index.html
CRSCTL
SRVCTL Reference
Rman Concepts
https://docs.oracle.com/database/121/BRADV/rcmcncpt.htm#BRADV89490
Switch Command
https://docs.oracle.com/database/121/RCMRF/rcmsynta2021.htm#RCMRF159