Movendo usuários entre bases

Um pequeno lembrete para mim. Estou migrando do Oracle 9i para o 10g utilizando export e import.

O export por esquema “exp… owner… ” não traz para o Oracle 10g os usuários, portanto a importação irá falhar. O jeito é exportar primeiro os usuários. O procedimento é simples, basta puxar os usuários da tabela ‘dba_users’, mas um pequeno detalhe deve ser observado na importação da senha.

Segue o script:

SELECT
    'CREATE USER ' || username || ' IDENTIFIED BY VALUES ''' || password ||
    ''' DEFAULT TABLESPACE ' || default_tablespace || ';'
  FROM dba_users
  WHERE
    password != 'EXTERNAL' AND
    password != 'GLOBAL' AND
    default_tablespace NOT IN ('EXAMPLE','DRSYS','CWMLITE','ODM','XDB','SYSTEM')
  ORDER BY default_tablespace, username
;

SELECT
  'CREATE USER ' || username || ' IDENTIFIED BY EXTERNAL DEFAULT TABLESPACE ' || default_tablespace || ';'
  FROM dba_users
  WHERE password = 'EXTERNAL'
;

SELECT
  'CREATE USER ' || username || ' IDENTIFIED GLOBALLY AS ''' || external_name ||
  ''' DEFAULT TABLESPACE ' || default_tablespace || ';'
  FROM dba_users
  WHERE password = 'GLOBAL'
;

SELECT 'ALTER USER ' || username || ' QUOTA UNLIMITED ON ' || tablespace_name || ';'
  FROM dba_ts_quotas;

Não é nada complexo, mas o detalhe está justamente no uso da senha criptografada. Na documentação da Oracle sobre o comando CREATE USER, não aparece nada sobre a opção de criar um usuário com uma senha criptografada, somente com uma senha normal, que precisa clausula ‘VALUES’. Bom… demorei para lembrar deste pequeno detalhe, agora não esqueço mais! 😉

Compartilhe

Você pode gostar

Sobre minha saída da Timbira

Há 14 anos, durante o PGConf.Brasil 2009, lá na UNICAMP em Campinas/SP, 4 pessoas se reuniram e idealizaram a criação da primeira empresa dedicada exclusivamente

Split brain

Já tem algum tempo que eu pensava em fazer isso e chegou a hora. Este blog vai se dividir em 2 partes a partir de

plugins premium WordPress