首页 > 数据库 >传输数据库/导入导出数据库

传输数据库/导入导出数据库

时间:2022-10-09 23:56:22浏览次数:79  
标签:数据库 导出 转储 导入 oracle app

您可以使用完整的可传输 export/import功能将整个数据库从一个 Oracle 数据库实例复制到另一个实例。

为 Oracle 数据库迁移数据的导出/导入优势

使用导出/导入升级 Oracle 数据库时迁移数据可提高性能。

使用导出/导入来迁移数据具有以下好处:

  • 对数据进行碎片整理。您可以压缩导入的数据以提高性能。

  • 重组数据库。您可以创建新表空间或修改现有表、表空间或要使用导入数据填充的分区。

  • 由于创建了一个全新的数据库,因此有助于对 Oracle 数据库的新旧版本进行并行测试。

  • 启用指定数据库对象或用户的复制。仅导入您需要的对象、用户和其他项目对于仅在生产数据的子集上为新软件建立测试环境很有用。数据泵导出/导入提供灵活的数据子集功能。

  • 用作备份存档。您可以使用完整的数据库导出作为当前数据库的存档。

  • 使您能够在与放置早期版本数据库的平台不同的操作系统或硬件平台上建立升级的数据库。

  • 基于网络的数据泵导入使您能够直接通过网络为早期版本的 Oracle 数据库加载新版本的 Oracle 数据库。通过使用基于网络的数据泵导入,您不需要使用中间转储文件。

使用导出转储文件传输数据库

您可以使用导出转储文件传输数据库。

以下任务列表总结了使用导出转储文件传输数据库的过程。后续示例中提供了每个任务的详细信息。

  1. 在源数据库中,将每个用户定义的表空间配置为只读模式并导出数据库。

    确保将以下参数设置为指定值:

    • TRANSPORTABLE=ALWAYS

    • FULL=Y

    如果源数据库是 Oracle Database 11g数据库(11.2.0.3 或更高版本),则必须将VERSION参数设置为12或更高。

    如果源数据库包含任何加密表空间或包含具有加密列的表的表空间,那么您必须指定ENCRYPTION_PWD_PROMPT=YES或指定ENCRYPTION_PASSWORD参数。

    导出转储文件包括用户定义表空间中包含的对象的元数据以及管理表空间中包含的用户定义对象的元数据和数据,例如SYSTEMSYSAUX

  2. 传输导出转储文件。

    将导出转储文件复制到目标数据库可访问的位置。

  3. 传输数据库中所有用户定义的表空间的数据文件。

    将数据文件复制到目标数据库可访问的位置。

    如果源平台和目标平台不同,则通过在“跨平台传输数据V$TRANSPORTABLE_PLATFORM中的视图上运行查询来检查每个平台的字节序格式。

    如果源平台的字节序格式与目标平台的字节序格式不同,则使用以下方法之一转换数据文件:

    • 使用包中的GET_FILEPUT_FILE过程DBMS_FILE_TRANSFER来传输数据文件。这些过程会自动将数据文件转换为目标平台的字节序格式。

    • 使用 RMANCONVERT命令将数据文件转换为目标平台的字节序格式。

笔记:

具有撤消段的数据文件不支持在不同字节序格式之间转换数据文件。

4、(可选)在源数据库上将用户定义的表空间恢复为读/写模式。

5、在目标数据库中,导入数据库。

导入完成后,用户定义的表空间处于读/写模式。

它还假设源平台具有以下数据文件和表空间:

表空间类型数据文件

sales

User-defined

/u01/app/oracle/oradata/mydb/sales01.dbf

customers

User-defined

/u01/app/oracle/oradata/mydb/cust01.dbf

employees

User-defined

/u01/app/oracle/oradata/mydb/emp01.dbf

SYSTEM

Administrative

/u01/app/oracle/oradata/mydb/system01.dbf

SYSAUX

Administrative

/u01/app/oracle/oradata/mydb/sysaux01.dbf

