这篇文章主要为大家展示了“Oracle sharding database的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle sharding database的示例分析”这篇文章吧。

Sharding架构是数据库层面的一种分片技术,可以使分过区的数据分布在各不相同的独立数据库里。Sharding是Oracle Database 12c Release 2的新特性,它能为适合于 Sharding技术的OLTP应用提供线性扩展和完全错误隔离的能力,q 我们可以将 Sharding简单地理解为Oracle 表分区技术的扩展,下面将详细描述安装操作。

1.Oracle Sharding 安装条件
12.2企业版
non-cdb
使用文件系统而非ASM (12.2 Beta要求,正式发行后,可能会改)
主机hosts文件写上本机和各个shard node的IP解析
机器必须全新,不能残留之前有安装过oracle的信息。

2.设置环境变量,创建相关目录与设置内核参数
shardcat和gds都安装在一个主机上,同一个oracle用户,不同ORACLE_HOME。

[oracle12c@sdb1~]$cat.bash_profile#.bash_profile#Getthealiasesandfunctionsif[-f~/.bashrc];then.~/.bashrcfi#UserspecificenvironmentandstartupprogramsPATH=$PATH:$HOME/binexportPATH#OracleSettingsTMP=/tmp;exportTMPTMPDIR=$TMP;exportTMPDIRORACLE_BASE=/u01/ora12c/app/oracle;exportORACLE_BASEDB_HOME=$ORACLE_BASE/product/12.2.0/db_1;exportDB_HOMEGSM_HOME=$ORACLE_BASE/product/12.2.0/gsm;exportGSM_HOMEORACLE_HOME=$DB_HOME;exportORACLE_HOMEORACLE_SID=shardcat;exportORACLE_SIDORACLE_TERM=xterm;exportORACLE_TERMBASE_PATH=/usr/sbin:$PATH;exportBASE_PATHPATH=/usr/sbin:$PATH;exportPATHPATH=$ORACLE_HOME/bin:$PATH:$ORACLE_HOME/OPatch;exportPATHLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;exportLD_LIBRARY_PATHCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;exportCLASSPATH#LD_ASSUME_KERNEL=2.4.1;exportLD_ASSUME_KERNEL

[root@shard1~]#groupadd-g1009dba[root@shard1~]#groupadd-g1010oper[root@shard1~]#groupadd-g1011oinstall[root@shard1~]#useradd-u1001-goinstall-Gdba,operoracle[root@shard1~]#passwdoracleChangingpasswordforuseroracle.Newpassword:BADPASSWORD:Thepasswordisshorterthan8charactersRetypenewpassword:passwd:allauthenticationtokensupdatedsuccessfully.[root@shard1~]#mkdir-p/u01/app/oraInventory[root@shard1~]#chown-Roracle:oinstall/u01/app/oraInventory[root@shard1~]#chmod-R775/u01/app/oraInventory[root@shard1~]#mkdir-p/u01/app/oracle[root@shard1~]#chown-Roracle:oinstall/u01/app/oracle[root@shard1~]#chmod-R775/u01/app/oracle[root@shard1~]#mkdir-p/u01/app/oracle/product/12.2.0/db[root@shard1~]#chown-Roracle:oinstall/u01/app/oracle/product/12.2.0/db[root@shard1~]#chmod-R775/u01/app/oracle/product/12.2.0/db[root@shard1~]#mkdir/u01/tmp[root@shard1~]#chmoda+wr/u01/tmp[root@shard1~]#mkdir-p/u01/app/oracle/product/12.2.0/gsm[root@shard1~]#chown-Roracle:oinstall/u01/app/oracle/product/12.2.0/gsm[root@shard1~]#chmod-R775/u01/app/oracle/product/12.2.0/gsm[root@shard1~]#su-oracle

[oracle@shard1~]$vi.bash_profileexportPATH#.bash_profile#Getthealiasesandfunctionsif[-f~/.bashrc];then.~/.bashrcfi#UserspecificenvironmentandstartupprogramsPATH=$PATH:$HOME/.local/bin:$HOME/binexportPATHTEMP=/u01/tmpTMPDIR=/u01/tmpexportTEMPTMPDIRexportLD_ASSUME_KERNEL=3.8.13exportORACLE_BASE=/u01/app/oracleDB_HOME=/u01/app/oracle/product/12.2.0/dbGSM_HOME=/u01/app/oracle/product/12.2.0/gsmexportORACLE_HOME=$DB_HOMEexportORACLE_SID=jytest2exportORACLE_UNQNAME=jytestexportNLS_LANG=AMERICAN_AMERICA.ZHS16GBKexportORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/libLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/libexportLD_LIBRARY_PATHexportPATH=$PATH:$ORACLE_HOME/binCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlibCLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlibexportCLASSPATHumask=022[oracle@shard1~]$aliasgsm_env='./home/oracle/gsm_env'[oracle@shard1~]$aliasdb_env='./home/oracle/db_env'[oracle@shard1~]$vigsm_envORACLE_HOME=$GSM_HOME;exportORACLE_HOMEPATH=$ORACLE_HOME/bin:$BASE_PATH;exportPATH[oracle@shard1~]$vidb_envORACLE_HOME=$DB_HOME;exportORACLE_HOMEPATH=$ORACLE_HOME/bin:$BASE_PATH;exportPATH

修改内核参数编辑/etc/sysctl.conf文件

[root@shard1~]#vi/etc/sysctl.conf#Systemdefaultsettingslivein/usr/lib/sysctl.d/00-system.conf.#Tooverridethosesettings,enternewsettingshere,orinan/etc/sysctl.d/.conffile##Formoreinformation,seesysctl.conf(5)andsysctl.d(5).fs.aio-max-nr=1048576fs.file-max=6815744kernel.shmall=2097152kernel.shmmax=4294967295kernel.shmmni=4096kernel.sem=25032000100128net.ipv4.ip_local_port_range=900065500net.core.rmem_default=262144net.core.rmem_max=4194304net.core.wmem_default=262144net.core.wmem_max=1048576[root@shard1~]#sysctl-pfs.aio-max-nr=1048576fs.file-max=6815744kernel.shmall=2097152kernel.shmmax=4294967295kernel.shmmni=4096kernel.sem=25032000100128net.ipv4.ip_local_port_range=900065500net.core.rmem_default=262144net.core.rmem_max=4194304net.core.wmem_default=262144net.core.wmem_max=1048576

