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表空間中新建表也可以
分类:
oracle
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现