oracle可传输表空间测试

使用RMAN在恢复表空间的时候,表空间数据文件DBID和恢复数据库的数据文件DBID必须相同

可传输表空间不需要这样,也就是可以快速的把这个表空间插入另一个数据库使用

可传输表空间内的对象必须不依赖与其他表空间中的对象,且最好其他表空间内的对象也不依赖可传输表空间的对象

测试步骤:

整个测试时将227中的数据库的users表空间插到245数据库中并使用(就跟电器和插座一样,松耦合,电器可以随时拔掉插到另一个插座上,而不是必须与插座相连)

1.先備份users表空間,方便測試完畢后還原

10.206.132.245
$ rman target / catalog rman/rman@rcatalog RMAN> backup tablespace users; RMAN> list backup of tablespace users;

2.導出users表空間

10.206.132.227
$ sqlplus / as sysdba

SQL> alter tablespace users read only;

$ expdp " ' / as sysdba' " directory=monkey transport_tablespaces=users dumpfile=USERSTTS.dmp nologfile=y

3.將導出文件和數據文件傳輸到245

$ scp USERSTTS.dmp 10.206.132.245:/oradata02/expdp
$ scp /oradata01/dfhdb/users01.dbf 10.206.132.245:/oradata02/expdp

4.刪除245的users表空間

$ sqlplus / as sysdba
SQL> drop tablespace users including contents and datafiles;
---------------------------------------------------------------------
ERROR at line 1:
ORA-12919: Can not drop the default permanent tablespace
---------------------------------------------------------------------
報錯,因为users表空間是數據庫的默認表空間
SQL> create tablespace mytbs datafile '/oradata02/monkey/mytbs01.dbf' size 1g;

SQL> alter database default tablespace mytbs;

SQL> drop tablespace users including contents and datafiles;

5.將227的表空間導入

$ mv users01.dbf /oradata01/monkey/
$ impdp \'/ as sysdba\'  directory=MONKEY transport_datafiles=/oradata01/monkey/users01.dbf dumpfile=USERSTTS.dmp nologfile=y
------------------------------------------------------------------------------------------------------------------------------------------
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Master table "SYS"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
Starting "SYS"."SYS_IMPORT_TRANSPORTABLE_01":  "/******** AS SYSDBA" directory=MONKEY transport_datafiles=/oradata01/monkey/users01.dbf dumpfile=USERSTTS.dmp nologfile=y 
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
ORA-39123: Data Pump transportable tablespace job aborted
ORA-29342: user MONKEY does not exist in the database

Job "SYS"."SYS_IMPORT_TRANSPORTABLE_01" stopped due to fatal error at Thu Jul 30 08:53:54 2020 elapsed 0 00:00:01
------------------------------------------------------------------------------------------------------------------------------------------
報錯,沒有monkey用戶,所以monkey用戶下的數據庫對象無法建立,從這裡也可以看出,用戶的元數據應該不在表空間中存儲
SQL> CREATE USER MONKEY IDENTIFIED BY MONKEY;
再次導入
$ impdp \'/ as sysdba\'  directory=MONKEY transport_datafiles=/oradata01/monkey/users01.dbf dumpfile=USERSTTS.dmp nologfile=y

6.查看導入后的users表空間的狀態

SQL> SELECT STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME='USERS';
STATUS
---------
READ ONLY

7.修改表空間為READWRITE

SQL> alter tablespace users read write;

8.查詢后可以發現原來227中存在,245不存的表也有了

SQL> CREATE TABLE MONKEY.TESTTRANSPORT(ID NUMBER,NAME VARCHAR2(10)) TABLESPACE USERS;

測試在 users表空間中新建表也可以

posted @ 2020-07-30 09:24  monkey6  阅读(193)  评论(0编辑  收藏  举报