修改oarcle参数的shell限制,在所有节点的/etc/security/limits.conf文件中添加以下参数

oraclesoftnproc2047oraclehardnproc16384oraclesoftnofile1024oraclehardnofile65536oraclesoftstack10240oraclehardstack32768oraclesoftmemlock3145728oraclehardmemlock3145728

修改shell的默认参数文件,在所有节点的/etc/profile文件中添加以下内容:

if[$USER="oracle"];thenif[$SHELL="/bin/ksh"];thenulimit-p16384ulimit-n65536elseulimit-u16384-n65536fifi

3.安装Oracle软件

[root@shard1soft]#unziplinuxx64_12201_database.zip[root@shard1soft]#chown-Roracle:oinstalldatabase[root@shard1Desktop]#xhost+accesscontroldisabled,clientscanconnectfromanyhost[root@shard1Desktop]#su-oracleLastlogin:ThuOct1212:01:58CST2017onpts/1[oracle@shard1~]$exportDISPLAY=:1[oracle@shard1~]$cd/soft/database[oracle@shard1database]$ls-lrttotal24-rwxr-xr-x.1oracleoinstall500Feb72013welcome.htmldrwxr-xr-x.4oracleoinstall4096Jan262017install-rwxr-xr-x.1oracleoinstall8771Jan262017runInstallerdrwxr-xr-x.2oracleoinstall34Jan262017rpmdrwxrwxr-x.2oracleoinstall28Jan262017sshsetupdrwxrwxr-x.2oracleoinstall58Jan262017responsedrwxr-xr-x.14oracleoinstall4096Jan262017stage[oracle@shard1database]$./runInstaller

[root@shard1soft]#/u01/app/oraInventory/orainstRoot.shChangingpermissionsof/u01/app/oraInventory.Addingread,writepermissionsforgroup.Removingread,write,executepermissionsforworld.Changinggroupnameof/u01/app/oraInventorytooinstall.Theexecutionofthescriptiscomplete.[root@shard1soft]#/u01/app/oracle/product/12.2.0/db/root.shPerformingrootuseroperation.Thefollowingenvironmentvariablesaresetas:ORACLE_OWNER=oracleORACLE_HOME=/u01/app/oracle/product/12.2.0/dbEnterthefullpathnameofthelocalbindirectory:[/usr/local/bin]:Copyingdbhometo/usr/local/bin...Copyingoraenvto/usr/local/bin...Copyingcoraenvto/usr/local/bin...Creating/etc/oratabfile...Entrieswillbeaddedtothe/etc/oratabfileasneededbyDatabaseConfigurationAssistantwhenadatabaseiscreatedFinishedrunninggenericpartofrootscript.Nowproduct-specificrootactionswillbeperformed.DoyouwanttosetupOracleTraceFileAnalyzer(TFA)now?yes|[no]:yesInstallingOracleTraceFileAnalyzer(TFA).LogFile:/u01/app/oracle/product/12.2.0/db/install/root_shard1_2017-10-12_13-06-02-537061115.logFinishedinstallingOracleTraceFileAnalyzer(TFA)

其它两个shard主机shard2,shard3安装Oracle软件的操作不再描述同上。

shard2上的oracle环境变量设置如下,其中ORACLE_SID与
ORACLE_UNQNAME设置为sh2,在后面向shard catalog数据库注册shard时会读取到

[oracle@shard2~]$cat.bash_profile#.bash_profile#Getthealiasesandfunctionsif[-f~/.bashrc];then.~/.bashrcfi#UserspecificenvironmentandstartupprogramsPATH=$PATH:$HOME/.local/bin:$HOME/binexportPATHTEMP=/u01/tmpTMPDIR=/u01/tmpexportTEMPTMPDIRexportLD_ASSUME_KERNEL=3.8.13exportORACLE_BASE=/u01/app/oracleDB_HOME=/u01/app/oracle/product/12.2.0/dbGSM_HOME=/u01/app/oracle/product/12.2.0/gsmexportORACLE_HOME=$DB_HOMEexportORACLE_SID=sh2exportORACLE_UNQNAME=sh2exportNLS_LANG=AMERICAN_AMERICA.ZHS16GBKexportORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/libLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/libexportLD_LIBRARY_PATHexportPATH=$PATH:$ORACLE_HOME/binCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlibCLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlibexportCLASSPATHumask=022

shard3上的oracle环境变量设置如下,其中ORACLE_SID与
ORACLE_UNQNAME设置为sh2,在后面向shard catalog数据库注册shard时会读取到

[oracle@shard3~]$vi.bash_profile#.bash_profile#Getthealiasesandfunctionsif[-f~/.bashrc];then.~/.bashrcfi#UserspecificenvironmentandstartupprogramsPATH=$PATH:$HOME/.local/bin:$HOME/binexportPATHTEMP=/u01/tmpTMPDIR=/u01/tmpexportTEMPTMPDIRexportLD_ASSUME_KERNEL=3.8.13exportORACLE_BASE=/u01/app/oracleDB_HOME=/u01/app/oracle/product/12.2.0/dbGSM_HOME=/u01/app/oracle/product/12.2.0/gsmexportORACLE_HOME=$DB_HOMEexportORACLE_SID=sh3exportORACLE_UNQNAME=sh3exportNLS_LANG=AMERICAN_AMERICA.ZHS16GBKexportORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/libLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/libexportLD_LIBRARY_PATHexportPATH=$PATH:$ORACLE_HOME/binCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlibCLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlibexportCLASSPATHumask=022

4.安装Shard Director Software

