异构数据库访问_第1页
异构数据库访问_第2页
异构数据库访问_第3页
异构数据库访问_第4页
异构数据库访问_第5页
已阅读5页,还剩36页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle异构服务

(HeterogeneousService,HS)

【摘要】:异构数据库之间的数据访问,是有肯定难度的。该文研讨

异构数据库之间的数据访问方案,并分别样细论述通过使用ORACLE

公司供应的一般连接(GenericConnectivity)和透亮网

关技术来实现ORACLE数据库与SQLSERVER数据库间的数据访问。

【关键词】:异构数据库;一般连接(GenericConnectivity);透亮

网关

一、引言

数据库技术讯速进展的今日,面对许多企业使用不至一种数据库软件。例

如保险公司,总公司因业务量浩大,因而使用大型数据库来存储数据,如Oracle、

Db2等,而各地的分支公司也都有自己的数据库系统,如:Informix>Sqlserver

等。总公司需要实现和各个分支公司的数据实现互联互通,能够调用各个分支公

司的数据库。这就涉及异构数据库系统之间的数据共享问题,如何在这些异构数

据库系统之间实现数据的共享呢?

二、OracleHS(HeterogeneousServices)深化解析

及协同Gateway工作流程

在企业里,通常可能有多种数据源,并且他们是异构的。所谓的异构就是

说他们是不同的产品,例如:OracleDatabase,MSSQLServer,IBMDB2,Sybase

ASE,MySQL,PostgreSQL,Excel,XML,Txt或者CSV等用于存放数据的产品

或者文件。

那么假设我们需要这些异构的数据源同OracleDatabase做交互,那么我

们应当如何做呢?首先来看看Oracle数据库如何同异构数据源作数据交互。

图1

上图是一张Oracle异构连接处理的架构图,其中我们可以看到主要的非

数据源模块包括有HS(HeterogeneousService),Agent.还有一个远程数据库,

我们假设它是异构的数据源。

可以看到,Oracle是不能直接同这些异构数据源作交互.Oracle是需要通

过HeterogeneousServices协同Agent才能和异构数据源作数据交互。

2.1、异构服务HS

异构服务HS是OracleDatabase的一个组件,它用于同Non-OracleSystem

作数据交互。HS的作用:它告知Agent它要同异构数据源作交互,并且让他知

道,它要什么数据,什么样的数据,如何处理数据(如类型,方法等)

2.2、HS模块

HS主要包含事务服务和结构化查询语言服务两个模块:

2.2.1、事务服务(TransactionService)

TransactionService使异构数据源尽可能的集成进Oracle数据库服务器

里的事务和会话中。所以当你访问一个异构数据源的时候,你使用Oracle用

户当前的会话来通过数据库连接(DatabaseLink)在异构数据源建立相应的认证

会话(访问异构数据源的认证信息由用户供应或者DatabaseLink已经指定)。

同样,当用户关闭了当前Oracle的Session(会话),那么异构数据源上的相应

会话也随之关闭。Oracle此外支持Oracle分布式的访问异构数据源的事务。

2.2.2、结构化查询语言服务服务(SQLService)

SQLService用于处理全部的SQL相关的操作,包括有:

1)使Oracle内部SQL相关的调用映射成HS驱动的API.这些会一次被

驱动映射到异构数据源的客户端API.

2)翻译SQL语句。把Oracle的SQL语句翻译成相关的异构数据源的SQL

语句。

3)翻译通过引用Oracledatadictionary的相关表的查询语句,使之变成

可以从异构数据源的datadictionary里猎取所需信息的查询语句

4)转换异构数据源和Oracle数据库之间的数据类型

5)弥补在异构数据源中不存在的函数方法等,使之变成多条产需语句来猎

取相应的结果。

2.3、HS配置信息

HS的组件里有许多常见的编码,并且它被配置用于同许多不同的异构数据

源一起协同工作。每个gateway都有这些配置信息,并且存在在相应的驱动模块

中(Drivermodule),这些信息会在HS和Gateway/Agent的连接建立后立刻被上

传到Oracle服务器。这些配置信息包括有:

2.3.1、DataDictionaryTranslationViews

数据字典转换视图是以视图的方式存在于异构数据源的数据字典表里。它

