1.检查当前oracle数据库版本
SELECT * FROM V$VERSION;
2.下载对应的基础包和工具
我这里是19c的,去官网下载对应版本的导出工具
下载地址:https://www.oracle.com/database/technologies/instant-client/downloads.html
统一选择32位,因为PL/SQL Developer和Taod等第三方工具只有32位,需要对应32位的Oracle Instant Client
下载图中4个必要文件
instantclient-basic-nt-19.20.0.0.0dbru.zip -- 基础包,包含oci等基础文件
instantclient-sqlplus-nt-19.20.0.0.0dbru.zip -- sqlplus数据库连接工具,可执行sql语句
instantclient-tools-nt-19.20.0.0.0dbru.zip -- 数据库导入导出工具
instantclient-sdk-nt-19.20.0.0.0dbru.zip -- 运行时环境
依次解压到同一个目录,我这里是 C:\oracle\instantclient_19_20
3.配置环境变量
系统变量新增:
变量名:TNS_ADMIN 变量值:C:\oracle\instantclient_19_20
变量名:NLS_LANG 变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
Path新增:
C:\oracle\instantclient_19_20
C:\oracle\instantclient_19_20\sdk
4.添加配置文件
在环境变量 TNS_ADMIN 配置的目录下,即C:\oracle\instantclient_19_20\目录中新建tnsnames.ora文件。
写入内容:
连接名 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip )(PORT = 端口))
)
(CONNECT_DATA =
(SERVICE_NAME = 服务名)
)
)
连接名和服务名可以一致,服务名必须是连接oracle数据时的服务名(实例),ip和端口根据实际情况更改,下面是我的配置可以参考
5.测试sqlplus
打开cmd窗口,输入sqlplus user/pwd@ip:port/sid。连接成功,可查询数据库
user:用户名
pwd:该用户对应的口令
ip:port: ip和端口
sid:服务名(实例)
6.测试并使用exp导出指定用户下所有表和数据
打开cmd窗口,执行。注意是直接在cmd窗口执行,而不是sqlplus中执行,因为exp是可执行文件。
exp 用户/密码@ip:端口/服务名 file=C:\oracle\dmp\目标用户.dmp owner=目标用户;
-- 导出指定表的表结构,不要表数据
exp 用户/密码@ip:端口/服务名 tables=jy_hrm.ac01,jy_hrm.ab01 file=C:\oracle\dmp\jy_hrm.dmp rows=n
用户为权限足够的用户即可,目标用户是你要导出的用户
7.将dmp文件导入数据库
因为新的数据库不包含HXTJPT用户与表空间,因此先创建用户,sql中执行:
CREATE USER HXTJPT IDENTIFIED BY HXTJPT; -- 创建用户HXTJPT,口令也为HXTJPT
grant dba to HXTJPT; -- 赋予dba管理权限
导入dmp文件,cmd窗口执行:
imp 用户名/口令@ip:端口/服务名 ignore=y full=y file=C:\oracle\dmp\HXTJPT.dmp
导入成功