IMPDMP迁移个小系统
使用场景:小系统,直接EXPDP/IMPDP迁移,测试阶段完成,重新数据恢复。
1、查看当前会话,主要针对ACTIVE,INACTIVE一般可忽略
PRIMARY-SYS@testdb>SELECT INST_ID,USERNAME,STATUS,COUNT(*) FROM GV$SESSION GROUP BY INST_ID,USERNAME,STATUS ORDER BY 3;
INST_ID USERNAME STATUS COUNT(*)
---------- ------------------------------ ------------------------ ----------
1 SYS ACTIVE 1
1 ACTIVE 33
1 test1 INACTIVE 3
1 test2 INACTIVE 4
8 rows selected.
2、上面查询之后,如果没有业务用户在活动用下面的SQL生成kill语句执行。或者直接关闭DB
set line 500
set pagesize 500
col USERNAME for a15
col sqla for a50
SELECT INST_ID,sid,serial# , USERNAME,STATUS, 'alter system kill session '''||sid||','||SERIAL#||''';' sqla FROM GV$SESSION where USERNAME like '%' ORDER BY STATUS,USERNAME;
3、查询当前使用的业务用户(其中SYS和SYSTEM为系统用户)及对应表空间,表空间没有的话需要手工创建,IMPDP不会自动创建表空间
COL USERNAME FOR A30
COL DEFAULT_TABLESPACE FOR A20
COL ACCOUNT_STATUS FOR A20
SET PAGESIZE 100
SELECT USERNAME,ACCOUNT_STATUS,DEFAULT_TABLESPACE FROM DBA_USERS WHERE ACCOUNT_STATUS='OPEN' ORDER BY 1 ASC;
--手工创建表空间
CREATE TABLESPACE IDX_SYNCTXN DATAFILE '/data/oradata/testdb/idx_synctxn.dbf' SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE 30720M;
PRIMARY-SYS@testdb>SELECT USERNAME,ACCOUNT_STATUS,DEFAULT_TABLESPACE FROM DBA_USERS WHERE ACCOUNT_STATUS='OPEN' ORDER BY 1 ASC;
USERNAME ACCOUNT_STATUS DEFAULT_TABLESPACE
------------------------------ -------------------- --------------------
test1 OPEN DAT_test1
test2 OPEN DAT_test2
--SYS OPEN SYSTEM
--SYSTEM OPEN SYSTEM
18 rows selected.
4、删除测试用户数据
DROP USER test1 CASCADE;
DROP USER test2 CASCADE;
5、重新IMPDP
需要知道导入用户system密码、创建dmp文件目录、对文件授权
alter user system identified by qwer1234;
create or replace directory dump_dir as '/home/oracle/dump_dir';
grant read,write on directory dump_dir to system;
--导出
--expdp system/qwer1234 directory=dump_dir schemas=test1,test2 dumpfile=expdp_test_2user_0618.dmp logfile=expdp_test_2user_0618.log
--导入
nohup impdp system/qwer1234 directory=dump_dir schemas=test1,test2 dumpfile=expdp_test_2user_0618.dmp logfile=expdp_test_2user_0618_imp.log transform=oid:n &
查看日志
tail -f nohup.out
这个参数默认是Y,如果改成N,那么导入的时候会把各个对象重新赋予新的OID。
transform=oid:n