SSHH网络工作室

2009年9月7日

微软图表控件MsChart使用初探(转)

微软发布了.NET 3.5框架下的图表控件,基本上能想到的图表都可以使用它绘制出来,给图形统计和报表图形显示提供了很好的解决办法,同时支持Web和WinForm两种方式,不过缺点也比较明显,只能在最新的开发环境中使用,需要.Net 3.5 Sp1以及VS 2008的开发环境。

下面是下载地址:

控件:Microsoft .NET Framework 3.5 的 Microsoft 图表控件(Microsoft Chart Controls for Microsoft .NET Framework 3.5)–

  1. 包含英文版,中文版。上面提供的链接是中文版的,可以更改为英文版。

  2. 语言包:Microsoft Chart Controls for Microsoft .NET Framework 3.5 Language Pack

  3. Microsoft .NET Framework 3.5 的Microsoft 图表控件 的语言包,包含23中语言。

  4. Microsoft Chart Controls Add-on for Microsoft Visual Studio 2008

    这个只有英文的,没找到中文的。

  5. 文档 (Microsoft Chart Controls for .NET Framework Documentation)

    这个只有英文的,没找到中文的。

  6. WinForm 和 Asp.net的例子(Samples Environment for Microsoft Chart Controls) –

    这个只有英文的,没找到英文的。

  7. Demo 下载:http://code.msdn.microsoft.com/mschart

 下了它的示例程序后,运行了一下,非常的强大,可以支持各种各样的图形显示,常见的:点状图、饼图、柱状图、曲线图、面积图、排列图等等,同时也支持3D样式的图表显示,不过我觉得最有用的功能还是支持图形上各个点的属性操作,它可以定义图形上各个点、标签、图形的提示信息(Tooltip)以及超级链接、Javascript动作等,而不是像其它图形类库仅生成一幅图片而已,通过这些,加上微软自己的Ajax框架,可以建立一个可以互动的图形统计报表了。

一。安装

     控件的安装相对比较简单,下载完后,先执行“MSChart.exe”程序,它会自动检测你的环境,安装到系统目录中去,如果要在VS 2008环境中直接使用,那么需要安装For Vs2008的插件,MSChart_VisualStudioAddOn.exe,还有一个中文语言包MSChartLP_chs.exe。安装完后,打开Vs2008,在建立项目的时候,你就能在工具栏中看到有一个Chart的控件了,如下图:

二。使用

    安装好后,建立一个.NET3.5的Web项目,像使用普通控件一样拖放到要使用的Web界面即可。初步研究了一下,整个图形控件主要由以下几个部份组成:

1.Annotations --图形注解集合

2.ChartAreas --图表区域集合

3.Legends      --图例集合

4.Series    --图表序列集合(即图表数据对象集合)

5.Titles    --图标的标题集合

Annotations注解集合

     Annotations是一个对图形的一些注解对象的集合,所谓注解对象,类似于对某个点的详细或者批注的说明,比如,在图片上实现各个节点的关键信息,如下图方框和黄色的小方框:

一个图形上可以拥有多个注解对象,可以添加十多种图形样式的注解对象,包括常见的箭头、云朵、矩行、图片等等注解符号,通过各个注解对象的属性,可以方便的设置注解对象的放置位置、呈现的颜色、大小、文字内容样式等常见的属性。

ChartAreas图表区域集合

    ChartAreas可以理解为是一个图表的绘图区,例如,你想在一幅图上呈现两个不同属性的内容,一个是用户流量,另一个则是系统资源占用情况,那么你要在一个图形上绘制这两种情况,明显是不合理的,对于这种情况,可以建立两个ChartArea,一个用于呈现用户流量,另一个则用于呈现系统资源的占用情况。

    当然了,图表控件并不限制你添加多少个绘图区域,你可以根据你的需要进行添加。对于每一个绘图区域,你可以设置各自的属性,如:X,Y轴属性、背景等。

需要注意的是,绘图区域只是一个可以作图的区域范围,它本身并不包含要作图形的各种属性数据。

多绘图区效果图如下,分为上下两个绘图区域,分别表示不同的绘图数据:

Legends图例集合

    Legends是一个图例的集合,即标注图形中各个线条或颜色的含义,同样,一个图片也可以包含多个图例说明,比如像上面说的多个图表区域的方式,则可以建立多个图例,每别说明各个绘图区域的信息,具体的图例配置说明此处就不详细说明了,可以参考一下官网的例子,写得丰富的详细了:)也上一张图例的效果图吧~

