您的位置:首页 > 数据库

数据库每个表数据部分导出,保证系统正常运行

2018-01-28 15:48 246 查看
一、前言

      最近需要对现有的项目就行修改,修改成另一个项目用于投标使用,修改过程主要是页面数据名称和匹配投标要求的修改。碰到的问题是现在系统数据库(orcal)过于庞大(近30G,数据表近400个),因为投标要部署两套完整的系统,所用要做到数据库每个表数据部分导出,保证系统正常运行。

二、具体过程

     思路:首先获得导出对应用户的所用空表和储存过程等。之后将所用空表删除,导出每个表的前1000条数据(一般足够),进行导入 。核心语句就是     imp 用户/密码@localhost:1521/orcl file=f:\1000data.dmp tables=(多个表名称) 

      1.导出对应用户的所用空表和储存过程等,这一步主要是要将数据库中的储存过程、定时的导出。

       exp 用户/密码@localhost:1521/orcl owner=用户 file=f:\kongdata.dmp rows=n compress=n  

     2.所用空表删除,导出所用空表删除,导出每个表的前1000条数据。空表不删除不能进行所用表的导入。plsql直接删除就行

获得本用户所用表,将数据表后加上逗号,方便执行导出。

select t.TABLE_NAME||',' from user_tables t





  复制所用表,打开word,对换行进行替换,之后执行exp导出每个表前1000条数据,

exp 用户/密码@localhost:1521/orcl file=f:\qian1000.dmp tables=(

SRW_CF,SRW_XK,SSFJ_CF,SSFJ_XK,SSJJ_QZSRW_CF,SRW_XK,SSFJ_CF,SSFJ_XK,SSJJ_QZ) QUERY=\"WHERE rownum<1000\",注意删除最后一个逗号。

注意事项:1.exp中表长度有限制,一次执行太多可能会报错。我执行时对400个表分三次进行执行。

                  2.orcal 11g的新特性空表不能直接导出,需要注意(SELECT 'ALTER TABLE '||TABLE_NAME||' ALLOCATE EXTENT;' SQLSTR FROM USER_TABLES WHERE SEGMENT_CREATED='NO'  执行这句话,执行获得的每一个语句就行)

        3.将导出的数据导入到新数据库中

imp 用户/密码@localhost:1521/orcl file=F:\kongdata.dmp full=y ignore=y

经过测试,系统可以运行。数据库数据由原来的30G缩小到100M以下。部署速度明显就快了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