已SI01用户为例。说明如何导出分区表,并映射到新的表空间,完成数据迁移。
1、查看字符集,确保导出数据库和导入数据库的字符集完全相同,否则,请按照导出数据库重建导入的目标数据库。
数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。
NLS_LANGUAGE
AMERICAN
NLS_TERRITORY
AMERICA
NLS_CHARACTERSET
ZHS16GBK
NLS_NCHAR_CHARACTERSET
AL16UTF16
确保以上字段完全相同
2、查看数据库版本
select * from v$version;
确保导入库的版本号>=导出数据库的版本号
3、si01 查看当前用户的缺省表空间
SQL>select username,default_tablespace from user_users;
3.1、
提取用户使用的所有表空间
select distinct dbas.tablespace_name from dba_segments dbas where owner='SI01';
3.2、
评估用户使用的表空间大小,确保新建的导入库的表空间大小大于已使用的10G。
select owner,sum(bytes)/1024/1024 from dba_extents group by owner;
3.3
提取当前用户所有的有效对象数量和列表,如导入后,检查失效对象数量,如有需要,重新编译对象。
select owner,object_type,object_name,status from dba_objects do
where owner in ('SI01')
select count(1) from dba_objects do
where owner='SI01'
select count(1),do.object_type from dba_objects do
where owner in ('SI01') group by do.object_type
注意valid对象,invalid对象做导出前核对,导入后核对。
3.4
导出前加大导出库的temp表空间,和 undo 表空间,防止snapshot 过旧的错误。
4.2
在导出主机上创建导出目录,确保使用oracle用户
mkdir -p /u01/oracle/dump
chown oracle:oinstall /u01/oracle
在plsql或者sqlplus中执行命令
创建导出目录
create directory dump_kakoudb as '/u01/oracle/dump';
给用户赋权限使用