[root@shard1soft]#unziplinuxx64_12201_gsm.zip[root@shard1Desktop]#xhost+accesscontroldisabled,clientscanconnectfromanyhost[root@shard1Desktop]#su-oracleLastlogin:ThuOct1218:05:56CST2017onpts/0[oracle@shard1~]$exportDISPLAY=:1[oracle@shard1~]$cd/soft/gsm[oracle@shard1gsm]$ls-lrttotal24-rwxrwxr-x.1oracleoinstall500Feb72013welcome.html-rwxr-xr-x.1oracleoinstall8772Jan262017runInstallerdrwxr-xr-x.4oracleoinstall4096Jan262017installdrwxrwxr-x.2oracleoinstall28Jan262017responsedrwxr-xr-x.14oracleoinstall4096Jan262017stage[oracle@shard1gsm]$./runInstaller

[root@shard1soft]#/u01/app/oracle/product/12.2.0/gsm/root.shPerformingrootuseroperation.Thefollowingenvironmentvariablesaresetas:ORACLE_OWNER=oracleORACLE_HOME=/u01/app/oracle/product/12.2.0/gsmEnterthefullpathnameofthelocalbindirectory:[/usr/local/bin]:Thecontentsof"dbhome"havenotchanged.Noneedtooverwrite.Thecontentsof"oraenv"havenotchanged.Noneedtooverwrite.Thecontentsof"coraenv"havenotchanged.Noneedtooverwrite.Entrieswillbeaddedtothe/etc/oratabfileasneededbyDatabaseConfigurationAssistantwhenadatabaseiscreatedFinishedrunninggenericpartofrootscript.Nowproduct-specificrootactionswillbeperformed.

5.创建shard catalog数据库
运行dbca开始建立数据库实例,这个实例是放分片数据的元数据的。我们把这个实例名叫shardcat。

[root@shard1Desktop]#xhost+accesscontroldisabled,clientscanconnectfromanyhost[root@shard1Desktop]#su-oracleLastlogin:ThuOct1218:35:35CST2017onpts/1[oracle@shard1~]$exportDISPLAY=:1[oracle@shard1~]$dbca

[oracle@shard1arch]$lsnrctlstatusLSNRCTLforLinux:Version12.2.0.1.0-Productionon12-OCT-201718:58:06Copyright(c)1991,2016,Oracle.Allrightsreserved.Connectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=shard1)(PORT=1521)))STATUSoftheLISTENER------------------------AliasLISTENERVersionTNSLSNRforLinux:Version12.2.0.1.0-ProductionStartDate12-OCT-201718:26:22Uptime0days0hr.31min.43secTraceLeveloffSecurityON:LocalOSAuthenticationSNMPOFFListenerParameterFile/u01/app/oracle/product/12.2.0/db/network/admin/listener.oraListenerLogFile/u01/app/oracle/diag/tnslsnr/shard1/listener/alert/log.xmlListeningEndpointsSummary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=shard1)(PORT=1521)))(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))ServicesSummary...Service"shardcat"has1instance(s).Instance"shardcat",statusREADY,has1handler(s)forthisservice...Service"shardcatXDB"has1instance(s).Instance"shardcat",statusREADY,has1handler(s)forthisservice...Thecommandcompletedsuccessfully

6.设置Oracle Sharding Management and Routing Tier
登录shardcat主机,登录shardcat数据库:--建立tablespace set需要使用omf,所以需要指定db_create_file_dest参数。

[oracle@shard1~]$echo$ORACLE_SIDshardcat[oracle@shard1~]$sqlplus/assysdbaSQL*Plus:Release12.2.0.1.0ProductiononThuOct1219:01:302017Copyright(c)1982,2016,Oracle.Allrightsreserved.Connectedto:OracleDatabase12cEnterpriseEditionRelease12.2.0.1.0-64bitProductionSQL>altersystemsetdb_create_file_dest='/u01/app/oracle/oradata'scope=both;Systemaltered.SQL>altersystemsetopen_links=16scope=spfile;Systemaltered.SQL>altersystemsetopen_links_per_instance=16scope=spfile;Systemaltered.SQL>startupforceORACLEinstancestarted.TotalSystemGlobalArea2147483648bytesFixedSize8622776bytesVariableSize620760392bytesDatabaseBuffers1509949440bytesRedoBuffers8151040bytesDatabasemounted.Databaseopened.SQL>alterusergsmcatuseraccountunlock;Useraltered.SQL>alterusergsmcatuseridentifiedbyoracle;Useraltered.SQL>createusermygdsadminidentifiedbyoracle;Usercreated.SQL>grantconnect,createsession,gsmadmin_roletomygdsadmin;Grantsucceeded.SQL>grantinheritprivilegesonuserSYStoGSMADMIN_INTERNAL;Grantsucceeded.(update2016-11-10注:在12.2.beta2后可以不做这步)SQL>altersystemsetevents'immediatetracenameGWM_TRACElevel7';Systemaltered.(update2016-11-10注:在12.2.beta2后可以不做这步)SQL>altersystemsetevent='10798tracenamecontextforever,level7'scope=spfile;Systemaltered.SQL>executedbms_xdb.sethttpport(8080);PL/SQLproceduresuccessfullycompleted.SQL>commit;Commitcomplete.SQL>@?/rdbms/admin/prvtrsch.plbPL/SQLproceduresuccessfullycompleted.Sessionaltered.PL/SQLproceduresuccessfullycompleted.PL/SQLproceduresuccessfullycompleted.Sessionaltered.Sessionaltered.Packagecreated.Noerrors.Grantsucceeded.Sessionaltered.Sessionaltered.Packagebodycreated.Noerrors.Sessionaltered.Sessionaltered.Procedurecreated.Noerrors.Functioncreated.Noerrors.Procedurecreated.Noerrors.Procedurecreated.Noerrors.Procedurecreated.Noerrors.Procedurecreated.Noerrors.Procedurecreated.Noerrors.Procedurecreated.Noerrors.Procedurecreated.Noerrors.Procedurecreated.Noerrors.Procedurecreated.Noerrors.Procedurecreated.Noerrors.Auditpolicyaltered.1rowupdated.Commitcomplete.Sessionaltered.PL/SQLproceduresuccessfullycompleted.SQL>execDBMS_SCHEDULER.SET_AGENT_REGISTRATION_PASS('oracle');PL/SQLproceduresuccessfullycompleted.SQL>startupforceORACLEinstancestarted.TotalSystemGlobalArea2147483648bytesFixedSize8622776bytesVariableSize620760392bytesDatabaseBuffers1509949440bytesRedoBuffers8151040bytesDatabasemounted.Databaseopened.

