Orcale(备份导入导出)

1.备份恢复

1.1.备份定义

备份就是把数据库复制到转储设备的过程。其中,转储设备是指用于放置数据库副本的磁带或磁盘。通常也将存放于转储设备中的数据库的副本称为原数据库的备份或转储。备份是一份数据副本

1.2.备份分类

从物理与逻辑的角度来分类:从物理与逻辑的,备份可以分为物理备份逻辑备份

  • 物理备份:对数据库操作系统的物理文件(数据文件,控制文件和日志文件)的备份。物理备份又可以分为脱机备份(冷备份)和联机备份(热备份),前者是在关闭数据库的时候进行的,后者是以归档日志的方式对运行的数据库进行备份。可以使用oracle的恢复管理器(RMAN)或操作系统命令进行数据库的物理备份。

  • 逻辑备份:对数据库逻辑组件(如表和存储过程等数据库对象)的备份。逻辑备份的手段很多,如传统的EXP,数据泵(EXPDP),数据库闪回技术等第三方工具,都可以进行数据库的逻辑备份。

从数据库的备份角度分类:从数据库的备份角度,备份可以分为完全备份增量备份差异备份

  • 完全备份:每次对数据库进行完整备份,当发生数据丢失的灾难时,完全备份无需依赖其他信息即可实现100%的数据恢复,其恢复时间最短且操作最方便。

  • 增量备份:只有那些在上次完全备份或增量备份后被修改的文件才会被备份。优点是备份数据量小,需要的时间短,缺点是恢复的时候需要依赖以前备份记录,出问题的风险较大。

  • 差异备份:备份那些自从上次完全备份之后被修改过的文件。从差异备份中恢复数据的时间较短,因此只需要两份数据:最后一次完整备份和最后一次差异备份,缺点是每次备份需要的时间较长。

1.3.恢复定义

恢复就是发生故障后,利用已备份的数据文件或控制文件,重新建立一个完整的数据库。

1.4.恢复分类

  • 实例恢复:当oracle实例出现失败后,oracle自动进行的恢复。

  • 介质恢复:当存放数据库的介质出现故障时所作的恢复。介质恢复又分为完全恢复和不完全恢复。

  • 完全恢复:将数据库恢复到数据库失败时的状态。这种恢复是通过装载数据库备份并应用全部的重做日志做到的。

  • 不完全恢复:将数据库恢复到数据库失败前的某一时刻的状态。这种恢复是通过装载数据库备份并应用部分的重做日志做到的。进行不完全恢复后,必须在启动数据库时用resetlogs选项重设联机重做日志。

2.前提准备

数据准备,通过执行以下SQL语句,快速完成100W数据的创建工作。

  • 方式一:通过create table xxx as select方式

create table t_userinfo as 
select rownum as userid,'user_'||rownum as username,'888888' as password,'测试员'||rownum as realname,to_char(sysdate + rownum/24/3600, 'yyyy-mm-dd hh24:mi:ss') as datetime,trunc(dbms_random.value(0, 100)) as random_id,dbms_random.string('x', 20) random_strfrom dual connect by level <= 1000000;

  • 方式二:通过PL/SQL脚本方式

declarei number;
beginfor i in 1..1000000 loopinsert into t_userinfo values(i,'user_'||i,'888888','测试员'||i,to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),trunc(dbms_random.value(0, 100)),dbms_random.string('x', 20));commit;end loop;
end;

该方式必须提前创建数据表,在执行脚本。

3.综合案例

3.1.PL/SQL

3.2.1.Oracle Export/Import

选择PL/SQL中的Tools -> Export Tables...或者Tools -> Import Tables...中的Oracle ExportOracle Import方式来实现数据的导入与导出,该方式导出的文件格式为dmp方式。

注意:如果要使用该种方式必须安装完整的Oracle Client客户端,而安装的Oracle驱动是轻量版的,则没有imp.exeexp.exe等导入和导出文件,从而无法实现PL/SQL数据的导入与导出。

3.2.2.PL/SQL Developer

  • 导出:

选择PL/SQL中的Tools -> Export Tables...,找到PL/SQL Developer选项方式可以导出要导出的数据表。这种方式会导出整个表的所有数据,导出的文件是pde格式的文件,不能直接查看sql,适合整表数据导出的情况。导出表具体操作步骤如下:

点击Export Tables...,如下图所示:

  • 导入:

