DBlink+数据泵 过程+脚本
oracle使用数据泵导出和导入
使用数据泵导出和导入几乎所有DBA都熟悉oracle的导出和导入实用程序,它们将数据装载进或卸载出数据库,在oracle database 10g和11g中,你必须使用更通用更强大的数据泵导出和导入(Data Pump Export and Import)实用程序导出和导入数据。
以前的导出和导入实用程序在oracle database 11g中仍然可以使用,但是Oracle强烈建议使用数据泵(Data Pump)技术,因为它提供了更多的高级特性。
例如,你可以中断导出/导入作业,然后恢复它们;可以重新启动已失败的导出和导入作业;可以重映射对象属性以修改对象;可以容易地从另一个会话中监控数据泵的作业,甚至可以在作业过程中修改其属性;使用并行技术很容易快速移动大量的数据;因为oracle提供了针对数据泵技术的API,所以可以容易地在PL/SQL 程序中包含导出/导入作业;可以使用更强大的可移植表空间特性来快速移植大量的数据,甚至可在不同操作系统平台之间移动。
与旧的导出和导入实用程序不同,数据泵程序有一组可以在命令行中使用的参数以及一组只能以交互方式使用的特殊命令,你可以通过在命令行中输入expdp help = y 或者impdp help = y快速获取所有数据泵参数及命令的概述。
一.数据泵技术的优点原有的导出和导入技术基于客户机,而数据泵技术基于服务器。
默认所有的转储,日志和其他文件都建立在服务器上。
以下是数据泵技术的主要优点:1.改进了性能2.重新启动作业的能力3.并行执行的能力4.关联运行作业的能力5.估算空间需求的能力6.操作的网格方式7.细粒度数据导入功能8.重映射能力二.数据泵导出和导入的用途1.将数据从开发环境转到测试环境或产品环境2.在不同的操作系统平台上的oracle数据库直接的传递数据3.在修改重要表之前进行备份4.备份数据库5.把数据库对象从一个表空间移动到另一个表空间6.在数据库直接移植表空间7.提取表或其他对象的DDL注意:数据库不建立完备的备份,因为在导出文件中没有灾难发生时的最新数据。
Docker-Oracle数据泵
Docker-Oracle数据泵Oracle总结1.概念,用户,表空间,表,用户拥有表空间,表空间可以有多个用户,表存在与表空间中2.给用户指定表空间--修改用户的表空间alter user username default tablespace userspace;--创建用户时给用户创建表空间create user username identified by userpassword default tablespace userspace;3.查看用户拥有的表空间select default_tablespace from dba_users where username='用户名'4.表空间拥有大小可以用以下命令查看表还有多少空间SELECT a.tablespace_name "表空间名",total "表空间大小",free "表空间剩余大小",(total - free) "表空间使用大小",total / (1024 * 1024 * 1024) "表空间大小(G)",free / (1024 * 1024 * 1024) "表空间剩余大小(G)",(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",round((total - free) / total, 4) * 100 "使用率 %"FROM (SELECT tablespace_name, SUM(bytes) freeFROM dba_free_spaceGROUP BY tablespace_name) a,(SELECT tablespace_name, SUM(bytes) totalFROM dba_data_filesGROUP BY tablespace_name) b5.表空间可以扩容(对已有的表进行扩容)sqlplus / as sysdba--执行alter tablespace 表名add datafile '/data/oradbs/表名.dbf' size 4000m;6.Oracle导入导出数据如果数据量大,要使用数据泵,不然导入导出数据很花时间,按照以下命令进行数据的数据泵导出(服务端操作)数据泵文件导出创建数据泵导出数据路径进入数据库sqlplus /nolog以sysdba连接数据库connect /as sysdba创建数据泵文件的导出目录data_dir 可以自己命令,只要和下面的命令中directory保持一直即可create directory data_dir as 'E:\ora\data' ;执行该命令时需要退出数据库directory=【data_dir】要和上面创建目录时directory后面的名称一致expdp 用户名/密码@服务名schemas=用户名dumpfile=expdp.dmp directory=data_dir logfile=expdp.logexpdp [为用户名]/[密码]@[服务名]schemas=[为用户名]dumpfile=[导出数据库文件(可自命名)]directory=[目录名]logfile=[日志文件文件名(可自命名)]命令结束不需要加“;”•数据泵文件导入数据导入准备工作:在本地创建一个存放数据泵文件的路径linux系统为例:/usr/oracle同时将该文件的所属组和用户修改chown oracle:oinstall /usr/oracle如果进入容器后的默认用户没有修改文件的权限,切换到root用户修改su root管理员密码根据自己情况而定,我的容器的密码是helowin进入Docker的Oracle容器docker exec -it 容器名 /bin/bash进入容器后连接oraclesqlplus /nologconnect /as sysdba然后在oracle服务端中创建读取数据泵文件的路径,这些路径都要保持一致data_dirs(这个是创建的列明),【data_dirs】这个可以随意命名,比如【data_dirssss】,只要和接下来的sql语句中的相关字段保持一致即可,即括号前面标注的地方create directory data_dir as '/usr/oracle' ;data_dirs(跟上面名字保持一致),例子【data_dirssss】//给用户读写目录的权限Grant read,write on directory data_dir to 数据库用户名;data_dirs同理上面,例子【data_dirssss】创建数据泵文件所在文件,之后需要将数据泵文件放在该目录下create directory data_dirs as '\usr\oracle' ;数据泵文件导入directory 后面的【data_dirs】跟上面命名的要一致,例子【data_dirssss】impdp OASS1/OASS1@HELOWIN REMAP_SCHEMA = oass1:OASS1 table_exists_action = replace directory=data_dir dumpfile=EXPDP.DMP logfile=expdp.logimpdp [用户名]/[密码]@[服务名]REMAP_SCHEMA=[源用户名1]:[目标用户名2]table_exists_action=replace /存在的表动作(覆盖)/directory=[目录名]dumpfile=[.dmp文件名]logfile=[.log文件名]7.导入过程中可能存在字符集不同的异常,下面的命令可以将字符集统一oracle_11g编码修改SQL>SHUTDOWN IMMEDIATE;SQL>STARTUP MOUNT;SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;SQL>ALTER DATABASE OPEN;SQL> ALTER DATABASE CHARACTER SET ZHS16GBK ;SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;SQL>SHUTDOWN IMMEDIATE;SQL>STARTUP;。
oracle数据同步方案
oracle 数据同步方案(DBLink)西安维信软件有限公司一、什么是dbLink两台不同的数据库服务器,从一台数据库服务器(例如A数据库服务器)的一个用户读取另一台数据库服务器(例如B数据库服务器)下的某个用户的数据,这个时候可以使用dblink。
其实dblink和数据库中的view差不多,建dblink的时候需要知道待读取数据库的ip地址,ssid以及数据库用户名和密码。
二、DbLink的创建步骤说明:A数据库服务器是指-需要同步的数据库服务器,B数据库服务器是指-被同步的数据库服务器,以下文档中简称A数据库与B数据库。
1、在目的数据库上(A数据库),创建dblinkdrop public database link dblink_orc92_182;Create public DA TABASE LINK dblink_orc92_182 CONNECT TO bst114IDENTIFIED BY password USING ''orc92_192.168.254.111'';注释:--dblink_orc92_182 是dblink_name即创建的dblink名称--bst114 是username即A数据库的用户--password 是password即A数据库用户名密码--''orc92_192.168.254.111'' 是远程数据库名即B数据库的名称,为了方便期间命名最好是“数据库名称+ip”2、在源数据库(B数据库)和目的数据库(A数据库)上创建要同步的表说明:不管是A数据库还是B数据库上创建的表最好有主键约束,快照才可以快速刷新drop table test_user;create table test_user(id number(10) primary key,name varchar2(12),age number(3));3、在目的数据库(A数据库)上,测试dblink说明:在A数据库上执行如下查询语句select * from test_user@dblink_orc92_182; //查询的是源数据库的表select * from test_user;注释:--dblink_orc92_182是刚才一步创建的dblink名称--test_user同步表名称4、在源数据库(B数据库)上,创建要同步表的快照日志说明:在B数据库上执行如下查询语句Create snapshot log on test_user;5、创建快照,在目的数据库(A数据库)上创建快照Create snapshot sn_test_user as select * from test_user@dblink_orc92_182;注释:-- sn_test_user 快照的名称6、设置快照刷新时间说明:在B数据库上执行如下查询语句,只能选择一种刷新方式,推荐使用快速刷新,这样才可以用触发器双向同步。
Oracle建立DBLINK的细致步骤记录
Oracle建立DBLINK的细致步骤记录假设某公司总部在北京,新疆有其下属的一个分公司。
在本次测试中,新疆的计算机为本地计算机,即本要的IP地址为:192.168.1.100北京的总部有一个集中的数据库,其SID是SIDBJ,用户名:userbj,密码:bj123,北京的IP地址是:192.168.1.101。
在本地(新疆)的分公司也有一个数据库,其SID是SIDXJ,用户:userxj,密码:xj123,新疆的IP地址是:192.168.1.100。
要将本地新疆的SIDXJ数据库中访问到北京的数据库SIDBJ中的数据。
也就是说,在sidxj的数据库中,用户userxj(192.168.1.100)需要建立DBLINK,以userbj的用户身份访问sidBJ(192.168.1.101)中的数据。
测试环境:两个数据库均建立在WINXP上,ORACLE的版本均为Oracle817 建立环境时,要注意关闭两台计算机上的Windows的防火墙,否则,会出现能ping通,但Oracle连接不通的情况。
1、问:如何返回数据库的GLOBAL_NAME?执行SELECT * FROM GLOBAL_NAME;北京的数据库的GLOBAL_NAME为新疆的数据库的GLOBAL_NAME为SIDXJ2、问:如何查看Global_name参数是true还是False?答:执行:SQL> show parameter global_name;执行的结果如下:NAME TYPE V ALUE------------------------------------ ----------- ------------------------------global_names boolean TRUE表示该参数是true.该参数为true时,你在本地建立的DBLINK的名称必须和远程的Global_name一致才行。
3、问:查看远程数据徊是否支持高级复制功能。
oracle数据泵参数
oracle数据泵参数Oracle数据泵是Oracle数据库中一种数据导入和导出工具,可以以二进制格式导出和导入数据库对象和数据。
通过使用数据泵,用户可以高效地迁移、复制和备份Oracle数据库。
数据泵具有多种参数,可以通过这些参数来控制数据泵的行为和功能。
以下是一些常用的数据泵参数:1.DIRECTORY:指定数据泵导出和导入的目录,这个目录必须在数据库服务器上存在。
2.DUMPFILE:导出的数据泵文件的名称,可以使用扩展名进行命名。
3.LOGFILE:记录导出和导入过程的日志文件的名称。
4.INCLUDE:指定要导出的对象类型,可以是TABLE、SCHEMA、USER、DB_LINK等。
5.EXCLUDE:指定要排除在导出之外的对象类型。
6.TABLES:指定要导出的具体表,可以使用逗号分隔多个表名。
7.QUERY:在导出过程中,可以使用SQL查询语句筛选导出的数据。
8.PARALLEL:指定导出和导入的并行度,可以提高导出和导入的效率。
9.CONTENT:指定导出的内容,可以是ALL(对象和数据)、DATA_ONLY(只有数据)或METADATA_ONLY(只有对象结构)。
10.TRANSFORM:在导出过程中,可以对导出的数据进行转换和处理,如更改数据类型、字符集等。
WORK_LINK:可以在导出时使用网络链接将导出的数据直接传输到目标数据库上。
12.REMAP_TABLE:可以在导出和导入过程中,对表进行重命名。
13.REMAP_SCHEMA:可以在导出和导入过程中,对模式进行重命名。
14. FLASHBACK_SCN:可以在导出过程中使用指定的系统变量恢复到特定的SCN(System Change Number)。
15.ESTIMATE:可以在导出之前估计导出的大小,用于计算导出所需的磁盘空间。
这些参数可以通过数据泵工具的命令行参数进行设置,也可以在数据泵作业中使用导出或导入的操作。
DBlink+数据泵 过程+脚本
DB_LINK+数据泵远程同步1.赋权限grant CREATE DATABASE LINK,DROP PUBLIC DATABASE LINK,CREATE PUBLIC DATABASE LINK to scott分别赋给两个库用户创建和删除DB_LINK的权限(实验时用的是devdb的scott用户与orcl 的scott用户)grant connect,resource to scott(连接访问的权限,一般都有)2.创建public DB_LINK连接create public database link connect to scott identified by scott using 'DEVDB'create public database link connect to scott identified by scott using 'BB'测试是否能连接上select * from global_name@select * from global_name@3.在orcl库上建数据泵字典create or replace directory exp_dir as '/home/oracle';并附权限给scottgrant read, write on directory exp_dir to scott4.给scott用户拷贝的权限grant exp_full_database to scott(没这个权限会报ORA-31631与ORA_39149的错)5.orcl库的scott同步devdb库的scottimpdp scott/scott SCHEMAS=scott directory=exp_dir network_link= logfile=imp.log table_exists_action=replace脚本#!/bin/bashdatetime=`/bin/date "+%Y%m%d"`;ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1;export ORACLE_HOME;PATH=$ORACLE_HOME/bin:$PATH;export PATHexport ORACLE_BASE=/home/oracle/oracleexport ORACLE_SID=orclexport ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1export PATH=$ORACLE_HOME/bin:$PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/libexport ORACLE_TERM=oinstallexport CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib export NLS_LANG="SIMPLIFIED CHINESE_CHINA.UTF8"####################################impdp###################################### ###/home/oracle/oracle/product/10.2.0/db_1/bin/impdp scott/scott SCHEMAS=scott directory=exp_dir network_link= logfile=imp_"$datetime".log table_exists_action=replace检查日志文件中ORA错误grep '^ORA' /home/oracle/impdp_*.log >> grep_ORA.log。
数据泵用法详解
数据泵用法详解EXPDP和IMPDP使用说明EXPDP和IMPDP使用说明Oracle Database g引入了最新的数据泵(Data Dump)技术使DBA或开发人员可以将数据库元数据(对象定义)和数据快速移动到另一个oracle数据库中数据泵导出导入(EXPDP和IMPDP)的作用实现逻辑备份和逻辑恢复在数据库用户之间移动对象在数据库之间移动对象实现表空间搬移数据泵导出导入与传统导出导入的区别在 g之前传统的导出和导入分别使用EXP工具和IMP工具从 g 开始不仅保留了原有的EXP和IMP工具还提供了数据泵导出导入工具EXPDP和IMPDP 使用EXPDP和IMPDP时应该注意的事项;EXP和IMP是客户段工具程序它们既可以在可以客户端使用也可以在服务端使用EXPDP和IMPDP是服务端的工具程序他们只能在ORACLE服务端使用不能在客户端使用IMP只适用于EXP导出文件不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件而不适用于EXP导出文件数据泵导出包括导出表导出方案导出表空间导出数据库种方式EXPDP命令行选项ATTACH该选项用于在客户会话与已存在导出作用之间建立关联语法如下ATTACH=[schema_name ]job_nameSchema_name用于指定方案名job_name用于指定导出作业名注意如果使用ATTACH选项在命令行除了连接字符串和ATTACH选项外不能指定任何其他选项示例如下:Expdp scott/tiger ATTACH=scott export_jobCONTENT该选项用于指定要导出的内容默认值为ALLCONTENT={ALL | DATA_ONLY | METADATA_ONLY}当设置CONTENT为ALL 时将导出对象定义及其所有数据为DATA_ONLY时只导出对象数据为METADATA_ONLY时只导出对象定义Expdp scott/tiger DIRECTORY=dump DUMPFILE=a dumpCONTENT=METADATA_ONLYDIRECTORY指定转储文件和日志文件所在的目录DIRECTORY=directory_objectDirectory_object用于指定目录对象名称需要注意目录对象是使用CREATE DIRECTORY语句建立的对象而不是OS 目录Expdp scott/tiger DIRECTORY=dump DUMPFILE=a dump建立目录:CREATE DIRECTORY dump as d:dump ;查询创建了那些子目录:SELECT * FROM dba_directories;DUMPFILE用于指定转储文件的名称默认名称为expdat dmpDUMPFILE=[directory_object:]file_name [ … ]Directory_object用于指定目录对象名file_name用于指定转储文件名需要注意如果不指定directory_object 导出工具会自动使用DIRECTORY选项指定的目录对象Expdp scott/tiger DIRECTORY=dump DUMPFILE=dump :a dmpESTIMATE指定估算被导出表所占用磁盘空间分方法默认值是BLOCKSEXTIMATE={BLOCKS | STATISTICS}设置为BLOCKS时 oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间设置为STATISTICS时根据最近统计值估算对象占用空间Expdp scott/tiger TABLES=emp ESTIMATE=STATISTICSDIRECTORY=dump DUMPFILE=a dumpEXTIMATE_ONLY指定是否只估算导出作业所占用的磁盘空间默认值为NEXTIMATE_ONLY={Y | N}设置为Y时导出作用只估算对象所占用的磁盘空间而不会执行导出作业为N时不仅估算对象所占用的磁盘空间还会执行导出操作Expdp scott/tiger ESTIMATE_ONLY=y NOLOGFILE=yEXCLUDE该选项用于指定执行操作时释放要排除对象类型或相关对象EXCLUDE=object_type[:name_clause] [ … ]Object_type用于指定要排除的对象类型name_clause用于指定要排除的具体对象 EXCLUDE和INCLUDE不能同时使用Expdp scott/tiger DIRECTORY=dump DUMPFILE=a dup EXCLUDE=VIEWFILESIZE指定导出文件的最大尺寸默认为 (表示文件尺寸没有限制)FLASHBACK_SCN指定导出特定SCN时刻的表数据FLASHBACK_SCN=scn_valueScn_value用于标识SCN值FLASHBACK_SCN和FLASHBACK_TIME不能同时使用Expdp scott/tiger DIRECTORY=dump DUMPFILE=a dmpFLASHBACK_SCN=FLASHBACK_TIME指定导出特定时间点的表数据FLASHBACK_TIME= TO_TIMESTAMP(time_value)Expdp scott/tiger DIRECTORY=dump DUMPFILE=a dmpFLASHBACK_TIME=TO_TIMESTAMP( : : DD MM YYYY HH :MI:SS )FULL指定数据库模式导出默认为NFULL={Y | N}为Y时标识执行数据库导出HELP指定是否显示EXPDP命令行选项的帮助信息默认为N当设置为Y时会显示导出选项的帮助信息Expdp help=yINCLUDE指定导出时要包含的对象类型及相关对象INCLUDE = object_type[:name_clause] [ … ]JOB_NAME指定要导出作用的名称默认为SYS_XXXJOB_NAME=jobname_stringLOGFILE指定导出日志文件文件的名称默认名称为export logLOGFILE=[directory_object:]file_nameDirectory_object用于指定目录对象名称file_name用于指定导出日志文件名如果不指定directory_object 导出作用会自动使用DIRECTORY的相应选项值Expdp scott/tiger DIRECTORY=dump DUMPFILE=a dmp logfile=a logNEORK_LINK指定数据库链名如果要将远程数据库对象导出到本地例程的转储文件中必须设置该选项NOLOGFILE该选项用于指定禁止生成导出日志文件默认值为NPARALLEL指定执行导出操作的并行进程个数默认值为PARFILE指定导出参数文件的名称PARFILE=[directory_path] file_nameQUERY用于指定过滤导出数据的where条件QUERY=[schema ] [table_name:] query_clauseSchema用于指定方案名table_name用于指定表名query_clause用于指定条件限制子句QUERY选项不能与CONNECT=METADATA_ONLY EXTIMATE_ONLY TRANSPORT_TABLESPACES等选项同时使用Expdp scott/tiger directory=dump dumpfiel=a dmpTables=emp query= WHERE deptno=SCHEMAS该方案用于指定执行方案模式导出默认为当前用户方案STATUS指定显示导出作用进程的详细状态默认值为TABLES指定表模式导出TABLES=[schema_name ]table_name[:partition_name][ …]Schema_name用于指定方案名table_name用于指定导出的表名 partition_name用于指定要导出的分区名TABLESPACES指定要导出表空间列表TRANSPORT_FULL_CHECK该选项用于指定被搬移表空间和未搬移表空间关联关系的检查方式默认为N当设置为Y时导出作用会检查表空间直接的完整关联关系如果表空间所在表空间或其索引所在的表空间只有一个表空间被搬移将显示错误信息当设置为N时导出作用只检查单端依赖如果搬移索引所在表空间但未搬移表所在表空间将显示出错信息如果搬移表所在表空间未搬移索引所在表空间则不会显示错误信息TRANSPORT_TABLESPACES指定执行表空间模式导出VERSION指定被导出对象的数据库版本默认值为PATIBLEVERSION={PATIBLE | LATEST | version_string}为PATIBLE时会根据初始化参数PATIBLE生成对象元数据;为LATEST时会根据数据库的实际版本生成对象元数据version_string 用于指定数据库版本字符串调用EXPDP使用EXPDP工具时其转储文件只能被存放在DIRECTORY对象对应的OS目录中而不能直接指定转储文件所在的OS目录因此使用EXPDP工具时必须首先建立DIRECTORY对象并且需要为数据库用户授予使用DIRECTORY对象权限CREATE DIRECTORY dump dir AS D:DUMP ;GRANT READ WIRTE ON DIRECTORY dump_dir TO scott;导出表Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab dmp TABLES=dept emp导出方案Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema dmpSCHEMAS=system scott导出表空间Expdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace dmpTABLESPACES=user user导出数据库Expdp system/manager DIRECTORY=dump_dirDUMPFILE=full dmp FULL=Y使用IMPDPIMPDP命令行选项与EXPDP有很多相同的不同的有:REMAP_DATAFILE该选项用于将源数据文件名转变为目标数据文件名在不同平台之间搬移表空间时可能需要该选项REMAP_DATAFIEL=source_datafie:target_datafileREMAP_SCHEMA该选项用于将源方案的所有对象装载到目标方案中REMAP_SCHEMA=source_schema:target_schemaREMAP_TABLESPACE将源表空间的所有对象导入到目标表空间中REMAP_TABLESPACE=source_tablespace:target:tablespace REUSE_DATAFILES该选项指定建立表空间时是否覆蓋已存在的数据文件默认为NREUSE_DATAFIELS={Y | N}SKIP_UNUSABLE_INDEXES指定导入是是否跳过不可使用的索引默认为NSQLFILE指定将导入要指定的索引DDL操作写入到SQL脚本中SQLFILE=[directory_object:]file_nameImpdp scott/tiger DIRECTORY=dump DUMPFILE=tab dmp SQLFILE=a sqlSTREAMS_CONFIGURATION指定是否导入流元数据(Stream Matadata) 默认值为YTABLE_EXISTS_ACTION该选项用于指定当表已经存在时导入作业要执行的操作默认为SKIPTABBLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | FRPLACE }当设置该选项为SKIP时导入作业会跳过已存在表处理下一个对象;当设置为APPEND时会追加数据为TRUNCATE时导入作业会截断表然后为其追加新数据;当设置为REPLACE时导入作业会删除已存在表重建表病追加数据注意TRUNCATE选项不适用与簇表和NEORK_LINK选项TRANSFORM该选项用于指定是否修改建立对象的DDL语句TRANSFORM=transform_name:value[:object_type]Transform_name用于指定转换名其中SEGMENT_ATTRIBUTES 用于标识段属性(物理属性存储属性表空间日志等信息) STORAGE用于标识段存储属性VALUE用于指定是否包含段属性或段存储属性object_type用于指定对象类型Impdp scott/tiger directory=dump dumpfile=tab dmpTransform=segment_attributes:n:tableTRANSPORT_DATAFILES该选项用于指定搬移空间时要被导入到目标数据库的数据文件TRANSPORT_DATAFILE=datafile_nameDatafile_name用于指定被复制到目标数据库的数据文件Impdp system/manager DIRECTORY=dump DUMPFILE=tts dmpTRANSPORT_DATAFILES= /user /data/tbs f调用IMPDP导入表Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab dmpTABLES=dept empImpdp system/manage DIRECTORY=dump_dir DUMPFILE=tab dmpTABLES=scott dept scott emp REMAP_SCHEMA=SCOTT:SYSTEM第一种方法表示将DEPT和EMP表导入到SCOTT方案中第二种方法表示将DEPT和EMP表导入的SYSTEM方案中注意如果要将表导入到其他方案中必须指定REMAP SCHEMA选项导入方案Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema dmpSCHEMAS=scottImpdp system/manager DIRECTORY=dump_dir DUMPFILE=schema dmpSCHEMAS=scott REMAP_SCHEMA=scott:system导入表空间Impdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace dmpTABLESPACES=user导入数据库lishixinzhi/Article/program/Oracle/201311/16758。
数据泵expdp和impdp使用说明
Expdp和impdpOracle 11g数据库以后的导入导出功能,采用数据泵模式expdp和impdp命令备份和恢复Oracle数据库。
1.首先创建一个用于存放对象的文件,即导入\导出时的文件存放目录,以便能够直接找到导出的文件。
默认也有directory,一般在\admin\orcl\dpdump下。
(此路径必须在电脑中存在,否则oracle会提示创建成功,但实际应用导入\导出时会报错。
)举例:我创建一个在D盘根目录下的oracle文件夹下的目录。
第一步:创建一个目录(也就是文件路径)来装导出的dmp文件方法:操作系统—开始—运行输入“cmd”进入dos界面输入“sqlplus system/zl@orcl”(根据自己的数据库情况输入) 。
按回车如下图:接着,创建DIRECTORYcreate directory expdp_dir as 'D:\oracle\ ';这里要注意,路径D:\oracle\一定要是系统已经存在的了,如果该路径不存在,下边的导出将会提示正确创建了路径的显示如下:第二步:授权(授予要导入数据的用户对该目录(路径)进行读和写的权限),还是在连接数据库的状态下输入:Grant read,write on directory dir_dp to htdss;如下图:就完成了,关闭窗口,重新进入dos界面就可以进行备份了;第三步:执行导出expdp htdss/htdss@orcl directory=expdp_dir dumpfile =xxx.dmp schemas=htdss logfile=xxxx.log;连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1With the Partitioning, OLAP and Data Mining options启动"LTTFM"."SYS_EXPORT_SCHEMA_01": lttfm/********@fgisdb schory=expdp_dir dumpfile =expdp_test1.dmp logfile=expdp_test1.log; */备注:1、directory=expdp_dir必须放在前面,如果将其放置最后,会提示ORA-39002: 操作无效ORA-39070: 无法打开日志文件。
数据泵导入建表
数据泵导入建表数据泵是Oracle数据库中的一个重要工具,通过该工具可以将数据从一个数据库传输到另一个数据库,同时还可以通过数据泵将数据库中的数据导出,并保存为一个文件,以备日后使用。
数据泵还可以被用来对表进行导入、导出和重建等操作。
在这篇文章中,我们将介绍如何使用数据泵导入建表。
步骤一:导出数据文件在进行数据导入之前,我们需要先将数据从源数据库导出。
可以使用数据泵的expdp命令将数据导出为一个dump文件。
例如,通过以下命令将指定的数据导出到个人电脑的F盘根目录:expdp system/oracle@orcl schemas=scottdumpfile=f:\scott.dmp其中,system/oracle是登录源数据库的用户名和密码;orcl是源数据库的服务名,schemas参数指定了要导出的Schema;dumpfile 指定了dump文件的保存路径和文件名。
步骤二:创建目录导出数据后,我们需要使用Oracle的SQL命令创建一个导入目录,以便在接下来的步骤中使用。
例如:SQL> create directory imp_dir as 'f:\';其中,imp_dir是导入目录的名称,f:\是导出的dump文件的保存路径。
步骤三:导入数据一旦目录被创建之后,我们就可以使用数据泵的impdp命令将数据导入到目标数据库中。
例如:impdp system/oracle@orcl directory=imp_dirdumpfile=scott.dmp schemas=scott remap_schema=scott:scott1 在此命令中,system/oracle是目标数据库的用户名和密码;orcl是目标数据库的服务名;directory指定了导入目录的名称;dumpfile指定了导出的dump文件的名称;schemas参数指定了要导入的schema;remap_schema参数可以让我们将导出时原本的schema名称修改为新的名称。
oracle data pump的一般体系结构
一、介绍Oracle Data Pump是Oracle数据库中用于将数据和元数据从一个数据库导出到另一个数据库的工具。
它是一个非常强大和灵活的工具,可以用来在不同的数据库之间迁移数据,备份和恢复数据,以及进行数据库升级和复制等操作。
二、主要组成部分1. 数据泵作业(Data Pump Job):数据泵作业是数据泵操作的一个实例,它包含了所有需要导出或导入的数据和元数据的信息,以及执行数据泵操作的参数和选项。
2. 数据泵进程(Data Pump Process):数据泵进程是实际执行数据泵操作的进程,它负责读取源数据库中的数据和元数据,并将其写入到目标数据库中。
数据泵进程通常以后台进程的形式存在,可以由数据泵作业来启动和管理。
3. 数据泵引擎(Data Pump Engine):数据泵引擎是数据泵作业的核心组成部分,它负责解析数据泵作业中的参数和选项,调度数据泵进程来执行具体的数据导出和导入操作。
4. 数据泵文件(Data Pump File):数据泵文件是数据泵操作中的重要存储介质,它可以用来存储导出的数据和元数据,以及在导入数据时用作数据源。
数据泵文件通常以二进制格式存储,可以包括数据泵作业的日志、导出的数据文件、导出的元数据文件等。
三、数据泵的工作流程1. 创建数据泵作业:在进行数据泵操作之前,首先需要创建一个数据泵作业,指定需要导出或导入的数据和元数据的信息,以及执行数据泵操作的参数和选项。
2. 启动数据泵作业:一旦数据泵作业创建完成,就可以通过Oracle Data Pump工具或者PL/SQL包来启动数据泵作业,数据泵引擎会根据作业中的参数和选项来调度数据泵进程来执行具体的数据导出和导入操作。
3. 执行数据泵操作:数据泵引擎会根据作业中的参数和选项来调度数据泵进程来执行具体的数据导出和导入操作,数据泵进程会读取源数据库中的数据和元数据,并将其写入到目标数据库中。
4. 完成数据泵作业:一旦所有的数据导出和导入操作全部完成,数据泵作业就会进入完成状态,数据泵引擎会生成数据泵作业的日志,并将其存储到数据泵文件中,以便后续的查看和分析。
Oracledblink详解(转)
Oracledblink详解(转)oracle dblink 是⼲嘛的:⽐如现在有俩个数据库,都是单独的,如果我们现在登陆当前数据库,想访问另⼀个数据库,如果我们建了DBLINK我们就可以直接在当前数据库取访问另⼀个数据库。
如select * from user 这样我们就可以直接访问另⼀个数据库的user表database link概述database link是定义⼀个数据库到另⼀个数据库的路径的对象,database link允许你查询远程表及执⾏远程程序。
在任何分布式环境⾥,database都是必要的。
另外要注意的是database link是单向的连接。
在创建database link的时候,Oracle再数据字典中保存相关的database link的信息,在使⽤database link的时候,Oracle通过Oracle Net⽤⽤户预先定义好的连接信息访问相应的远程数据库以完成相应的⼯作。
建⽴database link之前需要确认的事项:确认从local database到remote database的⽹络连接是正常的,tnsping要能成功。
确认在remote database上⾯有相应的访问权限。
database link分类类型Owner描述Private 创建databaselink的user拥有该databaselink在本地数据库的特定的schema下建⽴的database link。
只有建⽴该database link的schema的session能使⽤这个database link来访问远程的数据库。
同时也只有Owner能删除它⾃⼰的private database link。
Public Owner是PUBLIC.Public的database link是数据库级的,本地数据库中所有的拥有数据库访问权限的⽤户或pl/sql程序都能使⽤此database link来访问相应的远程数据库。
数据泵远程导库(db-link)
源数据库:
windowsXP 11gR1
sid-test
目标数据库:
solaris10 11gR2
sid-SI11g
操作步骤:
一、在源数据库上生成数据:
创建了用户hq,含有两张表:test和classes。
二、在目标数据库上创建目录:
create or replace directory as '/usr2/ORADATA/bak/';
处理对象类型 SCHEMA_EXPORT/DEFAULT_ROLE
处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE
. . 导入了 "HQ"."CLASSES" 2 行
三、在目标数据库上创建dblink:
create public database link hq connect to hq identified by hq using ’209’;
这里,第一个hq是dblink名,第二个hq是源数据库用户名,第三个hq是源数据库hq用户密码,209是网络连接服务名,从tnsnames.ora文件中获取的。
SQL> select * from test;
ID CONTENT
---------- ----------------------------------------
1 系统工程部
2 项目管理中心
SQL> select * frSSNAME
数据泵和数据库备份
expdp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移
expdb支持三种模式:
a. 表模式: 导出用户所有表或者指定的表
SQL>exit;
[oracle@oradb ~]$ mkdir wl
[oracle@oradb ~]$ expdp FSD/FSD tables=cl_loan_acct directory=dump_test dumpfile=cl_loan_acct.dmp logfile=cl_loan_acct.log;
b. 用户模式:导出用户所有对象以及对象中的数据
c. 导出表空间:导出数据库中特定的表空间
d. 整个数据的例子
a.基于表模式的导出
SQL> create directory dump_test as '/home/oracle/wl';
directory=TEST_EXPDP job_name=hs_hisjob2 query='"where init_date between 20080501 and 20080701"';
注意:如果QUERY条件写得有问题那么下面总是会报以下的错误
ORA-39001: invalid argument value
为数据及数据对象提供更细微级别的选择性(使用exclude,include,content参数)
可以设定数据库版本号(主要是用于兼容老版本的数据库系统)
并行执行
预估导出作业所需要的磁盘空间(使用estimate_only参数)
使用Oracle 10g数据泵使用详解
使用Oracle 10g数据泵(EXPDP/IMPDP)一、关于数据泵的概述在Oracle 10g中,数据泵(Data Pump)的所有工作都有数据库实例来完成,数据库可以并行来处理这些工作,不仅可以通过建立多个数据泵工作进程来读/写正在被导出/导入的数据,也可以建立并行I/O 服务器以更快地读取或插入数据,从而,单进程瓶颈被彻底解决。
通过数据泵,以前通过EXP/IMP主要基于Client/Server的逻辑备份方式转换为服务器端的快速备份,数据泵主要工作在服务器端,可以通过并行方式快速装入或卸载数据,而且可以在运行过程中调整并行的程度,以加快或减少资源消耗。
数据泵通过新的API来建立和管理,这些新的工作主要由DBMS_DATAPUMP来完成。
新的导入/导出工具完全成为了一个客户端应用,通过IMPDP/EXPDP执行的命令实际上都是在调用Server端的API在执行操作,所以一旦一个任务被调度或执行,客户端就可以推出连接,任务会在server端继续执行,随后通过客户端实用程序从任何地方检查任务的状态和进行修改二、数据泵的使用示例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp注意到与EXP不同,EXPDP增加了一个主要的参数:DIRECTORY这个参数是用来定义一个路径,前面已经提到,数据泵主要在Server端工作,导出文件需要写出到Server 端本地目录,这个DIRECTORY就是对应的Server端的路径如://创建目录create or replace directory expdir as 'd:\';//给test赋予目录的读写权限grant read,write on directory expdir to test;//导出数据C:\>expdp test/test@acf dumpfile=test.dmp directory=expdir三、EXPDP/IMPDP的停止与重启动EXPDP和IMPDP的本质在于,通过API调用,把传统的EXP/IMP类交付式模式的操作,转变成数据库内部的job任务,从而实现了任务的可终止与重启动。
数据泵导入导出--自总结
从A库导出用户jack下的所有数据到B库:查看字符集:select * from nls_database_parameters;步骤:A库:1)创建一个目录用来存放导出数据,例如/home/oracle/dump目录。
2)登录到数据库中,执行:create directory dump_dir as ‘/home/oracle/dump’;3)给目录授权,grant read,write on directory dump_dir to public;(此处也可以单独授权给某一个用户,例如jack)4)可以查询一下该目录及拥有者:select * from dba_directories;5)导出语句:expdp schemas=jack directory=dump_dir dumpfile=jack.dump logfile=jack.log执行完后会提示输入用户和密码,输入jack以及其密码即可。
B库:1)将jack.dump文件scp传到B库所在服务器上,例如/home/oracle/bak此处的目录可以随意定义,只要跟第二步执行的路径一致即可。
2)同A库,登录到数据库中执行:create directory dump_dir as ‘/home/oracle/bak’3)授权:grant read,write on directory dump_dir to public; --此处的dump_dir命名也是随意设置的,只要和impdp导入的时候directory后面的名字相同即可。
4)如果是schema级别的导入导出,则需要在B库里先创建与A库相同的表空间:create tablespace WORK datafile ‘/u01/app/oracle/oradata/orcl/work01.dbf’;5)用户不用创建,导入的时候用system用户即可,会自动创建jack用户。
导入语句:impdp schemas=jack directory=dump_dir dumpfile=jack.dump logfile=jack2.log 执行后提示输入用户和密码,输入system用户及其密码即可。
Oracle数据泵同步数据方式简要步骤
Oracle数据泵同步数据方式简要步骤1、Oracle数据泵简介Data Pump 反映了整个导出/导入过程的完全革新。
不使用常见的 SQL 命令,而是应用专有 API(direct path api etc) 来以更快得多的速度加载和卸载数据。
以下步骤为从容灾数据库(源端)上,按照用户或者数据表的模式将数据同步到测试数据库(目标端)上的简要步骤。
应用数据泵做数据同步的前提条件是:1、在源端数据库主机上有足够大的空间存储导出的数据文件,要求提前对导出的数据文件大小做评估,看预留多少空间。
2、在目标端主机上也要保证有足够的空间存放导入的数据文件3、源端和目标端导入导出所用的数据库用户及密码(明文)2、Oracle数据泵数据表同步方式和用户同步方式2.1.指定数据表同步方式(导出、导入)以同步客服测试数据库为例:源端数据库主机:10.220.33.112(存放目录:/dataapp1/expdp)目标端数据库主机:10.220.64.71(存放目录:/oracle/imp)导出:1.滤出需要同步的数据表列表,评估需要同步的表大小,在源端及目标端主机上留出所需的数据文件的空间。
2.登录(oracle/oracle)源端数据库主机(10.220.33.112),执行:$sqlplus / as sysdba登录数据库,执行如下语句:>create directory dpdata2 as '/dataapp1/expdp ';>grant read, write on directory dpdata2 to kf;3.按照表名导出的语句如下:$expdp kf/kf@rzkfdb1new tables=co_task,co_task_log,……directory=dpdata2 dumpfile=par%U.dmp parallel=15;参数说明:tables------要导出的数据表名Directory------数据文件导出的路径Dumpfile---------导出的数据文件命名%为通配符,按照导出的进程数递增 Parallel----------数据泵支持多进程导出方式4.此语句执行后观察在对应的目录是否有*.dmp类别的文件生成导入:1.数据泵导入操作是在导出操作基础上进行的,在导入操作之前,需要在目标数据库上建立与源端相同的表空间、schema等元素。
mysql dblink sql写法
mysqldblinksql写法在MySQL中,dblink(数据库链接)是一种允许你在一个查询中连接到其他数据库的方法。
通过使用dblink,你可以在一个查询中执行跨数据库的操作,这在许多情况下都非常有用。
在本篇文章中,我们将介绍MySQLdblinkSQL的用法和示例。
一、基本语法```sqlSELECT*FROMtable_name@dblink_nameWHEREcondition;```其中,`table_name`是你要查询的表的名称,`dblink_name`是你想要连接的数据库的名称,`condition`是用于筛选数据的条件。
二、连接多个数据库你可以使用多个`dblink_name`来连接多个数据库。
例如,如果你想要在一个查询中连接两个不同的数据库,你可以这样做:```sqlSELECT*FROMtable_name@dblink_name1WHEREcondition1UNIONALLSELECT*FROMtable_name@dblink_name2WHEREcondition2;```三、使用临时表在某些情况下,你可能需要在连接的数据库中创建一个临时表,并在查询中使用它。
你可以使用`CREATETEMPORARYTABLE`语句在连接的数据库中创建一个临时表,然后在查询中使用它。
例如:```sqlCREATETEMPORARYTABLEtemp_tableASSELECT*FROMother_database.table_nam e;SELECT*FROMtemp_table@dblink_nameWHEREcondition;```四、使用存储过程和函数你可以在连接的数据库中创建存储过程和函数,并在查询中使用它们。
这样可以在查询中重用已经编写的代码,提高效率。
例如:```sqlCALLdblink_function(@return_status:=return_status);SELECT*FROMtable_name@dblink_nameWHEREconditionANDreturn_status=1;```以上就是在MySQL中使用dblinkSQL的基本用法和示例。
数据泵导入导出
导出:Expdp work/work@lxgh DIRECTORY=DATA_PUMP_DIR DUMPFILE=test2.dmplogfile=test2.log导出的包目录,有二种方式可以找到,第一种方式最简单,导出完成后,最后会有导出包存放的目录,或查看日志也会有记录。
第二种方式是通过语句查询,用PLsql登录后,执行下面的语句:SELECT * FROM dba_directories;结果中查找DATA_PUMP_DIR对应的地址,就是导出包存放的位置了。
第二步:在需要导入的数据库中建好相应的表空间(一致),用户(一致)等,如果有就不需要执行此步骤。
第三步:导入数据用数据泵导入数据,先将导出的数据包放在需导入库的DATA_PUMP_DIR 对应的目录下,然后直接执行下面的语句就可以了:Impdp work/work@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=xtdb.Dmpfull=y (这个是全部导入的语句)导入执行完后,也有相应的日志可以查看,导入是否成功。
如果日志报ORA-39082: Object type VIEW:"YXT"."V_ZK_CAPITALASSERTS" created with compilation warnings 这一类错误,就说明在导入过程中,有些函数、视图和存储过程编译失败,可以执行如下语句查看:select owner,object_name,object_type,statusFROM dba_objectswhere status !='VALID'and owner not in('SYS','SYSTEM')然后把编译失败的OBJECT重新编译,可以在SQLPLUS DEVELOP中右键点击重新编译,或者执行如下语句:alter function F_GET_COST_AMOUNT_DATE_ALL compile;alter PROCEDURE P_DR_ESTI_INCOMES_CDI_HOSP compile;即可解决备注:一定要在导入之前在库里建好相关的存贮过程,ORCLLNK和HRP_ZK_LINK以及HRLINK要不编译不过去而且报错。
第25章 数据泵导入
数据泵备份与恢复
(5)重新映射参数 重新映射使得在数据导入过程中将数据从一个数据库对象移动到另一个数据库对象,可 以映射模式,映射数据文件和映射表空间,映射可以理解为“数据对象移动”。 REMAP_SCHEMA:重新映射模式,可以将对象从一个模式移动到另一个模式, D:\>impdp system/oracle@orcl dumpfile =pump_dir:SHCEMA_SCOTT.DMP remap_schema=scott:linzi 上例将SCOTT模式下的所有数据库对象移动到LINZI模式下,这样使用LINZI模式登录 数据库,就可以使用SCOTT用户的所有数据库对象。我们通过下例验证重映射模式的结 果。 REMAP_DATAFILE:在导入数据时,重新定义数据文件的名称和目录。如下所示。 D:\impdp system/oracle@orcl directory=pump_dir dumpfile=backup_full.dmp remap_datafile='c:\mydb.dbf':'d:\mydb\newdb.dbf REMAP_TABLESPACE:重映射表空间使得将数据对象从一个表空间移动到另一个表空 间。如下所示。 D:\impdp system/oracle@orcl remap_tablespace='users':'mynewusers' directory=pump_dir dumpfile=backup_full.dmp
数据泵备份与恢复
(9)交互模式参数 数据泵导入的交互参数和数据泵导出的交互参数功能是一样的,在数 据泵导入参数中没有ADD_FILE参数,它只对数据泵导出程序有效, 而其他参数以及切换到交互模式数据泵导入与导出是一样的。 PARALLEL:说明当前作业的活跃WORKER数量。 CONTINUE_CLIENT:在切换到交互模式后,返回记录模式。 EXIT_CLIENT:退出客户登录模式,但是不终止导入作业。 KILL_JOB:分离或删除当前导入作业。 START_JOB:在导入作业被意外终止后,可以重启或恢复当前作业。 STATUS:监视当前导入作业的状态,该参数是一个整数值,默认值 为0,如果设置STATUS=5,说明每5秒钟刷新一次导入作业的状态 信息。 STOP_JOB:关闭当前执行的作业并退出客户端,如果有多个导入作 业,则顺序关闭这些作业。如果设置STOP_JOB=IMMEDIATE将立 即关闭数据泵作业。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DB_LINK+数据泵远程同步
1.赋权限
grant CREATE DATABASE LINK,DROP PUBLIC DATABASE LINK,CREATE PUBLIC DATABASE LINK to scott
分别赋给两个库用户创建和删除DB_LINK的权限(实验时用的是devdb的scott用户与orcl 的scott用户)
grant connect,resource to scott(连接访问的权限,一般都有)
2.创建public DB_LINK连接
create public database link connect to scott identified by scott using 'DEVDB'
create public database link connect to scott identified by scott using 'BB'
测试是否能连接上
select * from global_name@
select * from global_name@
3.在orcl库上建数据泵字典
create or replace directory exp_dir as '/home/oracle';
并附权限给scott
grant read, write on directory exp_dir to scott
4.给scott用户拷贝的权限
grant exp_full_database to scott
(没这个权限会报ORA-31631与ORA_39149的错)
5.orcl库的scott同步devdb库的scott
impdp scott/scott SCHEMAS=scott directory=exp_dir network_link= logfile=imp.log table_exists_action=replace
脚本
#!/bin/bash
datetime=`/bin/date "+%Y%m%d"`;
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1;
export ORACLE_HOME;
PATH=$ORACLE_HOME/bin:$PATH;
export PATHexport ORACLE_BASE=/home/oracle/oracle
export ORACLE_SID=orcl
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export ORACLE_TERM=oinstall
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib export NLS_LANG="SIMPLIFIED CHINESE_CHINA.UTF8"
####################################impdp###################################### ###
/home/oracle/oracle/product/10.2.0/db_1/bin/impdp scott/scott SCHEMAS=scott directory=exp_dir network_link= logfile=imp_"$datetime".log table_exists_action=replace
检查日志文件中ORA错误
grep '^ORA' /home/oracle/impdp_*.log >> grep_ORA.log。