oracle11g-R2数据库的逻辑备份(数据泵的导入导出)
一、环境:
server1迁移到server2
server1:
服务器号:201
系统:Windows server 2008 R2 x64
IP地址:192.168.2.201
oracle数据库版本:oracle 11g R2
端口号:1521
用户名:brdb_1031
密码:nc2015
迁移到
server2:
服务器号:207
系统:centos7-x64
IP地址:192.168.2.207
oracle数据库版本:oracle 11g R2
oracle安装平台:阿里云docker镜像
端口号:1521
二、准备:
1、在备份前,先检查两个数据库的字符集是否相等
SQL语句:
select userenv('language') from dual;
server1字符集

server2字符集

2、修改server2字符集
AL32UTF8字符集修改为ZHS16GBK
执行如下SQL语句就可修改:
select userenv('language') from dual;
shutdown immediate;
startup mount;
alter system enable restricted session;
alter system set job_queue_processes=0;
alter system set aq_tm_processes=0;
alter database flashback off;
alter database open;
show parameter recovery;
alter system reset db_recovery_file_dest scope=spfile sid='*';
alter system reset db_recovery_file_dest_size scope=spfile sid='*';
alter database character set internal_use ZHS16GBK;
shutdown immediate
startup
exit
演示方法二:
连接数据库
$ sqlplus / as sysdba
[oracle@dev /]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Fri May 31 09:34:26 2019 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL>
查看字符集
SQL> select userenv('language') from dual;
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8
SQL>
关闭数据库
SQL> shutdown immediate;
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
装载启动数据库到mount状态
SQL> startup mount
SQL> startup mount
ORACLE instance started. Total System Global Area 1603411968 bytes
Fixed Size 2213776 bytes
Variable Size 402655344 bytes
Database Buffers 1191182336 bytes
Redo Buffers 7360512 bytes
Database mounted.
执行如下命令
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; System altered. SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; System altered. SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0; System altered. SQL> alter database open; Database altered. SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set # 提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改: SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; Database altered. SQL>
我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验
关闭数据库
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
启动数据库
SQL> startup
ORACLE instance started. Total System Global Area 1603411968 bytes
Fixed Size 2213776 bytes
Variable Size 402655344 bytes
Database Buffers 1191182336 bytes
Redo Buffers 7360512 bytes
Database mounted.
Database opened.
查看字符集
报错:
SQL> select userenv(‘language’) from dual;
select userenv(‘language’) from dual
*
ERROR at line 1:
ORA-00911: invalid character SQL>
SQL>
SQL>
SQL> select userenv(‘language’) from dual;
select userenv(‘language’) from dual
*
ERROR at line 1:
ORA-00911: invalid character SQL>
稍等几分钟自动恢复
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
SQL>
SQL>
数据库字符集修改完毕
三、数据库的导出(expdp)
server1:
注意:数据库的导出和导入都在Windows命令模式下执行
1、数据库的导出(expdp)
导出某个用户的表空间
语法如下:
expdp 导出用户名/密码@数据库的SID
expdp 登陆用户名/密码@数据库的IP/orcl
schemas=指定导出用户名
dumpfile=文件名.dmp
logfile=日志名.log
directory=备份储存路径名
tables=表名(只导出指定的某张表)
_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmp (win系统显示日期)
_$(date +%Y%m%d-%H-%M) [linux 系统显示日期]
实例:
expdp brdb_1031/nc2015@orcl dumpfile=brdb_1031_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmp logfile=brdb_1031_%date:~0,4%-%date:~5,2%-%date:~8,2%.log directory=backfile

说明:备份存储路径名可以自己创建也可以查看已有的路径
查看系统中所有的路径
SQL语句:
select * from dba_directories

导出结果如下:

2、只导出指定的某张表
tables=表名
实例:
expdp brdb_0530/nc2015@orcl tables=SYS_USER dumpfile=SYS_USER_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmp directory=BACKFILE

导出结果如下:

3、只导入某张表
实例:
impdp brdb_0530_ys/123456@orcl dumpfile=SYS_USER_2019-07-17.dmp directory=BACKFILE table_exists_action=replace remap_tablespace=BRDB1031TABLESPACE:brdb_0530_ys remap_schema=brdb_0530:brdb_0530_ys