选择PL/SQL中的Tools -> Import Tables...,找到PL/SQL Developer选项方式可以导入pde格式的数据文件。导入表具体操作步骤如下:

点击Import Tables...,如下图所示:

注意:在导入数据时,请选择Create tables;然后可以通过Log选项查看导入的日志信息。

3.2.3.SQL Inserts

  • 导出:

选择PL/SQL中的Tools -> Export Tables...,找到SQL Inserts选项方式可以导出要导出的数据表。这种方式会导出整个表的所有数据,导出的文件是sql格式的文件,可以直接查看sql。导出表具体操作步骤如下:

注意:勾选Create tables选项,表示在导入该数据文件时,直接创建数据表。

  • 导入:

选择PL/SQL中的Tools -> Import Tables...,找到SQL Inserts选项方式可以导入sql格式的数据文件。导入表具体操作步骤如下:

注意:这里需要选中Use Command Windows选项来导入数据,如果要使用Use SQL*Plus方式,则需要额外配置SQL*Plus执行文件的位置。

3.2.exp/imp

OracleExpImp工具是两个非常有用的实用程序(客户端工具程序),可用于从Oracle数据库导出数据以及将数据导入数据库。这些工具可以处理各种数据传输需求,包括在不同数据库之间迁移数据。

注意:可以执行exp help=y、imp help=y查看帮助命令,以及执行exp或者imp查看对应版本号。

3.2.1.exp导出

  • 方式一:完全模式导出

将整个数据库内容导出,但是操作时需要具备管理员的权限。

exp scott/密码@orcl buffer=32000 file=位置 full=y

在使用该模式导出数据时,需要有多给选项操作,可以直接全部回车执行。

  • 方式二:用户模式导出

将指定用户的所有对象进行导出。

exp scott/密码@orcl buffer=32000 file=位置 owner=用户名

  • 方式三:表模式导出

指定导出数据库中的数据表。

exp scott/密码@orcl buffer=32000 file=位置 tables=(表1,表2,...)

3.2.2.imp导入

导入数据,请使用imp,语法格式如下:

imp 用户名/密码@orcl file=dmp文件路径 log=输出日志路径 full=y ignore=y

温馨提示:采用imp导入过程经常会遇到问题,建议多查阅资料,总有方法解决。

3.3.expdp/impdp

ORCALE 10G后提供了新的导入导出工具,数据泵(Data Pump),其中expdpimpdp是两个最常用的命令行工具。它们可以快速、高效地迁移大量数据,并且提供了丰富的参数供用户定制化操作。

  • 数据泵导出:使用工具EXPDP将数据库对象的元数据Meta-Data(对象结构)或数据导出到转储文件中。

  • 数据泵导入:使用工具IMPDP将转储文件中的元数据及其数据导入到Oracle数据库中。

EXPDPIMPDP属于逻辑备份与恢复。其逻辑备份的二进制文件成为转储文件,以dmp格式存储;EXPDPIMPDP都是服务端程序,因此转储文件只能放在由DIRECTORY对象指定的特定数据库服务器操作系统目录中。

数据泵提供的主要特性:

  • 支持并行处理导入、导出任务

  • 支持暂停和重启动导入、导出任务

  • 支持通过Database Link的方式导出或导入远端数据库中的对象

  • 支持在导入时通过Remap_schema、Remap_datafile、Remap_tablespace几个参数实现导入过程中自动修改对象属主、数据文件或数据所在表空间。

  • 导入/导出时提供了非常细粒度的对象控制。通过Include、Exclude两个参数,甚至可以详细制定是否包含或不包含某个对象。

3.3.1.创建directory对象

1.什么是Directory对象?

Directory对象是Oracle10g版本提供的一个新功能。它是一个指向,指向了操作系统中的一个路径。每个Directory都包含Read,Write两个权限,可以通过Grant命令授权给指定的用户或角色。拥有读写权限的用户就可以读写该Directory对象指定的操作系统路径下的文件。

最终,无论在什么地方使用expdp,生成的文件最终也是在服务器上的Directory指定的位置。

案例演示:

-- 查询目录对象是否已定义
select * from dba_directories t where t.directory_name = 'MYDIR';
-- 若不存在,则创建,若提示权限不足,请授权
create directory mydir as 'c:\mydir';
-- 权限授予
grant create any directory to scott; 
grant read, write on directory mydir to scott; 
-- 权限查询
select * from dba_sys_privs t where grantee='SCOTT';
select * from dba_tab_privs t where grantee='SCOTT';