Series图表序列

     图表序列,应该是整个绘图中最关键的内容了,通俗点说,即是实际的绘图数据区域,实际呈现的图形形状,就是由此集合中的每一个图表来构成的,可以往集合里面添加多个图表,每一个图表可以有自己的绘制形状、样式、独立的数据等。

    需要注意的是,每一个图表,你可以指定它的绘制区域(见ChartAreas的说明),让此图表呈现在某个绘图区域,也可以让几个图表在同一个绘图区域叠加,如下图:

上面两幅图,分别表示了把图表放在不同的绘制区域和放在同一个绘制区域的情况。

     继续回到ChartAreas章节举的例子,同时要显示用户的流量还要显示系统的占用情况,对于这种时候,应该建立两个Series,一个用于呈现用户的流量,另一个则用于呈现系统的占用情况。它们分别属于各自的绘图区域。

Titles标题合集

    根据字面含义即可以理解,是图表的标题配置,同样可以添加多个标题,以及设置标题的样式及文字、位置等属性。多看一下它的属性即能明白各自的含义。

三。其它属性

    相对来说,我觉得比较有用的属性有三个,分别是:Label、Tooltip以及Url链接。

    Label即标签的含义,可以在图片的关键位置进行一些关键数字或文字的描述,如下图:

像上图:X轴和Y轴的文字便是标签,以及图表曲线中的红点上的文字,也是标签,添加了标签,可以让人更容易的对内容进行理解。

    Tooltip即提示的含义,用于在各个关键点,如:标签、图形关键点、标题等当鼠标移动上去的时候,提示用户一些相关的详细或说明信息,例如上图,可以给曲线中的每一个点增加Tooltip的属性,写上需要详细说明的内容,比如:详细的销售明细,那么,在鼠标移动到这个点的时候,会自动弹出提示信息。

    Tooltip可以支持简单方式以及自定义的方式,简单方式即像平时Html页面设置的title之类的属性效果,而自定义的方式,则可以实现图形、文本等各种复杂的提示信息显示。详细的方式请参考官方例子的:Interactivity and AJAX/Tooltips以及Interactivity and AJAX/Client Side Scripts下面的相关例子。

    Url链接,图表控件中,有一大半的控件都有Url及Tooltip的属性,你可以设置此属性,在鼠标点击的时候,代到其它相应的页面去。

建议大家看看官方例子中的Interactivity and AJAX部份,很精彩:)

例子:建立一个Cpu信息和内存使用的实时统计表

    下面写一个小例子,建立一个系统的内存实时统计图表,使用到了Ajax的方法,以及Windows Api取得系统内存的方法。

    首先,建立一个Aspx页面,拖动一个图表控件到页面,设置图表控件的属性如下:

   其中,MEMORY_INFO,ComputerInfo是一个定义的结构体及调用Win32 API接口的一个访问类。程序分别取得每一个图表对象,每次加载的时候,都重新取得当前的内存和Cpu信息,再在图表上添加一个点,需要注意的是,一定要设置图表控件的EnableViewState属性为True,否则无法记录状态。

Code
<asp:Chart ID="ChartMemory" runat="server" BackColor="LightSteelBlue"
BackGradientStyle="TopBottom" BackSecondaryColor="White" EnableTheming="False"
EnableViewState="True" Height="363px" Width="415px">
<Legends>
<asp:Legend Alignment="Center" Docking="Bottom" Name="Legend1" Title="图例">
</asp:Legend>
</Legends>
<Titles>
<asp:Title Font="微软雅黑, 16pt" Name="Title1" Text="系统内存监控图表">
</asp:Title>
</Titles>
<Series>
<asp:Series BorderColor="White" BorderWidth="3" ChartArea="ChartArea1"
ChartType="Spline" Legend="Legend1" Name="已使用物理内存" XValueType="Double"
YValueType="Double">
</asp:Series>
<asp:Series BorderWidth="3" ChartArea="ChartArea1" ChartType="Spline"
Legend="Legend1" Name="全部占用内存">
</asp:Series>
<asp:Series ChartArea="ChartArea2" ChartType="StackedArea" Legend="Legend1"
Name="CPU">
</asp:Series>
</Series>
<ChartAreas>
<asp:ChartArea BackColor="224, 224, 224" BackGradientStyle="LeftRight"
Name="ChartArea1">
</asp:ChartArea>
<asp:ChartArea Name="ChartArea2">
</asp:ChartArea>
</ChartAreas>
</asp:Chart>

 

