ORACLE 2011-04-22逻辑迁移(EXPDP/IMPDP)总结文档

来源:互联网 发布:手机远程定位软件 编辑:程序博客网 时间:2024/06/05 13:30

 

OS环境:10.0.1.28/windows 2008/64位    10.0.1.31/windows 2008/64

OS配置:2CPU/16G/2TB                        2CPU/16G/2TB

数据库版本:ORACLE 10.2.1   ORACLE 11.2.1

服务器信息:ip/10.0.1.28  用户/tranuser  用户表空间/tranuser

                        ip/10.0.1.31  用户/tranuser  用户表空间/tranuser          

实施方案:将10.0.1.28服务器上的tranuser用户下所有对象逻辑

                    移到10.0.1.31服务器的tranuser用户内。

实施工具:expdp/impdp

实施规划:数据量114G

导入速度:1min/36m

导入时间:24小时

    颈:    通过生成AWR报告,可以看出瓶颈为user/IO

实施过程:

                 //服务器10.0.1.28

                 使用expdp工具以schema=tranuser模式导出

                 使用ftp服务器将导出的dmp文件传输到10.0.1.31服务器上

导出数据实施脚本:

1create directory my_dir as 'd:/expdp'

2grant read,write on directory my_dir to tranuser

3:expdp tranuser/****** DIRECTORY=my_dir DUMPFILE=tranuser.dmp schema=tranuser job_name=tranuser 

 

                             

                  //服务器10.0.1.31

                 创建tranuser用户

                 创建tranuser表空间

                 赋予tranuser用户权限

                 验证用户下的默认表空间

                 查询数据导入的信息更新

实施脚本:

1create user tranuser identified by tranuser default tablespace tranuser;

2create tablespace TRANUSER datafile 'd:/oracledata/tranuser01.dbf'  size 20480M

3grant connect,resource to tranuser;

4select username,default_tablespace from dba_users where username='TRANUSER';

导入数据实施脚本:

1create directory my_dir as 'd:/impdp'

2grant read,write on directory my_dir to tranuser

3impdp tranuser/*****  DIRECTORY=my_dir DUMPFILE=tranuser.dmp schema=tranuser job_name=tranuser 

4SQL> select dbf.tablespace_name,

      dbf.totalspace "总量(M)",

      dbf.totalblocks as 总块数,

      dfs.freespace "剩余总量(M)",

      dfs.freeblocks "剩余块数",

      dfs.freespace/1024 "剩余总量(G)",

      (dbf.totalspace-dfs.freespace)/1024 "已使用量(G)",

      (dfs.freespace / dbf.totalspace) * 100 "空闲比例"

      from (select t.tablespace_name,

      sum(t.bytes) / 1024 / 1024 totalspace,

       sum(t.blocks) totalblocks

       from dba_data_files t

       group by t.tablespace_name) dbf,

       (select tt.tablespace_name,

       sum(tt.bytes) / 1024 / 1024 freespace,

       sum(tt.blocks) freeblocks

       from dba_free_space tt

       group by tt.tablespace_name) dfs

       where trim(dbf.tablespace_name) = trim(dfs.tablespace_name)

      and dbf.tablespace_name in ('JYDB','TRANUSER','CCXE');

实施过程问题:数据库在导入的过程中,开发人员提出导入缓慢的质疑,要求DBA发现并解决问题。

        

发现问题:

1:通过查看告警日志文件可以看出日志切换速度太快,基本十几秒钟切换一次(日志文件大小为100M1*5组),因为切换日志要发生增量检查点,要将脏数据块写入数据文件,所以频繁切换影响数据库性能。

解决方案:将日志文件加大,每组日志文件加到500M,共5组,再次查看告警日志文件,发现切换频率降低,每五分钟切换一次,数据库性能提升。         

2:因为导入数据时,数据库会发生大量的insert操作,直接接触的内存区域则为buffer cache,可通过select * from V$MEMORY_DYNAMIC_COMPONENTS;语句查看当前内存的使用配分情况,根据分析来设定SGA的大小,而导入时则会创建索引,因此会发生大量的排序,PGA也要相应的调整。

解决方案:  Show parameter sga

                      Show parameter pga;

                       Alter system set pre_page_sga=6g scope=spfile

                       Alter system set pga_aggregate_target=6g scope=spfile;

导出/导入前期规划:

1:设置好对应的参数:如SGA,PAG,BUFFE, log buffer

2:字符集:包括源数据库,客户端,目标数据库字符集

3PARALLEL:并行度,可以加快到导出导入的速度

4:索引:导入时为了加快速度,可以先删除索引,导入后重建

5:约束:导出/导入时最少把约束取消,特别是主外键

6:日志:将日志文件大小设置好,避免频繁出发增量检查点

7:数据块:根据情况而定,大数据块可以插入大行,减少IO,避免行连接

8:数据文件:一次规划好数据文件,不要开启自动扩展,因为扩展后要写数据字典,影响性能。

9:为了导入时避免不必要的报错,把导入用户赋予DBA权限

10:导出/导入时避免参数的书写问题,参数要加前面。

11 如果数据库设为归档,那么要把归档进程的数量增加。

 

 

原创粉丝点击