目录
Oracle数据库导入导出
一. expdp/impdp 使用
二. 导出实例
1. 检查导出目录
2. 导出数据库文件
3. 传输数据库文件
三. 导入实例
1. 数据库文件处理
2. 数据库文件导入
Mysql数据库导入导出
一. 脚本说明
二. 导出实例
三. 导入实例
在Linux服务器上做数据库的导入导出,Oracle与Mysql两种数据库对比而言,Mysql的数据导入导出会简单很多。
Oracle数据库导入导出
一. expdp/impdp 使用
expdp/impdp导入导出的运行命令基础相似,这里就以对比形式进行对常用属性做部分说明:
expdp | impdp |
expdp 用户名/密码@IP/数据库实例 [导出属性] | impdp 用户名/密码@IP/数据库实例 [导入属性] |
用户/密码为数据库用户密码,IP不写默认本地地址,数据库实例为数据库TNS中的SERVICE_NAME | |
directory=DATA_PUMP_DIR;导入导出的逻辑目录,可默认使用Oracle现有的,也可在oracle中自定义创建,但需给目录授权用户读写权限 | |
dumpfile=xx.dmp;导入导出的数据文件的名称 | |
schemas=user_name;指定用户,如果有dblink,则不是本数据库用户 | |
network_link=db_l;dblink参数,对于导入时,这个参数会限制导入的部分参数配置 | |
expdp的常用参数 | impdp常用参数 |
tablespaces=users;使用tablespaces参数导出users表空间内所有的对象 | tablespaces=users;导入对应表空间users内所有对象 |
logfile=expdp.log;导出日志文件,默认为expdp.log | logfile=impdp.log;导入日志文件,默认为impdp.log |
exclude=view;排除视图 exclude=index:"like '%TEMP%';排除含TEMP索引 exclude=table:\" IN \(\'TABLE1\',\'TABLE2\'\)\";排除多张表 include=sequence;导序列 include = object_type[:"name_expr"];object_type用于指定要排除/包含的对象类型,name_expr用于指定要排除/包含的具体对象.exclude和include不能同时使 | TABBLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | REPLACE };该选项用于指定当表已经存在时导入作业要执行的操作,默认为SKIP |
query=user.temp :"where col1 = 1 and col2 > 0";query导出查询得到的结果集 | REUSE_DATAFIELS={Y | N};该选项指定建立表空间时是否覆盖已存在的数据文件.默认为N |
二. 导出实例
1. 检查导出目录
- Xshell连接数据库服务器后,登录进入oracle用户:su - oracle
- 登入sqlplus,查看是否存在导出文件目录(DATA_PUMP_DIR):select * from dba_directories;
注意:如果没有或不用现有dpdump目录,需要进入sqlplus创建对应的导出目录,并给目录授权,如下:
a. 创建expdp备份目录:create directory home as '/home/oracle/backup';
b. 对备份目录赋予读写权限:grant read,write on directory home to user;
2. 导出数据库文件
- 退出sqlplus,按表空间(tbs_perm_hap)导出数据库文件
expdp user/passwork@数据库实例 tablespaces=tbs_xx dumpfile=tbs_2021042314.dmp directory=DATA_PUMP_DIR;
- 导出成功
3. 传输数据库文件
将导出的数据库文件传输到目标服务器指定目录,需切换到root用户
scp /home/app/oracle/admin/数据库实例/dpdump/tbs_2021042314.dmp root@目标服务器IP:/home/app/oracle/admin/数据库实例/dpdump/
三. 导入实例
1. 数据库文件处理
- Root用户登陆服务器,查看传输进来的数据库文件
cd /home/app/oracle/admin/数据库实例/dpdump/
- 给文件赋予777权限:chmod 777 tbs_2021042314.dmp
2. 数据库文件导入
- 切换用户
切换到Oracle用户:su – oracle
- 删除表空间
因为是数据库文件导入,有些存在结构(表、索引)无法执行,会被跳过,所以需要先删掉表空间。
1. 将表空间置为offline
alter tablespace tbs_xx offline;
2. 将磁盘上的表空间数据文件一同删除
drop tablespace tbs_xx including contents and datafiles;
- 创建表空间
1. 查看数据位置
select * from dba_data_files;
2. 创建命令
create tablespace tbs_xx datafile '/home/app/oracle/oradata/数据库实例/tbsxx.dbf' SIZE 8G autoextend on extent management local segment space management auto;
注意:
创建表空间后,可以同时查看下数据库的密码过期校验,一般密码会默认180天后过期,要到期时会出现次报错:ORA-28002: the password will expire within 7 days
SELECT * FROM dba_profiles s WHERE s.profile = 'DEFAULT' AND s.resource_name = 'PASSMORD_LIFE_TINE';
这时可以通过以下命令,去掉密码有效期校验,命令:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
- 数据文件导入
1. 退出sqlplus:exit;
2. 执行导入命令
impdp user/passwork@数据库实例 tablespaces=tbs_xx dumpfile=tbs_2021042314.dmp directory=DATA_PUMP_DIR;
3. 出现以下图则导入成功
Mysql数据库导入导出
Mysql的导入导出是以实例进行操作的,所以在进行导入导出操作前,需要保证目标数据库的数据库实例与源数据库导出数据库实例一致。
一. 脚本说明
- 导出脚本:mysqldump -h 172.0.0.1 -u root -p h_db > /u01/20210423.sql
参数说明:-h 后面跟的是来源数据库服务器IP
-u 后面跟的是数据库账号
-p 后面跟的是数据库密码(未写,将在回车后输入)
h_db:指的是数据库实例
> :后面跟的是文件导出文件路径
- 导入脚本:source execute.sql;
execute.sql为sql文件具体路径
二. 导出实例
- 从来源数据库导出脚本SQL
mysqldump -h 172.0.0.1 -u root -p h_db > /u01/backup/20200701.sql
- 将脚本移动到目标服务器
scp /u01/backup/20200701.sql root@172.0.0.2:/u01/uat_cover_dev_v/
三. 导入实例
- mysql -uroot -p(登录数据库)
- use h_db;(选择数据库实例)
- source /u01/uat_cover_dev_v/20200701.sql;(执行脚本,mysql的执行命令要以;结尾)