Oracle Principles: Logical Backup and Recovery

table of Contents

One, backup and restore

2. Types of failures that may occur in the Oracel environment

Three, import and export program exp/imp

Fourth, the difference between exp/imp and data pump


One, backup and restore

In Oracle, a backup is required to restore. Oracle backup is divided into physical backup and logical backup. Physical backup means backing up physical files, such as data files, log files, control files, password files, etc. Logical backup: tables, views, stored procedures, database objects, etc.

2. Types of failures that may occur in the Oracel environment

There are four types of failures: statement failures, that is, failures caused by errors in SQL statements, Oracle will find statement failures by itself; user process failures, when the user program connects to the database, the client fails, causing the client to crash and the user process to disappear. At this time, PMON in Oracle will automatically stop the corresponding service process; instance failures, such as the Oracle server crashes, memory crashes, and the process crashes. At this time, you need to restart Oracle to recover from the instance failure; media failure, such as a broken hard disk causing data file damage, you need to contact the DBA for manual recovery.

Three, import and export program exp/imp

Export, turn the object in the database into a binary file and put it in the operating system; import, turn the binary file of the operating system back into the database and load it. The traditional import and export procedures are in the client. In traditional data migration, the data in database A is exported into data files (dmp, csv, tsv, excle, sql files, etc.), and then the data files are put into the new database for execution. Lowering the high-water mark can be achieved by re-directing the table (usually insert into newtable select * from oldtable; truncate table oldtable; insert into oldtable select * from newtable;)

There are four import and export modes: database mode, export and import all objects in the database; table space mode, import and export all objects in one or more table spaces; user mode, export and import all objects in a user mode; table mode, export Import one or more tables or table partitions.

Common parameters for exporting exp: Enter exp help=y in the cmd prompt

parameter name Default value (format) Description
USERID username/password@database   Specify the account and password of the user to log in. This parameter must be the first parameter in the command line. For example: exp tester/ root means the user name is tester and the password is root
FULL FULL=Y/N Whether to export the entire database
BUFFER BUFFER=Data buffer size Data buffer size, used to improve exp/imp speed. The unit is byte. It cannot be written as buffer=1m. It should be written as a parameter in bytes, such as buffer=1048576
OWNER OWNER=(user1, user2, …) Export the tables whose owners are user1, user2, ...
FILE FILE=example.dmp Specify the path and file name of the exported file, for example: FILE=example.dmp means to export the data to example.dmp
TABLES TABLES=(table1, table2,…) Only export tables table1, table2...
COMPRESS COMPRESS = Y / N Whether to compress the exported file
RECORDLENGTH   IO record length
GRANTS GRANTS = Y / N Whether to export permissions
INCTYPE   Types of incremental export
INDEXES INDEXES=Y/N Whether to export the index
RECORD RECORD = Y / N Whether to track incremental export
DIRECT DIRECT = Y / N Whether it is an absolute path
TRIGGERS TRIGGERS = Y / N Whether to export triggers
LOG LOG=exp.log Save the log output on the screen to a file
STATISTICS STATISTICS=ESTIMATE analysis object
ROWS ROWS=Y/N Whether to export data rows in the table
PARFILE PARFILE=file_name Parameter file, the exp parameter configuration can be written into a file, which is convenient for repeated calling
CONSISTENT CONSISTENT=Y/N Is the cross-tab consistent
CONSTRAINTS CONSTRAINTS=Y/N Whether to export constraints
OBJECT_CONSISTENT   transaction set to read only during object export (N)
FEEDBACK FEEDBACK=x Show running progress every x line
FILESIZE FILESIZE=size 设置导出dmp文件的大小
FLASHBACK_SCN   SCN used to set session snapshot back to
FLASHBACK_TIME   time used to get the SCN closest to the specified time
QUERY QUERY=SQL SQL语句用于数据过滤,例如:QUERY=' where id > 0'将id大于0的数据导出
RESUMABLE   suspend when a space related error is encountered(N)
RESUMABLE_NAME   text string used to identify resumable statement
RESUMABLE_TIMEOUT   wait time for RESUMABLE
TTS_FULL_CHECK   perform full or partial dependency check for TTS
VOLSIZE   number of bytes to write to each tape volume
TABLESPACES TABLESPACES=(ts1, ts2) 导出指定的表空间列表
TRANSPORT_TABLESPACE TRANSPORT_TABLESPACE=Y/N 是否导出可传输的表空间元数据
TEMPLATE   template name which invokes iAS mode export

