quinta-feira, 22 de dezembro de 2016

Memória do banco Oracle

O max_target tem que ser maior que o memory_target
alter system set memory_max_target=20G scope=both; ou scope=spfile
alter system set memory_target=17G scope=both;

Restartar a instância e ver o parâmetro de memória

SQL> show parameter memory

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address             integer     0
memory_max_target                    big integer 1G
memory_target                        big integer 1G
shared_memory_address                integer     0

terça-feira, 13 de setembro de 2016

Export - Import resumido

Passos para o export e import no oracle - Resumo pessoal

1 - identificar as tablespaces de origem e destino

select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME like 'nome_schema_origem';
TABLESPACE_OWNER_ORIGEM

select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME like 'nome_schema_destino';
TABLESPACE_OWNER_DESTINO

2 - checar na origem e destino o diretório do oracle
select *from dba_directories - irá gerar no nome do diretório, no nosso caso DIR_EXP

3 - FAZER O EXPORT NA ORIGEM e backup no destino:
expdp user_dba schemas=nome_schema_origem directory=DIR_EXP dumpfile=exp_nome_owner_origem.dmp logfile=exp_nome_owner_origem.log

4 - se necessário fazer o scp para outro servidor:
scp /u01/app/oracle/admin/local_do_dump oracle@host_destino:/u01/app/oracle/admin/local_destino_do_dump/exp_nome_owner_origem.dmp


5 - fazer a limpeza do schema destino (fazer o backup antes, conforme o item 3)

select 'drop '|| object_type || ' nome_schema_destino.' || object_name || ' cascade constraints ; ' 
from dba_objects
where owner='nome_schema_destino'
and object_type like '%TABLE%';

select 'drop '|| object_type || ' nome_schema_destino.' || object_name || ' ; ' from dba_objects
where owner='nome_schema_destino'
and object_type!='LOB';


6 - fazer o import do dump com a opção REMAP:
SE FOR PARA A MESMA TABLESPACE:
impdp user_dba remap_schema=nome_schema_origem:nome_schema_origem remap_tablespace=TABLESPACE_OWNER_ORIGEM:TABLESPACE_OWNER_ORIGEM directory=DIR_EXP dumpfile=exp_nome_owner_origem.dmp  logfile=exp_nome_owner_origem_log TABLE_EXISTS_ACTION=append

SE FOR PARA TABLESPACE DIFERENTE:
impdp user_dba remap_schema=nome_schema_origem:nome_schema_destino remap_tablespace=TABLESPACE_OWNER_ORIGEM:TABLESPACE_OWNER_DESTINO directory=DIR_EXP dumpfile=exp_nome_owner_origem.dmp  logfile=exp_nome_owner_origem_TO_nome_schema_destino.log TABLE_EXISTS_ACTION=append

terça-feira, 21 de junho de 2016

DICAS PARA ARRUMAR EMPREGO MAIS RAPIDAMENTE