关心HS像引用Oracle的Datadictionary表一样来饮用异构数据源的数据字典。

2.3.2>HeterogeneousServicesInitializationParameters

HS初始化参数主要供应两个方面的功能:

1)供应一个良好的调整gateway的手段,使gateway和HS组件的性能和内

存的使用得到优化。

2)配置异构数据源的信息.例如配置了多少个异构数据源,它们都运行了

什么语言,都有哪些属性。相关当前会话的这些参数的设置信息,我们可以通过

查询表V$HS_PARAMETER来得到。可以在gateway的初始化文件里进行设置更改。

2.3.3、Capabilities

功能性就是告知HS异构数据源中有哪些类型的SQL语句不支持,如何转换

映射这些SQL表达式到异构数据源里。

2.4、HSDataDictionary

上面我们提到,配置信息。配置信息会在HS和Agent建立连接后,立刻被

Agent上传到HS组件。那么上传后,它们都被存储与HSDataDictionary表中。

并且直到Agent的变化,这些信息才会被相应的掩盖,修改。

下面我们讲解下这些DataDictionary的相关信息,使用HS可以从同一个

Oracle数据库访问多个异构数据源,如下图所示:

图2

两个Agent都会把配置信息上传上去,各自存在到HSDataDictionary

table中。那么这些信息是怎么归纳起来的?HS把这些信息按两个层次来分:

2.4.1、Class

Class是根据相关类型的产品来分。例如Sybasedatabasesystems,SQL

Serverdatabasessystem各分到一类里面。

2.4.2、Instance

实例是基于class来定义的。例如SQLServer数据库这个class里面有多

个实例。所以一个class被多个特定的instance所共享。所以假设oracle数据

库要访问5个SQLServer的实例和2个MySQL的实例,那么Oracle数据库就需

要两个class定义来访问他们。一个用于定义SQLServer,一个用于定义MySQL.

同样,在这两个class中分别定义了5个和2个instance的定义。同时这里需

要留意,instance层的容量和数据字典的信息都是会话信息,所以它们不能存

在在oracle数据库中的HS数据字典中。但是,instance的初始化参数可以存

在在数据库中。在HS的数据字典视图(DataDictionaryviews)中都包含了一下

信息:

1)被上传到Oracledatadictionary的instances和classes的名称

2)功能性,包括为每个class和instance定义的SQL事务

3)为每个class和instance定义的数据字典转化关系

4)为每个class和instance定义的初始化参数

这些视图又主要被分成三大类:

1)常规视图

2)TransactionService视图

3)SQLService视图

2.5、AgentComponent

AgentComponent包括AgentGenericCode和Driver

AgentGenericCode用于在异构数据源上执行数据操作或者检索.它负责

接收命令,执行命令,猎取执行结果。

Driver是AgentGenericCode和命令执行地交互的桥梁。没有它,Agent

GenericCode就不能和异构数据源交互。

AgentGenericCode好比一个要到河对岸办事的人,Driver就好比到对岸

的交通工具,例如桥。

Agent可以和异构数据源安装在同一台计算机上,可以同Oracle安装在同

一台计算机上,它可以同Oracle和异构数据源都分别开而安装在单独的一台计

算机上。

2.6、OracleAgent

Oracle为Agent供应了许多类型,由于不同的数据库厂商所使用的标准不

一样,这些Agent通过Oracle产品主要封装在以下两种产品中:

2.6.1>OracleDatabase

在OracleDatabase中,默认安装的是ODBCAgent,用于同当前系统的ODBC

来做交互。从而由系统来负责Driver.相应的AgentGenericCode是

dg4odbc.exe,这个程序可以在ORACLE_HOME/bin名目下找到。

2.6.2、OracleTransparentGateway

Oracle透亮网关(TransparentGateway),它是包含在Oracle

数据库中的一个模块,用来访问其它非Oracle数据库。透亮网关的

功能较强,它通过代理进程从OracleServer访问各地的异构分布式数据库,而

供应应用户的感觉是这些数据库仍旧是Oracle数据库,Oracle公司供应对大多

数商业数据库的透亮网关。通用连接则有较多限制,它使用用户自己

供应的ODBC或OLEDB驱动程序作为异构服务的代理驱动,并且要求这些驱动必

