QA需求:
测试环境有套Oracle(19c)库,现需要将其数据迁移至开发环境Oracle(19c)库中。现使用impdb做数据迁移。
实施方案:
- 根据DB账号(fid_userno)、IP从测试环境查询,该账号的表空间、大小等基础信息
- 在开发环境中,根据测试环境查询的基础信息进行查询确认:是否已存在?
- 若存在:与开发沟通确认删除,重新导入数据
- 若不存在:创建表空间(名称、大小与测试环境保持一致)
- 导入数据
实施步骤:
1.1> 查询账号(fid_userno)表空间名称
select username, default_tablespace from dba_users where username = 'FID_USERNO'
1.2> 查询表空间大小
select tablespace_name, sum(bytes/1024/1024/1024) from dba_data_files where tablespace_name='待查询的表空间名称' group by tablespace_name;
2.1 查询表空间是否存在
select tablespace_name from dba_tablespaces where tablespace_name = '待查询的表空间名称'
3.1 删除用户(fid_userno),表、索引等也会一起删除
drop user fid_userno cascade; (执行过后表空间名称还在,但表数据、索引等会删除)
4.1 创建表空间
create tablespace test_data(与测试环境表空间名称一致) datafile size 10G;
create tablespace test_index datafile size 10G;
5. 导出/导入数据.
# 导出SQL
expdp \'/as sysdba\' directory=DIR_DATA dumpfile=expdp_%U.dmp logfile=expdp.log schemas=fid_userno cluster=n
# 导入SQL
impdp \'/as sysdba\' directory=DIR_DATA dumpfile=expdp_01.dmp logfile=impdp.log schemas=fid_userno cluster=n
directory: 导出的数据存放路径,从 select * from dba_direcotries; 查询出来的DIRECTORY_NAME列的DIR_DATA
schemas: 为导出该库的账号(即连接该的应用DB账号)
dumpfile、logfile :为文件名字可以自定义