imp导入常用参数:在cmd提示符中输入 imp  help=y

USERID username/password 指定要登陆用户的账号密码,该参数必须为命令行中第一个参数,例: imp tester/ root指的是用户名为tester,密码是root
FULL FULL=Y/N 是否导入整个数据库
BUFFER BUFFER=数据缓冲区大小 数据缓冲区大小
FROMUSER FROMUSER=(user1, user2, …) 将拥有者为user1,user2,…的数据导入
TOUSER TOUSER=tester 将数据导入到用户tester下
FILE FILE=example.dmp 指定导入文件的路径和文件名,例:FILE=example.dmp是指导入example.dmp
TABLES TABLES=(table1, table2,…) 只导入表table1、table2…
SHOW SHOW=Y/N 只列出文件内容
IGNORE IGNORE=Y/N 是否忽视迁移过程中的创建错误继续导入
RECORDLENGTH   IO记录的长度
GRANTS GRANTS=Y/N 是否导出权限
INCTYPE   增量导入类型
INDEXES INDEXES=Y/N 是否导入索引
COMMIT COMMIT=Y/N 是否提交数组插入
ROWS ROWS=Y/N 是否导入数据行
PARFILE PARFILE=file_name 参数文件,可将exp参数配置写成文件,便于反复调用
LOG LOG=imp.log 将屏幕输出日志导入到指定文件
CONSTRAINTS CONSTRAINTS=Y/N 是否导入约束
DESTROY DESTROY=Y/N 是否覆盖表空间数据文件
INDEXFILE   将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES SKIP_UNUSABLE_INDEXES=Y/N 跳过不可用索引的维护
FEEDBACK FEEDBACK=x 每 x 行显示导入进度
FILESIZE FILESIZE=size 设置导入dmp文件的大小
TOID_NOVALIDATE   跳过指定类型 ID 的验证
STATISTICS   import precomputed statistics (always)
RESUMABLE RESUMABLE=Y/N 在遇到有关空间的错误时挂起
RESUMABLE_NAME   text string used to identify resumable statement
RESUMABLE_TIMEOUT   RESUMABLE 的等待时间
COMPILE COMPILE=Y/N 是否编译存储过程, 包和函数 (Y)
STREAMS_CONFIGURATION STREAMS_CONFIGURATION=Y/N 是否导入streams的一般元数据
STREAMS_INSTANTIATION STREAMS_INSTANTIATION=Y/N 是否导入streams的实例元数据
DATA_ONLY DATA_ONLY=Y/N 是否只导入数据
VOLSIZE   number of bytes in file on each volume of a file on tape

以上表格转载于:https://blog.csdn.net/Loiterer_Y/article/details/84872058

例如导出,在命令提示符中

exp  <user>/<pwd>@<ROLE> tables=(<table1>,<table2>) file=<outputPah> log =<logPath> 例

exp system/voapd@orcl tables=(system.salary_tbl) file='D:\sal_bak.dmp' log='D:\sal_bak.log'

log如图:

如果想导出用户所有内容

exp system/voapd@orcl owner=system file='D:\systemUser.dmp' log='D:\systemUser.log'.

当然有些参数不能同时使用  owner=   和 full=y  等,因为这两个参数不属于同一个模式,不在同一个模式的参数是不能共用的,会造成冲突。

导出成dmp文件后,那就要导入imp

把D:\sal_bak.dmp 的备份表到给voapd 用户

 imp system/voapd@orcl file=D:\sal_bak.dmp tables=(salary_tbl) fromuser=system touser=voapd

因为system的身份是DBA 所以可以导出给其他普通用户,但是登陆普通用户是无法给其他普通用户导表的。

上述截图有警告和语句执行失败,是因为voapd 用户 已经有salary_tbl 了。避免这样的错误

 imp system/voapd@orcl file=D:\sal_bak.dmp tables=(salary_tbl) fromuser=system touser=voapd  IGNORE=Y     就行了

上面的导入导出方式是命令提示符的方式,还有一种是交互提示符方式,导入直接输入imp , 导出直接输入exp,然后一行一行地设值,不设值就是默认值

