赞
踩
1.对生产系统影响小:实时读取交易日志,以低资源占用实现大交易量数据实时复制;
2.以交易为单位复制,保证交易一致性:只同步已提交的数据;
3.高性能,智能的交易重组和操作合并,使用数据库本地接口访问,并行处理体系,灵活的拓扑结构:支持一对一、一对多、多对一、多对多和双向复制等。
角色 | 操作系统 | IP地址 | Oracle数据库版本 | 数据库SID | Goldengate(OGG)版本 |
---|---|---|---|---|---|
源端 | Red Hat Enterprise Linux Server release 6.4 (Santiago) 2.6.32-358.el6.x86_64 | 192.168.11.223 | Version12.2.0.1.0 | PROD | Version 12.3.0.1.4 |
目标端 | Windows Server2012 R2 Datecenter [版本 6.3.9600]) | 192.168.11.212 | Version12.1.0.1.0 | orcl12c | Version 12.3.0.1.5 |
操作系统,数据库部署不详细写,各自安装,不会百度一大堆
在生产环境中要检查很多东西,不列举。实验中都是新环境,就检查下下面两项。
提示:有网上资料说,源端和目标端的监听要一样,在监听文件(tnsnames.ora,listener.ora)需要配置成一样,也就在监听文件下互相加监听内容,这个没有测试,实验中只是各种的监听状态正常。
源端:
检查tnsnames.ora
vi tnsnames.ora
PROD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = PROD)
)
)
LISTENER_PROD =
(ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
注意:HOST=[主机名或主机本地IP]
检查listener.ora
listener.ora:用于服务端,用于提示服务端监听哪些实例。
cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
检查监听状态:lsnrctl status
[oracle@enmoedu1 admin]$ lsnrctl status LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 03-JAN-2023 16:38:01 Copyright (c) 1991, 2016, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=enmoedu1)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production Start Date 03-JAN-2023 16:03:17 Uptime 0 days 0 hr. 34 min. 43 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/enmoedu1/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=enmoedu1)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=enmoedu1)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/PROD/xdb_wallet))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "PROD.enmoedu.com" has 1 instance(s). Instance "PROD", status READY, has 1 handler(s) for this service... Service "PRODXDB.enmoedu.com" has 1 instance(s). Instance "PROD", status READY, has 1 handler(s) for this service... The command completed successfully
ping测试:
[oracle@enmoedu1 admin]$ tnsping PROD
TNS Ping Utility for Linux: Version 12.2.0.1.0 - Production on 03-JAN-2023 16:38:40
Copyright (c) 1997, 2016, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PROD)))
OK (0 msec)
监听相关文件存放ORACLE_HOME/network/admin/目录下listener.ora , tnsnames.ora ;[ORACLE_HOME根据个人部署路径,不一定和实验一样]
cd $ORACLE_HOME/network/admin/
[oracle@enmoedu1 admin]$ ls
listener.ora samples shrept.lst tnsnames.ora
目标端:
检查tnsnames文件配置:
ORCL12C =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl12c)
)
)
LISTENER_ORCL12C =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
注意:HOST = [主机名,主机本地IP]
检查listener.ora 文件配置
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
检查监听状态:lsnrctl status
PS C:\Users\Administrator> lsnrctl status LSNRCTL for 64-bit Windows: Version 12.1.0.1.0 - Production on 05-1月 -2023 22:18:07 Copyright (c) 1991, 2013, Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for 64-bit Windows: Version 12.1.0.1.0 - Production 启动日期 05-1月 -2023 17:35:19 正常运行时间 0 天 4 小时 42 分 47 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 C:\app\oracle\product\12.1.0\dbhome_1\network\admin\listener.ora 监听程序日志文件 C:\app\oracle\diag\tnslsnr\WIN-812T4TNGO4M\listener\alert\log.xml 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-812T4TNGO4M)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=WIN-812T4TNGO4M)(PORT=5500))(Security=(my_wallet_directory=C:\APP\ORACLE\ad min\orcl12c\xdb_wallet))(Presentation=HTTP)(Session=RAW)) 服务摘要.. 服务 "CLRExtProc" 包含 1 个实例。 实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "orcl12c" 包含 1 个实例。 实例 "orcl12c", 状态 READY, 包含此服务的 1 个处理程序... 服务 "orcl12cXDB" 包含 1 个实例。 实例 "orcl12c", 状态 READY, 包含此服务的 1 个处理程序...
ping测试:
PS C:\Users\Administrator> tnsping orcl12c
TNS Ping Utility for 64-bit Windows: Version 12.1.0.1.0 - Production on 05-1月 -2023 22:18:46
Copyright (c) 1997, 2013, Oracle. All rights reserved.
已使用的参数文件:
C:\app\oracle\product\12.1.0\dbhome_1\network\admin\sqlnet.ora
已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED)
(SERVICE_NAME = orcl12c)))
OK (10 毫秒)
主要两个数据库的字符集设置是否一致,不一致的话先进行修改(看资料说OGG12C字符集不一致也是可以同步)
它的格式如下:NLS_LANG = language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性
其中:
Language: 指定服务器消息的语言,
territory: 指定服务器的日期和数字格式,
charset: 指定字符集。
如:AMERICAN _ AMERICA. ZHS16GBK
源端:
SYS@PROD> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8
目标:
SQL> select sys_context('userenv', 'language') from dual;
SYS_CONTEXT('USERENV','LANGUAGE')
--------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
修改字符集:
本实验修改源端字符集,在生产环境下,如果目标库是新建的,建议修改目标端。
Linux 下切换到安装数据库的用户下,本次实验是oracle,切换到Oracle用户下,添加环境变量。
su - oracle
vim ~/.bash_profile
export NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
:wq
执行 source ~/.bash_profile 使之生效
reboot重启系统
登录数据库确认字符集修改是否成功:
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
--------------------------------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.AL32UTF8
上面的方法只修改前面语言,地域部分,字符集没有修改成想要的。继续下面的步骤:
管理员身份登录数据库
连接数据库软件:
sqlplus /nolog
管理员连接:
SQL> connect /as sysdba
关闭数据库:
SQL> shutdow 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 internal_use ZHS16GBK;
关闭数据库:
SQL> shutdown immediate;
打开数据库,重启
SQL> startup
再次确认字符集:
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
Windows 2012添加环境变量,修改注册表(实验中未修改windows,记录备用)
添加环境变量:
选中【我的电脑】——右键——【高级系统设置】——【环境变量】——【系统变量】
新建变量:NLS_LANG 值为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
修改注册表:
win+R,输入regedit,进入注册表;找到以下路径HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE\KEY_OraDB12Home1
(注意:KEY_OraDB12Home1与自己要修改的数据库对应)
找到NLS_LANG,
右键,修改数值,修改为客户端/服务器对应的字符集;保存,关闭
重启系统
goldengate12.2支持的版本是oracle11.2,oracle12c需要goldengate12.3以上版本
G
o
l
d
e
n
g
a
t
e
12.3
s
u
p
p
o
r
t
s
O
r
a
c
l
e
≥
12.2.0.1
G
o
l
d
e
n
g
a
t
e
12.2
s
u
p
p
o
r
t
s
O
r
a
c
l
e
≥
11.2.0.1
G
o
l
d
e
n
g
a
t
e
12.1
s
u
p
p
o
r
t
s
O
r
a
c
l
e
≥
11.1.0.6
G
o
l
d
e
n
g
a
t
e
11.2
s
u
p
p
o
r
t
s
O
r
a
c
l
e
≥
10.2.0.4
F
o
r
e
a
r
l
i
e
r
d
a
t
a
b
a
s
e
v
e
r
s
i
o
n
s
(
8
i
(
D
M
L
o
n
l
y
)
,
9
i
−
11.1
)
u
s
e
G
o
l
d
e
n
g
a
t
e
10.4
Goldengate 12.3 supports Oracle \geq 12.2.0.1\\ Goldengate 12.2 supports Oracle \geq 11.2.0.1\\ Goldengate 12.1 supports Oracle \geq 11.1.0.6\\ Goldengate 11.2 supports Oracle \geq 10.2.0.4\\ For earlier database versions(8i(DML only),9i-11.1)use Goldengate10.4
Goldengate12.3supportsOracle≥12.2.0.1Goldengate12.2supportsOracle≥11.2.0.1Goldengate12.1supportsOracle≥11.1.0.6Goldengate11.2supportsOracle≥10.2.0.4Forearlierdatabaseversions(8i(DMLonly),9i−11.1)useGoldengate10.4
登录oracle用户创建software,ogg目录
mkdir software --软件包存放位置
mkdir ogg --ogg安装位置
软件包上传/home/oracle/software/目录下,解压
[oracle@enmoedu1 ~]$ cd /home/oracle/software/
[oracle@enmoedu1 software]$ unzip V975837-01.zip
解压完,进行安装
[oracle@enmoedu1 software]$ cd fbo_ggs_Linux_x64_shiphome/Disk1/
[oracle@enmoedu1 Disk1]$ ./runInstaller
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 120 MB. Actual 14952 MB Passed
Checking swap space: must be greater than 150 MB. Actual 4061 MB Passed
Checking monitor: must be configured to display at least 256 colors. Actual 16777216 Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2023-01-07_10
执行./runInstaller命令后,弹出图形界面
选择12c,next
选择ogg安装目录和数据库home目录,Start Manager前面勾“✔”是Manager进程ogg安装完成就自动启动。next
install进行安装
正在安装
完成安装,close
软件包可以存放任意目录下
在c:\app下新建ogg目录 --ogg安装目录
安装步骤参考Linux步骤,目录选择自己规划的目录。
有些时候我们没有图形化界面得时候就,只能用命令行得方式去安装OGG这时候就需要用到静默安装,静默安装需要配置应答文件,我将ogg安装文件解压到了/home/oracle/software目录下了,应答文件在OGG安装文件解压后的目录里(/home/oracle/software/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp)
#################################################################### ## Copyright(c) Oracle Corporation 2017. All rights reserved. ## ## ## ## Specify values for the variables listed below to customize ## ## your installation. ## ## ## ## Each variable is associated with a comment. The comment ## ## can help to populate the variables with the appropriate ## ## values. ## ## ## ## IMPORTANT NOTE: This file should be secured to have read ## ## permission only by the oracle user or an administrator who ## ## own this installation to protect any sensitive input values. ## ## ## #################################################################### #------------------------------------------------------------------------------- # Do not change the following system generated value. #------------------------------------------------------------------------------- oracle.install.responseFileVersion=/oracle/install/rspfmt_ogginstall_response_schema_v12_1_2 ################################################################################ ## ## ## Oracle GoldenGate installation option and details ## ## ## ################################################################################ #------------------------------------------------------------------------------- # Specify the installation option. # Specify ORA12c for installing Oracle GoldenGate for Oracle Database 12c and # ORA11g for installing Oracle GoldenGate for Oracle Database 11g #------------------------------------------------------------------------------- #安装OGG得版本 ORA11g是11g, ORA12c是12c INSTALL_OPTION=ORA12c #------------------------------------------------------------------------------- # Specify a location to install Oracle GoldenGate #------------------------------------------------------------------------------- #OGG安装路径 SOFTWARE_LOCATION=//home/oracle/ogg #------------------------------------------------------------------------------- # Specify true to start the manager after installation. #------------------------------------------------------------------------------- #是否开启mgr进程 true开启 false 不开启 START_MANAGER=true #------------------------------------------------------------------------------- # Specify a free port within the valid range for the manager process. # Required only if START_MANAGER is true. #------------------------------------------------------------------------------- #mgr进程得端口号 MANAGER_PORT=7809 #------------------------------------------------------------------------------- # Specify the location of the Oracle Database. # Required only if START_MANAGER is true. #------------------------------------------------------------------------------- #ORACLE_HOME的路径 DATABASE_LOCATION=/u01/app/oracle/product/12.2.0/dbhome_1 ################################################################################ ## ## ## Specify details to Create inventory for Oracle installs ## ## Required only for the first Oracle product install on a system. ## ## ## ################################################################################ #------------------------------------------------------------------------------- # Specify the location which holds the install inventory files. # This is an optional parameter if installing on # Windows based Operating System. #------------------------------------------------------------------------------- #Oracle产品目录地址oraInventory INVENTORY_LOCATION=/u01/app/oraInventory #------------------------------------------------------------------------------- # Unix group to be set for the inventory directory. # This parameter is not applicable if installing on # Windows based Operating System. #------------------------------------------------------------------------------- #用户组 一般为Oracle的用户组 UNIX_GROUP_NAME=oinstall
应答文件编辑完成,开始安装
--进入OGG安装文件解压后的目录
cd /home/oracle/software/fbo_ggs_Linux_x64_shiphome/Disk1
--静默安装命令格式
./runInstaller -silent -responseFile [应答文件绝对路径]
--静默安装执行语句
./runInstaller -silent -responseFile /home/oracle/software/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp
实验中安装ogg使用Oracle目录,登录oracle用添加环境变量,ogg安装可以建立独立的用户,需要和oracle用户在同一个组。
注:配置环境变量,才能正常进ggsci
oracle用户vi .bash_profile
vi .bash_profile
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export OGG_HOME=/home/oracle/ogg
export PATH=$OGG_HOME:$PATH
--文件生效
. .bash_profile 或者 source .bash_profile
右击“这台电脑”—>选择“属性”—>选择“高级系统设备”—>选择“环境变量”—>系统变量—>新建
(1)设置OGG_HOME
变量名称:OGG_HOME
变量值:C:\app\ogg
(2)设置LD_LIBRARY_PATH
变量名称:LD_LIBRARY_PATH
变量值: O R A C L E H O M E / l i b − − 前提是设置过 ORACLE_HOME/lib --前提是设置过 ORACLEHOME/lib−−前提是设置过ORACLE_HOME才可以这样使用
(3)添加PATH
选择path—>编辑—>在“Path”的变量值文本框的最后面先加入一个分号“;”,添加内容 O G G H O M E : OGG_HOME: OGGHOME:PATH,确定。 —前提设置过$OGG_HOME才可以这样使用。
安装完成,进到ogg安装目录检查是否有以下子目录:
dirprm: 用于存放各个进程进程参数文件
dirrpt: 用于存放各个进程报告
dirchk: 用于存放各个进程的检查点
dirpcs: 用于存放各个正在运行的进程信息
dirsql:
dirdef:
dirdat: 用于存放数据队列文件
dirtmp:
dirout:
如果没有以上子目录,进ggscli环境下创建GoldenGate子目录 (ogg 11g以前才需要手动创建子目录,12c以后的版本会自动创建,安装完成检查下)
以oracle用户进入goldengate目录下执行./ggsci或ggsci进入命令行界面(好像说是必须到goldengate安装目录)
[oracle@enmoedu1]$cd ogg/
[oracle@enmoedu1 ogg]$ ./ggsci
或者
[oracle@enmoedu1 ogg]$ ggsci
GGSCI>create subdirs ---该命令会在OGG安装目录下建立若干子目录,其中几个主要目录如下所示:
打开C盘—app—ogg下找到ggsci右键运行
或者
win+r —运行----输入cmd----cd c:\app\ogg进到ogg安装目录执行.\ggsci
C:\Users\Administrator>cd c:\app\ogg
c:\app\ogg>ggsci.exe
或
c:\app\ogg>.\ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 12.3.0.1.5 OGGCORE_12.3.0.1.0_PLATFORMS_180501.2124
Windows x64 (optimized), Oracle 12c on May 4 2018 04:19:57
Operating system character set identified as GBK.
Copyright (C) 1995, 2018, Oracle and/or its affiliates. All rights reserved.
GGSCI>create subdirs
ogg安装目录下找到deinstall.sh文件,执行./deinstall.sh进行卸载(ogg进程停不停都可以,个人建议停掉)
/home/oracle/ogg/deinstall [oracle@enmoedu1 deinstall]$ ./deinstall.sh ALERT: Ensure all the processes running from the current Oracle Home are shutdown prior to running this software uninstallation script. Proceed with removing Oracle GoldenGate home: /home/oracle/ogg (yes/no)? [no] 输入yes --提示是否删除ogg home目录 Starting Oracle Universal Installer... Checking swap space: must be greater than 500 MB. Actual 4041 MB Passed Preparing to launch Oracle Universal Installer from /tmp/OraInstall2023-01-07_06-05-09PM. Please wait ...Oracle Universal Installer, Version 12.2.0.1.4 Production Copyright (C) 1999, 2016, Oracle. All rights reserved. Starting deinstall Deinstall in progress (Saturday, January 7, 2023 6:05:13 PM CST) ............................................................... 100% Done. Deinstall successful
完成卸载
ogg安装目录下找到deinstall二进制文件,右键打开执行或者双击执行
打开C:\app\ogg\deinstall\,执行deinstall二进制文件,会弹出cmd对话框,显示内容如下:
ALERT: Ensure all the processes running from the current Oracle Home are shutdow
n prior to running this software uninstallation script.
Proceed with removing Oracle GoldenGate home: C:\app\ogg (yes/no)? [no] yes
-建立OGG需要从数据字典读取表结构
-如果Oracle日志中没有足够信息,则需通过flash back或者直接读取数据库记录(列如,CLOB/BLOG/BINARY等)
OGG数据库用户权限
-CREATE USER goldengate IDENTIFIED BY goldengate DEFAULT TABLESPACE USERS;
-GRANT CONNECT TO goldengate;
-GRANT CREATE SESSION TO goldengate;
-GRANT ALTER SESSION TO goldengate;
-GRANT RESOURCE TO goldengate;
-GRANT SELECT ANY DICTIONARY TO goldengate;
-GRANT SELECT ANY TABLE TO goldengate;
-GRANT FLASHBACK ANY TABLE TO goldengate;
-GRANT ALTER ANY TABLE TO goldengate;
注:实验中没有做详细授权,直接给dba权限
--首先用sys登录数据库,查看oracle是否开启归档模式(su - oracle切换用户,然后sqlplus / as sysdba进入sql模式) 查看数据库是否开启归档 SYS@PROD> archive log list; Database log mode No Archive Mode Automatic archival Disabled Archive destination /u01/app/oracle/product/12.2.0/dbhome_1/dbs/arch Oldest online log sequence 3 Current log sequence 5 SYS@PROD> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. --非归档模式 --Database log mode No Archive Mode --Automatic archival Disabled --归档模式 --Database log mode Archive Mode --Automatic archival Enabled 开启归档模式 --先关闭数据库 shutdown immediate; --启动数据库到mount状态 startup mount; --启用归档模式 alter database archivelog; --启动数据库 alter database open;
--查看数据库是否强制日志(force_logging)和开启最小附加日志(supplemental_log_data_min) select force_logging, supplemental_log_data_min from v$database; --YES 开启;NO 未开启 --开启强制日志 alter database force logging; --开启最小附加日志 alter database add supplemental log data; --切换日志 alter system switch logfile; --确认强制日志(force_logging)和开启最小附加日志(supplemental_log_data_min)开启成功 select log_mode,supplemental_log_data_min,force_logging from v$database; LOG_MODE SUPPLEME FORCE_LOGGING ------------ -------- --------------------------------------- ARCHIVELOG YES YES
调整enable_goldengate_replication参数
注:数据库修改参数,oracle 11.2.0.4.0之前和12.1.0.1不需要设置enable_goldengate_replication参数:
确认enable_goldengate_replication参数是否开启,–YES 开启;–NO 未开启
show parameter goldengate
若enable_goldengate_replication参数没有开启,使用以下命令
alter system set enable_goldengate_replication=true scope=both;
实验表空间,临时表空间都默认
--创建用户
SYS@PROD> create user goldengate identified by goldengate;
User created.
--授予DBA权限
SYS@PROD> grant dba to goldengate;
Grant succeeded.
注:表结构源和目标表结构一致,实验中是源和目标都是新建
Linux环境:
SYS@PROD> conn goldengate/goldengate
Connected.
GOLDENGATE@PROD> create table table1(id number(8), name varchar2(20));
Table created.
windows 环境:
SQL> conn goldengate/goldengate
Connected.
SQL> create table table1(id number(8), name varchar2(20));
Table created.
Windows Server2012 R2 Datecenter [版本 6.3.9600])
注:在安装OGG软件,start manga 前面打勾“✔”,ogg运行mgr进程就是running,若没有需要手动开启
进ggsci
配置mgr进程参数:
GGSCI>edit param mgr (会打开记事本,输入下面内容,保存,关闭记事本)
port 7809
启动mgr进程
GGSCI>start mgr
补充:将MGR进程注册到服务中(windows系统)
先停止所有进程:
GGSCI>stop mgr
手动指定服务名GGSMGR
GGSCI>edit params./GLOBALS
MGRSERVNAME GGSMGR
C:\Users\Administrator>cd c:\app\ogg
c:\app\ogg>.\install addservice 或者 .\install.exe addservice
删除MGR服务
c:\app\ogg>.\install deleteservice
说明: 当我们在 GLOBALS 文件里指定了默认的 checkpoint之后,新的 Replicat groups 在创建时会自动使用这个参数,不需要其他指令。
GGSCI>edit params ./GLOBALS
GGSCHEMA goldengate
CHECKPOINTTABLE goldengate.checkpoint --不使用检查表不需要配置参数
ALLOWOUTPUTDIR C:\app\ogg\dirdat --磁盘符C必须大写
GGSCI> exit
保存退出。
这里需要退出 ggsci 终端
重新进ggsci
c:\app\ogg>ggsci.exe
登录数据库
GGSCI> dblogin userid goldengate,password goldengate
添加检查表
GGSCI> add checkpointtable goldengate.checkpoint
GGSCI> exit
进ggsci.exe
c:\app\ogg>ggsci.exe
编辑配置文件
GGSCI>edit params repa 打开的文本文件中增加如下参数: replicat repa setenv (NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK) userid goldengate,password goldengate assumetargetdefs reperror default,discard -- 磁盘符C必须大写 discardfile C:\app\ogg\dirrpt\repa.dsc,append,megabytes 50 map goldengate.*, target goldengate.*; (具体表查询快些) --源目标表名称,结构一致才可以*,若不是需要写具体表名称,列如: map goldengate.table1, target goldengate.table2; 参数说明: setenv:设置环境变量 assumetargetdefs:两端数据结构一致使用此参数 reperror:定义出错以后进程的响应一般分为两种:abend: 即一旦错误后立即停止复制,此为缺省配置;discard: 出现错误后继续复制,只是把错误的数据放到 discard 文件中。 discardfile:定义 discardfile 文件位置,如果处理中由于记录出错会写入到此文件中。 Megabytes: 指定队列大小,这里我设置的是 50M --dynamicresolution:(此命令在ogg12c不需要) map:用于指定源端与目标端表的映射关系
添加复制进程
--磁盘符必须大写
GGSCI>add replicat repa,exttrail C:\app\ogg\dirdat\ra, CHECKPOINTTABLE goldengate.checkpoint
--不使用检查表
GGSCI>add rep repa, exttrail C:\app\ogg\dirdat\ra, nodbcheckpoint
注:
rep开头表示replicat进程,repa是进程名称
exttrail:表示要抽取数据队列,注意是目标端的队列位置
nodbcheckpoint: 不使用检查点
启动进程repa进程
GGSCI>start replicat repa
检查mgr,repa进程状态
GGSCI> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REPA 00:00:00 00:00:04
配置环境变量(才能正常打开ggsci),如果在前面步骤已经设置,此时就不需要设置。
oracle用户vi .bash_profile
vi .bash_profile
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export OGG_HOME=/home/oracle/ogg
export PATH=$OGG_HOME:$PATH
--文件生效
. .bash_profile 或者 source .bash_profile
以oracle用户进入goldengate目录下执行./ggsci进入命令行界面(好像说是必须到goldengate安装目录)
[oracle@enmoedu1]$cd ogg/
[oracle@enmoedu1 ogg]$ ./ggsci
或者
[oracle@enmoedu1 ogg]$ ggsci
GGSCI>edit param mgr (会打开一个vi编辑窗口,按i键输入以下内容)
port 7809
按esc键
shift+:
wq!
启动mgr进程
GGSCI>start mgr
注:在图形化界面安装OGG软件,start manga 前面的打勾“✔”,ogg运行mgr进程就是running,若没有需要手动开启
编辑 exta 配置文件(exta进程名称,可以自定义)
GGSCI>edit params exta (输入 i 进入编辑模式,在文件中增加如下参数)
extract exta
setenv (NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK)
userid goldengate,password goldengate
exttrail /home/oracle/ogg/dirdat/la
table goldengate.*; (具体表查询快些)
参数说明:
extract exta: 定义 extract 进程别名
dynamicresolution (12c不需要此参数)
setenv: 设置环境变量
userid: 登录数据库
exttrail: 指定本地 trail 文件地址
table: 定义同步的表 goldengate.* 表示 同步 goldengate 用户下的所有表
添加抽取进程
GGSCI>add extract exta, tranlog,begin now
添加本地 trail 文件
添加extract进程的trail文件配置
其中megabytes表示队列大小,这里设置的10m
GGSCI 6>add exttrail /home/oracle/ogg/dirdat/la,extract exta
或
GGSCI 6>add exttrail /home/oracle/ogg/dirdat/la,extract exta,megabytes 10
说明:
创建本地 trail 文件,主 extract 进程负责写这部分文件,pump 负责把这部分文件传到目标服务器端。
在GGSCI命令行中登录数据库,为所有要复制的数据表添加trandata
GGSCI>dblogin userid goldengate, password goldengate
GGSCI>add trandata goldengate.*
或者
add trandata goldengate.table1 (具体表查询快些)
注册exta进程到数据库
GGSCI>REGISTER EXTRACT exta DATABASE
启动 exta 服务
GGSCI >start extract exta
查看状态
GGSCI >info all
编辑 pump 配置文件
GGSCI> edit params dpea
extract dpea
passthru
rmthost 192.168.11.212,mgrport 7809,compress
rmttrail C:\app\ogg\dirdat\ra (磁盘符C必须大写)
table goldengate.*; (具体表查询快些)
参数说明:
dynamicresolution:动态解析表名 (12c不需要此参数)
passthru:采用 pass-through 模式处理表
rmthost:目标端主机 IP,管理进程端口号,投递传输前压缩队列文件
rmttrail:目标端保存队列文件的目录
添加 pump 进程源端路径
GGSCI>add extract dpea,exttrailsource /home/oracle/ogg/dirdat/la
添加pump 进程远程 trail 文件目标路径
GGSCI>add rmttrail C:\app\ogg\dirdat\ra,extract dpea
说明: 指定远程 trail 文件
启动 pump 进程
GGSCI>start extract dpea
检查进程状态:
GGSCI> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING DPEA 00:00:00 00:00:09
EXTRACT RUNNING EXTA 00:00:00 00:00:01
源端和目标端同时创建表table1,实验中在3.1.5章节已经创建,不在创建。
(表提前创建好也可以,这个步骤创建也没有问题。)
GOLDENGATE@PROD> insert into table1 values(40,'数据工程');
GOLDENGATE@PROD> commit;
--查询下源端,数据是否成功配置
GOLDENGATE@PROD> select * from table1;
ID NAME
---------- --------------------
40 数据工程
SQL> select * from table1;
ID NAME
---------- --------------------
40 閺佺増宓佸銉р柤
注:此时目标端看到是乱码,这是字符集不支持中文造成,可以修改字符集(参考1.3.2章节)。
看exta进程
GGSCI> stats exta Sending STATS request to EXTRACT EXTA ... Start of Statistics at 2023-01-06 16:29:48. Output to /home/oracle/ogg/dirdat/la: Extracting from GOLDENGATE.TABLE1 to GOLDENGATE.TABLE1: *** Total statistics since 2023-01-05 17:43:48 *** Total inserts 1.00 Total updates 0.00 Total deletes 0.00 Total discards 0.00 Total operations 1.00 *** Daily statistics since 2023-01-05 17:43:48 *** Total inserts 1.00 Total updates 0.00 Total deletes 0.00 Total discards 0.00 Total operations 1.00 *** Hourly statistics since 2023-01-05 17:43:48 *** Total inserts 1.00 Total updates 0.00 Total deletes 0.00 Total discards 0.00 Total operations 1.00 *** Latest statistics since 2023-01-05 17:43:48 *** Total inserts 1.00 Total updates 0.00 Total deletes 0.00 Total discards 0.00 Total operations 1.00 End of Statistics.
看dpea进程
GGSCI (enmoedu1) 42> stats dpea Sending STATS request to EXTRACT DPEA ... Start of Statistics at 2023-01-06 16:34:28. Output to C:\app\ogg\dirdat\ra: Extracting from GOLDENGATE.TABLE1 to GOLDENGATE.TABLE1: *** Total statistics since 2023-01-05 17:43:48 *** Total inserts 1.00 Total updates 0.00 Total deletes 0.00 Total discards 0.00 Total operations 1.00 *** Daily statistics since 2023-01-05 17:43:48 *** Total inserts 1.00 Total updates 0.00 Total deletes 0.00 Total discards 0.00 Total operations 1.00 *** Hourly statistics since 2023-01-05 17:43:48 *** Total inserts 1.00 Total updates 0.00 Total deletes 0.00 Total discards 0.00 Total operations 1.00 *** Latest statistics since 2023-01-05 17:43:48 *** Total inserts 1.00 Total updates 0.00 Total deletes 0.00 Total discards 0.00 Total operations 1.00 End of Statistics.
GGSCI (WIN-812T4TNGO4M) 10> stats repa Sending STATS request to REPLICAT REPA ... Start of Statistics at 2023-01-06 16:29:38. Replicating from GOLDENGATE.TABLE1 to GOLDENGATE.TABLE1: *** Total statistics since 2023-01-05 17:43:58 *** Total inserts 1.00 Total updates 0.00 Total deletes 0.00 Total discards 0.00 Total operations 1.00 *** Daily statistics since 2023-01-06 00:00:00 *** No database operations have been performed. *** Hourly statistics since 2023-01-06 16:00:00 *** No database operations have been performed. *** Latest statistics since 2023-01-05 17:43:58 *** Total inserts 1.00 Total updates 0.00 Total deletes 0.00 Total discards 0.00 Total operations 1.00 End of Statistics.
进ggsci
[oracle@enmoedu1 ogg]$ ggsci
编辑全局参数
GGSCI> edit param ./GLOBALS (输入 i 进入编辑模式,在文件中增加如下参数)
ggschema goldengate
GGSCI> stop mgr
GGSCI> exit
在关之前可以先看一下,如果是 on,如下图所示,则回收站是开启的
$sqlplus / as sysdba
SQL>show parameter recyclebin
修改为 off
SQL>alter system set recyclebin=off deferred;
改完需要把数据库重启一下才会生效
SQL>shutdown immediate
SQL>startup
再次确认是否关闭
SQL>show parameter recyclebin
需要进ogg 目录
cd /home/oracle/ogg
$ sqlplus / as sysdba
SQL> grant dba to goldengate;
说明: 以下各执行如提示:Enter Oracle GoldenGate schema name,均指定用户:goldengate
SQL>@marker_setup
SQL>@ddl_setup
SQL>@role_setup
SQL>grant GGS_GGSUSER_ROLE to goldengate;
SQL>@ddl_enable
SQL>@marker_status.sql
注 1: 执行 dbmspool 包将在数据库中创建 DBMS_SHARED_POOL 包,之后 ddl_pin 包需要用到
SQL>@?/rdbms/admin/dbmspool.sql
注 2: 执行 ddl_pin.sql 通过 dbms_shared_pool.keep 存储过程将 DDLReplication 相关对象keep 在共享池中,以保证这些对象不要 RELOAD,提升性能。
SQL>@ddl_pin.sql goldengate
停止 exta(抽取)进程
GGSCI> stop extract exta
编辑配置文件
GGSCI 2> edit params exta (输入 i 进入编辑模式,在文件中增加备注参数)
extract exta
setenv (NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK)
userid goldengate,password goldengate
exttrail /home/oracle/ogg/dirdat/la
ddl include all --新增参数
ddloptions addtrandata, report --新增参数
table goldengate.*;
启动 mgr,exta 进程
GGSCI> start mgr
GGSCI> start extract exta
查看 exta 进程启动情况
GGSCI 6> info extract exta
$ sqlplus / as sysdba
SQL> grant dba to goldengate;
停止 mgr,repa进程
GGSCI>stop mgr
GGSCI>stop replicat repa
编辑 repa参数文件
GGSCI>edit params repa (增加如下备注参数)
replicat repa
setenv (NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK)
userid goldengate,password goldengate
assumetargetdefs
reperror default,discard
-- 磁盘符C必须大写
discardfile C:\app\ogg\dirrpt\repa.dsc,append,megabytes 50
ddloptions report --新增参数
ddlerror default ignore retryop maxretries 3 retrydelay 5 --新增参数
ddlerror default discard --新增参数
ddlerror default ignore retryop --新增参数
map goldengate.*, target goldengate.*;
启动 mgr, repa进程
GGSCI>start mgr
GGSCI>start replicat repa
查看进程是否running状态
GGSCI> info all
本节验证源端 table1 表增加字段后,目标端自动改变。
源端查看:
$ sqlplus goldengate/goldengate
SQL> desc table1;
目标端查看:
SQL> sqlplus /nolog
SQL> conn goldengate/goldengate
SQL> desc table1;
SQL> alter table table1 add(sex varchar2(2) default '男');
SQL>desc table1;
SQL> desc table1;
看到目标端表结构和源端表结构一致。
实验源端监听有问题:
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 03-JAN-2023 11:57:42 Copyright (c) 1991, 2016, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=enmoedu1)(PORT=1521))) TNS-12541: TNS:no listener TNS-12560: TNS:protocol adapter error TNS-00511: No listener Linux Error: 111: Connection refused Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) TNS-12541: TNS:no listener TNS-12560: TNS:protocol adapter error TNS-00511: No listener Linux Error: 111: Connection refused 监听ping测试:tnsping PROD[实例名称] TNS Ping Utility for Linux: Version 12.2.0.1.0 - Production on 03-JAN-2023 11:55:02 Copyright (c) 1997, 2016, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PROD.enmoedu.com))) TNS-12541: TNS:no listener
解决方案:
如果没有监听,查看监听文件
cd $ORACLE_HOME/network/admin
oracle@enmoedu1 admin]$ ls
listener.ora samples shrept.lst tnsnames.ora
检查tnsnames.ora
tnsnames.ora:用于客户端,提示客户端从哪个监听实例连接。
oracle@enmoedu1 admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
PROD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = PROD.enmoedu.com)
)
)
LISTENER_PROD =
(ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
问题是tnsnames.ora文件下SERVICE_NAME不对,实际数据库实例名为PROD
修改为SERVICE_NAME = PROD
vi tnsnames.ora
PROD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = PROD)
)
)
LISTENER_PROD =
(ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
检查listener.ora
listener.ora:用于服务端,用于提示服务端监听哪些实例。
cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
lsnrctl start #开启监听
检查监听状态:lsnrctl status
[oracle@enmoedu1 admin]$ lsnrctl status LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 03-JAN-2023 16:38:01 Copyright (c) 1991, 2016, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=enmoedu1)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production Start Date 03-JAN-2023 16:03:17 Uptime 0 days 0 hr. 34 min. 43 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/enmoedu1/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=enmoedu1)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=enmoedu1)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/PROD/xdb_wallet))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "PROD.enmoedu.com" has 1 instance(s). Instance "PROD", status READY, has 1 handler(s) for this service... Service "PRODXDB.enmoedu.com" has 1 instance(s). Instance "PROD", status READY, has 1 handler(s) for this service... The command completed successfully
ping测试:
[oracle@enmoedu1 admin]$ tnsping PROD
TNS Ping Utility for Linux: Version 12.2.0.1.0 - Production on 03-JAN-2023 16:38:40
Copyright (c) 1997, 2016, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PROD)))
OK (0 msec)
执行以上命令报如下错误:
GGSCI (enmoedu1) 2> add trandata goldengate.*
ERROR: Error (1031, ORA-01031: insufficient privileges) start select in get_total_columns.
解决方案:
conn / as sysdba
SYS@PROD> grant all on sys.user$ to goldengate;
查看状态:
GGSCI (enmoedu1) 158> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT ABENDED DPEA 00:00:00 00:45:55
EXTRACT RUNNING EXTA 00:00:00 00:41:53
报错如下:
2022-12-28 11:41:41 ERROR OGG-01031 There is a problem in network communication, a remote file problem, encryption keys for target and source do not match (if using ENCRYPT) or an
unknown error. (Reply received is Output file c:/app/ogg/dirdat/ra000000 is not in any allowed output directories.).
解决方案:
在目标端添加如下内容:
GGSCI>edit params ./GLOBALS
GGSCHEMA goldengate
CHECKPOINTTABLE goldengate.checkpoint
ALLOWOUTPUTDIR c:\app\ogg\dirdat
添加上面参数dpea进程正常开启,但是数据同步还是未成功,需要把磁盘符c修改大写C。(此处不确定端磁盘符源端和目标大写不一致,这个后面正常以后才想到的,没有实测试)
GGSCI>edit params ./GLOBALS
GGSCHEMA goldengate
CHECKPOINTTABLE goldengate.checkpoint
ALLOWOUTPUTDIR C:\app\ogg\dirdat
重启源端dpea进程
GGSCI>stop dpea
GGSCI>start dpea
重启目标repa进程
GGSCI>stop repa
GGSCI>start repa
下面报错是安装ogg11g时候遇到,可以作为参考记录下。
[oracle@enmoedu1 ogg]$ ./ggsci
./ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file: No such file or directory
解决方案:
[oracle@enmoedu1 ~]$ cd ogg/ [oracle@enmoedu1 ogg]$ ldd ggsci linux-vdso.so.1 => (0x00007fffe594d000) libdl.so.2 => /lib64/libdl.so.2 (0x00000036e2c00000) libgglog.so => /home/oracle/ogg/./libgglog.so (0x00007f3838232000) libggrepo.so => /home/oracle/ogg/./libggrepo.so (0x00007f38380de000) libdb-5.2.so => /home/oracle/ogg/./libdb-5.2.so (0x00007f3837e3d000) libicui18n.so.38 => /home/oracle/ogg/./libicui18n.so.38 (0x00007f3837adc000) libicuuc.so.38 => /home/oracle/ogg/./libicuuc.so.38 (0x00007f38377a3000) libicudata.so.38 => /home/oracle/ogg/./libicudata.so.38 (0x00007f38367c7000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00000036e3400000) libxerces-c.so.28 => /home/oracle/ogg/./libxerces-c.so.28 (0x00007f38362af000) libantlr3c.so => /home/oracle/ogg/./libantlr3c.so (0x00007f3836199000) libnnz11.so => not found --此处没有文件目录 libclntsh.so.11.1 => not found --此处没有文件目录 libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000036f0c00000) libm.so.6 => /lib64/libm.so.6 (0x00000036e3800000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000036ef400000) libc.so.6 => /lib64/libc.so.6 (0x00000036e3000000) /lib64/ld-linux-x86-64.so.2 (0x00000036e2800000) [oracle@enmoedu1 ogg]$ cd $ORACLE_HOME/lib [oracle@enmoedu1 lib]$ ls -l libnnz11.so ls: cannot access libnnz11.so: No such file or directory [oracle@enmoedu1 lib]$ ls -ald libnnz* -rw-r--r-- 1 oracle oinstall 1928046 Nov 21 2016 libnnz12.a -rw-r--r-- 1 oracle oinstall 6568149 Nov 21 2016 libnnz12.so -rw-r--r-- 1 oracle oinstall 20354396 Nov 21 2016 libnnzst12.a [oracle@enmoedu1 lib]$ ln -s /u01/app/oracle/product/12.2.0/dbhome_1/lib/libnnz12.so libnnz11.so [oracle@enmoedu1 lib]$ ls -l libclntsh.so.11.1 lrwxrwxrwx 1 oracle oinstall 12 Jun 14 2017 libclntsh.so.11.1 -> libclntsh.so [oracle@enmoedu1 ~]$ ln -s /u01/app/oracle/product/12.2.0/dbhome_1/lib/libclntsh.so.11.1 /home/oracle/ogg/./libclntsh.so.11.1 [oracle@enmoedu1 ogg]$ ldd ggsci linux-vdso.so.1 => (0x00007fff197ff000) libdl.so.2 => /lib64/libdl.so.2 (0x00000036e2c00000) libgglog.so => /home/oracle/ogg/./libgglog.so (0x00007fb5efc56000) libggrepo.so => /home/oracle/ogg/./libggrepo.so (0x00007fb5efb02000) libdb-5.2.so => /home/oracle/ogg/./libdb-5.2.so (0x00007fb5ef861000) libicui18n.so.38 => /home/oracle/ogg/./libicui18n.so.38 (0x00007fb5ef500000) libicuuc.so.38 => /home/oracle/ogg/./libicuuc.so.38 (0x00007fb5ef1c7000) libicudata.so.38 => /home/oracle/ogg/./libicudata.so.38 (0x00007fb5ee1eb000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00000036e3400000) libxerces-c.so.28 => /home/oracle/ogg/./libxerces-c.so.28 (0x00007fb5edcd3000) libantlr3c.so => /home/oracle/ogg/./libantlr3c.so (0x00007fb5edbbd000) libnnz11.so => /home/oracle/ogg/./libnnz11.so (0x00007fb5ed473000) libclntsh.so.11.1 => /home/oracle/ogg/./libclntsh.so.11.1 (0x00007fb5e99cc000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000036f0c00000) libm.so.6 => /lib64/libm.so.6 (0x00000036e3800000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000036ef400000) libc.so.6 => /lib64/libc.so.6 (0x00000036e3000000) /lib64/ld-linux-x86-64.so.2 (0x00000036e2800000) libclntshcore.so.12.1 => /home/oracle/ogg/./libclntshcore.so.12.1 (0x00007fb5e93fc000) libmql1.so => /u01/app/oracle/product/12.2.0/dbhome_1/lib/libmql1.so (0x00007fb5e9185000) libipc1.so => /u01/app/oracle/product/12.2.0/dbhome_1/lib/libipc1.so (0x00007fb5e8d51000) libons.so => /u01/app/oracle/product/12.2.0/dbhome_1/lib/libons.so (0x00007fb5e8b03000) libnsl.so.1 => /lib64/libnsl.so.1 (0x00000036f3400000) librt.so.1 => /lib64/librt.so.1 (0x00000036e3c00000) libaio.so.1 => /lib64/libaio.so.1 (0x00007fb5e8901000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00000036e5400000)
MGR参数
序号 | 配置参数 | 备注 |
---|---|---|
1 | PORT 7839 | 必选参数(端口默认7809) |
2 | USERID ggs, PASSWORD 123456, ENCRYPTKEY default | 必选参数,配置建议:要求使用密文参数,添加需要的配置参数 |
3 | DYNAMICPORTLIST 7840-7914 | 必选参数,配置建议:一个传输进程(datapump)一般需要预留5个端口,其他监控端口另行考虑; |
4 | AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3 | 可选参数,配置建议:在系统运行稳定时,打开该参数; |
5 | PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3 | 必选参数–配置建议:根据队列空间大小适当进行调整,建议>=3天 |
6 | PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10 | DDL 配置时需要的参数 |
7 | PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10 | DML 配置时需要的参数 |
8 | LAGREPORTHOURS 1 | 必选参数,配置建议:统一设定为1个小时 |
9 | LAGINFOMINUTES 30 | 必选参数,配置建议:统一设定为30分钟 |
10 | LAGCRITICALMINUTES 45 | 必选参数,配置建议:统一设定为45分钟; |
EXTRACT参数
序号 | 配置参数 | 备注 |
---|---|---|
1 | EXTRACT extxx | 必选参数 |
2 | setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK) | 必选参数,配置建议:需要根据数据库的字符集进行设置; |
3 | USERID ggs, PASSWORD AACAAAAAAAAAAGAIF, ENCRYPTKEY default | 必选参数,配置建议:要求使用密文参数,添加需要的配置参数 |
4 | GETTRUNCATES | 可选参数,配置建议:在没有配置DDL时,该参数需要打开;如果配置DDL,就是FULL DDL SUPPORT模式,不必配置 |
5 | DDL & INCLUDE MAPPED OBJTYPE ‘table’ & INCLUDE MAPPED OBJTYPE ‘index’ & EXCLUDE OPTYPE COMMENT DDLOPTIONS NOCROSSRENAME REPORT DDLOPTIONS ADDTRANDATA REPORT | 必选参数,配置建议:为ddl开启时需要使用的参数,此处配置仅开启表和索引,过滤comment语句; |
6 | DISCARDFILE ./dirrpt/extxx.dsc,APPEND,MEGABYTES 1024 | 必选参数,配置建议:该参数的路径必须为相对路径,该参数的值设置为1024M |
7 | THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000 IOLATENS 60000 | 特定参数,在Rac环境下需要配置,非Rac的生产环境不需要配置 |
8 | DBOPTIONS ALLOWUNUSEDCOLUMN | 必选参数,配置建议:在生产端库表中存在unused列时,需要配置该参数 |
9 | WARNLONGTRANS 2h,CHECKINTERVAL 3m | 必选参数,配置建议:要求设置为2h,3m,如有特殊需要,可以调整 |
10 | EXTTRAIL ./dirdat/xx | 必选参数,配置建议:要求使用相对路径,遵循命名规范; |
11 | TRANLOGOPTIONS EXCLUDEUSER USERNAME | 可选参数,配置建议:可以使用来排除大事务用户 |
12 | FETCHOPTIONS USESNAPSHOT | 必选参数, 要求必须设置该参数 |
13 | TRANLOGOPTIONS CONVERTUCS2CLOBS | 可选参数参数,对CLOB字段进行处理V11版本版本不需要此参数 |
14 | TRANLOGOPTIONS altarchivelogdest primary instance rac1 /arch1 altarchivelogdest instance rac2 /arch2 | 特定参数,配置建议:Rac使用,解决归档路径不一致的问题;可以在一个实例上面配置; |
15 | TRANLOGOPTIONS RAWDEVICEOFFSET 0 | 特定参数, 配置建议:仅限于AIX平台下使用裸设备时使用,其它平台或非裸设备均不需要 |
16 | Table SCHEMA.* Sequence SCHEMA.* | 复制用户 |
DATADUMP参数
序号 | 配置参数 | 备注 |
---|---|---|
1 | EXTRACT dpxx | 必选参数 |
2 | PASSTHRU | 必选参数 |
3 | RMTHOST ..., MGRPORT 7839, compress | 必选参数,配置建议:... 目标端的ip地址,7839为目标端的管理端口,要求配置compress压缩参数, |
4 | RMTTRAIL ./dirdat/xx | 必选参数,配置建议:要求使用相对路径,遵循命名规范; |
5 | Table SCHEMA.* Sequence SCHEMA.* | 复制用户 |
REPLICAT****参数
序号 | 配置参数 | 备注 |
---|---|---|
1 | REPLICAT repxx | 必选参数 |
2 | setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK) | 必选参数,配置建议:需要根据数据库源端的字符集进行设置 |
4 | USERID ggs, PASSWORD AACAAAAAAAAAAGAIFAAAUDVHCFUGFIYF, ENCRYPTKEY default | 必选参数,配置建议:要求使用密文参数,添加需要的配置参数 |
5 | DDL include mapped | 必选参数,为开启DDL复制时需要配置的参数 |
6 | ddloptions report | 必选参数,为开启DDL复制时需要配置的参数 |
7 | REPORT AT 01:59 | 可选参数,配置建议:该时间也根据需要进行修改 |
8 | REPORTCOUNT EVERY 30 MINUTES, RATE | 可选参数,配置建议:可以根据需要进行调整 |
9 | REPERROR DEFAULT, ABEND | 必选参数,配置要求:必须使用abend参数,不允许使用 |
10 | DBOPTIONS DEFERRORFCONST | 必选参数,Replicate进程在commit后进行完整性约束检查 |
11 | Assumetargetdefs | 必选参数 |
12 | DISARDFILE ./dirrpt/repya1.dsc, APPEND, MEGABYTES 1024 | 必选参数,配置建议:该参数的路径必须为相对路径,建议该参数的值设置为1024M |
13 | DISCARDROLLOVER AT 02:30 | 每天2:30自动重新建立一个dsc文件,可选参数 |
14 | GETTRUNCATES | 可选参数,未开启DDL打开,开启DDL不开 |
15 | ALLOWNOOPUPDATES | 必选参数 |
16 | MAP SCHEMA., TARGET SCHEMA. | 复制用户 |
17 | DDLOPTIONS MAPSESSIONSCHEMA ogg_src target ogg_trg | 目标端与源端用户不一致,但需要相同数据结构,需要session schema进行转换。 |
常用优化参数
序号 | 配置参数 | 备注 |
---|---|---|
1 | numfile xxx | 可选参数,GoldenGate默认值1000,各单位根据灾备复制系统数据库表数量可酌情调整。不配置该参数亦生效满足要求。 |
2 | GROUPTRANSOPS xxx | 可选参数,GoldenGate默认值1000,调大该参数会调整OGG提交记录数。各单位可根据实际情况酌情配置。不配置该参数亦生效满足要求。 |
3 | DBOPTION SUPPERSSTRIGGERS DEFERREFCONST | 可选参数,若Oracle 10.2.0.5以上版本,OGG V11.1以上版本可以配置,灾备端数据库无需禁止Trigger。不满足Oracle和OGG版本要求禁止配置 |
4 | DBOPTION SUPPRESSTRIGGERS | 可选参数,要求数据库版本10.2.0.5或11.2.0.2以上,还需要赋予stream的管理员的权限给GoldenGate,(确认方法:SELECT *FROM dba_streams_administrator;)不满足上述所有条件不合格 |
禁止参数
序号 | 配置参数 | 备注 |
---|---|---|
1 | Reperror default DSC | Reperror default后必须配置ABEND,确保当复制运行报错后,及时告知运维人员,确保灾备数据一致 |
2 | reperror 【报错代码】 transdiscard 或 reperror(【报错代码】,discard) | 此类配置将导致复制发生错误后,忽略指定报错信息,严重影响数据一致 |
3 | handlecolisions | 打开此参数则所有数据错误不管reperror如何配置均不再写discard文件,即所有数据冲突信息被默认规则处理,没有任何日志(会忽略error mapping数据错误,而且不会报告到discard文件) |
4 | ddlerror default ignore | 此类配置将导致DDL复制发生错误后,忽略指定报错信息,严重影响数据一致 |
5 | REPERROR (1403, ignore) | 此配置导致OGG恢复发生错误后,忽略指定的报错信息,严重影响数据一致。(注:1403为报错代码,禁止此项配置 |
6 | MAXTRANSOPS | GoldenGate默认值100000000,修改此参数会导致数据不一致,禁止配置。 |
8 | DDLERROR RESTARTSKIP 100000 SKIPTRIGGERERROR 100000 | 让extract在启动时,跳过或忽略100000个引起abend的DDL操作,跳过或忽略10000个由TRIGGER引起的造成abend 的DDL操作 |
9 | FETCHOPTIONS FETCHPKUPDATECOLS | 使用OGG进行数据初始化时,和HANDLECOLLISIONS配合使用,来解决replicat 主键更新丢失的问题 |
10 | FETCHOPTIONS SUPPRESSDUPLICATES | 仅在我们在遭遇抽取LOB字段时,遇到相关故障时,开启该参数;而一旦处理该故障后,应将其从配置中删除 |
MANAGER进程参数配置说明:
PORT:指定服务监听端口,默认为7809。
DYNAMICPORTLIST:动态端口,可以制定最大256个可用端口的动态列表,当指定的端口不可用时,管理进程将会从列表中选择一个可用的端口,源端和目标端的Collector、Replicat、GGSCI进程通信也会使用这些端口。
COMMENT:注释行,也可以用–来代替。
AUTOSTART:指定在管理进程启动时自动启动哪些进程。
AUTORESTART:自动重启参数设置。本处设置表示每3分钟尝试重新启动所有EXTRACT进程,共尝试5次;
PURGEOLDEXTRACTS:定期清理trail文件设置。本处设置表示对于超过3天的trail文件进行删除。
LAGREPORTHOURS、LAGINFOMINUTES、LAGCRITICALMINUTES:定义数据延迟的预警机制。本处设置表示MGR进程每隔1小时检查EXTRACT的延迟情况,如果超过了30分钟就把延迟作为信息记录到错误日志中,如果延迟超过了45分钟,则把它作为警告写到错误日志中。
EXTRACT进程参数配置说明:
SETENV:配置系统环境变量
USERID/ PASSWORD:指定OGG连接数据库的用户名和密码,这里使用3.4部分中创建的数据库用户OGG;
COMMENT:注释行,也可以用–来代替;
TABLE:定义需复制的表,后面需以;结尾
TABLEEXCLUDE:定义需要排除的表,如果在TABLE参数中使用了通配符,可以使用该参数指定排除掉得表。
GETUPDATEAFTERS|IGNOREUPDATEAFTERS:是否在队列中写入后影像,缺省复制
GETUPDATEBEFORES| IGNOREUPDATEBEFORES:是否在队列中写入前影像,缺省不复制
GETUPDATES|IGNOREUPDATES:是否复制UPDATE操作,缺省复制
GETDELETES|IGNOREDELETES:是否复制DELETE操作,缺省复制
GETINSERTS|IGNOREINSERTS:是否复制INSERT操作,缺省复制
GETTRUNCATES|IGNORETRUNDATES:是否复制TRUNCATE操作,缺省不复制;
RMTHOST:指定目标系统及其GoldengateManager进程的端口号,还用于定义是否使用压缩进行传输,本例中的compress为压缩传输;
RMTTRAIL:指定写入到目标断的哪个队列;
EXTTRAIL:指定写入到本地的哪个队列;
SQLEXEC:在extract进程运行时首先运行一个SQL语句;
PASSTHRU:禁止extract进程与数据库交互,适用于Data Pump传输进程;
REPORT:定义自动定时报告;
STATOPTIONS:定义每次使用stat时统计数字是否需要重置;
REPORTCOUNT:报告已经处理的记录条数统计数字;
TLTRACE:打开对于数据库日志的跟踪日志;
DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中;
DBOPTIONS:指定对于某种特定数据库所需要的特殊参数;
TRANLOGOPTIONS:指定在解析数据库日志时所需要的特殊参数,例如:对于裸设备,可能需要加入以下参数 rawdeviceoggset 0
WARNLONGTRANS:指定对于超过一定时间的长交易可以在gsserr.log里面写入警告信息,本处配置为每隔3分钟检查一次场交易,对于超过2小时的进行警告;
REPLICAT进程参数配置说明:
ASSUMETARGETDEFS:假定两端数据结构一致使用此参数;
SOURCEDEFS:假定两端数据结构不一致,使用此参数指定源端的数据结构定义文件,该文件需要由GlodenGate工具产生。
MAP:用于指定源端与目标端表的映射关系;
MAPEXCLUDE:用于使用在MAP中使用*匹配时排除掉指定的表;
REPERROR:定义出错以后进程的响应,一般可以定义为两种:
ABEND,即一旦出现错误即停止复制,此为缺省配置;
DISCARD,出现错误后继续复制,只是把错误的数据放到discard文件中。
DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中;
SQLEXEC:在进程运行时首先运行一个SQL语句;
GROUPTRANSOPS:将小交易合并成一个大的交易进行提交,减少提交次数,降低系统IO消耗。
MAXTRANSOPS:将大交易拆分,每XX条记录提交一次。
GGSCI 1>edit params mgr
port 7809
dynamicportlist 7800-8000
autostart er *
autorestart extract *, waitminutes 2, resetminutes 5
lagreporthours 1
laginfominutes 3
lagcriticalminutes 5
purgeoldextracts D:\oggs\dirdat\rt*, usecheckpoints,MINKEEPFILES 5
--创建检查点 checkpointtable ggs.checkpoint --编辑复制进程 edit params rep01 --指定复制进程要读取的tail日志文件 add replicat rep01 exttrail ./dirdat/te,checkpointtable ggs.checkpoint --从指定SCN号开始同步数据,启动接收进程 start replicat rep01,aftercsn [备份时使用的SCN号] --SCN为源端数据库 源端上查询最新的SCN select current_scn from v$database; scn 16563972104 目标端通过指定SCN启动repa进程 start replicat repa, aftercsn 16563972104
replicat rep01 SETENV (ORACLE_SID=orcl) SETENV (OGG_HOME=E:\ggs) userid ggs@orcl,PASSWORD 123456 ASSUMETARGETDEFS ALLOWNOOPUPDATES GETTRUNCATES REPORT AT 1:59 REPORTROLLOVER AT 2:00 DISCARDFILE ./dirrpt/rep01.dsc,append,megabytes 4096 DISCARDROLLOVER AT 05:00 DDL INCLUDE OBJTYPE 'TABLE', INCLUDE OPTYPE 'ALTER' ddl error default ignore retryop maxretries 3 retrydelay 5 DBOPTIONS SUPPRESSTRIGGERS MAP TEST.TB1,TARGET TEST.TB1;
port 7809 dynamicportlist 7800-8000 autostart er * autorestart er *,retries 5,waitminutes 2,resetminutes 5 purgeoldextracts /u01/app/oracle/ogg/dirdat/et*,usecheckpoints,minkeepdays 10 LAGREPORTHOURS 1 LAGINFOMINUTES 30 LAGCRITICALMINUTES 45 说明: port 指定 mgr 进程通信端口; dynamicportlist 表示 mgr 进程可以为源与目的端动态通信指定端口; autorestart er 表示 mgr 启动以后自动启动所有进程组,每 2 分钟尝试重启所有进程,重试5 次,每 5 分钟清零。 purgeoldextracts表示定期清理tail文件这里设置的是超过10天的tail文件进行删除
--配置抽取集成需要通过ogg登录到oracle dblogin userid ggs@orcl,password 123456 --为需要同步的用户或表开启表级附加日志 --同步某用户下的所有表 add trandata 用户名.* --同步某张表 add trandata 用户名.表名 --编辑抽取进程参数 edit params ext01(抽取进程名 不超过8个字符) --指定抽取进程从那个时间点抽取日志(前提数据库归档日志存在) --从当前时间点抽取 --单实例 add extract ext01,tranlog, begin now --RAC集群 add extract ext01,tranlog, begin now,threads 2 --从指定时间抽取 --单实例 add extract ext01,tranlog, begin 2020-12-20 00:00:00 --RAC集群 add extract ext01,tranlog, begin 2020-12-20 00:00:00,threads 2 --绑定抽取进程抽取到本地的tail日志文件队列 add exttrail ./dirdat/te,extract ext01 (te为tail日志文件名,只能是2个字符) --开启抽取进程 start ext01
EXTRACT ext01 SETENV (ORACLE_SID=orcl); SETENV (OGG_HOME=/u01/ggs); SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK); USERID ggs@orcl, PASSWORD AACAAAAAAAAAAAIAUEYFIIJCXEOHZDTB, ENCRYPTKEY default TRANLOGOPTIONS DBLOGREADER; REPORTCOUNT EVERY 5 HOURS,RATE; REPORT AT 01:05; EXTTRAIL ./dirdat/te; DISCARDFILE ./dirrpt/ext01.dsc,APPEND,MEGABYTES 4096; DYNAMICRESOLUTION; WARNLONGTRANS 12h,CHECKINTERVAL 30m; DDL INCLUDE OBJTYPE 'TABLE',INCLUDE OPTYPE 'ALTER'; DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10; DDLOPTIONS REPORT; TABLE COMM.*; TABLE DICT.*; TABLE TEST.TAB1;
--投递进程本质也是EXTRACT进程,只是分工不同
--编辑投递进程
edit params dpt01
--指定投递进程要投递的源端tail日志文件
add extract dpt01,exttrailsource ./dirdat/te
add exttrail ./dirdat/te,extract dpt01
--指定投递到远端(目标端)tail文件名
add rmttrail ogg安装路径/dirdat/te,extract dpt01
--启动投递进程(需要目标端的mgr进程启动)
start dpt01
EXTRACT dpt01
PASSTHRU
GETTRUNCATES
RMTHOST 172.16.128.11,MGRPORT 7909,COMPRESS --目标端IP和OGG端口
RMTTRAIL ./dirdat/te
REPORTCOUNT EVERY 5 HOURS,RATE
REPORT AT 01:05
TABLE COMM.*;
TABLE DICT.*;
TABLE TEST.TAB1;
创建用户单独的表空间,临时表空间,用户授权DBA权限
为ogg创建单独的表空间,临时表空间和用户,为用户授权DBA权限
--创建表空间
create tablespace OGG_DATA datafile '文件路径/ogg_data01.dbf' size 100M autoextend on maxsize 30G;
--创建临时表空间
create temporary tablespace OGG_TEMP tempfile '文件路径/ogg_temp01.dbf' size 50m autoextend on maxsize 10G;
--创建用户
create user ggs identified by "123456" default tablespace OGG_DATA temporary tablespace OGG_TEMP quota unlimited on OGG_DATA;
--授予DBA权限
grant dba to ggs;
create tablespace test_tablespace
datafile ' D:\app\JSSR\virtual\oradata\orcl\test_tablespace.dbf' size 30M autoextend on next 100M;
-- 创建用户
create user test identified by test default tablespace test_tablespace temporary tablespace TEMP;
-- 赋予权限
grant CONNECT,RESOURCE,DBA to test;
exit;
mkdir D:\app\JSSR\virtual\archive
SQL> alter system set log_archive_dest_1='location=D:\app\JSSR\virtual\archive' scope=both;
SQL> alter system archive log current;
col open_mode for a10
col LOG_MODE for a20
col FORCE_LOGGING for a20
SQL> select open_mode,log_mode,supplemental_log_data_min,force_logging from v$database;
vim init.sql
-- drop user ogg cascade; //删除用户
-- drop tablespace tbs_ogg including contents and datafiles; //删除表空间
-- 创建表空间
create tablespace tbs_ogg datafile ' D:\app\JSSR\virtual\oradata\orcl\tbs_ogg.dbf' size 100M
autoextend on next 50M;
-- 创建 ogg 用户
create user ogg identified by ogg default tablespace tbs_ogg temporary tablespace TEMP
quota unlimited on tbs_ogg;
-- 赋予 ogg 用户权限
grant connect,resource,dba to ogg;
# su - oracle
$ sqlplus / as sysdba
SQL>@init.sql
--查询当前数据库scn号
select current_scn from v$database;
--创建导出数据的路径
create or replace directory bak_dir as '/u01/bak';
--按用户导出
expdp 'userid="/ as sysdba"' directory=bak_dir DUMPFILE=TABLES_20210201_%U.dmp schemas=COMM,DICT LOGFILE=tables_backup0201.log PARALLEL=6 FILESIZE=30G flashback_scn=当前scn号 job_name=Tables_Export
--按表导出
expdp 'userid="/ as sysdba"' directory=bak_dir DUMPFILE=TABLES_20210201_%U.dmp tables=TEST.TAB1,tables2 LOGFILE=tables_backup0201.log PARALLEL=6 FILESIZE=30G flashback_scn=当前scn号 job_name=Tables_Export
--PARALLEL=6 并行度 设置并行线程 提高导出速率 不要高于CPU线程数
--FILESIZE=30G 设置导出文件大小
--创建导出数据的路径
create or replace directory dump as '/share/bak'
--查看已经创建的导入导出目录
select * from dba_directories;
impdp system/szadmin@nanf directory=dump DUMPFILE=TABLES_20210201_%U.dmp LOGFILE=tables_import.log PARALLEL=6 table_exists_action=replace job_name=Tables_Import
--table_exists_action=replace 表存在执行覆盖操作
.1.2.2 创建用户并赋予权限
-- 创建用户
create user test identified by test default tablespace test_tablespace temporary tablespace TEMP;
-- 赋予权限
grant CONNECT,RESOURCE,DBA to test;
exit;
mkdir D:\app\JSSR\virtual\archive
SQL> alter system set log_archive_dest_1='location=D:\app\JSSR\virtual\archive' scope=both;
SQL> alter system archive log current;
col open_mode for a10
col LOG_MODE for a20
col FORCE_LOGGING for a20
SQL> select open_mode,log_mode,supplemental_log_data_min,force_logging from v$database;
vim init.sql
-- drop user ogg cascade; //删除用户
-- drop tablespace tbs_ogg including contents and datafiles; //删除表空间
-- 创建表空间
create tablespace tbs_ogg datafile ' D:\app\JSSR\virtual\oradata\orcl\tbs_ogg.dbf' size 100M
autoextend on next 50M;
-- 创建 ogg 用户
create user ogg identified by ogg default tablespace tbs_ogg temporary tablespace TEMP
quota unlimited on tbs_ogg;
-- 赋予 ogg 用户权限
grant connect,resource,dba to ogg;
# su - oracle
$ sqlplus / as sysdba
SQL>@init.sql
--查询当前数据库scn号
select current_scn from v$database;
--创建导出数据的路径
create or replace directory bak_dir as '/u01/bak';
--按用户导出
expdp 'userid="/ as sysdba"' directory=bak_dir DUMPFILE=TABLES_20210201_%U.dmp schemas=COMM,DICT LOGFILE=tables_backup0201.log PARALLEL=6 FILESIZE=30G flashback_scn=当前scn号 job_name=Tables_Export
--按表导出
expdp 'userid="/ as sysdba"' directory=bak_dir DUMPFILE=TABLES_20210201_%U.dmp tables=TEST.TAB1,tables2 LOGFILE=tables_backup0201.log PARALLEL=6 FILESIZE=30G flashback_scn=当前scn号 job_name=Tables_Export
--PARALLEL=6 并行度 设置并行线程 提高导出速率 不要高于CPU线程数
--FILESIZE=30G 设置导出文件大小
--创建导出数据的路径
create or replace directory dump as '/share/bak'
--查看已经创建的导入导出目录
select * from dba_directories;
impdp system/szadmin@nanf directory=dump DUMPFILE=TABLES_20210201_%U.dmp LOGFILE=tables_import.log PARALLEL=6 table_exists_action=replace job_name=Tables_Import
--table_exists_action=replace 表存在执行覆盖操作
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。