使用传输表空间迁移数据
--检查字符集一致性和平台关系
select PLATFORM_ID , PLATFORM_NAME from v$database;
select value from nls_database_parameters where parameter='NLS_CHARACTERSET';
select value from nls_database_parameters where parameter='NLS_NCHAR_CHARACTERSET';
select platform_name, ENDIAN_FORMAT from v$transportable_platform;
首先检查是否自包含,一定要是自包含才可以。
执行如下包
exec dbms_tts.transport_set_check('USERS_DATA',true);
多个表空间检查
exec dbms_tts.transport_set_check('USERS_DATA,USERS_INDEX_DATA',true);
然后查询 如果有数据则 不是自包含的,没有就可以正常迁移
select * from transport_set_violations;
将表空间置为只读
alter tablespace test read ONLY;
导出元数据 多个表空间用逗号分开
exp userid='sys/sys as sysdba' file=C:\test.dmp log=C:\tests.log transport_tablespace=y tablespaces=test
在目标库创建与源库一样的用户即可 ,表空间先默认
复制导出的元数据dmp 文件 然后拷贝 数据文件到目标库,执行如下导入 路径就是复制到目标库数据文件的位置 多个表空间及数据文件用逗号分开
imp userid='sys/sys as sysdba' file=F:\test.dmp tablespaces=test datafiles=D:\oradata\orcl\TEST.DBF transport_tablespace=y
将表空间设置为 读写
alter tablespace test read write;
设置用户的默认表空间
win 下同版本数据库,或者由低版本向高版本迁移数据。
--检查字符集一致性和平台关系
select PLATFORM_ID , PLATFORM_NAME from v$database;
select value from nls_database_parameters where parameter='NLS_CHARACTERSET';
select value from nls_database_parameters where parameter='NLS_NCHAR_CHARACTERSET';
select platform_name, ENDIAN_FORMAT from v$transportable_platform;
首先检查是否自包含,一定要是自包含才可以。
执行如下包
exec dbms_tts.transport_set_check('USERS_DATA',true);
多个表空间检查
exec dbms_tts.transport_set_check('USERS_DATA,USERS_INDEX_DATA',true);
然后查询 如果有数据则 不是自包含的,没有就可以正常迁移
select * from transport_set_violations;
将表空间置为只读
alter tablespace test read ONLY;
导出元数据 多个表空间用逗号分开
exp userid='sys/sys as sysdba' file=C:\test.dmp log=C:\tests.log transport_tablespace=y tablespaces=test
在目标库创建与源库一样的用户即可 ,表空间先默认
复制导出的元数据dmp 文件 然后拷贝 数据文件到目标库,执行如下导入 路径就是复制到目标库数据文件的位置 多个表空间及数据文件用逗号分开
imp userid='sys/sys as sysdba' file=F:\test.dmp tablespaces=test datafiles=D:\oradata\orcl\TEST.DBF transport_tablespace=y
将表空间设置为 读写
alter tablespace test read write;
设置用户的默认表空间