DICAS PARA ARRUMAR EMPREGO MAIS RAPIDAMENTE
(Repasse o post completo)
Amigos, hoje o post é um pouco longo, mas devido á situação que muitos brasileiros se encontram, gostaria de ajudar no que posso, com uso da tecnologia.
Estas dicas são para o Rio de Janeiro, mas podem ser usadas com outros estados.
Caso alguma empresa de consultoria se ofenda, me perdoem, porém estou no meu direito constitucional de expressar minha opinião.
Desejo boa sorte e que o Senhor te abençoe rapidamente. Ele é fiel e não nos desampara.
Com estas dicas, os empregos serão enviados automaticamente para seu e-mail e a abrangência será ampliada de maneira exponencial, sem a necessidade de ficar enfrentando filas ou andando para um lado para o outro, perdendo um tempo valioso
Sintam-se a vontade para compartilhar onde quiserem. Se tiver sucesso, seria ótimo darem retorno nesta postagem. Se apenas um conseguir, já ficarei feliz.
--> cadastre o currículo e configure o alerta de vagas para receber no seu e-mail:
http://www.indeed.com.br/
http://empregos.trovitbrasil.com.br/
https://www.vagas.com.br/ --> atentar para este, você pode manter o currículo no banco de dados das empresas também (selecionando a empresa) dentro do vagas
https://br.linkedin.com/ -- > o mais importante de todos - pode fazer buscas dentro do site de vagas dentro do seu perfil
https://www.curriculum.com.br/vagas-emprego
http://www.infojobs.com.br/empregos-em-rio-janeiro.aspx
http://www.empregacarioca.com/
http://www.balcaodeempregos.com.br/…/P…/3631/Rio-de-Janeiro…
http://www.bne.com.br/vagas-de-emprego-em-rio-de-janeiro-rj
http://www.personale.com.br/
http://www.careerjet.com.br/
http://empregocerto.uol.com.br/vagas/rio-de-janeiro-rj.html…
http://riodeempregos.com.br/ -- esse custa 10 reais, mas se entrar nas vagas, você vai ver o e-mail de contato da vaga requisitada, copie o e-mail e mande o currículo (apresentando-se é claro)
Observações:
-- Todos os sites citados fazem buscas em sites de vagas de emprego e pode-se cadastrar alertas para enviar para você automaticamente e gratuitamente
-- O ideal é entrar nestes sites diariamente também para acompanhar as vagas, tem vaga que surge de tarde (os resumos configurados são enviados de manhã cedo ou madrugada)
-- Uma simples busca no professor google(agência de emprego RJ) pode fazer um milagre que vocês não fazem idéia.
-- Mantenha SEMPRE o currículo atualizado e com uma ótima foto, de preferência com gravata (ou mulheres, sempre social).
-- Não desista , ás vezes pode demorar um pouco, mas é melhor que bater perna e gastar dinheiro de passagem, tempo, etc.. e é mais efetivo do que isso
-- NÃO PAGUE A NENHUM SITE PARA MANTER O CURRÍCULO. Todos estes sites que passei possuem pacotes gratuitos e pagos também, usem as opções gratuitas !!!
-- NÃO PAGUE A NENHUM "consultor" ou "orientador de recolocação", estas coisas mais ou menos. São empresas que vivem disso e não te garantem a recolocação no mercado.
Recuse educadamente qualquer reunião que queiram agendar ou propostas que não estejam claras. Furada na certa. A opção é sua de pagar ou não.
-- Não pague a ninguém que esteja condicionando o emprego a um pagamento
-- Caso for a alguma entrevista de emprego, procure ir de social e bem vestido, chegar antecipadamente no local e evitar gírias ou críticas aos antigos empregos.
-- Se achar o e-mail nas vagas descritas, não tenha vergonha de pegar o e-mail e pedir o emprego, mandando o currículo. Pedir emprego não é vergonha.
Tipo: eu tenho este perfil, etc, tenho x anos de experiência, etc e caso não for possível no momento, gostaria que me considerasse para as futuras oportunidades conforme meu perfil..
-- HONESTIDADE: SEMPRE !!! - Não candidatem-se a vagas fora do seu perfil. Porém nada impede que possam se aperfeiçoar durante o tempo do desemprego.
Lembrem-se:
O Senhor sustenta a todos os que caem, e levanta a todos os abatidos.
Os olhos de todos esperam em ti, e lhes dás o seu mantimento a seu tempo.
Salmos 145:14,15

quinta-feira, 2 de junho de 2016

Upgrade Oracle database 11g para Oracle database 12c - RAC

===============================================================================================
===============================================================================================
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 !!!




quarta-feira, 25 de maio de 2016

UPGRADE 11G single instance para 12C no LINUX

Tradução do procedimento do vídeo da oracledbagirl em
https://www.youtube.com/watch?v=Y92IVOpqC7s
Melhoria Pessoal do processo e atualização do procedimento.
0.00 - exportar o display antes de tudo e testar o xclock no xming
executar com permissão de root
xauth list | while read x ; do sudo -u oracle xauth add $x ; done

0.01 - Baixar os binários no site da Oracle

===================================================================
Pre-req tasks
===================================================================

1. Checar se o Oracle Label Security e Oracle Database Vault não estão instalados , devem estar setados como falso

SQL> select * from v$option where parameter in ('Oracle Label Security', 'Oracle Database Vault');

PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
Oracle Label Security
FALSE

Oracle Database Vault
FALSE


1.1 Checar se há tabelas referenciando as opções do Oracle Label Security
select tablespace_name, status from dba_tablespaces;  - no tables relating to reference options



2. Dropar o usuário de auditoria (AUDSYS)
drop user audsys cascade;
drop role audit_viewer;
drop role audit_admin;

======================================================================================