第三种导入导出的方式是参数文件的方式

执行导出参数文件。exp parfile='大大的.txt';

如果数据迁移量较大,可使用可传输表空间,具体步骤分为几步:

1.检查要传输的表空间是否是自包含的

2.将表空间设成只读

3.exp进行可传输表空间的模式导出

4.将导出的文件和对应的数据文件复制到目标服务器上

5.进行imp可传输表空间的模式进行导入

6.目标数据库上,把表空间设成读写状态。


alter tablespace TESTTBS read only;
create tablespace TESTTBS datafile 'D:\oracle\oradata\ORCL\TESTTBS2.DBF' size 10m;
create table sal_tem tablespace TESTTBS as select * from salary_tbl;
exp 'system/voapd@orcl as SYSDBA' tablespaces=TESTTBS transport_tablespace=Y file='D:\exp_tbl.dmp'
--把表空间文件和对应的数据文件分别赋值到 目标服务器的 D:\exp_tbl.dmp   和  D:\oracle\oradata\voapl2\TESTTBS2.DBF
imp 'system/voapd@voapl2 as SYSDBA' tablespaces=TESTTBS  transport_tablespace=Y file='D:\oracle\exp_tbl.dmp' datafiles='D:\oracle\oradata\voapl2\TESTTBS2.DBF'
alter tablespace TESTTBS read write;

 

四、exp/imp 和数据泵的区别

     从10g开始Oracle有了数据泵的概念。exp/imp 的方法速度太慢,在大型的生产库上十分明显.exp/imp是客户端的工具,而数据泵是服务器端的工具,能够为Oracle 提高并行高速度的大数据迁移。使用数据泵(expdp/impdp)在服务器端使用,使用前需要在数据库中创建一个Directory。

     在expdp进行导出时,Oracle首先会创建MT表,并把导出对象的信息插入到MT表,之后进行导出动作;导出完成后,MT表也导出到转储文件中;导出任务完成后,或者删除了导出任务后,MT表自动删除;如果导出任务异常终止,MT表仍然保留。expdp有四种模式,和刚才的exp的模式一样。在cmd命令行中  expdp help=y  查看参数帮助文档。


数据泵导出实用程序提供了一种用于在 Oracle 数据库之间传输
数据对象的机制。该实用程序可以使用以下命令进行调用:

   示例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

您可以控制导出的运行方式。具体方法是: 在 'expdp' 命令后输入
各种参数。要指定各参数, 请使用关键字:

   格式:  expdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
   示例: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
               或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表

USERID 必须是命令行中的第一个参数。以下是可用关键字和它们的说明。方括号中列出的是默认值。

ATTACH 连接到现有作业。例如, ATTACH=job_name。
COMPRESSION 减少转储文件大小。有效的关键字值为: ALL, DATA_ONLY, [METADATA_ONLY] 和 NONE。
CONTENT 指定要卸载的数据。有效的关键字值为: [ALL], DATA_ONLY 和 METADATA_ONLY。
DATA_OPTIONS 数据层选项标记。有效的关键字值为: XML_CLOBS。
DIRECTORY 用于转储文件和日志文件的目录对象。
DUMPFILE 指定目标转储文件名的列表 [expdat.dmp]。例如, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。
ENCRYPTION 加密某个转储文件的一部分或全部。有效的关键字值为: ALL, DATA_ONLY, ENCRYPTED_COLUMNS_ONLY, METADATA_ONLY 和 NON。
ENCRYPTION_ALGORITHM 指定加密的方式。有效的关键字值为: [AES128], AES192 和 AES256。
ENCRYPTION_MODE 生成加密密钥的方法。有效的关键字值为: DUAL, PASSWORD 和 [TRANSPARENT]。
ENCRYPTION_PASSWORD 用于在转储文件中创建加密数据的口令密钥。
ESTIMATE 计算作业估计值。有效的关键字值为: [BLOCKS] 和 STATISTICS。
ESTIMATE_ONLY 计算作业估计值而不执行导出。
EXCLUDE 排除特定对象类型。例如, EXCLUDE=SCHEMA:"='HR'"。
FILESIZE 以字节为单位指定每个转储文件的大小。
FLASHBACK_SCN 用于重置会话快照的 SCN。
FLASHBACK_TIME 用于查找最接近的相应 SCN 值的时间。
FULL 导出整个数据库 [N]。
HELP 显示帮助消息 [N]。
INCLUDE 包括特定对象类型。例如, INCLUDE=TABLE_DATA。
JOB_NAME 要创建的导出作业的名称。
LOGFILE 指定日志文件名 [export.log]。
NETWORK_LINK 源系统的远程数据库链接的名称。
NOLOGFILE 不写入日志文件 [N]。
PARALLEL 更改当前作业的活动 worker 的数量。
PARFILE 指定参数文件名。
QUERY 用于导出表的子集的谓词子句。例如, QUERY=employees:"WHERE department_id > 10"。
REMAP_DATA 指定数据转换函数。例如, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。
REUSE_DUMPFILES 覆盖目标转储文件 (如果文件存在) [N]。
SAMPLE 要导出的数据的百分比。
SCHEMAS 要导出的方案的列表 [登录方案]。
SOURCE_EDITION 用于提取元数据的版本。
STATUS 监视作业状态的频率, 其中默认值 [0] 表示只要有新状态可用, 就立即显示新状态。
TABLES 标识要导出的表的列表。例如, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995。
TABLESPACES 标识要导出的表空间的列表。
TRANSPORTABLE 指定是否可以使用可传输方法。有效的关键字值为: ALWAYS 和 [NEVER]。
TRANSPORT_FULL_CHECK 验证所有表的存储段 [N]。
TRANSPORT_TABLESPACES 要从中卸载元数据的表空间的列表。
VERSION 要导出的对象版本。有效的关键字值为: [COMPATIBLE], LATEST 或任何有效的数据库版本。

