- 1
1
- 5
源系统和目标系统都建立账号
2
create user username identified by password;
grant connect,resoure to username;
赋予expdp和impdp命令权限:
1
grant exp_full_database,imp_full_database to username;
2
sql> create user migrate identified by migrate;
User created
2
sql> grant connect,resource,dba to migrate;
Grant succeeded
2 sql> grant exp_full_database,153)">5
Step 1: 在源系统上创建目录
create directory DPDMP as '/oracle/app/admin/orcl/dpdmp/'; --该目录必须是已经存在的目录(该目录应该用oracle用户创建),否则会报错
6
Step 2: 赋予账号对该目录的权限
read,write on directory DPDMP to username;
Step 3: 在源系统端expdp(基于某个用户)
expdp username/password@orcl directory= DPDMP dumpfile=XX_schema%U.dmp logfile=XX_schema.log schemas=XX_schema
或者导出整个库:
expdp username/password@orcl directory= DPDMP dumpfile=all%U.dmp logfile=XX_schema.log parallel=10 full=y
Step 4:将源系统的directory/XX_schema%U.dmp文件拷贝到目标系统
这步骤省略
Step 5: 在目标系统上创建目录
1
create directory DPDMP as 'E:\oracle\app\Administrator\admin\orcl\dpdmp'; --该目录必须是已经存在的目录,否则会报错
Step 6: 赋予权限
on directory impdp to username;
Step 7: 在目标系统端impdp
7
> 以下为迁移中可能使用到
- 如果需要从linux到window的导入导出,最好是先创建表空间及数据文件
表空间DDL:
select ts.tablespace_name,to_char(dbms_Metadata.get_DDl('TABLESPACE',ts.tablespace_name))from dba_tablespaces ts;
- 用户DDL:
select username,default_tablespace,temporary_tablespace,profile,dbms_Metadata.get_DDl('USER',username) from dba_users where account_status='OPEN' ;
- 记录数:
select table_name,count_rows(table_name) nrows from user_tables ;
- 查看当前导入的job :
select * from dba_datapump_jobs;
-
如果impdp过程中异常退出后,要从中断处继续导入执行如下:
impdp migrate/migrate@orcl attach=JOB_NAME (JOB_NAME可以通过dba_datapump_jobs来查询)
比如:> impdp mig_test/mig_test attach=SYS_IMPORT_TABLE_02Import status/continue_client 返回记录模式/stop_job YES/
交互模式常用命令:
CONTINUE_CLIENT返回到记录模式。假如处于空闲状态,将重新启动作业。
START_JOB 启动恢复当前作业。
STATUS在默认值 (0) 将显示可用时的新状态的情况下,要监视的频率 (以秒计) 作业状态。
STATUS=[interval]
STOP_JOB顺序关闭执行的作业并退出客户机。
STOP_JOB=IMMEDIATE 将立即关闭数据泵作业。 -
如果全库导入的时候会暂停卡在那里
可以查diag\rdbms\orcl\orcl\trace\alert_orcl.log查看日志,针对当前问题解决掉后,impdp会继续
如果是ORA-19815: WARNING: db_recovery_file_dest_size of 4039114752 bytes is 100.00% used,and has 0 remaining bytes available.
就需要将db_recovery_file_dest_size调大:
8
sql> alter system set db_recovery_file_dest_size=50G scope=spfile(需要重启数据库生效)
sql> shutdown immediate;
sql> startup;
sql> show parameter db_recovery_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string E:\flash_recovery_area
db_recovery_file_dest_size big integer 50G