在所有的shard节点分别执行Agent注册
登录shard2主机:

[oracle@shard2~]$schagent-startScheduleragentstartedusingport65121[oracle@shard2~]$schagentstatusAgentrunningwithPID12078Agent_version:12.2.0.1.2Running_time:00:00:10Total_jobs_run:0Running_jobs:0Platform:LinuxORACLE_HOME:/u01/app/oracle/product/12.2.0/dbORACLE_BASE:/u01/app/oraclePort:65121Host:shard2[oracle@shard2~]$echooracle|schagent-registerdatabaseshard18080AgentRegistrationPassword?OracleSchedulerAgentRegistrationfor12.2.0.1.2AgentAgentRegistrationSuccessful![oracle@shard2~]$mkdir-p/u01/app/oracle/oradata[oracle@shard2~]$mkdir-p/u01/app/oracle/fast_recovery_area

登录shard3主机:

[oracle@shard3~]$source.bash_profile[oracle@shard3~]$schagent-startScheduleragentstartedusingport35374[oracle@shard3~]$schagent-statusAgentrunningwithPID13019Agent_version:12.2.0.1.2Running_time:00:00:07Total_jobs_run:0Running_jobs:0Platform:LinuxORACLE_HOME:/u01/app/oracle/product/12.2.0/dbORACLE_BASE:/u01/app/oraclePort:35374Host:shard3[oracle@shard3~]$echooracle|schagent-registerdatabaseshard18080AgentRegistrationPassword?OracleSchedulerAgentRegistrationfor12.2.0.1.2AgentAgentRegistrationSuccessful![oracle@shard3~]$mkdir-p/u01/app/oracle/oradata[oracle@shard3~]$mkdir-p/u01/app/oracle/fast_recovery_area

7.Deploying and Managing a System-Managed SDB
我们开始部署,以最简单的System-Managed SDB为例。
另外,admin guide中介绍的是4台主机做shard node,其中每2台互为dataguard主备。我们这边为了节约空间和资源,不搞dataguard了,只建立primary库。因此只要2台主机做shard node。先设置gsm的环境变量
进入到GDSCTL命令行,创建shard catalog。

[oracle@shard1~]$exportORACLE_BASE=/u01/app/oracle[oracle@shard1~]$exportORACLE_HOME=/u01/app/oracle/product/12.2.0/gsm[oracle@shard1~]$exportPATH=/u01/app/oracle/product/12.2.0/gsm/bin:$PATH:$HOME/bin[oracle@shard1~]$gdsctlGDSCTL:Version12.2.0.1.0-ProductiononThuOct1219:24:36CST2017Copyright(c)2011,2016,Oracle.Allrightsreserved.WelcometoGDSCTL,type"help"forinformation.Warning:currentGSMnameisnotsetautomaticallybecausegsm.oracontainszeroorseveralGSMentries.Use"setgsm"commandtosetGSMforthesession.CurrentGSMissettoGSMORAGDSCTL>GDSCTL>createshardcatalog-databaseshard1:1521:shardcat-chunks12-usermygdsadmin/oracle-sdbshardcat-regionregion1-agent_port8080-agent_passwordoracleCatalogiscreated创建和启动sharddirector.参数含义:-gsm:指定sharddirector名称-listener:指定sharddirector的监听端口,注意不能与数据库的listener端口冲突-catalog:指定catalogdatabase信息,catalog数据库的主机名:监听器port:catalog数据库db_nameGDSCTL>addgsm-gsmsharddirector1-listener1571-pwdoracle-catalogshard1:1521:shardcat-regionregion1GSMsuccessfullyaddedGDSCTL>startgsm-gsmsharddirector1GSMisstartedsuccessfully添加操作系统认证.GDSCTL>addcredential-credentialoracle_cred-osaccountoracle-ospasswordoracleTheoperationcompletedsuccessfully

开始布署SharedDatabase。本例将布署System-ManagedSDB。
部署system-managed SDB

1.连接到shard director/GSM服务器(shard1)

[oracle@shard1~]$exportORACLE_BASE=/u01/app/oracle[oracle@shard1~]$exportORACLE_HOME=/u01/app/oracle/product/12.2.0/gsm[oracle@shard1~]$exportPATH=/u01/app/oracle/product/12.2.0/gsm/bin:$PATH:$HOME/bin[oracle@shard1~]$gdsctlGDSCTL:Version12.2.0.1.0-ProductiononThuOct1219:35:21CST2017Copyright(c)2011,2016,Oracle.Allrightsreserved.WelcometoGDSCTL,type"help"forinformation.CurrentGSMissettoSHARDDIRECTOR1

设置当前session为sharddirector1 shard director

GDSCTL>setgsm-gsmsharddirector1GDSCTL>connectmygdsadmin/oracleCatalogconnectionisestablished

添加shardgroup, shardgroup是一组shard的集合,shardgroup名称为primary_shardgroup,-deploy_as primary表示这个group中的shard都是主库。

GDSCTL>addshardgroup-shardgroupprimary_shardgroup-deploy_asprimary-regionregion1Theoperationcompletedsuccessfully将每个shard地址添加到catalog的validnodecheckingforregistration(VNCR)列表,并且创建shardGDSCTL>addinvitednodeshard2GDSCTL>createshard-shardgroupprimary_shardgroup-destinationshard2-credentialoracle_credTheoperationcompletedsuccessfullyDBUniqueName:sh2GDSCTL>addinvitednodeshard3GDSCTL>createshard-shardgroupprimary_shardgroup-destinationshard3-credentialoracle_credTheoperationcompletedsuccessfullyDBUniqueName:sh3

检查配置