3. Criar o ambiente, instalar o profile com os binários do 12.1.0.2 binaries e  obter os scripts de pre-upgrade  preupgrd.sql e utluppkg.sql
======================================================================================
3.0   Criar o ambiente
3.1 Criar o diretório que irá receber os binários (/12.1.0.2/db_1)
cd $ORACLE_HOME
pwd
/u01/app/oracle/product/11.2.0.4_new/db_1
cd ..
cd ..
pwd
/u01/app/oracle/product
mkdir -p 12.1.0.2/db_1
HOSTNAME[oracle] /u01/app/oracle/product/12.1.0.2 $ cd db_1
HOSTNAME[oracle] /u01/app/oracle/product/12.1.0.2/db_1 $ pwd
/u01/app/oracle/product/12.1.0.2/db_1
HOSTNAME[oracle] /u01/app/oracle/product/12.1.0.2/db_1 $

3.2   Copiar o bash_profile para criar o do 12c
cd home/oracle
cp .bash_profile .profile.12c

3.3   Editar o profile do 12c para refletir o novo ORACLE_HOME
vi .profile.12c

DE
ORACLE_HOME=/u01/app/oracle/product/11.2.0.4_new/db_1

PARA
ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_1

3.3 - EXECUTAR O PROFILE 12C PARA INSTALAR OS BINÁRIOS NO PROFILE DO 12C (ATENTAR, NÃO EXECUTAR PELO PROFILE ANTIGO DO 11)
. .profile.12c
HOSTNAME[oracle] ~ $ . .profile.12c
HOSTNAME[oracle] ~ $ cd $ORACLE_HOME
HOSTNAME[oracle] /u01/app/oracle/product/12.1.0.2/db_1 $

======================================================================================
Instalar os binários do ORACLE 12C
======================================================================================

3.5 - Instalar os binários do ORACLE 12C no diretório criado:
/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 $
3.5.1 Rodar o instalador dos binários do oracle database
./runInstaller

3.5.2 VERIFICAR SE ESTÁ NO DIRETÓRIO CORRETO DE INSTALAÇÃO.
install database software only
ENTERPRISE EDICTION
NA PÁGINA DE PRIVILÉGIOS DE USERS E GRUPOS DE SISTEMA, ALTERAR TUDO PARA ORACLE, O OSOPER (segundo item)PODE DEIXAR EM BRANCO
executar o root.sh como root conforme as instruções da instalação, atentar se o diretório do ORACLE_HOME está refletindo a configuração do 12c. Yes para instalar

