已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
构建RAC架构Data Guard及异地单机Data Guard实施方案目录文档控制3修改记录3文档分发3概述4实施过程5一、RAC架构Data Guard5(一)、配置standby库rac环境。5(二)、配置rac架构data guard10二、异地单机Data Guard171、需求概述:某某公司现有4节点RAC架构数据库ERP一套。现需要与ERP数据库在同一机房内,构建一套RAC架构Data Guard(本方案采用2节点),并采用max aviliable保护模式,用以在CRM主库出现故障时,可及时切换到RAC架构的Data Guard备库上,并且最大限度的保障性能。同时,需要在异地机房内,构建一台单机Data Guard,用以对CRM数据库进行容灾。 2、环境概述: 操作系统均采用Redhat Enterprise Linux 4,共享存储采用OCFS2格式。 本文中,除CRM数据库4个节点的相关配置信息为实际信息外,其他服务器配置信息均为虚构信息,实施过程中需要根据实际情况进行修改。下文中-primary库代表rac架构的crm主库;standby库代表rac架构的Data guard数据库,2个节点,主机名分别为crm-std1 、 crm-std2;remote库代表异地单机Data guard数据库。本文作为方案实施的参考性文档,仅列出了关键性配置。具体实施过程中,配置、参数需要根据实际情况进行调整。其中关于RAC环境的详细配置,请参考之前提供的RAC实施文档。实施过程一、RAC架构Data Guard(一)、配置standby库rac环境。1、设置主机名,修改hosts文件。 (1). 修改standby库的两个节点的/etc/sysconfig/network文件中的hostname为对应的主机名。(2). 修改所有主机的/etc/hosts 文件,包括primary库的4个节点主机,内容如下# for standby192.168.1.151 crm-std1192.168.1.152 crm-std210.1.1.151 crm-std1-priv10.1.1.152 crm-std2-priv# for remote 192.168.10.51 remote# Primary db network192.168.9.51 CRM-RAC01192.168.9.53 CRM-RAC02192.168.9.52 CRM-RAC03192.168.9.54 CRM-RAC0410.1.1.51 CRM-RAC01-priv10.1.1.53 CRM-RAC02-priv10.1.1.52 CRM-RAC03-priv 10.1.1.54 CRM-RAC04-priv2、配置共享存储 (1) 安装 OCFS2下载下面的安装包l OCFS2对应版本的内核模块l OCFS2 toolsl OCFS2 console然后通过rpm -i 在standby库的两个节点主机分别安装。(2).配置ocfs2系统服务在standby库两个节点主机分别用root用户执行-/etc/init.d/o2cb configure选择系统启动时候自动加载(3).配置ocfs2 cluster节点信息。在standby库两个节点主机,用root用户编辑/etc/ocfs2/cluster.conf文件,内容如下node: ip_port = 7777 ip_address = 192.168.1.151 number = 1 name = crm-std1 cluster = ocfs2 node: ip_port = 7777 ip_address = 192.168.1.152 number = 2 name = crm-std2 cluster = ocfs2cluster: node_count = 2 name = ocfs2然后运行如下命令,重新加载ocfs2模块,使新配置生效。 rootcrm-std1 # service o2cb restart(4).格式化共享磁盘使用mkfs.ocfs2命令格式化共享磁盘(在一个节点上操作即可)。以格式化一个可被4个节点使用,Volumn Label为ora_data 的磁盘为例,命令如下-rootcrm-std1 # mkfs.ocfs2 -N 4 -L ora_data /dev/sdb5注:步骤3、4可通过图形工具ocfs2console来完成。通过ocfs2console添加节点前,应先将/etc/ocfs2/cluster.conf文件删除,否则添加节点会报错。(5).在所有standby库节点主机上,挂载OCFS2共享磁盘l 服务器开机自动挂载:编辑/etc/fstab文件,添加下面的行/dev/sdb5/oradata ocfs2 _netdev,datavolume,nointr 0 0l 使用命令挂载:# mount -o datavolume,nointr -t ocfs2 /dev/sdb5 /oradata(6).创建quorum文件在任一standby节点主机上,以root用户执行# dd if=/dev/zero of=/oradata/quorum.dbf bs=1M count=100# chown root:oinstall /oradata/quorum.dbf# chmod 664 /oradata/quorum.dbf(7).创建srvm文件在任一standby节点主机上,以root用户执行# dd if=/dev/zero of=/oradata/srvm.dbf bs=1M count=100# chown oracle:oinstall /oradata/srvm.dbf# chmod 664 /oradata/srvm.dbf(8). 创建srvConfig.loc文件在任一standby节点主机上,以root用户执行#mkdir-p/var/opt/oracle #touch/var/opt/oracle/srvConfig.loc#chmod755/var/opt/oracle/srvConfig.loc #chownoracle:dba/var/opt/oracle/srvConfig.loc并在srvConfig.loc文件中添加以下内容: srvconfig_loc=/oradata/srvm.dbf (9). 配置环境变量在standby库两个节点的oracle用户初始化.bash_profile文件中添加下列内容:if $USER = oracle ; thenulimit -u 16384 -n 65536fiORACLE_BASE=/oradataORACLE_HOME=/opt/oracle/product/9.2.0ORACLE_TERM=xtermNLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/libPATH=$HOME/bin:$ORACLE_HOME/bin:$PATHexport LIBPATH=$ORACLE_HOME/lib:/usr/lib:/lib:/usr/local/libexport ORACLE_BASE ORACLE_HOME ORACLE_TERM NLS_LANG ORA_LNS33 LD_LIBRARY_PATH PATHLD_ASSUME_KERNEL=2.4.1ORACLE_SID=crmstd1 export ORACLE_SIDumask 022注:主机crm-std1设置ORACLE_SID= crmstd1主机crm-std2设置ORACLE_SID= crmstd2(10). 安装集群软件及数据库软件可将已有primary库任一节点上的oracle软件拷贝到crm-std1和crm-std2主机的相同路径下。或者,按照之前提供的rac安装文档,安装Oracle Cluster Manager及Oracle 数据库软件,并升级到9.2.0.8。(11). 修改Oracle Cluster Manager配置文件。编辑standby库各节点的 $ORACLE_HOME/oracm/admin/cmcfg.ora 文件节点crm-std1-ClusterName=Oracle Cluster Manager, version 9iMissCount=210PrivateNodeNames=crm-std1-priv crm-std2-priv PublicNodeNames=crm-std1 crm-std2 ServicePort=9998CmDiskFile=/oradata/quorum.dbfHostName=crm-std1KernelModuleName=hangcheck-timer节点crm-std2-ClusterName=Oracle Cluster Manager, version 9iMissCount=210PrivateNodeNames = crm-std1-priv crm-std2-priv PublicNodeNames = crm-std1 crm-std2 ServicePort=9998CmDiskFile=/oradata/quorum.dbfHostName=crm-std2KernelModuleName=hangcheck-timer(12). 加载hangcheck-timer模块$modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180为了开机既加载此模块,应将此命令写到/etc/rc.local开机执行脚本中。(二)、配置rac架构data guard1、修改standby库两个节点的$ORACLE_HOME/network/admin/tnsnames.ora文件内容如下CRM = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = CRM-RAC01)(PORT = 1521) (ADDRESS = (PROTOCOL = TCP)(HOST = CRM-RAC02)(PORT = 1521) (ADDRESS = (PROTOCOL = TCP)(HOST = CRM-RAC03)(PORT = 1521) (ADDRESS = (PROTOCOL = TCP)(HOST = CRM-RAC04)(PORT = 1521) (LOAD_BALANCE = yes) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = CRM) ) )STAND = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = crm-std1)(PORT = 1521) (ADDRESS = (PROTOCOL = TCP)(HOST = crm-std2)(PORT = 1521) (LOAD_BALANCE = yes) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = CRM) ) )REMOTE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = remote)(PORT = 1521) ) (CONNECT_DATA = (SERVICE_NAME = CRM) (INSTANCE_NAME = remote) ) )2、修改standby库两个节点的 $ORACLE_HOME/network/admin/sqlnet.ora文件添加 SQLNET.EXPIRE_TIME=23、primary库端配置及操作(1). 将primary库设为force logging模式SQL ALTER DATABASE FORCE LOGGING;(2). 停止primary库的所有实例,将primary库做一个全库的冷备份。停止primary库的所有实例,关闭数据库。将所有数据文件,日志文件,临时表空间文件 拷贝到 /oradata/stand/ 相应目录下。mkdir p /oradata/stand/data/crm/ mkdir p /oradata/stand/index/crm/ mkdir p /oradata/stand/lob/crm/ mkdir p /oradata/stand/other/crm/ mkdir p /oradata/stand/spfile/crm/ cp /oradata/data/crm/* /oradata/stand/data/crm/ cp /oradata/index/crm/* /oradata/stand/index/crm/ cp /oradata/lob/crm/* /oradata/stand/lob/crm/ cp /oradata/other/crm/* /oradata/stand/other/crm/ cp /oradata/spfile/crm/* /oradata/stand/spfile/crm/(3). 重新启动primary库,并创建standby控制文件。SQL startup;SQL ALTER DATABASE CREATE STANDBY CONTROLFILE AS /oradata/stand/stand.ctl;(4). 创建pfileSQL CREATE PFILE=/oradata/stand/initcrm.ora FROM SPFILE;(5). 将数据文件、日志文件、临时文件,控制文件,参数文件 拷贝到standby库的共享存储上。1).在standby库的共享存储上创建相同的目录结构。mkdir p /oradata/data/crm/mkdir p /oradata/index/crm/mkdir p /oradata/lob/crm/mkdir p /oradata/other/crm/mkdir p /oradata/spfile/crm/mkdir p /opt/oracle/admin/crm/bdumpmkdir p /opt/oracle/admin/crm/cdumpmkdir p /opt/oracle/admin/crm/udump2). 将备份的主库数据文件、日志文件、临时文件拷贝到standby库的共享存储上scp /oradata/stand/data/crm/* crm-std1:/oradata/data/crm/ scp /oradata/stand/index/crm/* crm-std1:/oradata/index/crm/ scp /oradata/stand/lob/crm/* crm-std1:/oradata/lob/crm/ scp /oradata/stand/other/crm/* crm-std1:/oradata/other/crm/ scp /oradata/stand/spfile/crm/* crm-std1:/oradata/spfile/crm/ 3). 将生成的standby 控制文件拷贝到 standby 库的共享存储上并重命名。scp /oradata/stand/stand.ctl std1:/oradata/data/crm/control01.ctl scp /oradata/stand/stand.ctl std1:/oradata/index/crm/control02.ctlscp /oradata/stand/stand.ctl std1:/oradata/lob/crm/control03.ctl 4). 将主库的文本参数文件拷贝到standby库的共享存储上。scp /oradata/stand/initstd.ora std1:/oradata/spfile/crm/4、 在standby库两个节点上上分别创建密码文件crm-std1oraclecrm-std1$ orapwd file=$ORACLE_HOME/dbs/orapwcrmstd1 password=sys entries=5;crm-std2oraclecrm-std2 $ orapwd file=$ORACLE_HOME/dbs/orapwcrmstd2 password=sys entries=5;5、 生成standby库参数文件。 (1). 修改standby库共享存储上/oradata/spfile/crm/initstd.ora文件。修改下列内容-*.cluster_database_instances=2*.cluster_database=TRUE*.db_name=CRM*.log_archive_start=TRUE *.log_archive_format=%t_%s.dbf /*归档文件格式中必须包含%t (线程号)参数*/*.log_archive_dest_1=(LOCATION=/oradata/arch/crm/ mandatory)*.standby_archive_dest=/oradata/arch/crm/*.standby_file_management=AUTO*.remote_archive_enable=TRUEcrmstd1.instance_name=crmstd1crmstd2.instance_name=crmstd2crmstd1.instance_number=1crmstd2.instance_number=2crmstd1.thread=1crmstd2.thread=2crmstd1.undo_tablespace=UNDOTBS1crmstd2.undo_tablespace=UNDOTBS2*.fal_client=STAND*.fal_server=CRM 注意:由于此参数文件是由primary库生成,应将参数文件中与primary库实例有关的特殊条目删除。如:crm3.instance_name 、crm3.thread、crm3.undo_tablespace等参数。(2). 生成standby库的SPFILE 在任一standby节点上用oracle用户执行-# sqlplus /nolog# conn /as sysdba;SQL create spfile=/oradata/spfile/crm/spfilecrmstd.ora from pfile=/oradata/spfile/crm/initstd.ora;(3).在standby库的两个节点,分别创建文本参数文件,指向新生成的SPFILE。 crm-std1# echo spfile=/oradata/spfile/crm/spfilecrmstd.ora $ORACLE_HOME/dbs/initcrmstd1.oracrm-std2# echo spfile=/oradata/spfile/crm/spfilecrmstd.ora $ORACLE_HOME/dbs/initcrmstd2.ora6、 启动standby库两个节点上的oracm $ su root /*从oracle用户带环境变量,切换到root用户*/ # $ORACLE_HOME/oracm/bin/ocmstart.sh7、 启动standby库到mount状态。 在两个节点依次执行SQLhost lsnrctl startSQLconn /as sysdba;SQLalter database nomount;SQLalter database mount standby database;8、 在standby库创建standby logfile使用max protection 或 max aviliable 级别data guard 需要在standby 库创建 standby logfile.SQLalter database add standby logfile group 11 (/oradata/other/crm/crm_std_redo_11.log) size 50m, group 12 (/oradata/other/crm/crm_std_redo_12.log) size 50m, group 13 (/oradata/other/crm/crm_std_redo_13.log) size 50m, group 14 (/oradata/other/crm/crm_std_redo_14.log) size 50m, group 15 (/oradata/other/crm/crm_std_redo_15.log) size 50m, group 16 (/oradata/other/crm/crm_std_redo_16.log) size 50m, group 17 (/oradata/other/crm/crm_std_redo_17.log) size 50m, group 18 (/oradata/other/crm/crm_std_redo_18.log) size 50m, group 19 (/oradata/other/crm/crm_std_redo_19.log) size 50m, group 20 (/oradata/other/crm/crm_std_redo_20.log) size 50m, group 21 (/oradata/other/crm/crm_std_redo_21.log) size 50m;注:(1)standby库上standby logfile 的组数量,至少要比主库的日志组多一个。(2)另外,还必须注意控制文件的最大日志组限制,如果超过了最大日志组数量的限制,则需要重新创建控制文件。(3)若想要在primary库和standby库间自由切换角色,则primary库也应增加standby logfile。9、修改primary库初始化参数,将数据库置于max availability 保护模式。(1).关闭数据库的集群属性(修改数据库的保护模式要在单实例状态下修改)。SQLalter system set cluster_database=false scope=spfile;(2).添加归档目的地。SQLalter system set log_archive_dest_2=service=stand LGWR SYNC AFFIRM reopen=5 scope=spfile;(3). 若需要primary库和standby库可自由切换,可再设置以下参数。SQLalter system set standby_archive_dest=/oradata/arch/crm/;SQLalter system set fal_client=CRMSQLalter system set fal_server=STAND (4).停止primary库的所有实例。(5).在primary库的任意一个节点,将primary库启动到mount状态,并修改数据库保护模式。SQLstartup mount;SQLalter database set standby database to MAXIMIZE AVAILABILITY;(6).恢复primary库的集群属性,并启动数据库(启动所有节点实例)。SQL alter system set cluster_database=TRUE scope=spfile;SQLshutdown immediate;SQLstartup; 注意:1. 如果standby 库没有启动或没有启动监听,则primary库在启动时会由于LGWR进程无法找到归档目的地而导致实例崩溃,数据库无法启动。2. 不建议将primary 库设为 Max Protection 保护模式,在此模式下,primary库和standby 库都无法正常停库,且如果standby库出现异常,会导致primary库挂起。10、将standby库置于自动应用归档模式。此操作在standby的一个节点上,或所有节点上做都可以。SQLalter database recover managed standby database disconnect from session;11、至此RAC 架构Data Guard配置完成。可用下列命令在standby库检查日志及归档是否成功接收及应用。SQLselect sequence#,archived,applied from v$archived_log order by sequence#;SQLselect group#,thread#,sequence#,used,archived,status from v$standby_log;二、异地单机Data Guard1、设置主机名,修改hosts文件(1). 修改/etc/sysconfig/network文件,将hostname的值改为remote。(2). 修改remote主机的/etc/hosts 文件内容如下-# for standby192.168.1.151 crm-std1192.168.1.152 crm-std210.1.1.151 crm-std1-priv10.1.1.152 crm-std2-priv# for remote 192.168.10.51 remote# Primary db network192.168.9.51 CRM-RAC01192.168.9.53 CRM-RAC02192.168.9.52 CRM-RAC03192.168.9.54 CRM-RAC0410.1.1.51 CRM-RAC01-priv10.1.1.53 CRM-RAC02-priv10.1.1.52 CRM-RAC03-priv 10.1.1.54 CRM-RAC04-priv2、修改环境变量在初始化.bash_profile文件中添加下列内容:if $USER = oracle ; thenulimit -u 16384 -n 65536fiORACLE_BASE=/oradataORACLE_HOME=/opt/oracle/product/9.2.0ORACLE_TERM=xtermNLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/libPATH=$HOME/bin:$ORACLE_HOME/bin:$PATHexport LIBPATH=$ORACLE_HOME/lib:/usr/lib:/lib:/usr/local/libexport ORACLE_BASE ORACLE_HOME ORACLE_TERM NLS_LANG ORA_LNS33 LD_LIBRARY_PATH PATHLD_ASSUME_KERNEL=2.4.1ORACLE_SID=remoteexport ORACLE_SIDumask 0223、安装Oracle软件,并升级到9.2.0.8。 4、修改 $ORACLE_HOME/network/admin/tnsnames.ora文件CRM = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = CRM-RAC01)(PORT = 1521) (ADDRESS = (PROTOCOL = TCP)(HOST = CRM-RAC02)(PORT = 1521) (ADDRESS = (PROTOCOL = TCP)(HOST = CRM-RAC03)(PORT = 1521) (ADDRESS = (PROTOCOL = TCP)(HOST = CRM-RAC04)(PORT = 1521) (LOAD_BALANCE = yes) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = CRM) ) )STAND = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = crm-std1)(PORT = 1521) (ADDRESS = (PROTOCOL = TCP)(HOST = crm-std2)(PORT = 1521) (LOAD_BALANCE = yes) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = CRM) ) )REMOTE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = remote)(PORT = 1521) ) (CONNECT_DATA = (SERVICE_NAME = CRM) (INSTANCE_NAME = remote) ) )5、修改 $ORACLE_HOME/network/admin/sqlnet.ora 文件添加 SQLNET.EXPIRE_TIME=26、将数据文件、日志文件、临时文件,控制文件,参数文件 拷贝到remote主机。(1).在remote主机上创建相同的目录结构。mkdir p /oradata/data/crm/mkdir p /oradata/index/crm/mkdir p /oradata/lob/crm/mkdir p /oradata/other/crm/mkdir p /oradata/spfile/crm/mkdir p /opt/oracle/admin/crm/bdumpmkdir p /opt/oracle/admin/crm/cdumpmkdir p /opt/oracle/admin/crm/udump(2). 将备份的primary库数据文件、日志文件、临时文件拷贝到remote主机在primary库的任一节点上执行-scp /oradata/stand/data/crm/* remote:/oradata/data/crm/ scp /oradata/stand/index/crm/* remote:/oradata/index/crm/ scp /oradata/stand/lob/crm/* remote:/oradata/lob/crm/ scp /oradata/stand/other/crm/* remote:/oradata/other/crm/ scp /oradata/stand/spfile/crm/* remote:/oradata/spfile/crm/ (3). 将生成的standby 控制文件拷贝到 remote主机并重命名。在primary库的任一节点上执行-scp /oradata/stand/stand.ctl remote:/oradata/data/crm/control01.ctl scp /oradata/stand/stand.ctl remote:/oradata/index/crm/control02.ctlscp /oradata/stand/stand.ctl remote:/oradata/lob/crm/control03.ctl (4). 将主库的文本参数文件拷贝到crm-std1/crmstd2主机的共享存储上。在primary库的任一节点上执行-scp /oradata/stand/initstd.ora remote:/oradata/spfile/crm/ 7、 在remote主机上创建密码文件oracleremote$ orapwd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年下半年七都建发集团人才引进若干名易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年“才聚齐鲁成就未来”山东健康集团管培生招聘15名易考易错模拟试题(共500题)试卷后附参考答案
- 2025山西省晋中市左权文旅运营管理发展限公司招聘工作人员若干名易考易错模拟试题(共500题)试卷后附参考答案
- 2025山东邮政春季校园招聘396人易考易错模拟试题(共500题)试卷后附参考答案
- 2025山东种业集团限公司校园招聘71人易考易错模拟试题(共500题)试卷后附参考答案
- 2025山东文昌湖省级旅游度假区招聘新闻宣传工作人员1人易考易错模拟试题(共500题)试卷后附参考答案
- 2025届锦西石化分公司高校毕业生春季招聘5人易考易错模拟试题(共500题)试卷后附参考答案
- 2025届上海申通地铁集团限公司高校毕业生招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2025安徽省皖能江南建设发展限责任公司招聘1人易考易错模拟试题(共500题)试卷后附参考答案
- 2025安庆12345政务服务热线招聘10人易考易错模拟试题(共500题)试卷后附参考答案
- 智能建造施工方案设计
- 2025至2030全球及中国汽车方向盘开关行业发展趋势分析与未来投资战略咨询研究报告
- 2025江苏南通市公安局招聘警务辅助人员66人考前自测高频考点模拟试题及答案详解(历年真题)
- 2025年上半年山东铁投集团校园招聘、社会公开招聘165人模拟试卷含答案详解
- 科技辅导员认证笔试初级试题含答案
- 雨污水管线及设施提升改造工程可行性研究报告
- 语文数字化教学课件
- 配电柜内部改造施工方案
- 临床医学职业生涯规划
- 2025年中国电信股份有限公司芜湖湾沚分公司招聘客户经理考试参考题库及答案解析
- 电子商务与实体店融合模式可行性分析报告
评论
0/150
提交评论