GDSCTL>configRegions------------------------region1GSMs------------------------sharddirector1ShardedDatabase------------------------shardcatDatabases------------------------sh2sh3ShardGroups------------------------primary_shardgroupShardspaces------------------------shardspaceoraServices------------------------GDSCTLpendingrequests------------------------CommandObjectStatus-------------------Globalproperties------------------------Name:oradbcloudMasterGSM:sharddirector1DDLsequence#:0GDSCTL>configshardspaceShardspaceChunks-----------------shardspaceora12GDSCTL>configshardgroupShardGroupChunksRegionShardspace----------------------------------primary_shardgroup12region1shardspaceoraGDSCTL>configvncrNameGroupID------------shard2shard310.138.130.180GDSCTL>configshardNameShardGroupStatusStateRegionAvailability--------------------------------------------sh2primary_shardgroupUnoneregion1-sh3primary_shardgroupUnoneregion1-

部署deploy
Shard数据库部署过程采用静默安装方式。

GDSCTL>deploy

此时,就开始部署shard了。在shard node上的agent会自动的调用netca和dbca,创建listener和database,2个shard node的操作是并行进行的。(如果是有datauard,那么是先建立一对主备,再建立另一对主备。)你可以在分别是两个shard node上ps -ef|grep ora_ 看到已经有sh2和sh3的实例了。我们可以执行在shard2与shard3上执行ps -ef | grep dbca与lsnrctl status,ps -ef | grep pmon来检查。

[root@shard2~]#ps-ef|grepdbcaoracle20437204299919:49pts/000:00:19/u01/app/oracle/product/12.2.0/db/jdk/jre/bin/java-Doracle.installer.not_bootstrap=true-DCV_HOME=/u01/app/oracle/product/12.2.0/db-DORACLE_HOME=/u01/app/oracle/product/12.2.0/db-XX:-OmitStackTraceInFastThrow-XX:CompileCommand=quiet-XX:CompileCommand=exclude,javax/swing/text/GlyphView,getBreakSpot-DSET_LAF=-Dsun.java2d.font.DisableAlgorithmicStyles=true-Dice.pilots.html4.ignoreNonGenericFonts=true-DDISPLAY=-DJDBC_PROTOCOL=thin-mx512m-classpath/u01/app/oracle/product/12.2.0/db/assistants/dbca/jlib/dbca.jar:/u01/app/oracle/product/12.2.0/db/assistants/dbca/jlib/dbcaext.jar:/u01/app/oracle/product/12.2.0/db/assistants/jlib/assistantsCommon.jar:/u01/app/oracle/product/12.2.0/db/assistants/jlib/rconfig.jar:/u01/app/oracle/product/12.2.0/db/assistants/jlib/asstcommonext.jar:/u01/app/oracle/product/12.2.0/db/oui/jlib/OraInstaller.jar:/u01/app/oracle/product/12.2.0/db/oui/jlib/OraPrereq.jar:/u01/app/oracle/product/12.2.0/db/inventory/prereqs/oui/OraPrereqChecks.jar:/u01/app/oracle/product/12.2.0/db/oui/jlib/OraPrereqChecks.jar:/u01/app/oracle/product/12.2.0/db/oui/jlib/OraCheckPoint.jar:/u01/app/oracle/product/12.2.0/db/jlib/cvu.jar:/u01/app/oracle/product/12.2.0/db/install/jlib/installcommons_1.0.0b.jar:/u01/app/oracle/product/12.2.0/db/oui/jlib/jewt4.jar:/u01/app/oracle/product/12.2.0/db/oui/jlib/ssh.jar:/u01/app/oracle/product/12.2.0/db/jlib/ewt3.jar:/u01/app/oracle/product/12.2.0/db/jlib/ewtcompat-3_3_15.jar:/u01/app/oracle/product/12.2.0/db/jlib/share.jar:/u01/app/oracle/product/12.2.0/db/jlib/help4.jar:/u01/app/oracle/product/12.2.0/db/oui/jlib/jewt4.jar:/u01/app/oracle/product/12.2.0/db/jlib/oracle_ice.jar:/u01/app/oracle/product/12.2.0/db/jlib/kodiak.jar:/u01/app/oracle/product/12.2.0/db/lib/xmlparserv2.jar:/u01/app/oracle/product/12.2.0/db/jlib/orai18n.jar:/u01/app/oracle/product/12.2.0/db/jlib/ldapjclnt12.jar:/u01/app/oracle/product/12.2.0/db/jlib/netcfg.jar:/u01/app/oracle/product/12.2.0/db/jlib/ojmisc.jar:/u01/app/oracle/product/12.2.0/db/jlib/oraclepki.jar:/u01/app/oracle/product/12.2.0/db/jlib/opm.jar:/u01/app/oracle/product/12.2.0/db/jdbc/lib/ojdbc8.jar:/u01/app/oracle/product/12.2.0/db/jlib/srvm.jar:/u01/app/oracle/product/12.2.0/db/jlib/srvmhas.jar:/u01/app/oracle/product/12.2.0/db/jlib/srvmasm.jar:/u01/app/oracle/product/12.2.0/db/dv/jlib/dvca.jar:/u01/app/oracle/product/12.2.0/db/jlib/gns.jar:/u01/app/oracle/product/12.2.0/db/jlib/commons-compress-1.8.jaroracle.assistants.dbca.driver.DBConfigurator-silent-responseFile/u01/app/oracle/product/12.2.0/db/shard_sh2_dbca.rsp-createDatabase-gdbNamesh2-sidsh2-initparamsdb_unique_name=sh2,db_name=sh2,db_domain=-templateName/u01/app/oracle/product/12.2.0/db/shard_sh2_template.dbt-customscripts/u01/app/oracle/product/12.2.0/db/shard_sh2_postCR.sql-listenersLISTENER_sh2root2088112186019:49pts/100:00:00grep--color=autodbca[oracle@shard2~]$lsnrctlstatusLSNRCTLforLinux:Version12.2.0.1.0-Productionon12-OCT-201719:56:01Copyright(c)1991,2016,Oracle.Allrightsreserved.Connectingto(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))STATUSoftheLISTENER------------------------AliasLISTENER_sh2VersionTNSLSNRforLinux:Version12.2.0.1.0-ProductionStartDate12-OCT-201719:48:45Uptime0days0hr.7min.18secTraceLeveloffSecurityON:LocalOSAuthenticationSNMPOFFListenerParameterFile/u01/app/oracle/product/12.2.0/db/network/admin/listener.oraListenerLogFile/u01/app/oracle/diag/tnslsnr/shard2/listener_sh2/alert/log.xmlListeningEndpointsSummary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=shard2)(PORT=1521)))(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))ServicesSummary...Service"sh2"has1instance(s).Instance"sh2",statusRESTRICTED,has1handler(s)forthisservice...Service"sh2_DGMGRL"has1instance(s).Instance"sh2",statusUNKNOWN,has1handler(s)forthisservice...Thecommandcompletedsuccessfully[oracle@shard2~]$ps-ef|greppmonoracle220861019:54?00:00:00ora_pmon_sh2oracle229825293019:56pts/000:00:00grep--color=autopmon