3.5.3 - Copiar os scripts de pré upgrade (diretório irá aparecer somente após a instalação para o /tmp
cd /home/oracle
. .profile.12c
cd $ORACLE_HOME/rdbms/admin
cp @preupgrd.sql /tmp/.
cp utluppkg.sql /tmp/.


======================================================================================
4. Últimas tarefas no ambiente 11G
======================================================================================

4.0   Voltar para o profile do 11g para executar os scripts, para checar o que é necessário setar no pré upgrade
cd /home/oracle
. .bash_profile

4.1 ir para o diretório /tmp e executar o preupgrd.sql (14.57 no video)
cd /tmp
sqlplus ‘/as sysdba’
@preupgrd.sql

4.2. Verificar o que é necessário mudar no pre upgrade, na log que foi gerada, seguir as orientações do mesmo (remover olap, enterprise manager, etc)
cd $ORACLE_BASE/cfgtoollogs
cd testedb
cd preupgrade/
view preupgrade.log

4.3 Mudar todas as coisas que ele está dizendo a  para mudar, tomar notas
4.4 Mudar os processos para 300 no spfile caso necessitar
ALTER SYSTEM SET PROCESSES=300 SCOPE=SPFILE;
4.5 Parar o dbconsole e remover, copiando o arquivo novo do 12c
copiar rdbms/admin/emremove.sql do novo ORACLE_HOME para o antigo ORACLE_HOME DO 11g
. .profile.12c
cd $ORACLE_HOME/rdbms/admin
cp emremove.sql /tmp/.

4.3- PARAR O DBCONSOLE (enterprise manager) pelo profile do 11g
. .bash_profile
cd $ORACLE/HOME/bin
emctl stop dbconsole

4.5 - Executar o emremove.sql no 11G para remover o enterprise manager
cd /tmp
sqlplus / as sysdba
SET ECHO ON;
SET SERVEROUTPUT ON;
@emremove.sql;

4.6 Remover o olap do 11g
ORACLE_HOME/olap/admin/catnoamd.sql

4.7   Executar as estatísticas do dicionário de dados
EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;

4.8 Fazer o purge na recyclebin
select * from dba_recyclebin;
PURGE RECYCLEBIN;

>>> verificar -- executar somente se recomendado  -----execute dbms_preup.purge_recyclebin_fixup;

5. Executar o script preupgrade_fixups 
cd $ORACLE_BASE/cfgtoollogs/testedb/preupgrade
@preupgrade_fixups.sql  == Se houver erro, verificar e fixar conforme as instruções do arquivo preupgrade.log

6. Checar objetos inválidos antes – Esta lista irá ignorar os objetos inválidos pré-existentes antes upgrade que não são válidos.
@$ORACLE_HOME/rdbms/admin/utluiobj

6.1. Executar o script preupgrade novamente para checar se ainda continuam os erros no arquivo preupgrade.log
cd $ORACLE_BASE/cfgtoollogs/testedb/preupgrade
sqlplus / as sysdba
@preupgrd.sql
exit
view preupgrade.log

7. OPCIONAL ----Certificar que há espaço suficiente para os archivelogs – Opcional fazer um backup do rman
alter system set db_recovery_file_dest_size=30g;

8. Backup before upgrade - Optional
make sure no archive mode with archive log list


===================================================================
9. Começando o upgrade
===================================================================

9.1 Baixar o banco 11g
shutdowm immediate;
9.2 Startar em modo mount , configurar o banco para archivelog, fazer o backup do controlfile e dos archivelogs
startup mount;
alter database archivelog;
alter database open;
9.2.1 No Sistema operacional executar o rman para fazer o backup do controlfile e dos archivelogs
rman target /
show all;
configure controlfile autobackup on;
backup database plus archivelog

===================================================================
10. Completando Database Upgrade
===================================================================

10.1 Entrar no banco 11g e baixar
. .bash_profile
sqlplus / as sysdba
shutdown immediate;
exit;

10.2 Verificar o  listener, fazer backup do listener antes e Baixar, caso necessário pode ter que parar como usuário do grid
lsnrctl status - checar o arquivo (conforme a saída abaixo)
Listener Parameter File   /u01/app/grid/product/11.2.0.4_new/grid_infra_1/network/admin/listener.ora
lsnrctl stop listener
No upgrade que testei para este procedimento não baixei o listener, deixei o dbua executar todo o processo.

10.3 Procurar o executável do dbua do 12c para fazer o upgrade do banco
cd /u01/app/oracle/product/12.1.0.2/db_1/bin
./dbua

10.2 Selecionar Upgrade Oracle Database
checar as opções de validação
Nas opções do upgrade, deixar marcado a opção de compilar os objetos inválidos
Deixar a opção do enterprise manager conforme o padrão
NÃO MOVER OS DATAFILES COMO PARTE DO UPGRADE
Atualizar o listener, mantendo a configuração da conexão antiga.
Desmarcar a opção do backup do rman e informar que irá usar a própria estratégia de backup


Checar se o upgrade estará conforme o que foi programado, nas informações da interface gráfica da instalação, conforme o exemplo abaixo:

Estando tudo ok, clicar em finish para o oracle fazer o upgrade. Todos os shutdowns necessários e atualizações do catálogo o dbua irá fazer automaticamente. Pode-se também acompanhar o log para visualizar full time todo o processo.




===================================================================
11. VALIDAÇÃO
===================================================================

11.1 Entrar no profile do 12c
. .profile.12c

11.1 VERIFICAR O ORATAB
cat /etc/oratab |grep <sid>    - ensure 12c has been added to oratab

11.3 VERIFICAR NO BANCO E PEGAR AS EVIDÊNCIAS:
EFETUAR O SHUTDOWN
sqlplus / as sysdba
STARTUP;
exit;

11.4 EXECUTAR TAREFA PÓS UPGRADE
cd $ORACLE_BASE/cfgtoollogs/testedb
sqlplus / as sysdba
@postugrade_fixups.sql;

11.5 VERIFICAR AS RECOMENDAÇÕES PRÉ UPGRADE, POR EXEMPLO pode solicitar fixar as estatísticas
EXECUTE DBMS.STATS.GATHER_FIXED_OBJECTS_STATS;

12. PEGAR AS EVIDÊNCIAS:
select substr(comp_id,1,15) comp_id, substr(comp_name,1,30) comp_name, substr(version,1,10) version, status from dba_registry; 

  -certificar que está com 12c


restore total de banco