此示例做出以下附加假设:

  • 目标数据库是使用源数据库中的数据填充的新数据库。源数据库的名称是mydb

  • 源数据库和目标数据库都是 Oracle Database 19c 数据库。

完成以下任务以使用导出转储文件传输数据库:

任务 1 生成导出转储文件

通过完成以下步骤生成导出转储文件:

  1. 启动 SQL*Plus 并以管理员身份或以具有ALTERTABLESPACEMANAGETABLESPACE系统权限的用户身份连接到数据库。

  2. 将数据库中的所有用户定义表空间设为只读。
ALTER TABLESPACE sales READ ONLY;

ALTER TABLESPACE customers READ ONLY;

ALTER TABLESPACE employees READ ONLY;

3、以具有DATAPUMP_EXP_FULL_DATABASE角色的用户身份调用数据泵导出实用程序,并指定完全可传输的导出/导入选项。

SQL> HOST

$ expdp user_name full=y dumpfile=expdat.dmp directory=data_pump_dir 
        transportable=always logfile=export.log

Password: password

您必须始终指定TRANSPORTABLE=ALWAYS,它确定是否使用可传输选项。

此示例指定以下数据泵参数:

  • FULL参数指定正在导出整个数据库。

  • DUMPFILE参数指定要创建的结构信息导出转储文件的名称,expdat.dmp.

  • DIRECTORY参数指定指向转储文件的操作系统或Oracle Automatic Storage Management位置的目录对象。您必须在调用Data Pump之前创建DIRECTORY对象,并且必须向运行Export实用程序的用户授予目录上的READ和WRITE对象权限。

在非CDB中,自动创建目录对象DATA_PUMP_DIR。对该目录的读写权限自动授予DBA角色,从而授予用户SYS和SYSTEM。

但是,目录对象DATA_PUMP_DIR不是在PDB中自动创建的。因此,当导入到PDB时,请在PDB中创建目录对象,并在运行Data Pump时指定目录对象。

LOGFILE参数指定导出实用程序要写入的日志文件的文件名。在本例中,日志文件被写入转储文件所在的目录,但可以写入其他位置。

要在Oracle Database 11g Release 2(11.2.0.3)或更高版本的Oracle Database 11 g数据库上执行完全可传输导出,请使用VERSION参数,如以下示例所示:

expdp user_name full=y dumpfile=expdat.dmp directory=data_pump_dir 
      transportable=always version=12 logfile=export.log

仅Oracle Database 12c和更高版本的数据库支持完全可传输导入。

注意:在本例中,Data Pump实用程序仅用于导出用户定义表空间的数据字典结构信息(元数据)。实际数据仅针对管理表空间(SYSTEM和SYSAUX)卸载,因此即使对于大型用户定义表空间,此操作也会进行得相对较快。

4、检查日志文件中的错误,并记下必须传输到目标数据库的转储文件和数据文件。expdp在如下消息中输出这些文件的名称和路径:

******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:
  /u01/app/oracle/admin/mydb/dpdump/expdat.dmp
******************************************************************************
Datafiles required for transportable tablespace SALES:
  /u01/app/oracle/oradata/mydb/sales01.dbf
Datafiles required for transportable tablespace CUSTOMERS:
  /u01/app/oracle/oradata/mydb/cust01.dbf
Datafiles required for transportable tablespace EMPLOYEES:
  /u01/app/oracle/oradata/mydb/emp01.dbf

5、When finished, exit back to SQL*Plus:

$ exit

任务 2 传输导出转储文件

将转储文件传输到DATA_PUMP_DIR目录对象指向的目录,或传输到您选择的任何其他目录。目标数据库必须可以访问新位置。

在目标数据库中,运行以下查询以确定DATA_PUMP_DIR的位置:

SELECT * FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME = 'DATA_PUMP_DIR';

OWNER      DIRECTORY_NAME   DIRECTORY_PATH
---------- ---------------- -----------------------------------
SYS        DATA_PUMP_DIR    C:\app\orauser\admin\orawin\dpdump\