一共建立了两个绘图区,一个用于呈现内存使用情况的在ChartArea1区域,另一个则是呈现Cpu使用情况的,放置在ChartArea2区域了。一共有三个图表,分别表示已使用的物理内存、全部占用的物理内存,以及Cpu使用显示的情况。

添加一个Ajax的计时器以及Ajax的ScriptManager,UpdatePanel,把计时器和图表控件都拖进UpdatePanel里面。设置计时器的间隔时间为一秒钟(1000),双击计时器,写如下代码:

Code
static PerformanceCounter pc = new PerformanceCounter("Processor", "% Processor Time", "_Total");
protected void Timer1_Tick(object sender, EventArgs e)
{
MEMORY_INFO MemInfo = new MEMORY_INFO();
ComputerInfo.GlobalMemoryStatus(ref MemInfo);
//UseMemory
Series series = ChartMemory.Series[0];
int xCount = series.Points.Count == 0 ? 0 : series.Points.Count - 1;
double lastXValue = series.Points.Count == 0 ? 1 : series.Points[xCount].XValue + 1;
double lastYValue = (double)(MemInfo.dwTotalPhys-MemInfo.dwAvailPhys)/1024/1024;
series.Points.AddXY(lastXValue, lastYValue);
//Total Memory
series = ChartMemory.Series[1];
lastYValue = (double)(MemInfo.dwTotalVirtual+MemInfo.dwTotalPhys-MemInfo.dwAvailPhys - MemInfo.dwAvailVirtual)/1024/1024;
series.Points.AddXY(lastXValue, lastYValue);
//CPU
series = ChartMemory.Series[2];
lastYValue = (double)pc.NextValue();
series.Points.AddXY(lastXValue, lastYValue);
// Remove points from the left chart side if number of points exceeds 100.
while (this.ChartMemory.Series[0].Points.Count > 80)
{
// Remove series points
foreach (Series s in this.ChartMemory.Series)
{
s.Points.RemoveAt(0);
}
}
// Adjust categorical scale
double axisMinimum = this.ChartMemory.Series[0].Points[0].XValue;
this.ChartMemory.ChartAreas[0].AxisX.Minimum = axisMinimum;
this.ChartMemory.ChartAreas[0].AxisX.Maximum = axisMinimum + 99;
}

 

   附上取得内存信息的类代码:

Code
/// <summary>
///取得计算机的系统信息
/// </summary>
public class ComputerInfo
{
/// <summary>
/// 取得Windows的目录
/// </summary>
/// <param name="WinDir"></param>
/// <param name="count"></param>
[DllImport("kernel32")]
public static extern void GetWindowsDirectory(StringBuilder WinDir, int count);
/// <summary>
/// 获取系统路径
/// </summary>
/// <param name="SysDir"></param>
/// <param name="count"></param>
[DllImport("kernel32")]
public static extern void GetSystemDirectory(StringBuilder SysDir, int count);
/// <summary>
/// 取得CPU信息
/// </summary>
/// <param name="cpuinfo"></param>
[DllImport("kernel32")]
public static extern void GetSystemInfo(ref CPU_INFO cpuinfo);
/// <summary>
/// 取得内存状态
/// </summary>
/// <param name="meminfo"></param>
[DllImport("kernel32")]
public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);
/// <summary>
/// 取得系统时间
/// </summary>
/// <param name="stinfo"></param>
[DllImport("kernel32")]
public static extern void GetSystemTime(ref SYSTEMTIME_INFO stinfo);
public ComputerInfo()
{
}
}
//定义CPU的信息结构
[StructLayout(LayoutKind.Sequential)]
public struct CPU_INFO
{
public uint dwOemId;
public uint dwPageSize;
public uint lpMinimumApplicationAddress;
public uint lpMaximumApplicationAddress;
public uint dwActiveProcessorMask;
public uint dwNumberOfProcessors;
public uint dwProcessorType;
public uint dwAllocationGranularity;
public uint dwProcessorLevel;
public uint dwProcessorRevision;
}
//定义内存的信息结构
[StructLayout(LayoutKind.Sequential)]
public struct MEMORY_INFO
{
public uint dwLength;
public uint dwMemoryLoad;
public uint dwTotalPhys;
public uint dwAvailPhys;
public uint dwTotalPageFile;
public uint dwAvailPageFile;
public uint dwTotalVirtual;
public uint dwAvailVirtual;
}
//定义系统时间的信息结构
[StructLayout(LayoutKind.Sequential)]
public struct SYSTEMTIME_INFO
{
public ushort wYear;
public ushort wMonth;
public ushort wDayOfWeek;
public ushort wDay;
public ushort wHour;
public ushort wMinute;
public ushort wSecond;
public ushort wMilliseconds;
}

 

    运行的效果图如下:

posted @ 2009-09-07 17:21 山虎 阅读(175) 评论(0) 编辑

.NET MSChart应用的一个简单例子 (转)

posted @ 2009-09-07 17:19 山虎 阅读(167) 评论(0) 编辑

获取真实IP

最简单的用以下语句:


<%
ip=request.ServerVariables("REMOTE_ADDR")
response.Write(ip)
%>


但这种方法对代理服务器上网的就不准了,故比较全面的是用下面的方法:

<%Private Function getIP()
Dim strIPAddr
If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" or InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then
strIPAddr = Request.ServerVariables("REMOTE_ADDR")
ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then
strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1)
ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then
strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1)
Else
strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
End If
getIP = Trim(Mid(strIPAddr, 1, 30))
End Function
ip=getIP()
response.write(ip)
%>

posted @ 2009-09-07 17:17 山虎 阅读(25) 评论(0) 编辑

解密一切加密网页代码

有些网站的源代码是经过加密的,如何快捷的破解这些加密的代码呢?告诉你一个简单而有效的方法。
在地址栏或按Ctrl+O,输入:
复制内容到剪贴板 程序代码
javascript:s=document.documentElement.outerHTML;document.write('');document.body.innerText=s;
源代码就出来了。不论加密如何复杂,最终都要还原成浏览器可以解析的html代码,而documentElement.outerHTML正是最终的结果。






转载请注明出自空气Blog http://www.PCddos.com/

posted @ 2009-09-07 17:15 山虎 阅读(23) 评论(0) 编辑

让mysql允许远程管理

mysql默认不允许远程连接
打开mysql数据库中的user表,把你用来连接数据库的用户所在那条记录的host字段改成%就行
例:update [user] set Host='%' where [user]='root';
重启mysql

posted @ 2009-09-07 17:10 山虎 阅读(48) 评论(0) 编辑

mysql到oracle的数据迁移

