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