system用户dba权限的导出单表,涉及两库版本不一致,高低版本造成报错。
expdp \'/ as sysdba\' parallel=5 cluster=no tables=GS_JS.JS_QQXXRZB dumpfile=JS_QQXXRZB.dmp logfile=JS_QQXXRZB.log directory=DATA_PUMP_DIR compression=all version=11.2.0.1.0;
导出某用户下的全表,涉及Oracle goldengate初始化操作,有OGG数据同步两库的情况,要先停下OGG抽取进程及复制进程,然后如下操作:
col get_system_change_number for 9999999999999999;
select dbms_flashback.get_system_change_number from dual;--记下源库的scN号
expdp \'/ as sysdba\' PARALLEL=3 schemas='GS_YW' dumpfile=gs_yw_%U.dmp logfile=gs_yw.log directory=DATA_PUMP_DIR compression=all include=table cluster=n flashback_scn=14976234415810
select * from dba_directories;--查询DATA_PUMP_DIR目录
查到源库的DATA_PUMP_DIR路径,将该路径下的dmp文件拿出。
select * from dba_directories;--查询DATA_PUMP_DIR目录
将dmp文件放入目标系统DATA_PUMP_DIR路径下,若查不到DATA_PUMP_DIR路径,则需要在目标库重新建立(注意源库和目标库的DIRECTORY_NAME一致都叫做DATA_PUMP_DIR):
重新在目标库创建directory数据库对象。
SQL>drop directory DATA_PUMP_DIR;
Directory dropped.
SQL> create directory DATA_PUMP_DIR as ‘/u01/app/oracle/dpdump’;
Directory created.
SQL> grant read, write on directory DATA_PUMP_DIR to public;
Grant succeeded.
impdp \'/ as sysdba \' parallel=5 cluster=no dumpfile=JS_QQXXRZB.dmp logfile=JS_QQXXRZB.log directory=DATA_PUMP_DIR TABLE_EXISTS_ACTION=REPLACE transform=segment_attributes:n;
注意这里我加了个参数transform=segment_attributes:n,按照官方文档在IMPDP语句中加上transform=segment_attributes:n参数,该参数可以忽略expdp导出时附带的相关表空间和存储子句约束,不加的话有时候会报错 ORA-14460: only one COMPRESS or NOCOMPRESS clause may be specified,昨天亲测,也是百度找的解决办法,这里记一下。原链接ORA-14460报错解决。
TABLE_EXISTS_ACTION=REPLACE的意思是先drop表,然后创建表,最后插入数据。TABLE_EXISTS_ACTION详解。
另外,如果源库和目标库的用户和表空间都不一致时,可以在imp导入时加参数
REMAP_SCHEMA=源库的用户:目标库的用户
remap_tablespace=源库表空间:目标库表空间
最后注意如果是OGG初始化,刚刚停过了抽取进程和复制进程的,导入目标库数据后先启动抽取进程,然后启动复制进程时,要加上刚才的SCN号
start RGS_CX1 aftercsn 14976234415810
GoldenGate初始化的方式探讨
以上。