最近做Oracle数据迁移,之前有一篇迁移思路思考的文章,这里继续做具体的测试,主题问表空间传输。
相关阅读:
Oracle 传输表空间
使用可传输表空间将Oracle 9i升级到10g
Oracle 传输表空间迁移数据总结
exp/expdp传输表空间和rman convert实现大数据量快速迁移
一、源服务器上导出表空间
源服务器: 10.1.122.55
目标服务器:10.1.122.54
0.设置字符集
注意,这里不设置字符集在导入的时候会报错,详细情况见文章的最后。
SUSE11sp2:~ # export LANG=AMERICAN_AMERICA.AL32UTF8
suse11sp2:~> export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
suse11sp2:~> sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Wed Jul 24 14:45:47 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
1.准备需要传输的表空间
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> create tablespace aaa datafile '/oracle/oradata/aa.dbf' size 100M ;
Tablespace created.
SQL> CREATE USER aaa IDENTIFIED BY aaa
DEFAULT TABLESPACE aaa
TEMPORARY TABLESPACE temp; 2 3
User created.
SQL> GRANT CONNECT,RESOURCE TO aaa;
Grant succeeded.
SQL> REVOKE UNLIMITED TABLESPACE FROM aaa;
Revoke succeeded.
SQL> ALTER USER aaa QUOTA UNLIMITED ON aaa;
User altered.
SQL> conn aaa/aaa;
Connected.
SQL> create table a1(id varchar2(10),name varchar2(20));
Table created.
SQL> insert into a1 values('01','lurou');
1 row created.
SQL> insert into a1 values('02','hello,DBA!');
1 row created.
SQL> COMMIT;
Commit complete.
SQL> select * from a1;
ID NAME
---------- --------------------
01 lurou
02 hello,DBA!
SQL>
SQL>
SQL>
2.做传输前检查
SQL> conn / as sysdba
Connected.
SQL>
SQL> execute sys.dbms_tts.transport_set_check('aaa',true);
PL/SQL procedure successfully completed.
SQL>
SQL> select * from sys.transport_set_violations;
no rows selected
SQL>
3.设置表空间为只读
SQL>
SQL> alter tablespace aaa read only;
Tablespace altered.
SQL>
SQL> commit;
Commit complete.
SQL>