当一个企业内部使用的数据库种类繁杂时,往往需要有一个工利用Oracle Migration Workbench将第三方架构对象移植到Oracle数据库。具能够轻轻松松地把这些数据库中所有的数据重审一遍,然后通过把对象和数据移植到一个Oracle数据库的方法合并这些数据库。本专题将为大家介绍这样一个工具——新一代Oracle Migration Workbench,它是Oracle SQL Developer的扩展工具,功能强大,让你能够在Oracle和第三方数据库里存取数据,并把第三方数据库移植到同一个Oracle 9iDatabase或Oracle Database 10g,可移植的数据包括架构对象、触发器和存储程序。目前能够支持的第三方数据库包括Microsoft SQL Server、Microsoft Access和MySQL。
  本文首先介绍怎样配置安装环境,接着以Microsoft SQL Server数据库为例,为大家演示怎样浏览SQL Server 数据库对象和数据,并把它们移植到一个Oracle数据库。
  配置运行环境
  在进行第三方数据库对象移植之前,必须先配置好Oracle SQL Developer和Oracle Migration Workbench的运行环境,以确保能够与第三方数据库正常连接。在自1.2.0.29.98版本开始,Oracle SQL Developer中就附带有Oracle Migration Workbench。而Oracle SQL Developer则可以在Oracle的官方网站上下载,链接地址为otn.oracle.com/products/database/sql_developer。
  Oracle SQL Developer利用Java DataBase Connectivity (JDBC)连接到数据库,因此除了安装Oracle SQL Developer,还需要为需要连接的第三方数据库安装和配置JDBC驱动程序。相关第三方数据库的下载要求和链接信息列举如下:
  ·MySQL JDBC驱动程序,5.04版,下载地址http://dev.mysql.com/downloads/connector/j/5.0.html
  ·Microsoft SQL Server需要有JDBC驱动程序,相关链接http://jtds.sourceforge.net 1.2版的下载地址为http://sourceforge.net/project/showfiles.php?group_id=33291
  · 由于Microsoft Access使用JDBC/ODBC,所以不需要额外的驱动程序。
  装配驱动程序
  一旦下载完所需的JDBC驱动程序后,展开驱动程序二进制JAR文件,通常是下载的归档文件内部的一个独立JAR文件。
  · 对于MySQL,下载的mysql-connector-java-5.0.4.tar.gz(或.zip)压缩包里包含一个名为mysql-connector-java-5.0.4-bin.jar的二进制驱动JAR文件。
  · 对于SQL Server,jtds-1.2-dist.zip压缩包里包含一个名为jtds-1.2.jar的文件。
  确保第三方数据库启动且正常运行,并启动Oracle SQL Developer。在主菜单里选择Tools -> Preferences...,展开数据库节点,选择Third Party JDBC Drivers,点击Add Entry...。接着浏览并选择上文提到的JAR文件,点击OK。
  创建数据库连接
  在运行Oracle SQL Developer里的一个数据库之前,需要先建立一个数据库连接。为任何一个你想要浏览和作为移植源的第三方数据库和任何一个你想要流浪和作为移植目标的数据库建立分别建立一个连接。
  想要在Oracle SQL Developer建立一个数据库连接,首先点击Connections选项卡,右击Connections节点选择New Connection。想要为SQL Server建立一个连接,点击SQLServer选项卡,然后按照以下顺序完成连接工序:
  输入连接名,如SQLServer2005_mwb   输入用户名和口令   输入SQL Server database所在的机器的主机名   输入端口   接下来,点击Retrieve数据库以生成可移植SQL Server数据库表单。
  最后点击Test,确保你所创建的所有连接都是成功的,然后点击Connect保存连接,关闭对话框,连接到选择好的SQL Server数据库。
  浏览数据
  当你打开Oracle SQL Developer里的一个数据库连接的同时,也打开了一个SQL工作表供你写入基本的查询和命令。展开你建立好的SQL Server连接,导航至dbo菜单下的Tables节点。你可以选择和拖拽任何图表到SQL工作表上,而且这个操作会产生一个SELECT指令。按F9键执行这一查询。
  按F5键可以进行多重查询。同样的对于任何其他的Oracle数据库连接,你可以点击列表头对返回的数据进行分类排序。
  直接点击表就可以查看表的定义,如Connections Navigator 中的Customers。注意这时显示的选项卡与连接到Oracle database时出现的选项卡稍许不同。还要注意当Oracle SQL Developer连接到一个Oracle数据库时,右键快捷菜单提供很多Data Definition Language (DDL)命令或实用命令;第三方数据库连接时的右键菜单主要是浏览和移植命令。
建立一个信息库
  Oracle Migration Workbench利用一个Oracle数据库架构作为移植信息库,用来储存其为移植进程所收集和转换的元数据。不管你要进行多少次移植操作,建立移植信息库只需要执行一次就够了。这个信息库由37个表以及相关的主键、索引,8个视图,触发器和PL/SQL代码组成。虽然不是必须的,不过Oracle还是建议专门为这个信息库配置一个数据库架构。
  必须赋予创建和拥有这个信息库的用户多种系统权限和任务。列表1创建了一个名为migration的用户,并赋予其必要的特权。
  代码列表1:创建migration用户
  CREATE USER migration IDENTIFIED BY migration
  DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
  GRANT CONNECT, RESOURCE, CREATE VIEW, CREATE PUBLIC SYNONYM
  TO migration WITH ADMIN OPTION;
  GRANT ALTER ANY ROLE, ALTER ANY SEQUENCE,
  ALTER ANY TABLE, ALTER TABLESPACE, ALTER ANY TRIGGER,
  COMMENT ANY TABLE, CREATE ANY SEQUENCE, CREATE ANY TABLE,
  CREATE ANY TRIGGER, CREATE ROLE, CREATE TABLESPACE,
  CREATE USER, DROP ANY SEQUENCE, DROP ANY TABLE,
  DROP ANY TRIGGER, DROP TABLESPACE, DROP USER,
  DROP ANY ROLE, GRANT ANY ROLE, INSERT ANY TABLE,
  SELECT ANY TABLE, UPDATE ANY TABLE
  TO migration;
  一旦你创建了这个用户,你就需要为这个用户建立一个新的数据库连接,例如Migration_Repos。当你输入必要的信息之后,点击Connect保存连接并关闭对话框。从主菜单中选择Migration -> Repository Management -> Create Repository。选择为新信息库建立的连接,并点击Create。这时,会出现一个Installing Repository对话框,显示安装进度。当进程结束后,关闭对话框。