任务 3 传输用户定义表空间的数据文件

将数据库中用户定义的表空间的数据文件传输到目标数据库可以访问的地方。

在此示例中,将以下数据文件从源数据库传输到目标数据库:

  • sales01.dbf

  • cust01.dbf

  • emp01.dbf

如果要将数据库传输到与源平台不同的平台,则确定源平台和目标平台是否支持跨平台数据库传输,并确定每个平台的字节顺序。如果两个平台具有相同的字节顺序,则无需转换。否则,您必须在源数据库或目标数据库中对数据库中的每个表空间进行转换。

如果要将数据库传输到不同的平台,则可以在每个平台上执行以下查询。如果查询返回一行,则平台支持跨平台表空间传输。

SELECT d.PLATFORM_NAME, ENDIAN_FORMAT 
     FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d 
     WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;

以下是来自源平台的查询结果:

PLATFORM_NAME                      ENDIAN_FORMAT
---------------------------------- --------------
Solaris[tm] OE (32-bit)            Big

在这个例子中,您可以看到,endian格式是不同的。因此,在这种情况下,传输数据库需要进行转换。使用DBMS_FILE_TRANSFER包中的GET_FILE或PUT_FILE过程传输数据文件。这些过程会自动将数据文件转换为目标平台的endian格式。将数据文件传输到目标数据库现有数据文件的位置。在UNIX和Linux平台上,此位置通常为/u01/app/oracle/oradata/dbname/或+DISKGROUP/dbname/datafile/。或者,可以使用RMAN CONVERT命令转换数据文件

任务 4(可选)将表空间恢复为读/写模式

使传输的表空间在源数据库中再次读/写,如下所示:

ALTER TABLESPACE sales READ WRITE;
ALTER TABLESPACE customers READ WRITE;
ALTER TABLESPACE employees READ WRITE;

您可以推迟此任务,以首先确保导入过程成功。

任务 5 在目标数据库,导入数据库

以具有DATAPUMP_IMP_FULL_DATABASE角色的用户身份调用数据泵导入实用程序,并指定完全可传输的导出/导入选项。

impdp user_name full=Y dumpfile=expdat.dmp directory=data_pump_dir
   transport_datafiles=
      '/u01/app/oracle/oradata/mydb/sales01.dbf',
      '/u01/app/oracle/oradata/mydb/cust01.dbf',
      '/u01/app/oracle/oradata/mydb/emp01.dbf'
   logfile=import.log

Password: password

此示例指定以下数据泵参数:

  • FULL参数指定以FULL模式导入整个数据库。

  • DUMPFILE参数指定导出的文件,其中包含用户定义表空间的元数据以及要导入的管理表空间的元数据和数据。

  • DIRECTORY参数指定标识导出转储文件位置的目录对象。您必须在调用 Data Pump 之前创建DIRECTORY对象,并且必须将目录上的对象权限授予READ运行WRITE导入实用程序的用户。有关该命令 的信息,请参阅Oracle 数据库 SQL 语言参考。CREATE DIRECTORY

    在非 CDB 中,目录对象DATA_PUMP_DIR是自动创建的。对该目录的读取和写入权限自动授予DBA角色,因此授予用户SYSSYSTEM.

    但是,目录对象DATA_PUMP_DIR不会在 PDB 中自动创建。因此,在导入 PDB 时,在 PDB 中创建目录对象,并在运行 Data Pump 时指定目录对象。

  • TRANSPORT_DATAFILES参数标识要导入的所有数据文件。

    如果有很多数据文件, 您可以在参数指定的TRANSPORT_DATAFILES参数文件中多次指定参数。PARFILE

  • LOGFILE参数指定导入实用程序要写入的日志文件的文件名。在此示例中,日志文件被写入到从中读取转储文件的目录中,但它可以被写入到不同的位置。

该语句执行成功后,检查导入日志文件,确保没有出现意外错误。

在处理大量数据文件时,在语句行中指定数据文件名列表可能是一个费力的过程。它甚至可以超过语句行限制。在这种情况下,您可以使用导入参数文件。例如,您可以调用 Data Pump 导入实用程序,如下所示:

impdp user_name parfile='par.f'

例如,par.f可能包含以下行:

FULL=Y 
DUMPFILE=expdat.dmp 
DIRECTORY=data_pump_dir 
TRANSPORT_DATAFILES= 
'/u01/app/oracle/oradata/mydb/sales01.dbf', 
'/u01/app/oracle/oradata/mydb/cust01.dbf', 
'/u01 /app/oracle/oradata/mydb/emp01.dbf' 
LOGFILE=import.log

笔记:

 

  • 在导入期间,用户定义的表空间可能会被临时读取/写入以加载元数据。确保在导入期间未对数据进行任何用户更改。成功完成导入后,所有用户定义的表空间都变为读/写。

  • 执行网络数据库导入时,该TRANSPORTABLE参数必须设置为always

  • 当您导入 CDB 中的 PDB 时,请在用户名之后指定 PDB 的连接标识符。例如,如果 PDB 的连接标识符是hrpdb,则在运行 Oracle 数据泵导入实用程序时输入以下内容:

通过网络传输数据库

略。。。

https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/transporting-data.html#GUID-032C9715-B2F8-4ACD-8A1C-C1A899DEA3C1

 

标签:数据库,导出,转储,导入,oracle,app
From: https://www.cnblogs.com/wonchaofan/p/16774158.html

相关文章

  • 关于数据库经常自动关闭,并且单击打不开的问题作解释和解决
    解答我经常会遇到这个问题,就是数据库经常在第一次关机后无法打开,需要重启电脑才能够正常使用,我个人认为是超级麻烦!这次,我通过查找相关问题,终于找到了解决方法,让我们一起......
  • 再学·Oracle-数据库-04
    PLSQL编程:procedure Language 过程语言   PLSQL编程是Oracle对sql的一个扩展,让我们可以像在java 中 写 if else  else if,还可以写相应的循环逻辑。  语......
  • 04@数据库库的相关操作及数据库存储引擎详述
    文章目录​​数据库库的相关操作​​​​一、库的相关操作​​​​1、系统数据库​​​​2、创建数据库​​​​3、数据库相关操作​​​​二、存储引擎​​​​1、存储引......
  • Oracle 数据库升级过程中的主要步骤
    Oracle数据库升级包括六个主要步骤。Oracle数据库的升级步骤工作流   步骤1:准备升级Oracle数据库熟悉Oracle数据库新版本的特性。确定新版本的升级路......
  • 【SQLServer】数据库自动收缩
    使用SSMS开启数据库自动收缩功能: 使用SQL命令开启数据库自动收缩功能:--EnableAutoShrinkforthedatabaseABCEALTERDATABASEABCESETAUTO_SHRINKONGO--Di......
  • @mysql数据库面试手册
    面试手册1、你接触过哪几种数据库软件,各自的优缺点是什么?2、MySQLbinlog的几种日志格式有什么区别?3、MySQL的存储引擎有哪几种?4、MySQL主从复制原理是什么?5、MySQL中myisam......
  • @mysql数据库读写分离
    文章目录​​一、主库切换优先级​​​​1.数据量切换测试​​​​2.优先级切换测试​​​​3.如果断电或者断网,binlog如何保存?​​​​二、VIP漂移​​​​1.VIP漂移的两......
  • 【MySQL基础篇】MySQL数据库安装教程
    ......
  • 利用反射导出简单pdf报表
    leader给了导出pdf的需求,给了我示例代码,但我发现是硬编码的形式极大的影响了开发的效率。然后我思考了一下,它就是将实体对象的属性按顺序赋值,那我为何不用反射获取所有属......
  • 达梦数据库SQL执行计划查看方法
    SQL优化作为DBA日常主要工作内容,分析SQL的执行计划,是必须要掌握的知识点。执行计划体现了SQL在数据库中的执行方式,SQL语句按照什么样的方式执行,是由优化器决定的。达梦数据......