GDSCTL>deploydeploy:examiningconfiguration...deploy:deployingprimaryshard'sh2'...deploy:networklistenerconfigurationsuccessfulatdestination'shard2'deploy:startingDBCAatdestination'shard2'tocreateprimaryshard'sh2'...deploy:deployingprimaryshard'sh3'...deploy:networklistenerconfigurationsuccessfulatdestination'shard3'deploy:startingDBCAatdestination'shard3'tocreateprimaryshard'sh3'...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:waitingfor2DBCAprimarycreationjob(s)tocomplete...deploy:DBCAprimarycreationjobsucceededatdestination'shard2'forshard'sh2'deploy:waitingfor1DBCAprimarycreationjob(s)tocomplete...deploy:DBCAprimarycreationjobsucceededatdestination'shard3'forshard'sh3'deploy:requestingDataGuardconfigurationonshardsviaGSMdeploy:shardsconfiguredsuccessfullyTheoperationcompletedsuccessfully

我们可以检查一下shard的情况了:

GDSCTL>configshardNameShardGroupStatusStateRegionAvailability--------------------------------------------sh2primary_shardgroupOkDeployedregion1ONLINEsh3primary_shardgroupOkDeployedregion1ONLINEGDSCTL>databasesDatabase:"sh2"Registered:YState:OkONS:N.Role:PRIMARYInstances:1Region:region1Registeredinstances:shardcat%1Database:"sh3"Registered:YState:OkONS:N.Role:PRIMARYInstances:1Region:region1Registeredinstances:shardcat%11GDSCTL>configshard-shardsh2Name:sh2ShardGroup:primary_shardgroupStatus:OkState:DeployedRegion:region1Connectionstring:shard2:1521/sh2:dedicatedSCANaddress:ONSremoteport:0DiskThreshold,ms:20CPUThreshold,%:75Version:12.2.0.0FailedDDL:DDLError:---FailedDDLid:Availability:ONLINERack:Supportedservices------------------------NamePreferredStatus-------------------GDSCTL>configshard-shardsh3Name:sh3ShardGroup:primary_shardgroupStatus:OkState:DeployedRegion:region1Connectionstring:shard3:1521/sh3:dedicatedSCANaddress:ONSremoteport:0DiskThreshold,ms:20CPUThreshold,%:75Version:12.2.0.0FailedDDL:DDLError:---FailedDDLid:Availability:ONLINERack:Supportedservices------------------------NamePreferredStatus-------------------

创建service

GDSCTL>addservice-serviceoltp_rw_srvc-roleprimaryTheoperationcompletedsuccessfullyGDSCTL>startservice-serviceoltp_rw_srvcTheoperationcompletedsuccessfullyGDSCTL>statusserviceService"oltp_rw_srvc.shardcat.oradbcloud"has2instance(s).Affinity:ANYWHEREInstance"shardcat%1",name:"sh2",db:"sh2",region:"region1",status:ready.Instance"shardcat%11",name:"sh3",db:"sh3",region:"region1",status:ready.

(其实这个service,用于adg的主备切换后,这个service漂移到备库上)

创建用户和对象
1. 在catalog数据库中创建业务用户

[oracle@shard2~]$sqlplus/assysdbaSQL*Plus:Release12.2.0.1.0ProductiononFriOct1313:24:452017Copyright(c)1982,2016,Oracle.Allrightsreserved.Connectedto:OracleDatabase12cEnterpriseEditionRelease12.2.0.1.0-64bitProductionSQL>altersessionenableshardddl;Sessionaltered.SQL>createuserapp_schemaidentifiedbyoracle;Usercreated.SQL>grantallprivilegestoapp_schema;Grantsucceeded.SQL>grantgsmadmin_roletoapp_schema;Grantsucceeded.SQL>grantselect_catalog_roletoapp_schema;Grantsucceeded.SQL>grantconnect,resourcetoapp_schema;Grantsucceeded.SQL>grantdbatoapp_schema;Grantsucceeded.SQL>grantexecuteondbms_cryptotoapp_schema;Grantsucceeded.

2. 利用应用用户登录,创建表空间集合

SQL>connapp_schema/oracleConnected.SQL>altersessionenableshardddl;Sessionaltered.SQL>createtablespacesettsp_set_1usingtemplate(datafilesize100mautoextendonnext10mmaxsizeunlimitedextentmanagementlocalsegmentspacemanagementauto);Tablespacecreated.

3. 为duplicated tables创建表空间,这个测试中duplicated table是Products table.

SQL>createtablespaceproducts_tspdatafilesize100mautoextendonnext10mmaxsizeunlimitedextentmanagementlocaluniformsize1m;Tablespacecreated.

4. 创建shard表

