===============================================================================================
Roteiro resumido
00- Pedir backup para a equipe responsável para manter por uma semana dos arquivos do filesystem, (Caso for possível)
1 - Instalar os binários do 12c com novo oracle_home
2 - ATUALIZAR PRIMEIRO O GRID PARA 12.1.0.2.0 (verificar documentação da Oracle)
3 - atualizar banco para 12c , incluir steps para RAC (já neste procedimento)
===============================================================================================
===============================================================================================
****************************************************************************************************
1 - Instalar os binários do 12c com novo oracle_home - PRÉ UPGRADE
****************************************************************************************************
usuário ORACLE
0.0) PEGAR O STATUS DOS OBJETOS INVÁLIDOS ANTES DO UPGRADE E GUARDAR COMO EVIDÊNCIA
To show the current state of the dictionary, execute a SQL query similar to the following example:
SQL>
spool /tmp/regInvalid_pre_upgrade.out
set echo on
-- query registry
col COMP_NAME format a60
col COMP_ID format a20
set lines 100 pages 200
select substr(comp_id,1,15) comp_id,substr(comp_name,1,30)
comp_name,substr(version,1,10) version,status
from dba_registry order by modified;
To query invalid objects, execute a SQL query similar to:
SQL> select substr(owner,1,12) owner,substr(object_name,1,30) object,substr(object_type,1,30) type, status
from dba_objects where status <> 'VALID'order by owner, type;
SQL> spool off
SQL> set echo off
*******************************************************
PRÉ UPGRADE:
*******************************************************
0.0-->>>- Criar um ponto de restauração do banco antes do upgrade caso desejar:
CREATE RESTORE POINT grpt_bf_upgr GUARANTEE FLASHBACK DATABASE;
--Depois de criado o ponto de restauração, checar com a query abaixo:
SELECT * FROM V$RESTORE_POINT where name = 'GRPT_BF_UPGR';
Dropar o ponto de restauração após o upgrade com sucesso
DROP RESTORE POINT GRPT_BF_UPGR;
1)run pre-upgrade script: (4.1.2. Pre-Upgrade Information Tool) - vai salvar o arquivo de spool no arquivo upgrade_info.log no /home/oracle
cd $ORACLE_HOME/rdbms/admin/
sqlplus / as sysdba
SPOOL upgrade_info.log
@utlu121i.sql;
--REVISAR AS INFORMAÇÕES PRÉ UPGRADE PARA TOMAR AS AÇÕES NECESSÁRIAS
2) Checar as roles de conexão (Verificar se algum usuário irá precisar do "create session")
SELECT grantee FROM dba_role_privs
WHERE granted_role = 'CONNECT' and
grantee NOT IN (
'SYS', 'OUTLN', 'SYSTEM', 'CTXSYS', 'DBSNMP',
'LOGSTDBY_ADMINISTRATOR', 'ORDSYS',
'ORDPLUGINS', 'OEM_MONITOR', 'WKSYS', 'WKPROXY',
'WK_TEST', 'WKUSER', 'MDSYS', 'LBACSYS', 'DMSYS',
'WMSYS', 'EXFSYS', 'SYSMAN', 'MDDATA',
'SI_INFORMTN_SCHEMA', 'XDB', 'ODM');
3)Verificar permissões para usar: UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP, and UTL_INADDR
select distinct (privilege) from all_tab_privs;
4) Verificar se os refreshs de MVIEWS COMPLETARAM - AGUARDAR O FIM
SELECT * FROM sys.obj$ o, sys.user$ u, sys.sum$ s
WHERE o.type# = 42 AND bitand(s.mflags, 8) = 8;
5)Certificar que nenhum arquivo necessita de recuperação de mídia
SELECT * FROM v$recover_file;
6)Certificar que não há arquivos em modo backup
SELECT * FROM v$backup WHERE status != 'NOT ACTIVE';
7)efetuar um purge na Recycle Bin
PURGE dba_recyclebin;
*******************************************************
INÍCIO DO UPGRADE:
*******************************************************
fazer o upload o instalador e rodar o instalador
- Instalar os binários do ORACLE 12C no diretório criado (verificar postagem de upgrade de single instance:
/home/oracle
unzip linuxamd64_12102_database_1of2.zip
unzip linuxamd64_12102_database_2of2.zip
irá criar a pasta database, entrar nela e rodar o instalador
cd database
HOSTNAME[oracle] ~/database $ pwd
/home/oracle/database
HOSTNAME[oracle] ~/database $ ls
install response rpm runInstaller sshsetup stage welcome.html
HOSTNAME[oracle] ~/database $
Rodar o instalador dos binários do oracle database
./runInstaller
[oracle@HOSTNAME:/u01/app/oracle/orainstall/12.1.0.2/database] $ ls
install readme.html response rpm runInstaller sshsetup stage welcome.html
>>>> rodar o instalador e selecionar atualizar um banco existente- alterar o caminho do software location de 11.0.4 para 12.0.1
o novo ORACLE_HOME irá ficar como:
/u01/app/oracle/product/12.1.0.2/db_1
Exemplo da configuração do bash_profile:
NPAA1495[oracle] ~ $ env | grep ora
USER=oracle
LD_LIBRARY_PATH=/u01/app/oracle/product/12.1.0.2/db_1/lib:/lib:/usr/lib
ORACLE_BASE=/u01/app/oracle
MAIL=/var/spool/mail/oracle
PATH=/u01/app/oracle/product/12.1.0.2/db_1/bin:/usr/sbin:/usr/local/bin:/bin:/usr/bin:/home/oracle/bin
PWD=/home/oracle
DIAGNOSTIC_DEST=/u01/app/oracle
HOME=/home/oracle
LOGNAME=oracle
CLASSPATH=/u01/app/oracle/product/12.1.0.2/db_1/jlib:/u01/app/oracle/product/12.1.0.2/db_1/rdbms/jlib
ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_1
8)UPGRADE manualmente
>>>> NÃO REQUERIDO Atualizar a package caso necessário yum update nome_da_package, caso o instalador solicitar.
8.1)backup
8.2)copiar parâmetros do banco para novo dbs (NOVO DBS: /u01/app/oracle/product/11.2.0.4/db_1/dbs) para /u01/app/oracle/product/12.1.0.2/db_1/dbs/
8.3)criar backup do spfile (por segurança, nas duas instâncias RAC)
cd $ORACLE_HOME/dbs
/u01/app/oracle/product/11.2.0.4/db_1/dbs
[oracle@HOSTNAME:/u01/app/oracle/product/11.2.0.4/db_1/dbs] $ ls
hc_NOME_INSTANCIA_RAC_A.dat initNOME_INSTANCIA_RAC_A.ora initNOME_INSTANCIA_RAC_A.ora.bkp orapwNOME_INSTANCIA_RAC_A
cp * /u01/app/oracle/product/11.2.0.4/db_1/dbs/ /u01/app/oracle/product/12.1.0.2/db_1/dbs/ --(fazer backup antes da cópia dos arquivos do dbs no oracle 12)
----------------------------ou ---------------------------
SQL> SHOW PARAMETER SPFILE;
spfile string /u01/app/oracle/product/11.2.0.4/db_1/dbs/spfileDB11G.ora
SQL> create pfile='/tmp/spfileDB11GBKP1.ora' from spfile;
8.4)Baixar o banco (as duas instâncias rac):
SQL> shutdown immediate;
8.4.1) SOLICITAR O BACKUP DOS FILESYSTEMS APÓS BAIXAR AS INSTÂNCIAS DE RAC E GRID (NOME_INSTANCIA_A/NOME_INSTANCIA_B e GRID):
<<<<<<<<<<<<< ATENÇÃO para o BACKUP A SOLICITAR caso necessário>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
SOLICITAR O BACKUP DOS FILESYSTEMS APÓS BAIXAR OS BANCOS
************************************************************************************************************
************************************************************************************************************
OBS: como é RAC, colocar o parâmetro cluster_database to false antes do upgrade e depois mover para true
VERIFICAR O DOCUMENTO
112030_to_112043_upgrade_release_aplicacao_PSU.pdf - PÁGINA 6
link do documento caso tiver dúvida:
http://dbafurushima.com.br/112030_to_112043/112030_to_112043_upgrade_release_aplicacao_PSU.pdf
o arquivo encontra-se em
oracle@HOSTNAME:
cd /u01/app/oraInventory/ContentsXML
/u01/app/oraInventory/ContentsXML
************************************************************************************************************
************************************************************************************************************
subir o banco e salvar o pfile
8.5)configurar oratab e ORACLE_HOME -- depois, verificar se usa ORATAB na incialização
--checar o BASH_PROFILE
env | grep ORA
copiar os parâmetros do arquivo
editar com o novo ORACLE_HOME (VERIFICAR ABAIXO:)
vi .bash_profile
fazer a edição de:
ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db_1
para o novo oracle home:
ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_1
salvar com o comando abaixo:
. .bash_profile
SINTAXE:
/u01/app/oracle/product/12.1.0.2/db_1/scripts/oraenv.sh
8.5.1) copiar arquivos $ORACLE_HOME/dbs antigo para o novo HOME (ARQUIVOS DE CONFIGURAÇÃO DO BANCO - PFILE e arquivos de senha)--
-------executar somente caso o user/grupo estiver fora do padrão conforme abaixo, conforme a documentação da oracle: --------
8.6)4.If there is a different user and group for Grid Infrastructure and Oracle Database, then run the setasmgidwrap script,
which is located in the GRID_HOME/bin directory, against the new ORACLE_HOME/bin/oracle directory with the -o option as shown in the following example:
$GRID_HOME/bin/setasmgidwrap o=ORACLE_HOME/bin/oracle
-------fim executar somente caso o user/grupo estiver fora do padrão conforme abaixo:--------
8.7)ATENÇÃO - navegar para
cd $ORACLE_HOME/rdbms/admin <<<<<<<<<<<============
8.8) Startar o banco em modo upgrade
SQL> STARTUP UPGRADE;(http://docs.oracle.com/cd/E11882_01/server.112/e23633/upgrade.htm)
8.9) gerar o upgrade.log e
SQL>SPOOL upgrade.log
8.9) EXECUTAR executar o script catupgrd.sql,que é o que efetivamente faz o upgrade do banco:
SQL>@catupgrd.sql
Obs: LEVA EM MÉDIA 40 MINUTOS A UMA HORA DEPENDENDO DA INSTÂNCIA
obs: Atenção para caso necessitar reverter a partir daqui:
If you receive any of these errors, issue the SHUTDOWN ABORT statement, revert to the original Oracle home directory, and run the Pre-Upgrade Information Tool (utlu112i.sql)
as described in "Using the Pre- Upgrade Information Tool".
8.10) Restart the instance to reinitialize the system parameters for normal operation.
obs:the database shutdown performed as part of the catupgrd.sql script
(OBS, O BANCO ESTARÁ EM SHUTDOWN DEVIDO AO SCRIPT ANTERIOR, NECESSÁRIO FAZER O STARTUP)
SQL>startup;
8.11) EXECUTAR @utlu112s.sql
SQL>@utlu121s.sql;
(15.Run utlu112s.sql, the Post-Upgrade Status Tool, which provides a summary of the upgrade at the end of the spool log)
8.12) 16.Run catuppst.sql to perform upgrade actions that do not require the database to be in UPGRADE mode
SQL>@catuppst.sql;
8.13) 17.Run utlrp.sql para recompilar os objetos stored PL/SQL and Java code.(AGUARDAR ATÉ O FIM DA RECOMPILAÇÃO) <<<<<<<<<<<============
SQL>@utlrp.sql;
8.14) Verify that all expected packages and classes are valid:
SELECT count(*) FROM dba_invalid_objects;
SELECT distinct object_name FROM dba_invalid_objects;
8.15)configurar oratab e ORACLE_HOME -- depois -- >> caso houver na inicialização, é necessário configurar os parametros e configurar com o novo ORACLE_HOME
cat/etc/oratab
8.16)19.If you are upgrading a cluster database from releases 10.2, 11.1, or 11.2, then upgrade the database configuration in Oracle Clusterware using the following command:
srvctl upgrade database -d db-unique-name -o oraclehome
usar a sintaxe abaixo para atualizar o banco para a nova versão
srvctl upgrade database -d DATABASE_UNIQUE_NAME -o /u01/app/oracle/product/12.1.0.2/db_1
exemplo: o database_unique_name é orcl, então:
srvctl upgrade database -d orcl -o /u01/app/oracle/product/12.1.0.2/db_1
Para identificar o nome do database_unique_name, usar o comando abaixo:
srvctl config database -d
EXEMPLO DE SAÍDA:
HOSTNAME[oracle] ~ $ srvctl config database
orcl
HOSTNAME[oracle] ~ $
8.17 - VOLTAR O PARÂMETRO cluster_database para false
*******************************************************
PÓS UPGRADE:
*******************************************************
9) POST-UPGRADE TASKS
9.1)To show the current state of the dictionary, execute a SQL query similar to the following example:
SQL>
spool /tmp/regInvalid.out
set echo on
-- query registry
set lines 80 pages 100
select substr(comp_id,1,15) comp_id,substr(comp_name,1,30)
comp_name,substr(version,1,10) version,status
from dba_registry order by modified;
To query invalid objects, execute a SQL query similar to:
SQL> select substr(owner,1,12) owner,substr(object_name,1,30) object,substr(object_type,1,30) type, status
from dba_objects where status <> 'VALID'order by owner, type;
SQL> spool off
SQL> set echo off
---------compilando o objeto inválido (exemplo, apareceu o WMSYS.LTADM) :
alter package WMSYS.LTADM compile; (checar o owner do objeto inválido)
9.2) Atualizar o catálogo do rman
rman target /
UPGRADE CATALOG;
9.3) Create Password File with ORAPWD (If the REMOTE_LOGIN_PASSWORDFILE initialization parameter is set to either exclusive or shared, create a password file with ORAPWD.)
navegar no $ORACLE_HOME/dbs e fazer um backup do ORAPWD E criar outro através do comando
UNIX syntax:
orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=the_secret_password
UNIX exemplo: (checar o home do DBS), não precisa usar o parâmetro password, então:
orapwd file=/u01/app/oracle/product/11.2.0/db_1/dbs/Nome_arquivo_passwd
password=SENHA_DO_SYS
SQL> show parameter REMOTE_LOGIN_PASSWORDFILE;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string EXCLUSIVE
SQL>
Users NO SERVIDOR com perfil de dba:
SQL> select *from v$pwfile_users;
USERNAME SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS TRUE TRUE FALSE
USER1 TRUE FALSE FALSE
USERN TRUE FALSE FALSE
.........
SQL>
--------quando acabar a migração dos dois bancos, verificar o oratab
8.15)configurar oratab e ORACLE_HOME -- depois -- >> verificar se usa oratab - copiar os parametros e configurar com o novo ORACLE_HOME
cat/etc/oratab
Conteúdo do oratab:
HOSTNAME[root] ~ # cat /etc/oratab
#Backup file is /u01/app/oracle/product/11.2.0/db_2/srvm/admin/oratab.bak.HOSTNAME line added by Agent
#
# This file is used by ORACLE utilities. It is created by root.sh
# and updated by the Database Configuration Assistant when creating
# a database.
# A colon, ':', is used as the field terminator. A new line terminates
# the entry. Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
# $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively. The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
+ASM1:/u01/app/grid/product/11.2.0.4/grid_infra_1:N # line added by Agent
*:/u01/app/oracle/product/11.1.0/agent_1/agent11g:N
DATABASE_UNIQUE_NAME:/u01/app/oracle/product/11.2.0/db_2:N # line added by Agent
HOSTNAME[root] ~ #
9.4) Upgrade Oracle Text caso necessário (VERIFICAR DOCUMENTAÇÃO DA ORACLE)
*****************************************************************
--PROBLEMAS PREVISTOS:
*****************************************************************
listener - caso precisar editar (configuração atual):
ou copiar o tnsnames.ora para o novo oracle_home
o novo estará em:
/u01/app/oracle/product/12.1.0.2/db_1/network/admin
depois que configurar, opcional fazer o reload do listener
lsnrctl reload listener
cd $ORACLE_HOME/network/admin
LISTENER_ORCL_O =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = NOME_INSTANCIA_B.DOMAIN.com.br)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent
SID_LIST_LISTENER_ORCL_O=
(SID_LIST=
(SID_DESC=
(SID_NAME=NOME_INSTANCIA_RAC_A)
(GLOBAL_DBNAME=DATABASE_UNIQUE_NAME.DOMAIN.com.br)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_2)
)
)
[oracle@HOSTNAME:/u01/app/oracle/product/11.2.0/db_2/network/admin] $
Bem, é isso.
Lembrando que este procedimento não é oficial e posso dizer que, desculpem a dureza nas palavras: o uso é por sua conta e risco e não posso me responsabilizar por seus atos ou resultados provindas da execução do mesmo.
Reforço que quando houver dúvidas, sempre consultem na documentação oficial para ter segurança na execução de qualquer atividade.
Sempre digo que oracle não é para curiosos, mas a documentação na internet e principalmente no site do fabricante é muito abrangente e considero um mundo fantástico !!
Este procedimento eu testei e ao menos para mim deu certo, durante meu trabalho.
Caso encontrem erros, críticas e sugestões serão sembre bem vindas.
Sucesso a todos !!!
Nenhum comentário:
Postar um comentário