需要安装在OracleServer的$ORACLE_HOME名目下。关于透亮网关

的留意事项:

1)OracleForSQLServer的透亮网关在UNIX下无法实现,

目前只支持WIN;缘由很简洁,SQLServer本身不支持UNIX,所以Oracle也

无法直接在UNIX下访问SQLServero因此网关程序tg4msql仅包含在Oracle

Databaseforwindows中。

2)OracleFor其它数据库的透亮网关,如SYBASE等有UNIX

本版本的数据库在UNIX可以实现。

3)Oracle透亮网关软件在Oracle8i时是需要花钱另买的,

大约1万$;到Oracle9i时是作为数据库的一个组件免费发布的。安装时在组

件种选择即可。

4)针对我们的实际应用,假如有需要实现Oracle到SQLServer的互连,

我们需要此外用一台WIN下的Oracle9i来做透亮网关服务器,其它

UNIX下的Oracle通过这个透亮网关来访问SQLServer。

5)不同数据库间的数据处理需使用标准SQL来实现。

6)各数据库中特别的数据类型,需要在程序中实现转换,应尽量避开使用

无法转换的数据类型。

2.7、HS和Gateway工作原理

我们来整体看一下HS和Gateway是如何系统工作的:

E

❹O

一V

A

A」A❸S

e6

q一U

umQ

m❺J

GO

Js一-

O❻U

-2

图3

(1)客户端从OracleDatabase恳求数据。用户发送的是Oracle标准的SQL

语句,在Oracle数据库上创建了一个Session。

(2)HS和Gateway协同工作,HS把Oracle的SQL语句转换成non-Oracle

数据库可以正确运行的语句。

a)HS和Gateway建立连接

b)HS猎取相关的non-OracleSystem的配置信息,如它是什么类型的数据

库产品(SQLServer或者MySql,Sybase)等等属性

c)HS通过DataDictionaryView来识别该non-Oraclesystem的功能特

征等各项属性,相应的转化Oracle标准的SQL语句成non-Oraclesystem兼容

的语句

(3)Oracle数据库把转换后的SQL语句通过OracleNet发送到Gatewayo

(4)Gateway使用相关的用户名密码登陆到non-Oraclesystem,建立连接,

执行SQL语句。

a)HS通过Gateway与Non-OracleSystem建立连接,创建临时的Database

Link.

b)Gateway使用DatabaseLink指定的用户名及其密码登陆non-Oracle

system

c)Gateway登陆胜利则创建Gateway与non-OracleSystem之间的会话,

并且DatabaseLinkOpen

d)Gateway把SQL语句通过建立的会话发送给non-oraclesystem执行

(5)Non-OracleSystem返回运行SQL语句后的结果给Gateway。

(6)Gateway翻译/格式化返回的结果使其能被Oracle数据库的所兼容。

(7)把Gateway执行后的结果通过OracleNetService返回给Oracle数据

库。

(8)Oracle数据库服务器通过OracleNet把结果返回给客户端。并且数

据库的databaselink始终打开这,直到gateway的会话结束或者databaselink

显式的关闭它。

在上述步骤中,第⑵步,Gateway通过本地的配置来调用相关的HS服务

程序和驱动与异构数据源作交互。例如:

1)在配置initXXX.ora的时候,里面填写的主要是异构数据源的Address

信息,如主机名称/地址,端口,实例名称,数据库等等信息。

2)在配置listener.ora的时候,里面就纪录了需要使用什么Agent

GenericCode程序,需要通过什么使用到驱动。比如访问MSSQLServer,需要用

到的AgentGenericCode程序是dg4msql,驱动在

Orac1e_Gateway_Home\dg4msq1\driver\lib文件夹下。(假如Gateway安装在

Windows下,默认不需要指定Driver的路径)

三、异构数据访问详细实现过程

由于数据库系统的类型不同,异构数据库间的数据访问方式也不尽相同。本

文着重争论通过ORACLE公司供应的,一般连接(GenericConnectivity)和透亮

网关技术,来实现异构数据库间的访问。

3.1、一般连接(GenericConnectivity)的实现方法

♦测试环境:

Oracle数据库服务器

