sexta-feira, 20 de fevereiro de 2015

Movendo o Banco de Dados Windows 11gR2 (source) para Oracle Linux 12c (target).

No Post anterior (http://alecordeirosilva.blogspot.com.br/2015/02/instalacao-do-software-do-banco-de.html), foi apresentado a instalação do software Oracle 12c no Linux, neste será apresentado a migração do banco 11g em Windows para o 12c.

No banco source logue e realize a consulta abaixa para confirmação que é possivel realizar o upgrade direto, pois dependendo do S.O a ser migrado é preciso realizar alguns passos a mais para conversão.


1 - Coloque no estado Mount o banco de dados source e faça um backup limpo.

C:\>sqlplus /nolog
SQL> connect sys/senha@bdagnus as sysdba
Conectado.
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database open read only;
SQL> exit;

C:\>rman target sys/senha@bdagnus nocatalog

rman> run { allocate channel discozero type disk format
'C:\BCK_AGNUS\BCK/%d%T_%s.bkp'; 
backup incremental level = 0 (database include current controlfile);}

2-Criar um pfile para o banco de dados target.

rman>exit;
C:\>sqlplus /nolog
SQL> connect sys/senha@bdagnus as sysdba
Conectado.
SQL> create pfile='c:\BCK_AGNUS\initbdagnus.ora' from spfile;


3- Configure o pfile e as pastas linux para restaurar o ControlFile.

Edit o arquivo pfile para o padrão linux, como no exemplo abaixo:

*.audit_file_dest='/u01/app/oracle/admin/cdbagnus/adump'
*.control_files='/u01/app/oracle/oradata/cdbagnus/controlfile/control01.ctl'
*.db_name='BDAGNUS'
*.diagnostic_dest='/u01/app/oracle/'

Abra uma sessão no putty com usuario oracle e crie as pastas necessárias.

[oracle@LXAGNUS ~] cd /u01/app/oracle/
[oracle@LXAGNUS ~] mkdir -p admin/cdbagnus/adump
[oracle@LXAGNUS ~] mkdir -p oradata/cdbagnus/controlfile/

4- Mount o compartilhamento do Windows para ter acesso aos backups.

[root@LXAGNUS ~] mount -t cifs -o username=usuario,password=senha //192.168.56.1/bck_agnus /mnt

5- Inicie a Instância no modo nomount

[oracle@LXAGNUS ~] sqlplus / as sysdba
SQL> startup nomount pfile='/mnt/initbdagnus.ora';

6- Restore o ControlFile.

Logue no Rman e restore o controlfile lendo o backup feito no Windows. O backup é composto por dois arquivos, o menor é o backup do controlfile.

[oracle@LXAGNUS ~] rman target /
RMAN> restore controlfile from '/mnt/BCKBDAGNUS20150210_47.BKP';
RMAN> alter database mount;

7-Catalogue o backup no servidor Linux.

Rman> crosscheck backup;
Rman> delete expired backup;
Rman> Catalog start with '/mnt/bck_agnus/';

8-Restaurar o Banco de dados.

Rman > sql 'ALTER SYSTEM SET DB_CREATE_FILE_DEST="/u01/app/oracle/oradata/cdbagnus"';
Rman > run {set newname for database to NEW;
                        restore database;
                        switch datafile all;
                        recover database; }

9-Abrir o Banco de dados com resetlogs.

Rman > exit;
[oracle@LXAGNUS ~]sqlplus / as sysdba
SQL> Select member from v$logfile ;

MEMBER
---------------------------------
C:\APP\ALESSANDRO\ORADATA\BDAGNUS\ONLINELOG\REDO01.LOG
C:\APP\ALESSANDRO\ORADATA\BDAGNUS\ONLINELOG\REDO02.LOG
C:\APP\ALESSANDRO\ORADATA\BDAGNUS\ONLINELOG\REDO03.LOG

SQL> alter database rename file 'C:\APP\ALESSANDRO\ORADATA\BDAGNUS\ONLINELOG\REDO01.LOG' TO '/u01/app/oracle/oradata/cdbagnus/onlinelog/redo01.log';

SQL> alter database rename file 'C:\APP\ALESSANDRO\ORADATA\BDAGNUS\ONLINELOG\REDO02.LOG' TO '/u01/app/oracle/oradata/cdbagnus/onlinelog/redo02.log';

SQL> alter database rename file 'C:\APP\ALESSANDRO\ORADATA\BDAGNUS\ONLINELOG\REDO03.LOG' TO '/u01/app/oracle/oradata/cdbagnus/onlinelog/redo03.log';

SQL> alter database open resetlogs upgrade;

10- Criar a tablespace Temp.

SQL>create temporary tablespace temp2 tempfile '/u01/app/oracle/oradata/cdbagnus/oradata/TEMP.dbf' size 1G;
SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2;
SQL>drop tablespace temp;
SQL>ALTER TABLESPACE temp2 RENAME TO temp;

11-Chamar o catupgrd para realizar o upgrade do Banco 11g para 12c. 

SQL> exit;
[oracle@LXAGNUS ~]$ORACLE_HOME/perl/bin/perl catctl.pl -n 4 catupgrd.sql

12 - Aguardar a execução, a saida será algo do tipo:

Analyzing file catupgrd.sql  
Serial   Phase #: 0 Files: 1      Time: 340s  
Serial   Phase #: 1 Files: 3      Time: 147s  
Restart  Phase #: 2 Files: 1      Time: 3s  
Parallel Phase #: 3 Files: 18     Time: 41s  
Restart  Phase #: 4 Files: 1      Time: 0s  
... 

Após a execução o seu banco de dados foi migrado do 11g Windows para o Oracle 12C Linux.

Instalação do Software do Banco de Dados Oracle 12c em Linux

Neste artigo será descrito o processo de instalação do software de Banco de Dados 12c no ambiente Linux que foi preparado no artigo anterior - "Instalação do Oracle Linux para Banco de Dados Oracle".

Nos próximos artigos, serão apresentados a migração do Oracle 11g em Windows para o 12c e depois a conversão de uma Banco de Dados padrão para um Pluggable Data Base, recurso novo no 12c, mas muito semelhante com o detach e attach do SQL Server.

Diretrizes:
  • Já ter o S.O Oracle Linux devidamente instalado para o Oracle;
  • Siga os passos em http://alecordeirosilva.blogspot.com.br/2014/08/instalacao-do-oracle-linux-para-banco.html para instalar o S.O da Oracle.

Passos:
1-Com usuário ROOT, crie as pasta da Instância, neste caso o nome será BDAGNUS;

[root@OLXAGNUS ~]# mkdir -p /u01/app/oracle/product/12.1.0.2/cdbagnus
[root@OLXAGNUS ~]# chown -R oracle:oinstall /u01/app/oracle
[root@OLXAGNUS ~]# chmod -R 775 /u01/app/oracle

2-Com usuário Oracle, adicione as variáveis de ambiente no arquivo .bash_profile. Neste exemplo o SID vai ter o mesmo nome do servidor do Windows.

[root@OLXAGNUS ~]# su - oracle
[oracle@OLXAGNUS ~]$ vi .bash_profile

ORACLE_BASE=/u01/app/oracle;  export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/
12.1.0.2/cdbagnus;  export ORACLE_HOME
ORACLE_SID=BDAGNUS; export ORACLE_SID
PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH


3 - Faça o download do Software Oracle, a versão usada é o 12.1.0.2.0.

Foram baixados os arquivos "p17694377_121020_Linux-x86-64_1of8.zip", "p17694377_121020_Linux-x86-64_2of8.zip", "p17694377_121020_Linux-x86-64_3of8.zip" e "p17694377_121020_Linux-x86-64_4of8.zip" no Windows onde esta instalado o Oracle 11g na pasta compartilhada "Instaladores".

Descompacte junto os 4 arquivos, você terá duas pasta, a "database" e o "grid". Neste cenário será usado somente a pasta "database".

4 - Abra o terminal Putty com Xming, logando com usuário root e monte o compartilhamento Windows.

[root@LXAGNUS ~]# mount -t cifs -o username=usuario,password=senha //192.168.56.1/Instaladores /mnt

Com usuario oracle vá até o diretorio onde se encontra a pasta "database".

[root@LXAGNUS ~]# su - oracle
[oracle@LXAGNUS ~]$ cd /mnt/Oracle/Linux/12.1.0.2/database

5- Logue no Putty com usuário Oracle e Execute o instalador.
[oracle@LXAGNUS ~]$ ./runInstaller

6- Siga os passos da imagens para instalar o somente o Software.












Neste momento, abra um novo terminal como root e execute os script solicitado pelo instalador.

[root@LXAGNUS ~]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@LXAGNUS ~]# /u01/app/oracle/product/12.1.0.2/cdbagnus/root.sh
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/12.1.0.2/cdbagnus

Enter the full pathname of the local bin directory: [/usr/local/bin]:
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
[root@LXAGNUS ~]#

Pronto, já termos o Software Oracle 12c instalado, no próximo artigos, será apresentado a restauração do backup do 11g Windows neste novo ambiente.