3.3.2.expdp导出

expdp命令用于将数据库对象和数据导出到dump文件中。以下是使用expdp的基本语法:

expdp 'username/password@db' directory=dir_name dumpfile=dump_file.dmp logfile=log_file.log

参数说明:

  • username/password@db: 指定要连接的数据库的用户名、密码和数据库标识符。

  • directory=dir_name: 指定一个有效的目录对象,该对象指向服务器上的文件系统目录。

  • dumpfile=dump_file.dmp: 指定要创建的dump文件的名称。

  • logfile=log_file.log: 指定要创建的日志文件的名称。

  • nologfile=y:不输入日志信息。

额外参数说明:

  • content={ALL | DATA_ONLY | METADATA_ONLY}: ALL表示所有,DATA_ONLY只导出数据,不导出对象;METADATA_ONLY只导出表结构

  • parallel=4: 并行处理,指定并行度。

  • query: 指定过滤查询条件。

并行处理:在使用expdp进行数据导出时,可以使用并行处理来加快导出速度;而在使用impdp进行数据导入时,也可以使用并行处理来加快导入速度。但是,并行处理的使用方式和效果可能会有所不同,具体取决于数据库的配置和系统资源。

3.3.3.impdp导入

impdp命令用于从dump文件中导入数据和对象到数据库中。以下是使用impdp的基本语法:

impdp 'username/password@db' directory=dir_name dumpfile=dump_file.dmp logfile=log_file.log

参数说明:

  • username/password@db: 指定要连接的数据库的用户名、密码和数据库标识符。

  • directory=dir_name: 指定一个有效的目录对象,该对象指向服务器上的文件系统目录。

  • dumpfile=dump_file.dmp: 指定要导入的dump文件的名称。

  • logfile=log_file.log: 指定要创建的日志文件的名称。

额外参数说明:

  • table_exists_action=replace: 如果目标表已存在,则替换它;先drop表,再创建表,最后插入数据。

  • table_exists_action=truncate: 如果目标表已存在,则截断它;先删除数据再添加。

  • table_exists_action=append: 如果目标表已存在,则追加数据。

  • remap_schema: 用于重命名模式。例如,remap_schema=’old_schema’:’new_schema’

  • remap_tablespace: 用于重命名表空间。例如,remap_tablespace=’old_tablespace’:’new_tablespace’

3.3.4.案例演示

  • 方式一:全库模式

全库模式将导出导入整个数据库,对应的命令参数是full=y,但是必须具备dba或者exp_full_databaseimp_full_database权限的用户才能执行。

全库模式expdp导出:

执行命令如下:

expdp scott/密码@orcl directory=mydir dumpfile=full.dmp full=y logfile=full.log

expdp全库模式下报错ORA-31631、ORA-39161权限不足,如下图所示:

exp_full_database权限赋予scott用户,最后使用expdp全库模式导出:

-- 登录sysdba
sqlplus / as sysdba;
-- 将exp_full_database权限赋予scott用户
grant exp_full_database to scott;
-- 退出sysdba
exit
-- 最后,再次执行上述的expdp全库导出模式(开启并行处理)
expdp scott/密码@orcl directory=mydir dumpfile=full.dmp full=y logfile=full.log parallel=4

全库模式impdp导入:

imp_full_database权限赋予scott用户,最后使用impdp全库模式导入:

-- 登录sysdba
sqlplus / as sysdba;
-- 将imp_full_database权限赋予scott用户
grant imp_full_database to scott;
-- 退出sysdba
exit
-- 最后,再次执行上述的impdp全库导入模式(开启并行处理)
impdp scott/密码@orcl directory=mydir dumpfile=full.dmp full=y nologfile=y parallel=4

  • 方式二:用户模式

导出或导入Schema下的自有对象,对应impdp/expdp命令中的Schema参数,这是默认的操作模式。如果拥有dba或者exp_full_databaseimp_full_database权限的用户执行的话,就可以导出或导入多个Schema中的对象。

用户模式expdp导出:

执行命令如下:

expdp scott/密码@orcl directory=mydir dumpfile=schema.dmp schemas=scott logfile=schema.log

用户模式impdp导入:

执行命令如下:

impdp scott/密码@orcl directory=mydir dumpfile=schema.dmp schemas=scott logfile=schema.log

  • 方式三:表模式