在Connections Navigator下会弹出两个额外的窗口,显示捕获和转换模式。
移植
  整个移植过程包括几个独立的步骤。当你已经连接到移植的目标数据库并创建了信息库之后,就可以按照以下的程序进行移植了:
  1、 捕获源数据库
  2、 转换捕获的数据库
  3、 为新Orecle架构对象生成DDL脚本
  4、 运行已生成的DDL脚本以创建新的用户和对象。
  5、 如果要进行快速移植(Quick Migration),就将源数据库的任何数据复制到新的数据库。Oracle SQL Developer也提供快速移植的功能。这个向导驱动的方法能够把架构和数据移植到Oracle数据库,并支持最小权限移植,即用户可以在不需要DBA权限的情况下将他们访问的源数据库对象移植到目标数据库。不需要用户插手,快速移植向导就可以自己完成整个移植过程。
  从主菜单中选择Migration -> Quick Migrate,以调用Quick Migration选项。向导会提供一个对话框,让你选择源连接(与第三方数据库的连接)和目标连接(与Oracle的连接)。向导会检测你是否有可用的信息库,如果没有,它会在移植过程中创建一个。一旦移植完成,你同样可以选择保存还是删除这个信息库。点击Verify以连接第三方数据库和Oracle数据库,并验证已经赋予Oracle数据库中的架构必要的权限。验证完毕后,点击Migrate完成快速移植。
  移植指南。使用以下的移植指南,你可以更加得心应手地掌控整个移植过程,并能够选择单个的表或架构对象进行移植。你还能够在移植过程的不同阶段随时进行更新,例如对架构进行重命名,在表被捕获后而被转换成Oracle模式前对其进行取消或重命名等操作。我们还是按部就班一个一个来:
  步骤一:捕获源数据库。右击Connections Navigator中的源数据库连接节点,选择Capture Microsoft SQL Server。会弹出一个进度对话框,显示捕获过程的进度。显示完成时,点击Close,关闭对话框。源数据库被捕获后,元数据定义就储存在移植信息库中,随时都可以进行转换。Captured Objects窗口中将显示可用的捕获数据库。展开新的节点,浏览输出结果。这时候,你可以进行任何诸如对表进行重命名等修改操作。
  步骤二:转化捕获的数据库。如果你对第一步的结果没有任何疑问了,就右击新近捕获的模型,选择Convert to Oracle Model。这时,会弹出一个数据图供你选择接受或修改。点击Apply选择默认设置。接着会弹出一个进度对话框,当显示转化过程完成时,点击Close关闭对话框。捕获模型和转换模型都映射储存在移植信息库中的元数据。


步骤三:为新Orecle架构对象生成DDL脚本。这个阶段,你可以选择为单个对象或者多个对象生成DDL脚本。如果想为所有的转换对象生成脚本,右击high-level converted model,然后点击Generate。
  步骤四:运行已生成的DDL脚本以创建新的用户和对象。当生成完毕时候,DDL脚本可以用SQL工作表打开。注意打开命令会创建一个新的数据库用户并赋予新用户权限。这表示要运行脚本必须是具有创建用户权限的用户,例如SYSTEM。在SQL工作表的右上角下拉菜单中选择你要运行脚本的用户,然后按F5键运行脚本。脚本运行完成后,在Connections Navigator中创建一个新的数据库连接,用来浏览和检查新的移植对象。



步骤五:将源数据库的任何数据复制到新的数据库。移植过程的最后阶段就是把源数据库中的数据复制到目标数据库。从主菜单中选择Migration -> Migrate Data。在弹出的对话框中选择源数据库、目标数据库和转换模式,并点击OK。这时你就可以在Oracle数据库中以其他的架构浏览、编辑和使用新的对象和数据了。
  结论
  Oracle Migration Workbench支持从Microsoft Access、Microsoft SQL Server和MySQL到Oracle数据Oracle数据库数据移植,降低了移植过程的风险,并通过大量的自动操作减少了移植耗时。

posted @ 2009-09-07 17:10 山虎 阅读(228) 评论(0) 编辑

<2009年9月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

导航

统计

公告

昵称:山虎
园龄:3年8个月
粉丝:0
关注:0

搜索

 
 

常用链接

随笔分类

随笔档案

文章分类

最新评论

阅读排行榜

评论排行榜

推荐排行榜