0
点赞
收藏
分享

微信扫一扫

Oracle TTS表空间传输


作者:IT邦德
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
(Web\java\Python)工作,主要服务于生产制造
现拥有 Oracle 11g OCP/OCM、
Mysql、Oceanbase(OBCA)认证
分布式TBase\TDSQL数据库、国产达梦数据库以及红帽子认证
从业8年DBA工作,在数据库领域有丰富的经验

Oracle TTS表空间传输_表空间


1. 目标端创建 directory

$ mkdir -p /home/oracle/tsdir     --oracle用户下
SYS@PROD>create directory tsdir as '/home/oracle/tsdir';
SYS@PROD>grant all on directory tsdir to public;

2 在源库上建立测试表空间

SYS@PROD> col file_name for a60
SYS@PROD> select tablespace_name,file_name from dba_data_files;

Oracle TTS表空间传输_数据库_02

SYS@PROD> create tablespace tbs1 datafile '/u01/app/oracle/oradata/PROD/tbs1.dfb' size 10M;

3 检查自包含

Oracle TTS表空间传输_表空间_03

#什么叫自包含?
当前表空间中的对象不依赖该表空间之外的对象
例如:有 TEST 表空间,里面有个表叫 T1,如果在 T1 上建个索引叫 T1_idx,
而这个索引建在 USERS表空间上,由于 T1_idx 索引是依赖 T1 表的,
那么,TEST 表空间是自包含的,可以迁移,但会甩掉 T1_idx 索引,
USERS 表空间不是自包含的,不符合迁移条件。
检查表空间是否自包含可以使用程序包
如上面的例子
SQL> execute dbms_tts.transport_set_check('USERS');
SQL> select * from TRANSPORT_SET_VIOLATIONS;

4 表空间只读

SYS@PROD> alter tablespace tbs1 read only;
SYS@PROD> select tablespace_name,status from dba_tablespaces;

Oracle TTS表空间传输_oracle_04


5 expdp 导出表空间

$ mkdir -p /home/oracle/tsdir     --oracle用户下
SYS@PROD>create directory tsdir as '/home/oracle/tsdir';
SYS@PROD>grant all on directory tsdir to public;
SYS@PROD> col directory_name for a25
SYS@PROD> col DIRECTORY_PATH for a80
SYS@PROD> select directory_name,directory_path from dba_directories;

Oracle TTS表空间传输_数据库_05

$ expdp system/oracle directory=tsdir dumpfile=expdp_tbs1.dmp transport_tablespaces=tbs1

Oracle TTS表空间传输_数据库_06


6 scp 到目标端

$ scp /home/oracle/tsdir/expdp_tbs1.dmp 192.168.6.112:/home/oracle/tsdir/
$ scp /u01/app/oracle/oradata/PROD/tbs1.dfb 192.168.6.112:/u01/app/oracle/oradata/PROD/

7.目标端创建对应用戶

SYS@PROD> grant connect,resource to damon identified by oracle;

8.目标端 EMREP导入

impdp system/oracle directory=tsdir dumpfile=expdp_tbs1.dmp TRANSPORT_DATAFILES=/u01/app/oracle/oradata/PROD/tbs1.dfb

Oracle TTS表空间传输_表空间_07

SYS@PROD> select tablespace_name,status from dba_tablespaces;

Oracle TTS表空间传输_数据库_08


9.两端readwirte

#目标库执行
SYS@PROD> alter tablespace tbs1 read write;
SYS@PROD> select tablespace_name,status from dba_tablespaces;

Oracle TTS表空间传输_oracle_09

#源库执行
SYS@PROD> alter tablespace tbs1 read write;
SYS@PROD> select tablespace_name,status from dba_tablespaces;

Oracle TTS表空间传输_表空间_10




举报

相关推荐

0 条评论