table of Contents
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