SQL>createshardedtablecustomers2(3custidvarchar2(60)notnull,4firstnamevarchar2(60),5lastnamevarchar2(60),6classvarchar2(10),7geovarchar2(8),8custprofilevarchar2(4000),9passwdraw(60),10constraintpk_customersprimarykey(custid),11constraintjson_customerscheck(custprofileisjson)12)tablespacesettsp_set_113partitionbyconsistenthash(custid)partitionsauto;Tablecreated.SQL>createshardedtableorders2(3orderidintegernotnull,4custidvarchar2(60)notnull,5orderdatetimestampnotnull,6sumtotalnumber(19,4),7statuschar(4),8constraintpk_ordersprimarykey(custid,orderid),9constraintfk_orders_parentforeignkey(custid)10referencescustomersondeletecascade11)partitionbyreference(fk_orders_parent);Tablecreated.

5.为orders表的orderid列创建序列

SQL>createsequenceorders_seq;Sequencecreated.

6. 创建SHARDED TABLE LineItems

SQL>createshardedtablelineitems2(3orderidintegernotnull,4custidvarchar2(60)notnull,5productidintegernotnull,6pricenumber(19,4),7qtynumber,8constraintpk_itemsprimarykey(custid,orderid,productid),9constraintfk_items_parentforeignkey(custid,orderid)10referencesordersondeletecascade11)partitionbyreference(fk_items_parent);Tablecreated.

7. 创建duplicated tables.

SQL>createduplicatedtableproducts2(3productidintegergeneratedbydefaultasidentityprimarykey,4namevarchar2(128),5descrurivarchar2(128),6lastpricenumber(19,4)7)tablespaceproducts_tsp;Tablecreated.

8. 创建function,目的是为了后面的DEMO:

SQL>createorreplacefunctionpasswcreate(passwinraw)2returnraw3is4saltraw(8);5begin6salt:=dbms_crypto.randombytes(8);7returnutl_raw.concat(salt,dbms_crypto.hash(utl_raw.concat(salt,8passw),dbms_crypto.hash_sh356));9end;10/Functioncreated.SQL>createorreplacefunctionpasswcheck(passwinraw,phashinraw)2returnintegeris3begin4returnutl_raw.compare(5dbms_crypto.hash(utl_raw.concat(utl_raw.substr(phash,1,8),6passw),dbms_crypto.hash_sh356),7utl_raw.substr(phash,9));8end;9/Functioncreated.

GDSCTL>connect mygdsadmin/oracle
Catalog connection is established