四、数据库的导入(impdp)
server2
数据库的导入:
SQL语句:
1、创建物理路径
自行创建一个完整的目录文件夹,用于存放dmp文件
例如:
/oracle-backup-import
创建一个完整的目录文件夹,用于存放表空间
例如:
/oracle-tablespace
2、创建逻辑目录
注意:路径一定要和物理路径是对应关系
语法:
create directory 路径名 as '路径'
实例:
import导入备份文件路径名
create directory import__dir as '/oracle-backup-import'
表空间存放文件路径名
create directory oracle_data as '/oracle-tablespace'
3、创建表空间
语法:
create tablespace 表空间名
datafile ‘物理地址(相当于文件路径)’
size 初始大小(单位M)
autoextend on next 每次自增的大小(单位M)
maxsize unlimited (此关键字用于不限制表空间大小)
实例:
create tablespace brdb_1031
datafile '/oracle-tablespace/brdb_1031_tablespace.dbf'
size 200M
autoextend on next 100M
maxsize UNLIMITED;
注意:
在Linux系统中需要给目录授权,否则报错:permission denied
# chown oracle:oinstall oracle-backup-import
# chown oracle:oinstall oracle-tablespace/
[root@dev /]# chown oracle:oinstall oracle-backup-import
[root@dev /]# chown oracle:oinstall oracle-tablespace/
[root@dev /]#
[root@dev /]# ll
total
dr-xr-xr-x. root root Dec bin
dr-xr-xr-x. root root Dec boot
drwxr-xr-x. root root May : dev
drwxr-xr-x. root root May : etc
drwxr-xr-x. root root Aug home
dr-xr-xr-x. root root Aug lib
dr-xr-xr-x. root root Aug lib64
drwxr-xr-x. root root Sep media
drwxr-xr-x. root root Sep mnt
drwxr-xr-x. root root Sep opt
drwxr-xr-x. oracle oinstall May : oracle-backup-import
drwxr-xr-x. oracle oinstall May : oracle-tablespace
dr-xr-xr-x. root root May : proc
dr-xr-x---. root root Aug root
dr-xr-xr-x. root root Aug sbin
drwxr-xr-x. root root Sep selinux
drwxr-xr-x. root root Sep srv
dr-xr-xr-x. root root May : sys
drwxrwxrwt. root root May : tmp
drwxr-xr-x. root root Aug usr
drwxr-xr-x. root root Aug var
[root@dev /]#
查看已经创建的表空间文件
[root@dev /]# cd oracle-tablespace/
[root@dev oracle-tablespace]#
[root@dev oracle-tablespace]# ll
total
-rw-r-----. oracle oinstall May : brdb_1031_tablespace.dbf
4、创建用户并指定表空间
语法:
create user 用户名 identified by 口令[即密码] default tablespace 表空间名;
实例:
create user brdb_1031 identified by 123456 default tablespace brdb_1031
5、目录授权
语法:
grant read,write on directory 路径名 to 用户;
实例:
grant read,write on directory oracle_data to brdb_1031
6、用户授权
一般情况下,我们可以直接赋予角色三种权限connect、resource、dba
语法:
grant 权限1, 权限2, 权限3…… to 用户名
实例:
grant connect, resource, dba to brdb_1031
7、查询数据库用户信息
select * from dba_users
在导出服务器上查询,主要看表空间名(server1)

8、导入dmp文件
server2:
语法:
impdp 用户名/密码@数据库的SID
directory=备份文件存放位置
dumpfile=导出的文件名
logfile=导出的日志名
schemas=指定导入用户名
remap_tablespace=转换表空间(原表空间:新表空间,多个转换用逗号隔开)
remap_schema=转换用户名(原用户名:新用户名)
Oracle11g使用数据泵方式导入出现ORA-39151错误时
导入的数据库中已经有相同的用户名和老旧的表
可以在后边加上参数
table_exists_action=replace(若表存在则替换)
table_exists_action=append/truncate/replace
--append为追加数据
truncate为先删除原表数据再插入数据
replace先drop表,然后创建表,最后插入数据(建议使用replace)
nologfile=y (不写入日志文件)
exclude=user(忽略用户对象已经存在的错误)
tables=表名(只导入指定的某张表)
实例:
$ impdp brdb_1031/123456@helowin directory=IMPORT_DIR dumpfile=BRDB_1031_2019-05-31.DMP logfile=brdb_1031_2019-05-31.log remap_tablespace=BRDB1031TABLESPACE:brdb_1031

导入完成,时间较慢,耐心等待

9、相同数据库的备份还原
注意:导入数据前需要先删除序列

