昨天进行了数据库的备份和导库,因为项目上的开发库和测试库中的数据不同步,所以准备将测试库中的数据导入到开发库中,以便开发人员使用。大概说说我是如何开始进行倒库准备,以及到注意的事情。
数据库是安装在Linux服务器下的。
所以我通过xshell登录到Linux系统中开始进行数据备份的操作。
步骤1:对开发库进行备份,以便于后续数据出问题时方便查找到。
实施步骤:1. 设置字符集,为UTF-8与开发库保持一致 (注意:字符集一定要保持一直,不然导出时会报PLS_00091 的错误)
exprot NLS_LANG='AMERICAN_AMERICA.AL32UTF8';
2.开始进行数据库的备份
exp 用户名/密码@实例名 file=./20160617_20.dmp log=./20160617_20.log owner=cbs_dev;
整库的备份完成。
步骤2:导出测试的数据准备进行导入到开发库中。
实施步骤:1.设置字符集,为UTF-8与开发库保持一致
2.exp 用户名/密码@实例名 file=./20160617_63.dmp log=./20160617_63.log owner=cbs_dev;
步骤3:准备将测试库整体导入到测试库中,为了导入时保持不出错,我使用的方法是,先删除开发库的用户,再重新新建,保证该用户下没有任何的数据。
实施步骤: 1.删除开发库的要导入数据的用户
drop user 用户名 cascade;
2.创建用户并设置默认表空间和开发库的一致
create user 用户名 identified by 密码 default tablespace 表空间。
3.给用户授权
grant session ,dba to 用户名。
4.准备将测试库的数据整体导入开发库的该用户下。
imp 用户名/密码@实例名 file=./20160618_63.dmp log=./20160618_63.log full=y dectory=y;
执行完成后,测试库的数据已经整体导入到开发库中。
5.查看索引表空间是否和测试库的一致
select * from dba_indexes where owner='用户名';
6. 若不一致,则查询修改索引表空间
select 'alter index'|| index_name ||'rebuild tablespace T2;' from DBA_indexes where TABEL_OWER='USER1' AND TABLESPACE='TS1';