导出指定的表或者表分区(如果有分区的话)以及依赖该表的对象(如该表的索引,约束等,不过前提是这些对象在同一个Schema中,或者执行的用户有相应的权限)。对应impdp/expdp命令中的Table参数。指定的表只能是在一个Schema下。

表模式expdp导出:

执行命令如下:

expdp scott/密码@orcl directory=mydir dumpfile=table.dmp tables=表1,表2,... logfile=table.log

表模式impdp导入:

执行命令如下:

impdp scott/密码@orcl directory=mydir dumpfile=table.dmp tables=表1,表2,... logfile=table.log

具体导入参数可以参考上述impdp

  • 方式四:表空间模式

导出指定的表空间中的内容。对应impdp/expdp中的Tablespaces参数,这种模式类似于表模式和Schema模式的补充。

表空间模式expdp导出:

执行命令如下:

expdp scott/密码@orcl directory=mydir dumpfile=tablespace.dmp tablesapces=表空间1,表空间2,... logfile=tablespace.log

表空间模式impdp导入:

执行命令如下:

impdp scott/密码@orcl directory=mydir dumpfile=tablespace.dmp tablespaces=表空间1,表空间,... logfile=tablespace.log

  • 方式五:条件过滤

-- 通过expdp数据泵导出,加入query和content参数,分别用于指定导出数据的条件和导出数据的形式。
expdp scott/密码@orcl directory=mydir dumpfile=tables.dmp tables=t_score query='t_score:"where cid=02"' content=data_only logfile=tables.log
-- 删除t_score中的cid=02的数据并提交事务
delete from t_score where cid=02;
commit;
-- 通过impdp数据泵导入数据,通过添加table_exists_action参数来控制数据的导入方式,此处使用的是append追加数据模式,如果目标数据表存在,则追加数据
impdp scott/un1xR00t@orcl directory=mydir dumpfile=tables.dmp tables=t_score table_exists_action=append logfile=tables.log

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/387749.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在docker中安装MongoDB 5.0+

文章目录 1、查看物理机是否支持avx指令集&#xff1a;安装资料中的cpu-z_2.10-cn.exe&#xff0c;并打开2、查看虚拟机是否支持avx指令集&#xff1a;3、创建目录4、使用Docker来运行一个MongoDB数据库实例5、进入容器6、查看当前db版本7、查看当前db的链接机器地址8、帮助指令…

浮点数的二进制表示

浮点数的二进制表示 浮点数在C/C中对应 float 和 double 类型&#xff0c;我们有必要知道浮点数在计算机中实际存储方式。 IEEE754规定&#xff1a; 单精度浮点数字长32位&#xff0c;尾数长度23&#xff0c;指数长度8,指数偏移量127&#xff1b;双精度浮点数字长64位&#xf…

达梦数据库DPI 实现两个数据库数据互通

链接字符串是目标访问链接 目标访问用户名 口令实现 31 里访问33库的数据 如果在31上建立视图访问33的某个表 AS SELECT SZZJ.sys_user.id FROM SZZJ.sys_userszzj31_szzj33;

研0 冲刺算法竞赛 day25 P1223 排队接水

P1223 排队接水 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 考点&#xff1a;贪心算法 思路&#xff1a;很简单&#xff0c;快的先接水即可&#xff0c;要注意重复项 代码: #include<iostream> #include<algorithm> using namespace std;int arr[1000005];…

C语言进阶 10. 字符串

C语言进阶 10. 字符串 文章目录 C语言进阶 10. 字符串10.1. 字符串10.2. 字符串变量10.3. 字符串输入输出10.4. 字符串数组10.5. 单字符输入输出10.6. 字符串函数strlen()10.7. 字符串函数strc()10.8. 字符串函数strcpy()10.9. 字符串搜索函数10.10. PAT10-0. 说反话 (20)10-1.…

七天打造一套量化交易系统:Day6-人工智能在量化投资中的应用

七天打造一套量化交易系统&#xff1a;Day6-人工智能在量化投资中的应用 步骤一&#xff1a;数据获取步骤二&#xff1a;对股票样本进行初步处理步骤三&#xff1a;遗传算法选股遗传算 kmeans 类的主要代码 步骤四&#xff1a;回测结果 遗传算法是一种基础的人工智能算法&#…

CSS实现图片边框酷炫效果

