赞
踩
SQL> alter database archivelog; alter database archivelog * 第 1 行出现错误: ORA-01126: 数据库必须已装载到此实例并且不在任何实例中打开 -- 原因:修改归档模式的操作只能在 mount 状态下进行,不能处于 open 状态。 SQL> shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount; ORACLE 例程已经启动。 Total System Global Area 4999610368 bytes Fixed Size 8803024 bytes Variable Size 1124076848 bytes Database Buffers 3858759680 bytes Redo Buffers 7970816 bytes 数据库装载完毕。 SQL> alter database archivelog; 数据库已更改。 SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 /u01/app/oracle/product/12/db_1/dbs/arch 最早的联机日志序列 2 下一个存档日志序列 4 当前日志序列 4 SQL> alter database open; --开启Force logging SQL>Alter database force logging --开启supplemental logging SQL>Alter database add supplemental log data; --设置数据库GoldenGate参数 SQL> show parameter enable_goldengate_replication; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ enable_goldengate_replication boolean FALSE SQL> alter system set enable_goldengate_replication=true scope=both; 系统已更改。
1、 上传OGG安装包
2、解压到对应的文件夹中注意权限所属
3、修改配置文件
vim response/oggcore.rsp
#-------------------------------------------------------------------------------
# Specify the installation option.
# Specify ORA12c for installing Oracle GoldenGate for Oracle Database 12c and
# ORA11g for installing Oracle GoldenGate for Oracle Database 11g
#-------------------------------------------------------------------------------
INSTALL_OPTION=ORA12c
#-------------------------------------------------------------------------------
# Specify a location to install Oracle GoldenGate
#-------------------------------------------------------------------------------
SOFTWARE_LOCATION=/data/ogg
4、修改环境变量并生效
vim /home/oracle/.bash_profile
export ORACLE_HOME=/u01/app/oracle/product/12/db_1
export OGG_HOME=/data/ogg
export PATH=$PATH:$OGG_HOME:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$OGG_HOME:$ORACLE_HOME/lib:/usr/lib
5、执行安装命令
/data/ogg/runInstaller -silent -nowait -responseFile /data/ogg/response/oggcore.rsp
6、查看依赖是否正常
ldd ggsci
7、 创建OGG相关子目录
create subdirs
-- 容器管理 -- 连接数据库 sqlplus / as sysdba sqlplus user/password@orcl -- 查看当前容器 show con_name; -- 查看所创建的PDB show pdbs; -- 创建一个新的PDB create pluggable database pdb1 admin user test identified by test file_name_convert=('/u01/app/oracle/oradata/orcl/pdbseed/','/u01/app/oracle/oradata/orcl/pdb1/'); -- 启动一个创建好的PDB alter pluggable database pdb1 open; -- 切换当前会话 alter session set container=pdb1; -- 创建表空间(可以先不建) create tablespace users datafile '/u01/app/oracle/oradata/orcl/pdb1/users01.dbf' size 800M; -- 传统命令启动停止PDB -- 启动 startup -- 停止 shutdown immediate; -- 切换root alter session set container=CDB$ROOT; --配置tnsnames.ora vi $ORACLE_HOME/network/admin/tnsnames.ora PDB1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.101.38)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = pdb1) ) ) -- 修改服务名称 SHOW PARAMETER service_names alter system set service_names=orcl,pdb1,pdborcl -- 测试可用性 tnsping pdb1 -- 用户权限赋予 -- 登录数据库管理员 sqlplus C##oracle/oracle as sysdba -- 切换当前会话到对应的PDB alter session set container=PDB1; -- 授权 grant create user,drop user,alter user,create any view,connect,resource,dba,create session,create any sequence to test; GRANT CONNECT,RESOURCE TO c##oracle container=all;
1、 教程pre-setup:
## 前置环境已完成
PDB=>pdb1
PDB Schema =>test
PDB Schema Password => test
PDB service name => ‘PDB1’
2、使用OGG安装目录中的脚本创建源表并加载数据
%(unixserver1) sqlplus test/test_pass@pdb1
SQLPLUS> @demo_ora_create
SQLPLUS> @demo_ora_insert
SQLPLUS> exit
1、Extract和Replicat一起工作,通过增量事务保持数据库接近实时的同步复制。通过以下方式执行此功能
2、 一旦创建了目标数据库,就可以用Oracle源数据库中的数据加载它。要加载目标数据库通过OGG工具
3、初始同步后
4、一旦Extract和Replicat运行,更改将永久复制。此时,我们还将进行演示以下功能。
关于命令语法的说明:
本教程中的命令会对目录、文件名、检查点组名、开始时间等。除非另有说明,否则这些项目不必与您的环境完全对应;他们并举例说明具体的例子。
其中提示符是GGSCI {unixserver1}>该命令应该在源系统上执行。{unixserver2}表示目标系统。
要了解确切的语法,请参考Oracle GoldenGate参考指南。
5、多租户容器数据库的其他要求
以下是适用于在多租户容器数据库之间进行复制的特殊要求
多租户容器数据库中的所有可插入数据库必须具有相同的属性,例如字符集、语言环境和大小写敏感性。可插拔数据库的字符集必须相同CDB的字符集或CDB字符集的二进制子集。
提取必须在集成捕获模式下操作。
提取必须作为一个普通用户连接到根容器(cdb$root),以便与logmining服务器。要指定根容器,请为使用USERID或USERIDALIAS参数指定的数据库用户使用适当的SQL*Net连接字符串。例如:C # # GGADMIN@FINANCE。更多关于“普通用户”的信息,请参考Oracle数据库12.1文档。
一个提取支持从多个pdb提取数据,但是一个副本只支持应用数据到1 PDB。因此,如果从多个pdb提取数据,就需要创建多个副本来应用所有这些数据的数据。
dbms_goldengate_auth.grant_admin_privilege包为捕获并应用于多租户容器数据库中。这包括容器参数,它对于extract用户,必须设置为ALL,如下例所示:
exec dbms_goldengate_auth.grant_admin_privilege('C##GGADMIN',container=>'all')
6、收集关于多租户容器数据库的信息
下面是如何确定环境信息的示例。
sqlplus / as sysdba -- 下面的查询应该为容器数据库返回“YES”。 SQL> select cdb from v$database; CDB --- YES -- 下面的查询将列出所有的pdb。 select name, open_mode from v$pdbs; -- 下面的命令将打开一个特定的PDB。 SQL> show con_name CON_NAME ------------------------------ CDB$ROOT SQL> alter session set container=PDBORCL; Session altered. SQL> show con_name <==== Current session container. CON_NAME ------------------------------ PDBORCL SQL> alter database PDBORCL open; Database altered. SQL> select name, open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------- PDBORCL READ WRITE --下面的查询将列出所有的pdb(包括CDB) SQL> connect /as sysdba Connected. SQL> select NAME,CON_ID,PDB from v$services; NAME CON_ID PDB ---------------------------- ------ ------------------------------ pdb1 4 PDB1 pdborcl 3 PDBORCL orclXDB 1 CDB$ROOT orcl 1 CDB$ROOT SYS$BACKGROUND 1 CDB$ROOT SYS$USERS 1 CDB$ROOT --Note: the read only PDB$SEED is not listed here. Please refer to Oracle Database 12.1 documentation for more information on PDB$SEED. -- 这个SQL是从PDB中发出的,它将只列出与该PDB相关的数据 SQL> alter session set container=PDBORCL; Session altered. SQL> select NAME,CON_ID,PDB from v$services; NAME CON_ID PDB ---------------------------- ------ ------------------------------ pdborcl 3 PDBORCL -- 不需要“alter session set container”直接连接到PDB。您必须通过PDB网络服务进行连接。 $ sqlplus pdb1_u1/pdb1_u1@pdb1 SQL*Plus: Release 12.1.0.1.0 Production on Thu Dec 19 12:03:14 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Last Successful login time: Thu Dec 19 2013 12:02:49 -08:00 Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> show con_name CON_NAME ------------------------------ PDB1
在启动初始加载之前,需要启用补充日志记录并启动实时提取。所有对源表发生的更改由Extract自动检测,然后格式化并在附近传输实时到Unix文件系统上的临时文件。完成初始加载后,将从这些文件中读取数据并由副本复制到目标数据库。
执行以下任务以实现提取和复制。
1、在源系统上
创建一个OGG用户
为更新操作添加补充的日志数据。
在源Unix系统上创建一个提取参数文件。
在数据库中提取寄存器
在源Unix系统上设置初始提取检查点。
创建远程跟踪文件
开始提取
2、在目标系统上
创建一个OGG用户
在目标Unix系统上创建一个副本参数文件。
在目标Unix系统的检查点设置初始副本。
多租户环境的提取用户必须是一个普通用户,并且必须登录到根容器。在下面的示例,提取userid为c##ggadmin,使用密码ggadmin。以下命令是中执行CDB$ROOT.
$(unixserver1) sqlplus / as sysdba SQL> create user C##GGADMIN identified by ggadmin User created. SQL> exec dbms_goldengate_auth.grant_admin_privilege('C##GGADMIN',container=>'ALL'); PL/SQL procedure successfully completed. SQL> grant dba to c##ggadmin container=all; Grant succeeded. Please note the password may be case sensitive (check sec_case_sensitive_logon): SQL> connect C##GGADMIN/GGADMIN ERROR: ORA-01017: invalid username/password; logon denied SQL> connect C##GGADMIN/ggadmin Connected. SQL> connect c##ggadmin/ggadmin Connected. --用户id和密码提取中的参数也应该是正确的。
默认情况下,Oracle只为更新操作更改了列。通常,这意味着主键在更新操作期间不会记录列。但是,Replicat需要主键列以便在目标系统上应用更新。GGSCI中的ADD TRANDATA或ADD SCHEMATRANDATA命令是用于使Oracle记录表中所有更新的主键列。 minimal supplemental logging需要在数据库级别启用。
要在PDB级别启用最小的补充日志记录,在源Unix系统上发出以下命令。
$(unixserver1) sqlplus / as sysdba
SQL> alter session set container=pdb1
SQL> ALTER PLUGGABLE DATABASE ADD SUPPLEMENTAL LOG DATA;
Pluggable Database altered.
要在表级添加补充日志数据,在源Unix系统上发出以下命令。为DDL复制在本教程中启用,使用ADD SCHEMATRANDATA确保补充日志记录自动启用已更改或新表。将添加TRANDATA演示为单个表的选项您只想为其复制DML。
$(unixserver1) cd /ggs $(unixserver1) ggsci GGSCI (unixserver1) > DBLOGIN USERID test@pdb1, PASSWORD test_pass Successfully logged into database PDB1. GGSCI (unixserver1) > ADD SCHEMATRANDATA pdb1.test 2014-10-17 13:23:47 INFO OGG-01788 SCHEMATRANDATA has been added on schematest. 2014-10-17 13:23:47 INFO OGG-01976 SCHEMATRANDATA for scheduling columns hs been added on schema test. Or GGSCI (unixserver1) 2> DBLOGIN USERID test@pdb1, PASSWORD test_pass Successfully logged into database PDB1. GGSCI (unixserver1) 3> ADD TRANDATA pdb1.test.tcustmer Logging of supplemental redo data enabled for table PDB1.TEST.TCUSTMER. TRANDATA for scheduling columns has been added on table 'PDB1.TEST.TCUSTMER'. GGSCI (unixserver1) 4> ADD TRANDATA pdb1.test.tcustord Logging of supplemental redo data enabled for table PDB1.TEST.TCUSTORD. TRANDATA for scheduling columns has been added on table 'PDB1.TEST.TCUSTORD'. ## DBLOGIN命令为指定的用户建立数据库连接。系统会提示用户输入密码。
ADD TRANDATA或ADD SCHEMATRANDATA命令使Oracle记录所有更新的主键列对指定表的操作。对于多租户,必须指定模式和PDB。添加SCHEMATRANDATA在启用DDL复制时,应该使用。
准备环境来绘制和收集数据
在执行数据提取(在Unix环境中将数据从Oracle移动到Oracle)之前,执行以下任务。
服务器收集器程序通过TCP/IP连接从源Unix上的Extract接收传入数据然后将增量更改输出到目标Unix系统上的临时存储。服务器收集器在移动时由Manager进程根据提取程序的请求自动启动系统间的数据。
管理程序提供了许多重要的功能,包括监视关键的系统组件开始GoldenGate过程。在Unix上运行任何其他GoldenGate程序之前,必须先启动管理器。
在启动管理器之前,您必须编辑管理器的启动参数文件(称为/ggs/dirprm/mgr.prm)并添加端口参数。您可以使用Unix编辑器手动完成此操作,也可以使用GGSCI启动程序这些命令:
GGSCI (unixserver1) > EDIT PARAMS MGR
在这两种情况下,将以下文本添加到经理。PRM文件,然后保存文件并退出。
PORT 7809
使用以下命令通过GGSCI启动Manager。
GGSCI (unixserver1) > START MANAGER
如果目标Oracle数据库位于另一个系统上,则在目标系统上重复上述步骤。启动目标
管理器进程与启动管理器命令。
GGSCI (unixserver2) > EDIT PARAMS MGR
PORT 7809
GGSCI (unixserver2) > START MANAGER
扩展:
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分钟,则把它作为警告写到错误日志中。
原文解释连接
大多数提取参数被输入到参数文件中。您可以使用vi或手动创建参数文件Unix上的另一个编辑器。参数文件名与组的名称相同。在源系统上发出以下命令,从GGSCI启动:
GGSCI (unixserver1) > EDIT PARAMS EXTORA
You can also edit the file /ggs/dirprm/extora.prm directly from any other text editor.
在EXTORA中输入以下参数。注意,参数的顺序很重要。
--
-- Extract parameter file to capture TCUSTORD
-- and TCUSTMER changes
--
EXTRACT EXTORA
USERID c##ggadmin, PASSWORD ggadmin
RMTHOST unixserver2, MGRPORT 7809
RMTTRAIL ./dirdat/rt
DDL INCLUDE MAPPED
DDLOPTIONS REPORT
LOGALLSUPCOLS
UPDATERECORDFORMAT COMPACT
TABLE pdb1.test.TCUSTMER;
TABLE pdb1.test.TCUSTORD;
EXTRACT进程参数配置说明: SETENV:配置系统环境变量。 USERID/PASSWORD: 指定OGG连接数据库的用户名和密码,连接的是源端的数据库。例如:userid ogg@source, password gg。source是连接源库的tnsname。 COMMENT:注释行,也可以用–来代替。 TABLE:定义需复制的表,后面需以;结尾 TABLEEXCLUDE:定义需要排除的表,如果在TABLE参数中使用了通配符,可以使用该参数指定排除掉的表。 GETUPDATEAFTERS|IGNOREUPDATEAFTERS:是否在队列中写入后影像,缺省复制。 GETUPDATEBEFORES| IGNOREUPDATEBEFORES:是否在队列中写入前影像,缺省不复制。 GETUPDATES|IGNOREUPDATES:是否复制UPDATE操作,缺省复制。 GETDELETES|IGNOREDELETES:是否复制DELETE操作,缺省复制。 GETINSERTS|IGNOREINSERTS:是否复制INSERT操作,缺省复制。 GETTRUNCATES|IGNORETRUNDATES:是否复制TRUNCATE操作,缺省不复制。 RMTHOST:指定目标系统及其Goldengate Manager进程的端口号,还用于定义是否使用压缩进行传输。 RMTTRAIL:指定写入到目标端的哪个队列。 EXTTRAIL:指定写入到本地的哪个队列。 SQLEXEC:在extract进程运行时首先运行一个SQL语句。 PASSTHRU:禁止extract进程与数据库交互,适用于Data Pump传输进程。 REPORT:定义自动定时报告。 STATOPTIONS:定义每次使用stat时统计数字是否需要重置。 REPORTCOUNT:报告已经处理的记录条数统计数字。 TLTRACE:打开对于数据库日志的跟踪日志。 DISCARDFILE:定义discardfile文件位置,如果处理中有记录出错会写入到此文件中。 DBOPTIONS:指定对于某种特定数据库所需要的特殊参数。此处ALLOWUNUSEDCOLUMN参数表示,当抽取进程遇到一个没有使用的字段时只生成一个警告,进程会继续执行而不会被异常终止(abend)。 TRANLOGOPTIONS:指定在解析数据库日志时所需要的特殊参数。本处配置参数CONVERTUCS2CLOBS只用在extract端UTF字符类型,并且OGG11.1.1版本之前处理CLOB才需要。 WARNLONGTRANS:指定对于超过一定时间的长交易可以在gsserr.log里面写入警告信息,本处配置为每隔5分钟检查一次长交易,对于超过2小时的进行警告。 DYNAMICRESOLUTION:有时候开启OGG进程的时候较慢,可能是因为需要同步的表太多,OGG在开启进程之前会将需要同步的表建立一个记录并且存入到磁盘中,这样就需要耗费大量的时间。使用该参数来解决此问题。 FETCHOPTIONS:参数NOUSESNAPSHOT表示不会从闪回日志中获取数据。
1、为了启用集成提取模式,必须在数据库中注册提取。
要将Extract 注册到数据库以进行集成Extract ,请在源Unix系统上发出以下命令。
$(unixserver1) cd /ggs
$(unixserver1) ggsci
GGSCI (unixserver1) > dblogin userid c##ggadmin, password ggadmin
Successfully logged into database CDB$ROOT.
GGSCI (unixserver1) > REGISTER EXTRACT EXTORA DATABASE CONTAINER(PDB1)
Extract EXTORA successfully registered with database at SCN 13317219.
带有数据库选项的REGISTER命令为提取组启用了集成捕获模式。在这种模式下,Extract与数据库logmining服务器集成,以逻辑更改记录(LCR)的形式接收更改数据。提取不读取重做日志。Extract执行捕获处理、过滤、转换和其他需求。容器选项允许用户指定一个特定的PDB或一系列的PDBs。
2、设置Extract 检查点
检查点使Extract和Replicat能够从一次运行持续地处理数据。检查点允许重新启动Extract和Replicat,同时确保所有记录复制一次且仅复制一次。
Extract需要两个检查点:一个是到Oracle重做(所有数据库更改的源),另一个是到远程提取路径。远程提取路径是在目标Unix系统上创建的一系列临时文件,其中包含提取的更改。
要在源系统上设置这些检查点,在Unix上发出以下命令。
$(unixserver1) cd /ggs
$(unixserver1) ggsci
GGSCI (unixserver1) > ADD EXTRACT EXTORA, INTEGRATED TRANLOG, BEGIN NOW
ADD EXTRACT命令建立一个提取检查点组名称。集成的TRANLOG子句在集成捕获模式下添加这个摘录。在这种模式下,Extract与数据库logmining服务器集成,后者直接将逻辑更改记录(LCR)传递给Extract。提取不读取重做日志。BEGIN now子句使Extract处理在添加提取组时或之后发生的数据库操作。或者,您可以指定日期和时间,而不是现在的关键字。
定义提取远程跟踪文件
要在源系统上定义提取远程跟踪,在Unix上发出以下命令
GGSCI (unixserver1) > ADD RMTTRAIL ./dirdat/rt, EXTRACT EXTORA, MEGABYTES 10
ADD RMTTRAIL命令在远程提取跟踪中建立一个检查点。在此跟踪中的每个文件达到大约10兆字节后,Extract按顺序创建下一个文件。10兆字节仅用于培训目的。对于生产实现来说,这个值太小了。文件将命名为rt000000、rt000001、rt000002等。这些文件是复制程序的输入源。注意,可以指定任何两个字符的前缀,而不是’ rt '。
选择适合您的环境的组名称、目标文件和大小。
关于远程提取路径的注释:
远程提取跟踪文件只是临时的。Manager可以配置(使用purgeoldextract)在提取和副本都完成处理后删除跟踪文件。因此,中间存储的需求实际上是相当小的。通过EXTRACTROLLOVER参数,还可以通过一天中的时间而不是文件大小来控制从一个文件到下一个文件的翻转。
3、 Running Real-time Extract
捕获数据库更改的提取程序是从源Unix系统上的GGSCI启动的。
$(unixserver1) /ggs/ggsci
GGSCI (unixserver1) > START EXTRACT EXTORA
提取将继续运行,直到通过GGSCI显式地停止。
1、集成的副本无法连接到根容器。replicat用户必须直接连接到特定的PDB。因此必须创建特定的用户。
$(unixserver2) sqlplus / as sysdba Connect to the specific PDB : SQL> alter session set container = pdb1 ; Session altered. Create the User: SQL> create user repuser identified by rep_pass container=current ; User created. Grant Permissions: SQL> grant dba to repuser ; Grant succeeded. SQL> exec dbms_goldengate_auth.grant_admin_privilege('REPUSER',container=>'PDB1'); PL/SQL procedure successfully completed. Check Connection with new user: SQL> disconnect Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options SQL> connect repuser/rep_pass@pdb1 Connected.
2、配置Replicat参数文件
与Extract一样,必须创建一个Replicat参数文件。在这里,您可以在Unix上手动使用vi或其他编辑器。在本例中,我们为此创建了以下文件(称为/ggs/dirprm/ report.prm)。确保文件以文本格式保存。注意,参数的顺序很重要。或者,您可以在目标Unix系统上的GGSCI中启动vi程序。
$(unixserver2) cd /ggs
$(unixserver2) ggsci
GGSCI (unixserver2) > EDIT PARAMS REPORA
--
-- REPLICAT parameter file to replicate changes
-- for TCUSTORD and TCUSTMER.
--
REPLICAT REPORA
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/repora.dsc, PURGE, MEGABYTES 100
DDL INCLUDE MAPPED
DDLOPTIONS REPORT
DBOPTIONS INTEGRATEDPARAMS(parallelism 6)
USERID repuser@pdb1, PASSWORD rep_pass
MAP pdb1.test.*, TARGET pdb1.test.*;
3、 参数释义:
**REPLICAT REPORA
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/616710
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。