1.expdp 备份
-
首先 使用sysdba登录
sqlplus / as sysdba
-
查看当前容器,如果不正确需要切换到orcl的容器
show con_name; alter session set container=orcl;
-
创建directory目录并对数据库用户该目录的赋权
create or replace directory dumpdir as '/home/oracle/dump'; grant read,write on directory dumpdir to ta;
-
退出到Linux 命令行
-
创建对应的directory目录
mkdir -p /home/oracle/dump
-
使用expdp命令开始备份
expdp ta/ta@192.168.86.34/orclpdb directory=dumpdir schemas=ta dumpfile=ta0817.dmp logfile=ta0817.log
2.impdp 还原
前边5步同备份的过程
impdp ta/ta@192.168.87.59/orcl remap_schema=ta:ta remap_tablespace=ta:ta directory=dumpdir dumpfile=ta0817.dmp content=all logfile=ta0817.log
ps:可能会存在的问题
-
数据库连接串需要提前确认是否正确;
-
dumpdir需要提前创建好;
-
如果目标数据库已有部分数据时,impdp还原时可以增加参数选择是否跳过或者追加、更新 【TABLE_EXISTS_ACTION】
-
当前验证的Oracle版本都为 19.3.0
3.expdp参数详解
参数名称 | 默认值 | 设置格式 | 说明 |
---|---|---|---|
ATTACH | ATTCH=[schema_name.]job_name | 设置客户会话与已存在的作业之间的联系 | |
CONTENT | ALL | CONTENT={ALL|DATA_ONLY|METADATA_ONLY} | 设置要导出的内容 |
DIRECTORY | DIRECTORY=’文件目录’ | 设置导出文件和导出日志文件的文件名称 | |
DUMPFILE | expdat.dmp | DUMPFILE=’文件名称.dmp’ | 设置导出文件名称 |
ESTIMATE | BLOCKS | BLOCKS|STATISTICS | 设置计算磁盘空间的方法 |
ESTIMATE_ONLY | N | ESTIMATE_ONLY={Y|N} | 只估算导出操作所需要的空间,而不执行导出 |
EXCLUDE | EXCLUDE=对象类型.对象名称 | 设置不导出对象 | |
FILESIZE | 0(无限制) | FILESIZE=整数[B|K|M|G] | 设置导出文件的大小 |
FLASHBACK_SCN | FLASHBACK_SCN=SCN号 | 只导出指定SCN时刻的表数据 | |
FLASHBACK_TIME | FLASHBACK_TIME=“TO_TIMESTAMP(time-value)” | 只导出指定时间的表数据 | |
FULL | N | FULL=Y | 是否导出全部数据库 |
HELP | N | HELP=Y | 是否显示EXPDP命令选项的帮助信息 |
INCLUDE | INCLUDE=object_type [ : name_clause] [,…] | 设置要导出的对象,这个选项不能和EXCLUDE同时使用 | |
JOB_NAME | SYS_EXPORT<mode>NN | JOB_NAME=作业名称 | 设置导出作业的名称 |
LOG_FILE | Export.log | LOGFILE=[directory_object:]file_name | 设置导出日志文件的名称 |
NETWORK_LINK | NETWORK_LINK=source_database_link | 设置数据库链名 | |
NOLOGFILE | N | NOLOGFILE={Y|N} | 禁止生成导出日志文件 |
PARALLEL | 1 | PARALLEL=整数 | 设置并行导出的并行进程个数 |
PARFILE | PARFILE=[directory_path]file_name | 使用参数文件设置参数 | |
QUERY | QUERY=[ schema.] [tablename:]query_clause | 在这个选项中指定WHERE条件诗句,使EXPDP只导出部分数据 | |
SCHEMAS | 当前登录用户 | SCHEMAS=方案名称[,…] | 进行方案导出时要导出的方案名称 |
STATUS | 0 | STATUS=[整数] | 显示导出作业进程的详细状态 |
TABLES | TABLES=[schema_name.]table_name [ : partition_name ] [,…] | 进行表导出时要导出的表名称 | |
TABLESPACE | TABLESPACE=tablespace_name[,…] | 进行表空间导出时要导出的表空间名称 | |
TRANSPORT_FULL_CHECK | N | TRANSPORT_FULL_CHECK={Y|N} | 是否检查被导出表与其他不导出表空间的关联 |
TRANSPORT_TABLESPACES | TRANSPORT_TABLESPACES=Tablespace_name[,…] | 设置进行表空间传输模式导出 | |
VERSION | COMPATIBLE | VERSION={COMPATIBLE|LATEST|version_string} | 设置导出对象的数据库版本 |
4.impdp参数详解
参数名称 | 默认值 | 设置格式 | 说明 |
---|---|---|---|
ATTACH | ATTACH=[schema_name.]job_name | 设置客户会话与已存在的作业之间的关联 | |
CONTENT | ALL | CONTENT={ALL|DATA_ONLY|METADATA_ONLY} | 设置要导出的内容,设置为ALL时,会导入对象定义及其数据;设置为DATA_ONLY时,只导入数据;设置为METADATA_ONLY时,只导入对象定义 |
DIRECTORY | DIRECTORY=’文件目录’ | 指定导入文件的目录 | |
DUMPFILE | expdat.dmp | DUMPFILE=’文件名称.dmp’ | 指定导出文件名称 |
ESTIMATE | BLOCKS | BLOCKS|STATISTICS | 设置计算磁盘空间的方法 |
ESTIMATE_ONLY | N | ESTIMATE_ONLY={Y|N} | 只估算导出操作所需要的表空间,而不执行导出 |
EXCLUDE | EXCLUDE=对象类型.对象名称 | 设置不导入的对象 | |
FLASHBACK_SCN | FLASHBACK_SCN=SCN号 | 只导入SCN时刻的表数据 | |
FLASHBACK_TIME | FLASHBACK_TIME=”TO_TIMESTAMP(time-value)” | 只导入指定时间的表数据 | |
FULL | N | FULL=Y | 是否导入整个导出文件的全部数据库 |
HELP | N | HELP=Y | 是否显示IMPDP命令参数的帮助信息 |
INCLUDE | INCLUDE=Object_type[:name_clause] [,…] | 设置要导入的对象,这个选项不能和EXCLUDE同时使用 | |
JOB_NAME | SYS_EXPORT<mode>NN | JOB_NAME=作业名称 | 设置导入作业的名称 |
LOG_FILE | export.log | LOGFILE=[directory_object:]file_name | 设置导入日志文件的名称 |
NETWORK_LINK | NETWORK_LINK=source_database_link | 设置执行导入操作的数据库链名 | |
NOLOGFILE | N | NOLOGFILE={Y|N} | 禁止生成导入日志文件 |
PARALLEL | 1 | PARALLEL=参数 | 设置并行导入的并行进程个数 |
PARFILE | PARFILE=[directory_path]file_name | 使用参数文件设置参数 | |
QUERY | QUERY=[schema.] [table_name:]query_clause | 在这个选项中指定WHERE条件诗句,使IMPDP只导入这个查询结果的数据 | |
REMAP_DATAFILE | REMAP_DATAFILE=source_datafile:target_datafile | 将源数据文件转变为目标数据文件名,在不同平台之间移动表空间时使用这个参数 | |
REMAP_SCHEMA | REMAP_SCHEMA=source_schema:target_schema | 将源方案的所有对象导入到目标方案中 | |
REMAP_TABLESPACE | REMAP_TABLESPACE=Source_tablespace:target_tablespace | 将源表空间的所有对象移到目标表空间中 | |
REUSE_DATAFILES | N | REUSE_DATAFILES={Y|N} | 是否覆盖已存在的数据文件,设置为N时不覆盖 |
SCHEMAS | 当前登录用户 | SCHEMAS=方案名称[,…] | 方案导入时要导入的方案 |
SKIP_UNUSABLE_INDEXES | N | SKIP_UNUSABLE_INDEXES={Y|N} | 是否导入不能使用的索引 |
TABLES | TABLES=[schema_name.]table_name[:partition_name] [,…] | 表导出时要导出的表名称 | |
SQLFILE | SQLFILE=[directory_object:]file_name | 将导入过程中需要执行的DDL诗句写到指定的SQL脚本文件中 | |
STATUS | 0 | STATUS=[整数] | 显示导入作业进程的详细状态 |
STREAMS_CONFIGURATION | Y | STREAMS_CONFIGURATION={Y|N} | 设置是否要导入流源数据(Stream Metadata) |
TABLE_EXISTS_ACTION | SKIP | TABLE_EXISTS_ACTION={SKIP|APPEND|TRUNCATE|REPLACE} | 设置当表已经存在时应该执行的操作,SKIP表示跳过这张已存在的表,处理下一个对象;APPEND表示为表追加数据;TRUNCATE表示截断表,并为其追加数据;REPLACE表示删除已存在的表,重新建立表并添加数据 |
TABLES | TABLES=[schema_name.]table_name[:partition_name] | 设置要导入的表名 | |
TABLESPACES | TABLESPACES=Tablespace_name[,…] | 表空间导入时要导入的表空间名称 | |
TRANSFORM | TRANSFORM=Transform_name:value[:object_type] | 设置是否修改建立对象的DDL语句 | |
TRANSPORT_DATAFILES | TRANSPORT_DATAFILES=datafile_name | 指定移动表空间时要导入到目标数据库的数据文件名称 | |
TRANSPORT_TABLESPACES | TRANSPORT_TABLESPACES=Tablespace_name[,…] | 进行表空间模式导入 | |
TRANSPORT_FULL_CHECK | N | TRANSPORT_FULL_CHECK={Y|N} | 检查表空间之间的关联关系,这个值设置为y时,只要已移动的表空间和未移动的表空间存在关联关系,就提示出错;设置为N时,只检查单方依赖,例如如果索引表空间移动了,而基表表空间未移动,会出现错误消息。但如果基表移动了,而索引表空间未移动,则不提示出错 |
VERSION | COMPATIBLE | VERSION={COMPATIBLE|LATEST|version_string} | 指定目标数据库的数据库版本 |