操作系统:RedHatEnterpriseLinuxServerrelease5.5

数据库版本:

Forlinux

一般连接(GenericConnectivity)ODBC服务器

主机:192.168.1.98

操作系统:win2003

数据库版本:OracleDatabase10gEnterpriseEditionRelease10

Forwindows

SQLServer数据库服务器

操作系统:winxpsp3

数据库版本:SQLServer2022sp2

♦配置到SQLServer2022的一般连接

-'ODBC数据源管理器

确定|取消|应用(&)|帮助|

点添加

创建新数需液2d

选择您想为其安装数据源的驱动程序⑤).

名称________________________________

MicrosoftFoxProVFPDriver(*.dbf)

MicrosoftODBCforOracle

MicrosoftParadoxDriver(*.db)

MicrosoftParadox_Treiber(*.db)

MicrosoftTextDriver(*.txt;*.csv)

MicrosoftText-Treiber(*.txt;acsv)

MicrosoftVisualFoxProDriver

MicrosoftVisualFoxPro-Treiber

OracleinOraDblOg_homel

后QLSwryer

±1

:上一步回I完成I取消I

选择SQLServer,点完成

创建到SQLServer的新数据源a

此向导将帮助建立一个能用于连接SQLServer的ODBC数据源。

-SQLServerzoe您想用什么名称来命名数据源?

名称®):|sq12008-

您希望如何描述此数据源?

描述也):|sql2008

您想连接哪一个SQLServer?

IXA6YRFHDHVHCMSQL2U08]

完成I下一步但)>1取消|帮助

填写数据源名称并选择连接的数据库,点下一步

创建到SQLServer的新数据源

SQLServer应该如何蛉证登录ID的真伪?

^SQLServerxjoe

C集成Windows身份验证也)。

SPH何选)@):|

G使用用户输入登录ID和密码的SQLServer验证⑤)。

登录IDQ.):[sa

密码(£):F

V连接SQLServer以获得其它配置选项的默认设置

<上一步但)|下一步国)>|取消|帮助

选择SQLServer验证,如上填写登录数据库的用户名及密码。点下一步

如上选择连接的默认数据库,点下一步

如上选择语言为SimplifiedChinese,点完成

点测试数据源对创建的数据源来进行测试。

点确定

ODBCMicrosoftSQLServer安装区

将按下列配置创建新的ODBC数据源:

MicrosoftSQLServerNativeClient版本-4000

数据源名称:sql2008

数据源描述:sql2008

服务器:UMXA6YRFHDHVHCM\SQL2008

使用集成安全机制:Ho

数超库:oragateway

语言:SimplifiedChinese

数据加密:No.

TrustServer证书:Ho

MultipleActiveResultSets价ABS):No

镜像曲务器:

翻译字符数据:Yes

日志长运行查询:No

日志驱动程序统计:No

使用区域设置:No

使用ANSI引用的标识符:Yes

使用ANSI的空值,埴充和警告:Yes

迎这数通源:①;二确定|取消

点确定,完成数据源的创建。

创建参数文件

需要在$ORACLE_HOME\hs\admin名目下创建initsql2022.ora文件如下:

HS_FDS_CONNECT_INFO=sql2022

HS_FDS_TRACE_LEVEL=OFF

配置监听

在$ORACLE_HOME\network\admin名目下的listener,ora文件中加入下面的内容

(SID_DESC=

(PROGRAM=hsodbc)

(SID_NAME=sql2022)

(ORACLE_HOME=C:\oracle\product\10.2.O\db_l)

)

配置tnsnames.ora文件如下:

sq12008=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=8)(port=1521))

(CONNECT_DATA=

(SID=sql2008)

(HS=OK))

创建DBLINK

♦Linux平台

Linux平台的oracleDBLINK是之前做OracleGateway测试时已创建好的,直

接执行查询报错如下

SQL>select*fromstudent@sql2008;

select*fromstudent@sq12008

ERRORatline1:

ORA-28500:connectionfromORACLEtoanon-Oraclesystemreturnedthismessage:

[GenericConnectivityUsingODBC][Microsoft][ODBC城动程序管理器]

未发现数据源名称并且未指定默认驱动程序(SQLState:IM002;SQLCode:0)

ORA-02063:preceding2linesfromSQL2008

