oracle 11g 表空间迁移 实验过程

来源:互联网 发布:周末是否算法定节假日 编辑:程序博客网 时间:2024/06/17 18:42
 


参考文档:

在复制或移动表空间前,用户首先将表空间置于只读状态,再复制表空间的数据文件(datafile),
最后使用export/import工具迁移位于数据字典(data dictionary)中的数据库元数据信息(database metadata information)。
数据文件以及元数据导出文件必须全部复制到目标数据库上。
移动这些文件时可以使用任何用于文件复制的工具,例如操作系统的复制功能,FTP,或者发布到CD中。
复制数据文件(datafile)并导入元数据(metadata)之后,用户可以选择是否将表空间(tablespace)置为可读写状态。

环境介绍:

操作系统 :widows 2003 装在虚拟机上的
oracle 版本:11g

oracle 有两个实例 第一个实例名称 orcl 第二个 orcl2

 

 


sqlplus /nolog

--连接实例  orcl
connect /@orcl as sysdba

--在 orcl 创建表空间 test 包含一个数据文件
create tablespace test datafile 'C:\oracle11g\app\Administrator\oradata\orcl\test01.dbf' size 10m;
--drop tablespace test; --如果想删除表空间用此语句

--创建一个用户 密码为 123456 默认表空间为test
create user xuejianxin identified by 123456 default tablespace test;
--给此用户授权为dba
grant dba to xuejianxin;


--用刚才创建的用户  连接实例  orcl
connect xuejianxin/123456@orcl;
--创建表
create table test(id int,name varchar2(10));
--插入数据
insert into test values (1,'xue1');
insert into test values (1,'xue2');
--提交
commit;
--修改表空间为只读
alter tablespace test read only; 
--恢复表空间为正常状态
-- alter tablespace test read wirite ;
--execute sys.dbms_tts.transport_set_check('test',true); --此句可以不执行


--导出test 表空间 元数据
/**
DIRECTORY
指定转储文件和日志文件所在的目录
DIRECTORY=directory_object
Directory_object用于指定目录对象名称.需要注意,
目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS目录
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump
*/

connect /@orcl as sysdba
create directory dump as 'c:\dump' --必须创建此目录 c:\dump
drop directory dump;
exit;

--在 cmd 中直接 执行此命令
expdp system/123456@orcl directory=dump  dumpfile=test.dmp  transport_tablespaces=test

C:\Documents and Settings\Administrator>expdp system/123456@orcl directory=dump
 dumpfile=test.dmp  transport_tablespaces=test

Export: Release 11.1.0.6.0 - Production on 星期五, 01 7月, 2011 0:58:31

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

连接到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
启动 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01":  system/********@orcl directory=dum
p dumpfile=test.dmp transport_tablespaces=test
处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK
处理对象类型 TRANSPORTABLE_EXPORT/TABLE
处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
已成功加载/卸载了主表 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01"
******************************************************************************
SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为:
  C:\DUMP\TEST.DMP
******************************************************************************
可传输表空间 TEST 所需的数据文件:
  C:\ORACLE11G\APP\ADMINISTRATOR\ORADATA\ORCL\TEST01.DBF
作业 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" 已于 01:00:02 成功完成


拷贝数据文件 C:\oracle11g\app\Administrator\oradata\orcl\test01.dbf  到 C:\test01.dbf

--恢复表空间读写状态
connect /@orcl as sysdba
alter tablespace test read write;

 

----------------------------------

--连接实例 orcl2
connect /@orcl2 as sysdba;
--创建导入需要的目录
create directory dump as 'c:\dump'
exit;


--在cmd 中执行以下命令
impdp  system/123456@orcl2 directory=dump dumpfile=test.dmp transport_datafiles=c:\test01.dbf remap_schema=xuejianxin:system

 
C:\Documents and Settings\Administrator>impdp  system/123456@orcl2 directory=dum
p dumpfile=test.dmp transport_datafiles=c:\test01.dbf remap_schema=xuejianxin:sy
stem

Import: Release 11.1.0.6.0 - Production on 星期五, 01 7月, 2011 1:07:55

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

连接到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功加载/卸载了主表 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01"
启动 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01":  system/********@orcl2 directory=du
mp dumpfile=test.dmp transport_datafiles=c:\test01.dbf remap_schema=xuejianxin:s
ystem
处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK
ORA-39123: 数据泵可传输的表空间作业中止
ORA-29345: 无法使用不兼容的字符集将表空间插入到数据库中

作业 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" 因致命错误于 01:08:22 停止

 

结果发现orcl 实例 和orcl2 实例字符集不一样

orcl 字符集为
select * from nls_database_parameters where parameter='NLS_CHARACTERSET'
--AL32UTF8

orcl2 字符集为 
select * from nls_database_parameters where parameter='NLS_CHARACTERSET'

--ZHS16GBK

 

connect /@orcl2 as sysdba;

SQL> alter system enable restricted session; --shutdown immediate   startup restrict


系统已更改。

SQL> alter database character set internal_use AL32UTF8;


shutdown immediate

 

SQL> connect /@orcl2 as sysdba
ERROR:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

 


SQL> conn /as sysdba
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  263639040 bytes
Fixed Size                  1332552 bytes
Variable Size             222300856 bytes
Database Buffers           37748736 bytes
Redo Buffers                2256896 bytes
数据库装载完毕。

exit;

 


最后在cmd 执行 impdp  system/123456@orcl2 directory=dum
p dumpfile=test.dmp transport_datafiles=c:\test01.dbf remap_schema=xuejianxin:sy
stem

由于 orcl2上没有用户xuejianxin 因此 remap_schema=xuejianxin:system
迁入了system方案 

 

C:\Documents and Settings\Administrator>impdp  system/123456@orcl2 directory=dum
p dumpfile=test.dmp transport_datafiles=c:\test01.dbf remap_schema=xuejianxin:sy
stem

Import: Release 11.1.0.6.0 - Production on 星期五, 01 7月, 2011 1:38:13

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

连接到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功加载/卸载了主表 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01"
启动 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01":  system/********@orcl2 directory=du
mp dumpfile=test.dmp transport_datafiles=c:\test01.dbf remap_schema=xuejianxin:s
ystem
处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK
处理对象类型 TRANSPORTABLE_EXPORT/TABLE
处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
作业 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" 已于 01:38:38 成功完成

 


connect /@orcl2 as sysdba

SQL> select * from system.test
  2  ;

        ID NAME
---------- --------------------
         1 xue1
         1 xue2


SQL>
SQL> connect /@orcl as sysdba
已连接。
SQL> drop directory dump;

目录已删除。

SQL> connect /@orcl2 as sysdba
已连接。
SQL> drop directory dump;

目录已删除。


 

原创粉丝点击