实例:
impdp ys_nk/nc2015@orcl directory=BACKUP dumpfile=YS_NK_2019-06-14.DMP table_exists_action=replace
table_exists_action=replace(先删除原来的表,然后创建表,最后插入数据)
10、tables=表名(只导入指定的某张表)
实例:
impdp brdb_bjsc_0718/cnbi2018@orcl directory=dmpdir2 dumpfile=BRDB_BJSC_0718-2019-07-02.DUMP tables=(brdb_bjsc_0718.sys_user,brdb_bjsc_0718.SYS_USERCOMPANY) table_exists_action=replace
说明:全库备份文件只恢复某张表的情况
end
oracle11g-R2数据库的逻辑备份(数据泵的导入导出)的更多相关文章
- Oracle数据库采用数据泵方式导入导出数据
特别说明:Oralce的数据泵导入导出技术只能用在数据库服务器上,在只有客户端的机器上是无法使用数据泵技术的. 1.创建备份文件目录 mkdir d:\dmp 2.在Oralce中注册该目录,将目录 ...
- PLSQL_数据泵Datapump导入导出数据IMPDP / EXPDP(概念)(Oracle数据导入导出工具)(转)
一.摘要 在平常备库和数据库迁移的时候,当遇到大的数据库的时候在用exp的时候往往是需要好几个小时,耗费大量时间.oracle10g以后可以用expdp来导出数据库花费的时间要远小于exp花费的时间, ...
- oracle表分区、表分析及oracle数据泵文件导入导出开心版
1.先说oracle表分区是什么吧,这样吧我们来举个桃子,栗子太小,我们就不举了,我们来举个桃子. 你有500万份文件,你要把他存在磁盘上,好嘛,我们就一个文件夹,500万分文件在那儿杵着,我们想找到 ...
- Oracle数据泵的导入导出
说明:数据泵技术是Oracle Database 10g 中的新技术,它比原来导入/导出(imp,exp)技术快15-45倍.速度的提高源于使用了并行技术来读写导出转储文件. expdp导出 1.以s ...
- oracle表分区、表分析及oracle数据泵文件导入导出
1.先说oracle表分区是什么吧 你有500万份文件,你要把他存在磁盘上,好嘛,我们就一个文件夹,500万分文件在那儿杵着,我们想找到要的那个打开,嘿嘿,我们得找到什么时候. 这时候,有个人告诉你, ...
- 【EXPDP】expdp/impdp数据泵远程导入导出
Oracle在10g的时候有一个很好用的导出工具expdp(数据泵) 但是这个工具好用的同时,有一个局限,就是必须用本地的用户才可以导出数据,也就是说数据泵只能导出本地数据库的数据 但是如果业务需求是 ...
- Oracle数据泵的导入和导出
前言 今天王子要分享的内容是关于Oracle的一个实战内容,Oracle的数据泵. 网上有很多关于此的内容,但很多都是复制粘贴别人的,导致很多小伙伴想要使用的时候不能直接上手,所以这篇文章一定能让你更 ...
- Postgresql数据库数据简单的导入导出
Postgresql数据库数据简单的导入导出 博客分类: DataBase postgres 命令操作: 数据的导出:pg_dump -U postgres(用户名) (-t 表名) 数据库名( ...
- [转]mysqldump备份还原和mysqldump导入导出语句大全详解
FROM : http://www.cnblogs.com/zeroone/archive/2010/05/11/1732834.html mysqldump备份还原和mysqldump导入导出语句大 ...
随机推荐
- 归一化 (Normalization)、标准化 (Standardization)和中心化/零均值化 (Zero-centered)
博主学习的源头,感谢!https://www.jianshu.com/p/95a8f035c86c 归一化 (Normalization).标准化 (Standardization)和中心化/零均值化 ...
- 清晰架构(Clean Architecture)的Go微服务: 事物管理
为了支持业务层中的事务,我试图在Go中查找类似Spring的声明式事务管理,但是没找到,所以我决定自己写一个. 事务很容易在Go中实现,但很难做到正确地实现. 需求: 将业务逻辑与事务代码分开. 在编 ...
- 为BlueLake主题增加图片放大效果
fancyBox 是一个流行的媒体展示增强组件,可以方便为网站添加图片放大.相册浏览.视频弹出层播放等效果.优点有使用简单,支持高度自定义,兼顾触屏.响应式移动端特性,总之使用体验相当好. 现在,我们 ...
- 【Oracle】分区表详解
此文从以下几个方面来整理关于分区表的概念及操作: 1.表空间及分区表的概念 2.表分区的具体作用 3.表分区的优缺点 4.表分区的几种类型及操作方法 5.对表分区的维护 ...
- 如梦令编程语言发布 (RML)
如梦令编程语言是在Rebol语言核心语法的基础上,做了一些自以为是的修改而来.谨以此为Rebol语法的传承,略尽绵薄之力. 基本概念 如梦令语言分属Lisp语系,代码本身是一个层层嵌套的Token列表 ...
- Day4-Python3基础-装饰器、迭代器
今日内容: 1.高阶函数 2.嵌套函数 3.装饰器 4.生成器 5.迭代器 1.高阶函数 定义: a:把一个函数名当作实参传给函数 a:返回值包含函数名(不修改函数的调用方式) import time ...
- wireshark简单实用教程
转自:https://jingyan.baidu.com/article/c35dbcb0866b698916fcbc81.html wireshark是非常流行的网络封包分析软件,功能十分强大.可以 ...
- Shiro自定义密码匹配认证
项目集成shiro的时候,有写某个自定义类然后继承自AuthorizingRealm 并且重写实现了他的2个方法: 1.其中一个:认证回调 验证账户密码的 doGetAuthenticationInf ...
- JVM性能分析 | 一次生产系统Full GC问题分析与排查总结
一次生产系统Full GC问题分析与排查总结 背景 最近某线上业务系统生产环境频频CPU使用率过低,频繁告警,通过重启可以缓解,但是过了一段时间又会继续预警,线上两个服务节点相继出现CPU资源紧张,导 ...
- Dwz/Jquery--使用Ajax提交表单时调用表单设置的校验
案例 今天有一个需求就是点击按钮时,使用ajax方式提交表单,而且不是直接用form表单下的submit按钮提交,表单中用的校验是dwz 自带的校验方式,表单模板如下: <li><d ...