SQL>B

查找缘由发觉是由于我创建的数据源是用户DSN

改建为系统DSN后解决了故障,查询正常了

SQL>select*fromstudent@sql2008;

stuidstunamestu_sexstu_age

0o1代学935

-7

0o2张w25

萍-

0o3甘,29

n>

0o4保n29

-\

0o5田29

6王33

0O7张33

7rowsselected.

♦Windows平台

sysPPROOcreatepublicdatabaselinksql2008connecttosaidentifiedbydaixuej?71208usingJsql2008f;

数据库链接己创造

执行查询时报错如下:

sysPPROOselect*fronstuden他ql20M;

select*fronstudent@sql20O8

*

ORD-28500:ORACLE辨Oracle辍腌@雌息:

[GenericConnectivityUsingODBCKNicrosoftKODBCSQLServerDriver】触Server!^M赫朱服(SQLState:28000;SQLCode:18456)

OKO-02063:雅着2lines(确SQL2脚

删除DBLINK并重建后胜利执行查询,如下

JysOPROC>droppublicdatabaselinksql2008;

数据库链接己删除。

>ysPPR0C>createpublicdatabaselinksql2008connectto°sa°identifiedbyUdaixueJ771208°using*sql2008f;

数据库链接己创建。

;ys(?PR0C>select*fromstudent0sqi2008;

5tu_idstu_namestu_sexstu_age

代俊

301凳35

2^

30十25

303^丽29

304斌29

305田29

jr王33

307张33

己选择7行。

测试select

SQL>select*fromstudent@sql2008;

stu_idstu_namestu_sexstu_age

代学

0o1男35

0o2张25

0o3甘29

0o4保29

0o5田29

6王33

0O7张33

7rowsselected.

测试insert

SQL>insertintostudent@sql2008values。008,王键','男35);

1rowcreated.

SQL>insertintostudent@sql2008values。009'J李建国'「男30);

1rowcreated.

SQL>commit;

8mmitcomplete.___________________________________________________

SQL>select*fromstudent@sql2008;

stu_idstunamestu_sexstu_age

0o1学35

0o2华25

0o3丽29

0o4生29

0o5鑫29

6小33

0o7峰33

0o8键35

09建30

O国

9rowsselected.

QL>・

测试update

SQL>updatestudent@sq12008setstu_id='006wherestu_name'=王小军;

1rowupdated.

SQL>select*fromstudent@sql2008;

stu_idstu_namestu_sexstu_age

代学

OO1男35

OO2女25

OO3女29

OO4男29

OO5男29

OO6男33

OO7男33

王5

OO8男3

9李30

OO男

9rowsselected.

SQL>

3.2、透亮网关(TransparentGateway)实现方法

♦测试环境:

Oracle数据库服务器

操作系统:RedHatEnterpriseLinuxServerrelease5.5

数据库版本:

Forlinux

透亮网关(TransparentGateway)服务器

主机:192.168.1.198

操作系统:RedHatEnterpriseLinuxServerrelease5.4

OracleGateway版本:OracleDatabaseGateway11For1inux

SQLServer数据库服务器

操作系统:winxpsp3

数据库版本:SQLServer2022sp2

♦配置到SQLServer2022的透亮网关连接

1、安装gateway

从下载gateways安装包1inux」lgR2_gateways.zip

解压linux_llgR2_gateways.zip后会生成gateways名目,进入gateways名目,

执行runinstaller

foracle^redhat5:^/gateways«!□!x|

[oracle@redhat52]$Is

aFiedt.bufDesktophr.logspauto_rep.txt

awrgateways1inux_llgR2_9ateways♦zipsqlnet+log

dbca_raw_confighr.dmpspauto.lisstatspack_rep.txt

[oracle@redhat5"]$cdgateways/

[oracle@redhat5gateways]$♦/runInstaller|

点Next

'〈OracleUniversalInstaller:SpecifyHoaeDetails-1□!x|

ORACLGtqqg

DATABASE

SpecifyHomeDetails

Destination

Enterorselectanamefortheinstallationandthefullpathwhereyouwanttoinstalltheproduct.

Name:|OraGtwllg_homel-

p^th:|/u01/app/gateway▼Browse...

ProductLanguages...)

HelpiInstalledProducts...;BackNextJInstallCancel

点Next

、V°racleUniversalInstaller:AvailableProductConponents,!□!x|

oRAcue-qqg

DATABASE

AvailableProductComponents

OracleDatabaseGateways

ThefollowingarecomponentsthatyoucaninstallaspanofOracleDatabaseGateways.Whichofthese

componentsdoyouwanttoinstall?

ComponentsInstallStatus▲

QBOracleDatabaseGateways.0NewInstall

□OracleDatabaseGatewayforInformix.0NotInstalled

□OracleDatabaseGatewayforSybase.0NotInstalled

以OracleDatabaseGatewayforMicrosoftSQLServer.0NewInstall

□OracleDatabaseGatewayforTeradata.0NotInstalled

□OracleDatabaseGatewayforAPPC.0NotInstalled

□OracleDatabaseGatewayforWebSphereMQ.0NotInstalled

叼OracleDatabaseGatewayforODBC.0NewInstall

一3

ExpandAll)CollapseAll)SelectAll)DeselectAJIi