GDSCTL>show ddl
id DDL Text Failed shards
-- -------- -------------
7 grant execute on dbms_crypto to app_s...
8 create tablespace set tsp_set_1 using...
9 create tablespace products_tsp datafi...
10 create sharded table customers ( ...
11 create sharded table orders ( orde...
12 create sequence orders_seq
13 create sharded table lineitems ( o...
14 CREATE MATERIALIZED VIEW "APP_SCHEMA"...
15 create or replace function passwcreat...
16 create or replace function passwcheck...

10. 检查每个shard是否有DDL错误

GDSCTL>configshard-shardsh2Name:sh2ShardGroup:primary_shardgroupStatus:OkState:DeployedRegion:region1Connectionstring:shard2:1521/sh2:dedicatedSCANaddress:ONSremoteport:0DiskThreshold,ms:20CPUThreshold,%:75Version:12.2.0.0FailedDDL:DDLError:---没有DDL错误FailedDDLid:Availability:ONLINERack:Supportedservices------------------------NamePreferredStatus-------------------oltp_rw_srvcYesEnabledGDSCTL>configshard-shardsh3Name:sh3ShardGroup:primary_shardgroupStatus:OkState:DeployedRegion:region1Connectionstring:shard3:1521/sh3:dedicatedSCANaddress:ONSremoteport:0DiskThreshold,ms:20CPUThreshold,%:75Version:12.2.0.0FailedDDL:DDLError:---没有DDL错误FailedDDLid:Availability:ONLINERack:Supportedservices------------------------NamePreferredStatus-------------------oltp_rw_srvcYesEnabled

验证环境-表空间/chunks
1. 在gsm(shard1)节点,检查chunks信息
前面创建shardcatalog时指定chunks为12,因此后续创建shard table分配12个chunks

GDSCTL>configchunksChunks------------------------DatabaseFromTo--------------sh216sh3712SQL>selectTABLESPACE_NAME,BYTES/1024/1024MBfromsys.dba_data_filesorderbytablespace_name;TABLESPACE_NAMEMB----------------------------------------------------------------------PRODUCTS_TSP100SYSAUX520SYSTEM810TSP_SET_1100UNDOTBS170USERS56rowsselected.SQL>selecttable_name,partition_name,tablespace_namefromdba_tab_partitionswheretablespace_namelike'C%TSP_SET_1'orderbytablespace_name;norowsselectedSQL>colTABLE_NAMEfora20SQL>colPARTITION_NAMEfora20SQL>colTABLESPACE_NAMEfora20SQL>selecttable_name,partition_name,tablespace_namefromdba_tab_partitionswheretablespace_namelike'%SET%';TABLE_NAMEPARTITION_NAMETABLESPACE_NAME------------------------------------------------------------CUSTOMERSCUSTOMERS_P1TSP_SET_1ORDERSCUSTOMERS_P1TSP_SET_1LINEITEMSCUSTOMERS_P1TSP_SET_1SQL>selectTABLESPACE_NAME,BYTES/1024/1024MBfromsys.dba_data_files;TABLESPACE_NAMEMB------------------------------SYSTEM810SYSAUX520UNDOTBS170USERS5TSP_SET_1100PRODUCTS_TSP1006rowsselected.SQL>selecta.nameShard,count(b.chunk_number)Number_of_Chunksfromgsmadmin_internal.databasea,gsmadmin_internal.chunk_locbwherea.database_num=b.database_numgroupbya.name;SHARDNUMBER_OF_CHUNKS----------------------------------------------------------------------------sh26sh36

2. 在shard2节点检查表空间和chunks信息
--表空间

[oracle@shard2~]$sqlplus/assysdbaSQL*Plus:Release12.2.0.1.0ProductiononFriOct1316:25:302017Copyright(c)1982,2016,Oracle.Allrightsreserved.Connectedto:OracleDatabase12cEnterpriseEditionRelease12.2.0.1.0-64bitProductionSQL>selectTABLESPACE_NAME,BYTES/1024/1024MBfromsys.dba_data_filesorderbytablespace_name;TABLESPACE_NAMEMB----------------------------------------------------------------------C001TSP_SET_1100C002TSP_SET_1100C003TSP_SET_1100C004TSP_SET_1100C005TSP_SET_1100C006TSP_SET_1100PRODUCTS_TSP100SYSAUX520SYSTEM810TSP_SET_1100UNDOTBS170USERS512rowsselected.

创建了6个表空间,分别是C001TSP_SET_1 ~ 表空间C006TSP_SET_1,因为设置chunks=12,每个shard有6个chunks。每个表空间有一个datafile,大小是100M,这个是在创建tablespace set时设置的datafile 100M。

--检查chunks

SQL>setlinesize140SQL>columntable_nameformata20SQL>columntablespace_nameformata20SQL>columnpartition_nameformata20SQL>showparameterdb_unique_nameNAMETYPEVALUE----------------------------------------------------------------------------------------db_unique_namestringsh2SQL>selecttable_name,partition_name,tablespace_namefromdba_tab_partitionswheretablespace_namelike'C%TSP_SET_1'orderbytablespace_name;TABLE_NAMEPARTITION_NAMETABLESPACE_NAME------------------------------------------------------------LINEITEMSCUSTOMERS_P1C001TSP_SET_1CUSTOMERSCUSTOMERS_P1C001TSP_SET_1ORDERSCUSTOMERS_P1C001TSP_SET_1CUSTOMERSCUSTOMERS_P2C002TSP_SET_1ORDERSCUSTOMERS_P2C002TSP_SET_1LINEITEMSCUSTOMERS_P2C002TSP_SET_1CUSTOMERSCUSTOMERS_P3C003TSP_SET_1LINEITEMSCUSTOMERS_P3C003TSP_SET_1ORDERSCUSTOMERS_P3C003TSP_SET_1LINEITEMSCUSTOMERS_P4C004TSP_SET_1CUSTOMERSCUSTOMERS_P4C004TSP_SET_1ORDERSCUSTOMERS_P4C004TSP_SET_1CUSTOMERSCUSTOMERS_P5C005TSP_SET_1ORDERSCUSTOMERS_P5C005TSP_SET_1LINEITEMSCUSTOMERS_P5C005TSP_SET_1CUSTOMERSCUSTOMERS_P6C006TSP_SET_1ORDERSCUSTOMERS_P6C006TSP_SET_1LINEITEMSCUSTOMERS_P6C006TSP_SET_118rowsselected.

4. 在catalog数据库检查chunks信息

SQL>setechooffSQL>selecta.nameShard,count(b.chunk_number)Number_of_Chunksfromgsmadmin_internal.databasea,gsmadmin_internal.chunk_locbwherea.database_num=b.database_numgroupbya.name;SHARDNUMBER_OF_CHUNKS----------------------------------------------------------------------------sh26sh36

5. 验证环境-tables
--catalog数据库

SQL>connapp_schema/oracleConnected.SQL>selecttable_namefromuser_tables;TABLE_NAME--------------------CUSTOMERSORDERSLINEITEMSPRODUCTSMLOG$_PRODUCTSRUPD$_PRODUCTS6rowsselected.

--shard节点shard2和shard3

[oracle@shard2~]$sqlplus/assysdbaSQL*Plus:Release12.2.0.1.0ProductiononFriOct1316:36:122017Copyright(c)1982,2016,Oracle.Allrightsreserved.Connectedto:OracleDatabase12cEnterpriseEditionRelease12.2.0.1.0-64bitProductionSQL>connapp_schema/oracleConnected.SQL>selecttable_namefromuser_tables;TABLE_NAME--------------------------------------------------------------------------------CUSTOMERSORDERSLINEITEMSPRODUCTS[oracle@shard3~]$sqlplus/assysdbaSQL*Plus:Release12.2.0.1.0ProductiononFriOct1316:36:062017Copyright(c)1982,2016,Oracle.Allrightsreserved.Connectedto:OracleDatabase12cEnterpriseEditionRelease12.2.0.1.0-64bitProductionSQL>connapp_schema/oracleConnected.SQL>selecttable_namefromuser_tables;TABLE_NAME--------------------------------------------------------------------------------CUSTOMERSORDERSLINEITEMSPRODUCTS

--插入数据

SQL>INSERTINTOCustomers(CustId,FirstName,LastName,CustProfile,2Class,Geo,Passwd)VALUES('james.parker@x.bogus','James','Parker',3NULL,'Gold','east',hextoraw('8d1c00e'));1rowcreated.SQL>commit;Commitcomplete.SQL>settermoutonSQL>setlinesize120SQL>setechoonSQL>columnfirstnameformata20SQL>columnlastnameformata20SQL>explainplanforSELECTFirstName,LastName,geo,classFROMCustomers;Explained.SQL>selectplan_table_outputfromtable(DBMS_XPLAN.DISPLAY());PLAN_TABLE_OUTPUT------------------------------------------------------------------------------------------------------------------------Planhashvalue:2953441084--------------------------------------------------------------|Id|Operation|Name|Cost(%CPU)|Inst|IN-OUT|--------------------------------------------------------------|0|SELECTSTATEMENT||0(0)||||1|SHARDITERATOR||||||2|REMOTE|||ORA_S~|R->S|--------------------------------------------------------------RemoteSQLInformation(identifiedbyoperationid):PLAN_TABLE_OUTPUT----------------------------------------------------------------------------------------------------------------------------------------------------------------------------2-EXPLAINPLANINTOPLAN_TABLE@!FORSELECT"A1"."FIRSTNAME","A1"."LASTNAME","A1"."GEO","A1"."CLASS"FROM"CUSTOMERS""A1"/*coord_sql_id=9j0dws979r7rr*/(accessing'ORA_SHARD_POOL@ORA_MULTI_TARGET')18rowsselected.

以上是“Oracle sharding database的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!