一、前言 我们在浏览一些网页时&#xff0c;经常会看到一些好看酷炫的元素边框效果&#xff08;如下图&#xff09;&#xff0c;那么这些效果是怎么实现的呢&#xff1f;我们知道&#xff0c;一般的边框&#xff0c;要么是实线&#xff0c;要么是虚线&#xff08;点状&#xf…

快速识别音频文件转成文字

一、SenseVoice概述 阿里云通义千问开源了两款语音基座模型 SenseVoice&#xff08;用于语音识别&#xff09;和 CosyVoice&#xff08;用于语音生成&#xff09;。 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测&#xff0c;有以下特点&#xff1a; 多语言…

spark 3.0.0源码环境搭建

环境 Spark版本&#xff1a;3.0.0 java版本&#xff1a;1.8 scala版本&#xff1a;2.12.19 Maven版本&#xff1a;3.8.1 编译spark 将spark-3.0.0的源码导入到idea中 执行mvn clean package -Phive -Phive-thriftserver -Pyarn -DskipTests 执行sparksql示例类SparkSQLExam…

机器学习算法——常规算法,在同的业务场景也需要使用不同的算法(二)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

麒麟V10系统统一认证子系统国际化

在适配麒麟V10系统统一认证子系统国际化过程中&#xff0c; 遇到了很多的问题&#xff0c;关键是麒麟官方的文档对这部分也是粗略带过&#xff0c;遇到的问题有: &#xff08;1&#xff09;xgettext无法提取C源文件中目标待翻译的字符串。 &#xff08;2&#xff09;使用msgf…

rhce THE homework of first

ssh远程免密登录成功 下载httpd和nginx 关闭防火墙 查看selinux的状态 为服务器配置ip 填充网站的内容 添加服务器配置 将文本写入网站

testRigor-基于人工智能驱动的无代码自动化测试平台

1、testRigor介绍 简单来说&#xff0c;testRigor是一款基于人工智能驱动的无代码自动化测试平台&#xff0c;它能够通过分析应用的行为模式&#xff0c;智能地生成测试用例&#xff0c;并自动执行这些测试&#xff0c;无需人工编写测试脚本。可以用于Web、移动、API和本机桌面…

C#基础——类、构造函数和静态成员

类 类是一个数据类型的蓝图。构成类的方法和变量称为类的成员&#xff0c;对象是类的实例。类的定义规定了类的对象由什么组成及在这个对象上可执行什么操作。 class 类名 { (访问属性) 成员变量; (访问属性) 成员函数; } 访问属性&#xff1a;public&#xff08;公有的&…

微前端技术预研 - bit初体验

1.关于什么是微前端以及微前端的发展&#xff0c; 当前主流框架以及实现技术等&#xff0c;可参考这篇总结(非常全面)&#xff0c; 微前端总结&#xff1a;目录详见下图 本文内容主要针对bit框架的实时思路以及具体使用。 1.什么是Bit? &#xfeff;Bit 是可组合软件的构建…

pycharm怎么使用Anaconda和配置

打开Anaconda Prompt 要删除 Conda 环境 yolov5sconda&#xff0c;你可以使用以下命令&#xff1a; conda remove --name yolov5sconda --all这个命令会删除名为 yolov5sconda 的整个环境&#xff0c;包括其中安装的所有包和依赖项。请在命令提示符或终端中运行此命令。执行此…

使用Spring Boot与Spire.Doc实现Word文档的多样化操作

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 前言 使用Spring Boot与Spire.Doc实现Word文档的多样化操作具有以下优势&#xff1a; 强大的功能组合&#xff1a;Spring Boot提供了快速构建独立和生产级的Spring应用程序的能力&#xff0c;而Spire.Doc则…

基于Hadoop的服装电商数据分析系统【Hdfs、flume、HIve、sqoop、MySQL、echarts】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍总体研究方向数据集介绍配置flume文件HIve建表HIveSQL大数据分析MySQL建表Sqoop命令导出数据到MySQL数据可视化店铺销售情况.......等 总结每文一语 有需要本项目的代码或文档以及全…

UDP服务器端bind失败问题

本人使用microchip芯片开发&#xff0c;使用UDP虚拟机通讯&#xff0c;经常提示bind失败&#xff0c;返回-1&#xff0c;尝试了以前UDP作为客户端使用时正常&#xff0c;故硬件链路没问题。 一、可能有几个原因&#xff1a; 端口实际上被占用&#xff1a;最明显的原因是端口真…