「Showallcomponents,includingrequireddependencies.

HelpjInsialled"oducts...)BackNextjInstallCancel)

选择上面两个组件,点Next

填写sqlserver数据库主机的主机名或IP地址,及sqlserverdatabaseserver

portnumber,以及instancename和databasename,完成后点Next连续

OracleUniversalInstaller:Suanary

oRACLe-qqg

DATABASE

Summary

OracleDatabaseGateways.0

^-GlobalSettings

-Source:/home/orade/gateways/stage/products.xml

-OracleHome:/uO1/app/gateway(OraGtwllg.home1)

1-Installation丁卯包Custom

qProduaLanguages

English

eSpateRequirements

L/Required1.10GB(includes86MBtemporary):Available1.47GB

i^-NewInstallations(67products)

-AgentRequiredSupportFiles.2

-AssistantCommonFiles.0

-BaliShare.0

-BuildtoolsCommonFiles.0

-ClusterVerificationUtilityCommonFiles.0

HelpjInstalled"oducts…)Back(InstallJCancelj

点Install开头安装

,|D|x|

ORACLE

DATABASE

Install

InstallingOracleDatabaseGateways1L2.0.L0

/Installationinprogress

Linkpending...

Setuppending.

Configurationpending...

Extractingfilesto'/uOl/app/gateway'

('topinygllatiorv)

Youcanfindthelogofthisinstallsessionat:

/uOl/app/oralnventory/logs/installActionsZOlZ-Oy-Z^oy-Bg-BBAM.Iog

Help1iinstalledproducts.尸Back.NextInstall)Cancel)

安装完成后如下,需要打开终端窗口,执行root,sh脚本

打开终端窗口,以root用户执行列表中的脚本

扃192.168.1.198-SecureCRT

文件但)编辑⑥查看W)选项(Q)传输(X)脚本⑤।工具[)帮助国)

覆的⑪WMi7趋的i0园,夕绻,必空噎

I192.168.1,198||192,168.1.198。)|

Lastlogin:MonJul2312:34:502012from02

[root@redhat5cd/uOl/app/gateway/

[root@redhat5gateway]#./root.sh

RunrringOracle11groot.shscript...

Thefollowingenvironmentvariablesaresetas:

ORACLE_OWNER=oracle

ORACLE_HOME=/uOl/app/gateway

Enterthefullpathnameofthelocalbindirectory:[/usr/local/bin]:

Copyingdbhometo/usr/local/bin...

Copyingoraenvto/usr/local/bin...

Copyingcoraenvto/usr/local/bin...

Entrieswi11beaddedtothe/etc/oratabfileasneededby

DatabaseConfigurationAssistantwhenadatabaseiscreated

FTmshedrunninggenericpartofroot.shscript.

Nowproduct-speci羊icrootactionswillbeperformed.

[root@redhat5gateway]#|

脚本执行完成后返回安装界面,点0K后开头配置监听

点Next连续

点Next连续

,1□!x|

点Next连续

点Next连续

点Next连续

点Next连续

-lalxi

X

Whenconnectingtoadatabaseorotherservice,youspecifya

connectidentifier,suchasanetservicen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论