下列命令在交互模式下有效。注: 允许使用缩写。
 

ADD_FILE 将转储文件添加到转储文件集。
CONTINUE_CLIENT 返回到事件记录模式。如果处于空闲状态, 将重新启动作业。
EXIT_CLIENT 退出客户机会话并使作业保持运行状态。
FILESIZE 用于后续 ADD_FILE 命令的默认文件大小 (字节)。
HELP 汇总交互命令。
KILL_JOB 分离并删除作业。
PARALLEL 更改当前作业的活动 worker 的数量。
REUSE_DUMPFILES 覆盖目标转储文件 (如果文件存在) [N]。
START_JOB 启动或恢复当前作业。有效的关键字值为: SKIP_CURRENT。
STATUS 监视作业状态的频率, 其中默认值 [0] 表示只要有新状态可用, 就立即显示新状态。
STOP_JOB 按顺序关闭作业执行并退出客户机。有效的关键字值为: IMMEDIATE。

 

impdp  help=y 

数据泵导入实用程序提供了一种用于在 Oracle 数据库之间传输
数据对象的机制。该实用程序可以使用以下命令进行调用:

     示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

您可以控制导入的运行方式。具体方法是: 在 'impdp' 命令后输入
各种参数。要指定各参数, 请使用关键字:

     格式:  impdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
     示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

USERID 必须是命令行中的第一个参数。


以下是可用关键字和它们的说明。方括号中列出的是默认值。

