迁移orcle数据库,从生产环境迁移到测试环境(涉及表多个空间合一,千万级数据的迁移)
2016-08-01 00:00
465 查看
摘要: 主要是处理多个表空间合一,千万级数据的迁移
1,先将生产环境的老库做备份,很大的话,最好在linux上直接导出,再移到u盘,现在是在本地的dos命令下进行的。
2,如果有几个表的数据量太大,比如千万级,可以先将库的结构导出来,用以下命令:
说明:old/old为用户名和密码,old.dmp是从生产库里别分出来的dmp,然后用本地的orcle做此操作。
3,如果要修改表空间tablespace,可以将导出来的old.idx改为old.sql将里面的表空间全部替换成自己的唯一表空间例如:new_space。然后用以下命令在本地新建用户和表空间:
4,在本地登录用old/old进入orcle,执行刚刚备份出来的old.sql表结构索引等脚本。
5,用命令将数据导入进本地新的库,但是要去除掉几个千万级别的表。命令如下:
说明:table1,table2等为含有千万级别数据的表,所以数据展暂时不导入
6,这样新的表做好了
7,现在可以在本地验证你的脚本,验证成功后,需要将所有的表库导出这里有以一个少表和空表导出的缺陷问题。
8,解决本基地无法导出所有表问题如下:
再导出的dmp的话就是所有的全表了。
9,最后就可以将现在的新的dump导入到新的测试环境了。
10,感谢经理周老师的教导!:grin:
1,先将生产环境的老库做备份,很大的话,最好在linux上直接导出,再移到u盘,现在是在本地的dos命令下进行的。
exp old/old@ip地址:1521/orcl file=f:\old.dmp
2,如果有几个表的数据量太大,比如千万级,可以先将库的结构导出来,用以下命令:
imp old/old@orcl file=f:\old.dmp indexfile=d:\old.idx rows=n full=y
说明:old/old为用户名和密码,old.dmp是从生产库里别分出来的dmp,然后用本地的orcle做此操作。
3,如果要修改表空间tablespace,可以将导出来的old.idx改为old.sql将里面的表空间全部替换成自己的唯一表空间例如:new_space。然后用以下命令在本地新建用户和表空间:
-- 如果存在此用户和表空间则drop掉 drop user old cascade; DROP TABLESPACE old_space INCLUDING CONTENTS AND DATAFILES; -- 新建新的表空间(此表空间名要和刚刚替换的空间名一致) create tablespace OLD_SPACE datafile 'D:\oracle\oradata\orcl\old_space_dat' size 512M autoextend on next 128m maxsize unlimited; -- 创建一用户并赋予表空间和权限,用户名和密码都为old CREATE USER old IDENTIFIED BY old DEFAULT TABLESPACE OLD_SPACE; GRANT connect,resource to old; GRANT insert any table to old; -- 赋予创建dblink权限 GRANT create public database link,create database link to old; GRANT create sequence to old; GRANT UNLIMITED TABLESPACE TO old; GRANT CREATE TABLE TO old; GRANT CREATE VIEW TO old; GRANT select any table TO old; GRANT debug any procedure, debug connect session TO old; GRANT delete any table TO old; GRANT alter any table TO old; GRANT update any table TO old; GRANT select_catalog_role to old; GRANT create public synonym TO old; GRANT create synonym TO old; GRANT create job to old; GRANT manage scheduler to old; -- 赋予dba权限 GRANT DBA TO old; COMMIT;
4,在本地登录用old/old进入orcle,执行刚刚备份出来的old.sql表结构索引等脚本。
5,用命令将数据导入进本地新的库,但是要去除掉几个千万级别的表。命令如下:
imp old/old@orcl file=f:\old.dmp ignore=y tables=table1,table2
说明:table1,table2等为含有千万级别数据的表,所以数据展暂时不导入
6,这样新的表做好了
7,现在可以在本地验证你的脚本,验证成功后,需要将所有的表库导出这里有以一个少表和空表导出的缺陷问题。
8,解决本基地无法导出所有表问题如下:
-- 进入命令窗口 SQL> show parameter deferred_segment_creation -- 看到如下: NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ deferred_segment_creation boolean TRUE -- 再修改为flase SQL> alter system set deferred_segment_creation=false; -- 再用上述命令查看,已经改为了false -- 再使用下面的sql语句查询一下当前用户下的所有空表 select table_name from user_tables where NUM_ROWS=0; -- 然后用一下SQL语句执行查询 select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 -- 假设我们这里有空表TBL_1,TBL_2,TBL_3,TBL_4,则查询结果如下: alter table TBL_1 allocate extent; alter table TBL_2 allocate extent; alter table TBL_3 allocate extent; alter table TBL_4 allocate extent; -- 最后我们把上面的SQL语句执行就可以了。
再导出的dmp的话就是所有的全表了。
9,最后就可以将现在的新的dump导入到新的测试环境了。
10,感谢经理周老师的教导!:grin:
相关文章推荐
- 使用可传输表空间向rac环境迁移数据9i->10g
- 警惕生产环境与测试环境数据不统一
- Oracle单实例数据库迁移到Oracle RAC环境之--数据导出导入
- 大数据测试 VS 传统数据库测试 & 测试环境需求
- 生产环境oracle 数据库迁移操作
- 【技术支持】开发人员从客户数据库环境中导出数据用户测试的几种方法途径
- 测试数据会吃掉TFS数据库很大的空间,有解决办法吗? 有
- Oracle sql 调优:使用虚拟索引在生产环境测试创建索引对数据库性能的影响
- postgresql 测试库和生产库2个数据库之间在线导数据
- ORACLE异机异目录恢复-将生产数据库数据恢复到模拟测试数据库完整步骤
- MySQL数据迁移到MSSQL-以小米数据库为例-测试828W最快可达到2分11秒
- 测试环境下模拟真实数据库数据移植
- SharePoint迁移数据到生产环境
- 使用可传输表空间向rac环境迁移数据
- 测试环境运行正常的SQL到生产上奇慢无比,最终导致UI访问超时;确定SQL效率无问题,那么就极有可能使生产环境的表数据量较大而且没有做分析。
- Oracle单实例数据库迁移到Oracle RAC环境之--数据导出导入
- Android 版本升级涉及到的数据库数据迁移问题
- Android 版本升级涉及到的数据库数据迁移问题
- 生产环境Mysql数据库备份脚本,Linux下网站数据定期自动备份与删除脚本,Windows下备份网站目录和数据库