Oracle数据库Schema快速从测试环境迁移到生产环境的方法
背景:
生产环境上线,需要将测试环境数据库的Schema1,Schema2,Schema3,Schema4,Schema5五个Schema迁移到生产环境,手上并没有测试环境和生产环境的数据库服务器的操作权限,但是有数据库对应TNS信息 ,可以在本地使用pl/sql连接上数据库,最终目标是需要将测试环境的Schema1,Schema2等5个Schema中的表,视图,Package,序列,同义词等数据库对象一起迁移到生产环境,并删除对应业务表的数据,保证生产环境的接口正常运行,下面是详细的迁移步骤
迁移步骤
1、如果没有新建表空间,执行如下语句,新建表空间,在目标数据库(sys登录目标数据库),有多少个Schema就需要新建多个表空间,表空间大小视情况而定
create tablespace Schema1_DATA
datafile '+DATA_PORTAL/PORTALPROD/Schema1_DATA.dbf' --path/file_name
size 50m
autoextend on next 500m maxsize 20480m;
2、新建Scheam并授权,新建之前先删除(sys登录目标数据库)
drop user Schema1 cascade;
create user Schema1 identified by "Schema1pwd"
default tablespace Schema1_DATA
temporary tablespace TEMP
profile DEFAULT;
grant create sequence to Schema1;
grant create session to Schema1;
grant create table to Schema1;
grant create type to Schema1;
grant create view to Schema1;
grant debug any procedure to Schema1;
grant debug connect session to Schema1;
grant drop any table to Schema1;
grant insert any table to Schema1;
grant select any sequence to Schema1;
grant unlimited tablespace to Schema1;
grant update any table to Schema1;
3、本地执行cmd命令,打开dos窗口,执行命令导出Schema对应的dmp文件,如果遇到sqlplus不是内部命令的错误,请检查环境变量,在Path中加入如下配置:C:\OralceXE\app\oracle\product\11.2.0\server\bin
4、在dos窗口中执行导出命令,将源数据库Schema导出到本地,其他4个Schema用同样方式导出
expschema1/测试环境密码@xx.xx.xx.xx/测试环境sid rows=y file =C:\DB\schema1.dmp log=C:\DB\schema1_exp.log;
5、在dos窗口中执行如下导入命令,将第四步导出的dmp文件导入到生产环境
imp schema1/生产环境密码@file=xx.xx.xx.xx/生产环境sidC:\DB\schema1.dmp fromuser=schema1 touser=schema1 ignore=Y log=C:\DB\schema1_imp.log
6、执行删除脚本,删除业务表数据
7、检查每个Schema的package、view、table、synonym 是否能正常编译