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

Deixe um comentário