一个最简单的表空间迁移实验
我是在我的笔记本电脑上做的一个最简单的实验。实验环境:
windows xp
oracle 10.2.0.1
我在我的这台笔记本PC上建了两个库,库名分别为:mystock和mytest
我在mystock上建了一个测试的表空间,如下:
CREATE TABLESPACE TEST DATAFILE
'D:\ORACLE\ORADATA\MYSTOCK\TEST_01.DBF' SIZE 10M AUTOEXTEND OFF
LOGGING
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;
我准备将此表空间从数据库mystock迁移到mytest上。
另个建了一个用户ca
CREATE USER CA
IDENTIFIED BY VALUES 'A92D12756F6D9541'
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
-- 2 Roles for CA
GRANT CONNECT TO CA;
GRANT DBA TO CA;
ALTER USER CA DEFAULT ROLE ALL;
-- 2 System Privileges for CA
GRANT CREATE SESSION TO CA;
GRANT UNLIMITED TABLESPACE TO CA;
-- 1 Tablespace Quota for CA
ALTER USER CA QUOTA UNLIMITED ON USERS;
用ca用户登录,创建了一个表t1
create table t1 (id int) tablespace test;
insert into t1 values (3);
commit;
迁移之前需要在mytest数据库里也建好同样的ca用户(出于简单起见,不同的用户也可以)
另外建好所需的directory对象
mystock:
CREATE OR REPLACE DIRECTORY
DATA_PUMP_DIR AS
'D:\oracle\product\10.2.0\admin\mystock\dpdump\';
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO EXP_FULL_DATABASE;
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO IMP_FULL_DATABASE;
mytest:
CREATE OR REPLACE DIRECTORY
DATA_PUMP_DIR AS
'D:\oracle\product\10.2.0\admin\mytest\dpdump\';
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO EXP_FULL_DATABASE;
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO IMP_FULL_DATABASE;
下面开始迁移:
1 在mystock数据库中:
先要检查表空间是否自包含
使用DBMS_TTS.TRANSPORT_SET_CHECK来检查是否自包含,如
EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('test', TRUE);
然后从检查下面查询结果是否有冲突:
SELECT * FROM TRANSPORT_SET_VIOLATIONS;
我这个表空间上只建了一个表t1,这里肯定没有问题
2 将test表空间置为只读模式
alter tablespace test read only;
3 因为是相同平台,此处无需做数据文件格式转换,直接将数据文件拷贝到mytest数据库的数据文件夹下
4 导出表空间
C:\Documents and Settings\an.chen>expdp system/oracle dumpfile=expdat.dmp direct
ory=DATA_PUMP_DIR TRANSPORT_TABLESPACES = test
Export: Release 10.2.0.1.0 - Production on 星期五, 10 4月, 2009 15:35:47
Copyright (c) 2003, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01": system/******** dumpfile=expdat.dm
p directory=DATA_PUMP_DIR TRANSPORT_TABLESPACES = test
处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK
处理对象类型 TRANSPORTABLE_EXPORT/TABLE
处理对象类型 TRANSPORTABLE_EXPORT/TABLE_STATISTICS
处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
已成功加载/卸载了主表 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01"
******************************************************************************
SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为:
D:\ORACLE\PRODUCT\10.2.0\ADMIN\MYSTOCK\DPDUMP\EXPDAT.DMP
作业 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" 已于 15:36:21 成功完成
5 将此导出文件拷贝到mytest 数据库的DATA_PUMP_DIR设置的路径下。
6 导入表空间
C:\Documents and Settings\an.chen>impdp system/oracle dumpfile=expdat.dmp direct
ory=DATA_PUMP_DIR TRANSPORT_DATAFILES=D:\oracle\product\10.2.0\oradata\mytest\te
st_01.dbf
Import: Release 10.2.0.1.0 - Production on 星期五, 10 4月, 2009 16:00:27
Copyright (c) 2003, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已成功加载/卸载了主表 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01"
启动 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system/******** dumpfile=expdat.dm
p directory=DATA_PUMP_DIR TRANSPORT_DATAFILES=D:\oracle\product\10.2.0\oradata\m
ytest\test_01.dbf
处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK
处理对象类型 TRANSPORTABLE_EXPORT/TABLE
处理对象类型 TRANSPORTABLE_EXPORT/TABLE_STATISTICS
处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
作业 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" 已于 16:00:30 成功完成
至此,表空间成功导入。
7 检查
C:\Documents and Settings\an.chen>SET ORACLE_SID=mytest
SQL> conn ca/ca001
已连接。
SQL> select * from t1;
ID
----------
3
说明导入成功!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9375/viewspace-587034/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9375/viewspace-587034/