Oracle GoldenGate 安装、配置、管理
Oracle GoldenGate主要由如下一些组件组成
● Extract
● Data pump
● Replicat
● Trails or extract files
● Checkpoints
● Manager
● Collector
● Manager
● Collector
1、Data Pump是一个次级的Extract Group,如果你的GG环境中不使用Data Pump的话,那么Primary Extract Group必须直接将trail通过网络写到Target系统上.参见后面的示例6:配置Data Pump实现一对多拓扑方案.
2、默认情况下,Replicat是实时复制的,如果因为某种需要需要延迟复制的话,那么可以通过Replicat Group的如下DEFERAPPLYINTERVAL参数来控制,该参数允许delay的最大时间是7天。
按照Oracle GoldenGate的工作原理和体系结构,在每个复制数据源和目标端都需要安装一套GoldenGate软件,同时需要分别启动一个 GoldenGate实例,一个GoldenGate实例就是一个管理进程(Manager process),这个管理进程也是整个GoldenGate实例运行时最主要的控制进程。
GoldenGate操作系统内存的使用是通过操作系统来控制的,而不是通过GoldenGate程序控制的,GoldenGate进程会根据需要从OS那里分配相应的virtual memory.
l GoldenGate GGSCI命令接口工具对于每个GoldenGate实例可以支持并发300个Extract和Replicat进程。
l 每个Extract和Replicat进程需要大约25-55 MB内存,这主要取决于transaction的大小和并发的transaction数量。
所以,根据上面2个条件,GoldenGate对操作系统内存的需求主要取决于Extract和oracle 新建用户Replicat进程数。
工作目录
每个GoldenGate实例的工作目录(working directories and binaries),大约需要40M的空间,如果你要同一台Server安装多个GoldenGate实例到不同的目录/文件系统下话,那么就需要多倍的空间分配,在考虑空间分配的时候,也需要考虑这个因数。
辅助空间
这部分空间主要用于存放GoldenGate Trails,它包含了工作数据。这部分空间的消耗取决于Trail,依赖于将要处理的数据量。
根据实际的数据库系统的规模,每天产生的日志量的大小,建议这部分空间从1GB-100G不等,可以保存7-10天的GoldenGate队列文件即可。
对于RAC环境
对于RAC环境,GoldenGate的相关软件和工作目录需要配置在shared disk环境中,从而保证对所有node都是可用的,从任何一个node都可以启动GoldenGate的进程,当其中一个node出现异常时,可以在剩余的node启动而无须修改任何配置参数.否则如果运行在单个node上的话,需要将剩余node中的归档日志通过一定的技术共享出来并加载到 GoldenGate运行节点.
对于RAC环境,GoldenGate要求所有node必须保持时钟同步,同时必须保持所有RAC node和运行extract进程的node节点保持时钟同步.因为GoldenGate会比较本地的系统时间和commit的时间戳.所以不能忽略这个设置.否则可能导致数据复制的紊乱.
网络要求
l Configure the system to use TCP/IP services, including DNS
l GoldenGate 使用主机名或者IP地址进行连接,主机名的方式更容易使用
l GoldenGate需要无限制的和自由的TCP/IP端口:
一个port用于两个GoldenGate的Manager process之间通信(比如Source的Manager process和Target的Manager process)本地GoldenGate进程间通信使用的端口范围:缺省的端口范围从7840开始,或者可以定义一个从7840+256的端口
l 建议保存一份分配给GoldenGate的端口使用记录
l 配置防火墙允许接受来自GoldenGate端口的请求
l 如果可能的话,可以设置FTP端口用于GoldenGate传输数据、参数和来自Source和Target的report.否则的话,需要提供其他的传输方法。
GoldenGate for Oracle
1.支持的平台
支持的Oracle Database 版本
在当前的Oracle GoldenGate 10.4版本中,支持如下Oracle Database版本
√Oracle 8i (DML support only)
√Oracle 9.1 and 9.2 (DML and DDL support)
√Oracle 10.1 and 10.2 (DML and DDL support)
√Oracle 11g (DML and DDL support)
支持的操作系统平台
几乎所有主流的操作系统,GoldenGate都支持
√Windows 2000, 2003, XP
√Linux
√Sun Solaris
√HP NonStop
√HP-UX
√HP TRU64
√IBM AIX
√IBM z/OS
2.操作系统需求
内存要求
按 照Oracle GoldenGate的工作原理和体系结构,在每个复制数据源和目标端都需要安装一套GoldenGate软件,同时需要分别启动一个 GoldenGate实例,一个GoldenGate实例就是一个管理进程(Manager process),这个管理进程也是整个GoldenGate实例运行时最主要的控制进程.
? GoldenGate是操作系统内存的使用是通过操作系统来控制的,而不是通过GoldenGate程序控制的,GoldenGate进程会根据需要从OS那里分配相应的virtual memory.
? GoldenGate GGSCI命令接口工具对于每个GoldenGate实例可以支持并发300个Extract和Replicat进程.
? 每个Extract和Replicat进程需要大约25-55 MB内存,这主要取决于transaction的大小和并发的transaction数量.
所以,根据上面2个条件,GoldenGate对操作系统内存的需求主要取决于Extract和Replicat进程数.
DISK空间需求
安装文件
从Oracle 上download下来的GoldenGate 压缩软件包大约是50M,所以在分配磁盘空间前你需要提高考虑到这些额外的资源开销,当然了,安装完毕后,你就可以把这个压缩软件包删除了.
工作目录
每 个GoldenGate实例的工作目录(working directories and binaries),大约需要40M的空间,如果你要同一台Server安装多个GoldenGate实例到不同的目录/文件系统下话,那么就需要多倍的空间分配,在考虑空间分配的时候,也需要考虑这个因数.
辅助空间
这部分空间主要用于存放GoldenGate Trails,它包含了工作数据。这部分空间的消耗取决于Trail,依赖于将要处理的数据量。
根据实际的数据库系统的规模,每天产生的日志量的大小,建议这部分空间从1GB-100G不等,可以保存7-10天的GoldenGate队列文件即可.
对于RAC环境
对于RAC环境,GoldenGate的相关软件和工作目录需要配置在shared disk环境中,从而保证对所有node都是可用的,从任何一个node都可以启动GoldenGate的进程,当其中一个node出现异常时,可以在剩余的node启动而无须修改任何配置参数.否则如果运行在单个node上的话,需要将剩余node中的归档日志通过一定的技术共享出来并加载到 GoldenGate运行节点。
对 于RAC环境,GoldenGate要求所有node必须保持时钟同步,同时必须保持所有RAC node和运行extract进程的node节点保持时钟同步.因为GoldenGate会比较本地的系统时间和commit的时间戳.所以不能忽略这个设置,否则可能导致数据复制的紊乱。
网络要求
? Configure the system to use TCP/IP services, including DNS
? GoldenGate 使用主机名或者IP地址进行连接,主机名的方式更容易使用
? GoldenGate需要无限制的和自由的TCP/IP端口:
一个port用于两个GoldenGate的Manager process之间通信(比如Source的Manager process和Target的Manager process)
本地GoldenGate进程间通信使用的端口范围:缺省的端口范围从7840开始,或者可以定义一个从7840+256的端口
? 建议保存一份分配给GoldenGate的端口使用记录
? 配置防火墙允许接受来自GoldenGate端口的请求
? 如果可能的话,可以设置FTP端口用于GoldenGate传输数据、参数和来自Source和Target的report.否则的话,需要提供其他的传输方法.
Database user
在数据库中创建一个供GoldenGate使用的专用用,GoldenGate的所有进程可以使用这个用户连接到数据库中:
⊙Extract (source database)
⊙Replicat (target database)
⊙Manager (source database, if using DDL support)
⊙DEFGEN (source or target database)
从系统安全的角度出发,这个GoldenGate用户建议不给任何其他应用使用,仅供GoldenGate使用。
对于Oracle 10g及以后的版本,如果使用了Automatic Storage Management (ASM),GoldenGate的Extract进程需要一个用户来访问ASM实例,但GoldenGate不支持O/S认证的授权方式,所以你可以使用sys或任何其他具有sysdba/sysasm权限的用户来连接到ASM实例.
建议保留一份数据库用户的记录
这些用户信息需要在GoldenGate参数文件中使用.
USERID 是用户名,PASSWORD是口令
对于ASM user,可以通过TRANLOGOPTIONS (带有ASMUSER 和 ASMPASSWORD选项)参数来配置。
Database Configuration
对于Source Oracle Database要求
? 数据库处于归档模式下
? 打开补充日志
? 打开force logging
GoldenGate的安装非常的简单,我以linux平台下的install为例简单的说一下步骤,详细的说明在对应的document上都有介绍
1. 将软件ftp(二进制模式上传)到目标服务器上的指定目录下
2. 解压缩安装文件到指定目录
gzip -dc <filename>. | tar -xvof –
3. 进入到GoldenGate的安装目录.
4. 运行GGSCI
5. In GGSCI, issue the following command to create the GoldenGate working directories.
CREATE SUBDIRS
6. Issue the following command to exit GGSCI.
EXIT
就这么简单,就装完了
在配置GoldenGate环境时,刚开始的时候,我们总是需要先初始化把Source Database中需要复制的表的数据先load到目标库中,除非Source Database是一个新建的库或需要复制的对象中还没有任何数据。
目标:为了实现oragg1中的p到oragg2的实时数据同步,在配置OGG实现同步前,先把两个系统中的zrp表中的数据完成初始化同步。
说明:完成这个数据同步的技术很多,我这里仅仅是为了说明如何利用GoldenGate的Direct Load的方法实现数据的同步。
把源端数据库的数据同步到目标数据库
初始环境:利用系统的测试脚本(demo_ora_create.sql、demo_ora_insert.sql)完成源端建表和数据插入,目标端的建表工作。
1、为gate01建立专用的表空间
SQL> create tablespace ggs
2 datafile '/oracle/oradata/hrss2/ggs01.dbf' size 50M,
3 '/oracle/oradata/hrss2/ggs02.dbf' size 50m;
Tablespace created.
2、在源数据库上建数据库用户gate01
SQL> create user gate01 identified by gate01
2 default tablespace ggs
3 temporary tablespace TEMP
4 quota unlimited on ggs;
User created.
SQL> grant connect,resource,dba to gate01;
Grant succeeded.
3、在源数据库上建数据库用户gate01的表TCUSTMER、TCUSTORD,并插入记录
>conn gate01/gate01
>@demo_ora_create.sql
>@demo_ora_insert.sql
4、为gate02建立专用的表空间
SQL> create tablespace ggs
datafile '/oracle/oradata/hrss1/ggs01.dbf' size 50M,
'/oracle/oradata/hrss1/ggs02.dbf' size 50m;
Tablespace created.
5、在源数据库上建数据库用户gate02
create user gate02 identified by gate02
default tablespace ggs
temporary tablespace TEMP
quota unlimited on ggs;
User created.
SQL> grant connect,resource,dba to gate02;
Grant succeeded.
6、在目标数据库上建数据库用户gate02的表TCUSTMER、TCUSTORD,不需要插入记录
>conn gate02/gate02
>@ SQL> @/oracle/ggs/demo_ora_create.sql
7、在源数据上配置管理进程MGR
GGSCI (source) 1> edit params mgr
port 7809
~
"dirprm/mgr.prm" [New] 2L, 11C written
GGSCI (source) 2> start mgr –启动管理进程
Manager started.
8、在目标数据库上配置管理进程MGR
GGSCI (target) 1> edit params mgr
port 7809
~
~
~
"dirprm/mgr.prm" [New] 1L, 10C written
GGSCI (target) 2> start mgr
Manager started.
9、在source和target端检查管理进程是否启动
GGSCI (source) 3> info mgr
Manager is running (IP port source.7809).
GGSCI (target) 3> info mgr
Manager is running (IP port target.7809).
10、在源数据库上增加需要传输的用户表
GGSCI (source) 4> dblogin userid gate01,password gate01
Successfully logged into database.
GGSCI (source) 5> add ustmer
Logging of supplemental redo data enabled for table GATE01.TCUSTMER.
GGSCI (source) 7> add ustord
Logging of supplemental redo data enabled for table GATE01.TCUSTORD.
GGSCI (source) 9> info trandata gate01.*
Logging of supplemental redo log data is enabled for table GATE01.TCUSTMER
Logging of supplemental redo log data is enabled for table GATE01.TCUSTORD
GGSCI (source) 10>
11、在源数据库上配置extract进程 Eora01
GGSCI (source) 10> add extract eora01,sourceistable
EXTRACT added.
GGSCI (source) 11> info extract *, tasks
EXTRACT EORA01 Initialized 2011-02-22 20:17 Status STOPPED
Checkpoint Lag Not Available
Log Read Checkpoint Not Available
First Record Record 0
Task SOURCEISTABLE
GGSCI (source) 12> edit params eora01
extract eora01
userid gate01, password gate01
rmthost 192.168.1.20, mgrport 7809
rmttask replicat, group rora01
table gate01.*;
"dirprm/eora01.prm" [New] 5L, 127C written
12、在目标数据库上配置replicat进程 Rora01
GGSCI (target) 4> ADD REPLICAT Rora01, SPECIALRUN
REPLICAT added.
GGSCI (target) 5> INFO REPLICAT *, TASKS
REPLICAT RORA01 Initialized 2011-02-22 20:23 Status STOPPED
Checkpoint Lag 00:00:00 (updated 00:00:18 ago)
Log Read Checkpoint Not Available
Task SPECIALRUN
GGSCI (target) 6> EDIT PARAMS Rora01
REPLICAT Rora01
ASSUMETARGETDEFS
USERID gate02, PASSWORD "gate02"
DISCARDFILE ./dirrpt/Rora01.dsc, PURGE
MAP gate01.*, TARGET gate02.*;
~
~
"dirprm/rora01.prm" [New] 6L, 137C written
13、在源数据库上执行初始化过程
START EXTRACT Eora01
VIEW REPORT EORA01(在源数据上查看是否有报错)
GGSCI (source) 6> VIEW REPORT EORA01
2011-02-22 21:12:57 INFO OGG-01017 Wildcard resolution set to IMMEDIATE because SOURCEISTABLE is us
ed.
***********************************************************************
Oracle GoldenGate Capture for Oracle
Version 11.1.1.0.0 Build 078
Linux, x86, 32bit (optimized), Oracle 10 on Jul 28 2010 16:16:35
Copyright (C) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
Starting at 2011-02-22 21:12:57
***********************************************************************
Operating System Version:
Linux
Version #1 SMP Fri Jul 25 14:41:56 EDT 2008, Release 2.6.9-78.0.0.0.1.ELsmp
Node: source
Machine: i686
soft limit hard limit
Address Space Size : unlimited unlimited
Heap Size : unlimited unlimited
File Size : unlimited unlimited
CPU Time : unlimited unlimited
Process id: 6305
Description:
***********************************************************************
** Running with the following parameters **
***********************************************************************
extract eora01
userid gate01, password ******
rmthost 192.168.1.20, mgrport 7809
rmttask replicat, group rora01
table gate01.*;
TABLEWildcard resolved (entry GATE01.*):
table GATE01.TCUSTMER;
Using the following key columns for source table GATE01.TCUSTMER: CUST_CODE.
TABLEWildcard resolved (entry GATE01.*):
table GATE01.TCUSTORD;
Using the following key columns for source table GATE01.TCUSTORD: CUST_CODE, ORDER_DATE, PRODUCT_CODE, O
RDER_ID.
CACHEMGR virtual memory values (may have been adjusted)
CACHEBUFFERSIZE: 64K
CACHESIZE: 2G
CACHEBUFFERSIZE (soft max): 4M
CACHEPAGEOUTSIZE (normal): 4M
PROCESS VM AVAIL FROM OS (min): 2.89G
CACHESIZEMAX (strict force to disk): 2.65G
Database Version:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
Database Language and Character Set:
NLS_LANG environment variable specified has invalid format, default value will be used.
NLS_LANG environment variable not set, using default value AMERICAN_AMERICA.US7ASCII.
NLS_LANGUAGE = "AMERICAN"
NLS_TERRITORY = "AMERICA"
NLS_CHARACTERSET = "ZHS16GBK"
Warning: your NLS_LANG setting does not match database server language setting.
Please refer to user manual for more information.
Processing table GATE01.TCUSTMER
Processing table GATE01.TCUSTORD
***********************************************************************
* ** Run Time Statistics ** *
***********************************************************************
Report at 2011-02-22 21:13:10 (activity since 2011-02-22 21:12:57)
Output to rora01:
From Table GATE01.TCUSTMER:
# inserts: 2
# updates: 0
# deletes: 0
# discards: 0
From Table GATE01.TCUSTORD:
# inserts: 2
# updates: 0
# deletes: 0
# discards: 0
GGSCI (source) 7>
VIEW REPORT RORA01(在目标数据上查看是否有报错)
GGSCI (target) 11> VIEW REPORT RORA01
***********************************************************************
Oracle GoldenGate Delivery for Oracle
Version 11.1.1.0.0 Build 078
Linux, x86, 32bit (optimized), Oracle 10 on Jul 28 2010 16:38:15
Copyright (C) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
Starting at 2011-02-22 21:13:27
***********************************************************************
Operating System Version:
Linux
Version #1 SMP Fri Jul 25 14:41:56 EDT 2008, Release 2.6.9-78.0.0.0.1.ELsmp
Node: target
Machine: i686
soft limit hard limit
Address Space Size : unlimited unlimited
Heap Size : unlimited unlimited
File Size : unlimited unlimited
CPU Time : unlimited unlimited
Process id: 28268
Description:
***********************************************************************
** Running with the following parameters **
***********************************************************************
REPLICAT Rora01
ASSUMETARGETDEFS
USERID gate02, PASSWORD "******"
DISCARDFILE ./dirrpt/Rora01.dsc, PURGE
MAP gate01.*, TARGET gate02.*;
CACHEMGR virtual memory values (may have been adjusted)
CACHEBUFFERSIZE: 64K
CACHESIZE: 512M
CACHEBUFFERSIZE (soft max): 4M
CACHEPAGEOUTSIZE (normal): 4M
PROCESS VM AVAIL FROM OS (min): 1G
CACHESIZEMAX (strict force to disk): 881M
Database Version:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
Database Language and Character Set:
NLS_LANG environment variable specified has invalid format, default value will be used.
NLS_LANG environment variable not set, using default value AMERICAN_AMERICA.US7ASCII.
NLS_LANGUAGE = "AMERICAN"
NLS_TERRITORY = "AMERICA"
NLS_CHARACTERSET = "ZHS16GBK"
Warning: your NLS_LANG setting does not match database server language setting.
Please refer to user manual for more information.
***********************************************************************
** Run Time Messages **
***********************************************************************
Wildcard MAP resolved (entry GATE01.*):
MAP GATE01.TCUSTMER, TARGET gate02.TCUSTMER;
Using following columns in default map by name:
CUST_CODE, NAME, CITY, STATE
Using the following key columns for target table GATE02.TCUSTMER: CUST_CODE.
Wildcard MAP resolved (entry GATE01.*):
MAP GATE01.TCUSTORD, TARGET gate02.TCUSTORD;
Using following columns in default map by name:
CUST_CODE, ORDER_DATE, PRODUCT_CODE, ORDER_ID, PRODUCT_PRICE,
PRODUCT_AMOUNT, TRANSACTION_ID
Using the following key columns for target table GATE02.TCUSTORD: CUST_CODE, ORDER_DATE, PRODUCT_CODE, O
RDER_ID.
***********************************************************************
* ** Run Time Statistics ** *
***********************************************************************
Report at 2011-02-22 21:13:44 (activity since 2011-02-22 21:13:38)
From Table GATE01.TCUSTMER to GATE02.TCUSTMER:
# inserts: 2
# updates: 0
# deletes: 0
# discards: 0
From Table GATE01.TCUSTORD to GATE02.TCUSTORD:
# inserts: 2
# updates: 0
# deletes: 0
# discards: 0
CACHE OBJECT MANAGER statistics
CACHE MANAGER VM USAGE
vm current = 0 vm anon queues = 0
vm anon in use = 0 vm file = 0
vm used max = 0 ==> CACHE BALANCED
CACHE CONFIGURATION
cache size = 512M cache force paging = 881M
buffer min = 64K buffer highwater = 4M
pageout eligible size = 4M
CACHE Transaction Stats
trans active = 0 max concurrent = 0
non-zero total = 0 trans total = 0
CACHE File Caching
disk current = 0 disk total = 0
disk caching = 0 file cached = 0
file retrieves = 0
CACHE MANAGEMENT
buffer links = 0 anon gets = 0
forced unmaps = 0 cnnbl try = 0
cached out = 0 force out = 0
Allocation Request Distribution
< 128B: 0
128B: 0 0 | 512B: 0 0
2K: 0 0 | 8K: 0 0
32K: 0 0 | 128K: 0 0
512K: 0 0 | 2M: 0 0
8M: 0 0 | 32M: 0 0
128M: 0 0 | 512M: 0 0
2G: 0 0 | 8G: 0
Cached Transaction Size Distribution
0: 0
< 4K: 0
4K: 0 0 | 16K: 0 0
64K: 0 0 | 256K: 0 0
1M: 0 0 | 4M: 0 0
16M: 0 0 | 64M: 0 0
256M: 0 0 | 1G: 0 0
4G: 0 0 | 16G: 0 0
64G: 0 0 | 256G: 0 0
1T: 0 0 | 4T: 0 0
16T: 0 0 | 64T: 0 0
256T: 0 0 |1024T: 0 0
QUEUE Statistics:
num queues = 15 default index = 0
cur len = 0 max len = 0
q vm current = 0 vm max = 0
q hits = 0 q misses = 0
queue size q hits curlen maxlen cannibalized
0 64K 0 0 0 0
1 128K 0 0 0 0
2 256K 0 0 0 0
3 512K 0 0 0 0
4 1M 0 0 0 0
5 2M 0 0 0 0
6 4M 0 0 0 0
7 8M 0 0 0 0
8 16M 0 0 0 0
9 32M 0 0 0 0
10 64M 0 0 0 0
11 128M 0 0 0 0
12 256M 0 0 0 0
13 512M 0 0 0 0
14 1G 0 0 0 0
================================================================================
CACHE POOL #0
POOL INFO group: rora01 id: p28268_BLOB
trans active = 0 trans concurrent (max) = 0
trans total = 0 (0 )
flag = 0x00000000
last error = (0=<none>)
Allocation Request Distribution
< 128B: 0
128B: 0 0 | 512B: 0 0
2K: 0 0 | 8K: 0 0
32K: 0 0 | 128K: 0 0
512K: 0 0 | 2M: 0 0
8M: 0 0 | 32M: 0 0
128M: 0 0 | 512M: 0 0
2G: 0 0 | 8G: 0
QUEUE Statistics:
num queues = 15 default index = 0
cur len = 0 max len = 0
q vm current = 0 vm max = 0
q hits = 0 q misses = 0
queue size q hits curlen maxlen cannibalized
0 64K 0 0 0 0
1 128K 0 0 0 0
2 256K 0 0 0 0
3 512K 0 0 0 0
4 1M 0 0 0 0
5 2M 0 0 0 0
6 4M 0 0 0 0
7 8M 0 0 0 0
8 16M 0 0 0 0
9 32M 0 0 0 0
10 64M 0 0 0 0
11 128M 0 0 0 0
12 256M 0 0 0 0
13 512M 0 0 0 0
14 1G 0 0 0 0
================================================================================
CACHE POOL #0
POOL INFO group: rora01 id: p28268_BLOB
trans active = 0 trans concurrent (max) = 0
trans total = 0 (0 )
flag = 0x00000000
last error = (0=<none>)
Allocation Request Distribution
< 128B: 0
128B: 0 0 | 512B: 0 0
2K: 0 0 | 8K: 0 0
32K: 0 0 | 128K: 0 0
512K: 0 0 | 2M: 0 0
8M: 0 0 | 32M: 0 0
128M: 0 0 | 512M: 0 0
2G: 0 0 | 8G: 0
GGSCI (target) 12>
SQL> SELECT * FROM TCUSTMER;
CUST NAME CITY ST
---- ------------------------------ -------------------- --
WILL BG SOFTWARE CO. SEATTLE WA
JANE ROCKY FLYER INC. DENVER CO
SQL> SELECT * FROM TCUSTORD;
CUST ORDER_DAT PRODUCT_ ORDER_ID PRODUCT_PRICE PRODUCT_AMOUNT TRANSACTION_ID
---- --------- -------- ---------- ------------- -------------- --------------
WILL 30-SEP-94 CAR 144 17520 3 100
JANE 11-NOV-95 PLANE 256 133300 1 100
SQL>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论