ATTACH 连接到现有作业。例如, ATTACH=job_name。
CONTENT 指定要加载的数据。有效的关键字为: [ALL], DATA_ONLY 和 METADATA_ONLY。
DATA_OPTIONS 数据层选项标记。有效的关键字为: SKIP_CONSTRAINT_ERRORS。
DIRECTORY 用于转储文件, 日志文件和 SQL 文件的目录对象。
DUMPFILE 要从中导入的转储文件的列表 [expdat.dmp]。例如, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。
ENCRYPTION_PASSWORD 用于访问转储文件中的加密数据的口令密钥。对于网络导入作业无效。
ESTIMATE 计算作业估计值。有效的关键字为: [BLOCKS] 和 STATISTICS。
EXCLUDE 排除特定对象类型。例如, EXCLUDE=SCHEMA:"='HR'"。
FLASHBACK_SCN 用于重置会话快照的 SCN。
FLASHBACK_TIME 用于查找最接近的相应 SCN 值的时间。
FULL 导入源中的所有对象 [Y]。
HELP 显示帮助消息 [N]。
INCLUDE 包括特定对象类型。例如, INCLUDE=TABLE_DATA。
JOB_NAME 要创建的导入作业的名称。
LOGFILE 日志文件名 [import.log]。
NETWORK_LINK 源系统的远程数据库链接的名称。
NOLOGFILE 不写入日志文件 [N]。
PARALLEL 更改当前作业的活动 worker 的数量。
PARFILE 指定参数文件。
PARTITION_OPTIONS 指定应如何转换分区。有效的关键字为: DEPARTITION, MERGE 和 [NONE]。
QUERY 用于导入表的子集的谓词子句。例如, QUERY=employees:"WHERE department_id > 10"。
REMAP_DATA 指定数据转换函数。例如, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。
REMAP_DATAFILE 在所有 DDL 语句中重新定义数据文件引用。
REMAP_SCHEMA 将一个方案中的对象加载到另一个方案。
REMAP_TABLE 将表名重新映射到另一个表。例如, REMAP_TABLE=EMP.EMPNO:REMAPPKG.EMPNO。
REMAP_TABLESPACE 将表空间对象重新映射到另一个表空间。
REUSE_DATAFILES 如果表空间已存在, 则将其初始化 [N]。
SCHEMAS 要导入的方案的列表。
SKIP_UNUSABLE_INDEXES 跳过设置为“索引不可用”状态的索引。
SOURCE_EDITION 用于提取元数据的版本。
SQLFILE 将所有的 SQL DDL 写入指定的文件。
STATUS 监视作业状态的频率, 其中默认值 [0] 表示只要有新状态可用, 就立即显示新状态。
STREAMS_CONFIGURATION 启用流元数据的加载
TABLE_EXISTS_ACTION 导入对象已存在时执行的操作。有效的关键字为: APPEND, REPLACE, [SKIP] 和 TRUNCATE。
TABLES 标识要导入的表的列表。例如, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995。
TABLESPACES 标识要导入的表空间的列表。
TARGET_EDITION 用于加载元数据的版本。
TRANSFORM 要应用于适用对象的元数据转换。有效的关键字为: OID, PCTSPACE, SEGMENT_ATTRIBUTES 和 STORAGE。
TRANSPORTABLE 用于选择可传输数据移动的选项。有效的关键字为: ALWAYS 和 [NEVER]。仅在 NETWORK_LINK 模式导入操作中有效。
TRANSPORT_DATAFILES 按可传输模式导入的数据文件的列表。
TRANSPORT_FULL_CHECK 验证所有表的存储段 [N]。
TRANSPORT_TABLESPACES 要从中加载元数据的表空间的列表。仅在 NETWORK_LINK 模式导入操作中有效。
VERSION 要导入的对象的版本。有效的关键字为: [COMPATIBLE], LATEST 或任何有效的数据库版本。仅对 NETWORK_LINK 和 SQLFILE 有效。
   

下列命令在交互模式下有效。注: 允许使用缩写。

CONTINUE_CLIENT 返回到事件记录模式。如果处于空闲状态, 将重新启动作业。
EXIT_CLIENT 退出客户机会话并使作业保持运行状态。
HELP 汇总交互命令。
KILL_JOB 分离并删除作业。
PARALLEL 更改当前作业的活动 worker 的数量。
START_JOB 启动或恢复当前作业。有效的关键字为: SKIP_CURRENT。
STATUS 监视作业状态的频率, 其中默认值 [0] 表示只要有新状态可用, 就立即显示新状态。
STOP_JOB 按顺序关闭作业执行并退出客户机。有效的关键字为: IMMEDIATE。
   
--------新建--------新建目录
ORCL>>CREATE DIRECTORY MY_DIR AS 'D:\DIRTEST1';
ORCL>>GRANT READ ,WRITE ON DIRECTORY MY_DIR TO voapd
-----导出voapd 的salary_tbl  ----结尾千万不要乱加分号
cmd >>expdp voapd/voapd@orcl directory=MY_DIR dumpfile=voapd_salary_tbl.dmp tables =(salary_tbl)
----导入到voapl2数据库的system用户
VOAPL2>>CREATE DIRECTORY MY_DIR AS 'D:\DIRTEST1';
cmd>> impdp system/voapd@voapl2 directory=MY_DIR dumpfile=voapd_salary_tbl.dmp REMAP_SCHEMA=voapd:system

 

Guess you like

Origin blog.csdn.net/superSmart_Dong/article/details/107370350