oracle 10g数据库表空间迁移之详细步骤
第一步:查询源数据库中存在那些表空间,确认要迁移的哪几个表空间
SQL> col tablespace_name for a10;
SQL> select tablespace_name ,file_name from dba_data_files;
第二步:核查源数据库的版本信息
SQL> select * from v$version;
第三步:核对快的大小
SQL> show parameter db_block_size
第四步:在目标数据库上核对版本信息是否与源数据库的版本信息一直以及快的大小是否与源数据库一直,
如若不一直需要修改快的大小与源数据库快(BLOCK_SIZE)的大小一直 修改db_block_size的值与目标数据库的值一直(SQL> ALTER SYSTEM SET DB_32K_CACHE_SIZE =64M;)
第五步:将源数据库中将要迁移的表空间至于只读状态
SQL> ALTER TABLESPACE demo READ ONLY;
第六步:在源数据库的OS上创建相应的目录
SQL> create or replace directory d_output as '/home/oracle/qilin/d_output';
SQL> grant read,write on directory d_output to qilin;
第七步:确定自包含表空间集合
SQL> execute sys.dbms_tts.transport_set_check('demo',true)
PL/SQL procedure successfully completed
经分析没有返回任何信息,说明该表空间demo是自包含的:
第八步:导出所要需要导出的表空间
expdp directory=d_output dumpfile=demo.dmp transport_tablespaces=demo transport_full_check=y
备注导出表空间后立刻还原数据库的表空间为写状态alter tablespace demo read write
第九步:在目标数据库上创建创建用户(该用户必须是源数据库的表空间上存在的用户之一)并且授权
SQL> create user demouser identified by qilin;
SQL> grant connect,resource to demouser;
第十步:在目标数据库的OS上创建相应的目录
create or replace directory saijuan as '/u01/bak_data/qilin/saijuan';
grant read,write on directory saijuan to demouser;
第十一步:把源数据库上的表空间所在的数据库文件和导出的数据文件迁移到目标数据库上,
源数据库的数据文件放到目标数据库存放数据文件的目录下,并且权限具有ORACLE的权限
源数据库导出的文件迁移到第十步建立好的目录下,也就是说在目标数据库/u01/bak_data/qilin/saijuan下必须有一个demo.dmp的文件
查看编码方式是否一致:
SQL> col parameter for a30;
SQL> col value for a30;
SQL> select * from nls_database_parameters;
PARAMETER VALUE
------------------------------ ------------------------------
NLS_LANGUAGE AMERICAN
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET ZHS16GBK
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
PARAMETER VALUE
------------------------------ ------------------------------
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_RDBMS_VERSION 10.2.0.4.0
修改编码的的方法:
shutdown immediate
startupmount
alter system enable restricted session;
alter system se tJOB_QUEUE_PROCESSES=0;
alter system set AQ_TM_PROCESSES=0;
alter database open;
alter database character set internal_use ZHS16GBK;
shutdown immediate
startup
第十二步:导入迁移到目标数据库的的文件
impdp system/qilin directory=saijuan dumpfile=demo.dmp transport_datafiles='/home/bonson/oradata/demo1.dbf';
impdp system/bonson directory=d_put dumpfile=bonsonxlocation.dmp transport_datafiles='/u01/app/oracle/oradata/mv_data/bonsonxlocation_data01.dbf',
transport_datafiles='/u01/app/oracle/oradata/mv_data/BonsonxLocation_DATA.dbf';
第十三步:查看被导入表空间的读写状态
SQL> select TABLESPACE_NAME,status from dba_tablespaces;
第十四步:修改表空间的的读写状态
SQL> alter tablespace demo read write;
第十五步:使用第九步创建的用户连接目标数据库核对数据
SQL> conn demouser/qilin
SQL> select * from tab;
SQL> SELECT SEGMENT_NAME, SEGMENT_TYPE FROM DBA_SEGMENTS WHERE TABLESPACE_NAME = 'DEMO';