Importar um arquivo Oracle DMP para uma nova instalação do Oracle

29

Um cliente nos enviou um banco de dados Oracle com o qual precisamos testar. Não usamos a Oracle nem possuímos nenhum conhecimento interno da Oracle.

Precisamos configurar o banco de dados para que possamos nos conectar a ele e depurar um problema.

Fiz uma nova instalação do Oracle 9 (a versão que o cliente está executando) e as ferramentas de gerenciamento.

Pela minha vida, não consigo importar os dados. Não deve ser tão complicado. Eu devo estar entendendo algo errado.

Eu tentei:

imp 'sys/password AS SYSDBA' file=c:\database.dmp full=yes log=implog.txt

e pegou:

Connected to: Personal Oracle9i Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

Export file created by EXPORT:V09.02.00 via conventional path

Warning: the objects were exported by SYSTEM, not by you

import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
. importing SYSTEM's objects into SYS
. importing ABCDE's objects into ABCDE
IMP-00003: ORACLE error 1435 encountered
ORA-01435: user does not exist
Import terminated successfully with warnings.

Mas nada aparece no gerente, tanto quanto as tabelas em qualquer esquema, e estou no meu juízo final.

RolandoMySQLDBA
fonte
Obrigado, problema exato aqui. Temos um despejo de oracle e temos que importar. Extremamente contra-intuitivo em comparação com, praticamente, qualquer outro sistema de banco de dados
namezero 18/03

Respostas:

28

Você precisará criar um usuário (ou esquema) primeiro

C:\>sqlplus system/password

SQL> create user CLIENT_TEST identified by client_test_password;
SQL> grant connect, unlimited tablespace, resource to CLIENT_TEST;
SQL> exit

Em seguida, você pode usar as opções fromuser=e touser=IMP para importar os dados para o novo usuário / esquema:

C:\>imp system/password FROMUSER=ABCDE TOUSER=client_test file=c:\database.dmp full=yes

Espero que ajude!

Andrew
fonte
ORA-65096: nome de usuário ou função comum inválido
Kvasi
12

Não é comum criar tabelas como SYS ou SYSTEM no Oracle, pois essas duas contas são administradores.

Erro significa que seu cliente criou tabelas como usuário ABCDE.

Você deve criar esse usuário antes da importação e importar dados como esse usuário,

Isso deve eliminar o erro porque o arquivo exportado contém permissões e outras informações relacionadas ao usuário ABCDEque não existem no banco de dados.

Verifique esta pergunta para obter dicas adicionais: Como determinar os esquemas em um arquivo de exportação do Oracle Data Pump.

zendar
fonte
7

Você primeiro precisa criar o usuário "ABCDE"

Algo como

No SQL * PLUS:

create user ABCDE identified by password;
grant connect, resource to ABCDE;

Há um milhão de opções em "criar usuário", mas isso usaria os padrões.

Nick Pierpoint
fonte
3

O cliente forneceu os detalhes de como eles geraram o arquivo de despejo? Em particular, você tem certeza de que essa é uma exportação completa, e não uma exportação no nível do esquema, uma exportação no nível do espaço de tabela ou uma exportação no nível da tabela?

Justin Cave
fonte
Eu tenho uma pergunta relacionada. Você está disposto a comentar sobre isso? Aqui está o link: dba.stackexchange.com/questions/130515/…
CodeMed
3

Em vez de 'sys / password AS SYSDBA', tente 'system / password'.

A ferramenta da Oracle exige que o mesmo usuário importe como criou a exportação, mesmo que o sys seja o usuário "todo poderoso".

dacracot
fonte
1

Foi dado um aviso sobre que os dados que você está importando foram realmente exportados pelo usuário SYS como arquivo .dmo. Tente isso ..

C:\oracle\ora92\bin>imp sys/pwd@dbname file=c:\database.dmp full=yes

dbname é o nome do banco de dados que você forneceu


fonte
0
c:\\ imp database name/password@oracle9i file=xyz,dmp grants=n ignore=y 
  fromuser=database name touser=database name
vikas
fonte
1
Você deve esclarecer sua resposta explicando como isso funciona, quais são os parâmetros, qualquer coisa além de apenas uma linha de comando.
Max Vernon