第9章 Oracle SQL Developer工具介绍
除了命令行方式的SQL*Plus以外,Oracle还提供了一个图形化的工具SQL Developer。本章将对SQL Developer工具予以简要介绍,并举例说明其最主要的功能。
9.1 SQL Developer概述
本节简要介绍一下SQL Developer的版本演化、产品特点及下载与安装方面的内容。
9.1.1 SQL Developer版本演化
Oracle SQL Developer是一个免费的图形化数据库开发工具。
2006年3月首次发布的Oracle SQL Developer提供了一个与数据库对象进行交互的图形化界面,使用户可以浏览数据库,运行SQL、PL/SQL和SQL*Plus语句,执行SQL脚本,以及编辑和调试PL/SQL语句。此外,Oracle SQL Developer还提供了一套报表,用于对字典的深入查询。SQL Developer 1.0发布不久,在2006年12月又发布了两个补丁版本和SQL Developer 1.1。
2007年9月25日,甲骨文公司正式发布Oracle SQL Developer 1.2版。该版本也被称为“移植版本”,这是因为在该版本中,包括了一个“Developer移植工作台”。它是一个重新开发的新工具,极大地扩展了以前Oracle单独提供的移植工作台的功能和可用性。通过与SQL Developer紧密集成,新版本使用户在一个地方就可以浏览第三方数据库中的数据库对象和数据,以及将这些数据库移植到Oracle数据库中。
9.1.2 SQL Developer产品特点
(1)SQL Developer以Java编写而成,能够提供跨平台工具。使用Java意味着同一工具可以运行在Windows、Linux和MAC OS X上。这就提供了一个跨平台的统一界面。
(2)SQL Developer中到数据库的默认连接使用的是瘦JDBC驱动程序。默认使用JDBC瘦驱动程序意味着无须安装Oracle客户端,从而将配置和占用空间降至最低。
(3)SQL Developer使用的扩展框架借用了JDeveloper。Oracle提供了一个包含示例和文档的扩展开发工具包,可以方便地进行扩展。
9.1.3 SQL Developer下载与安装
SQL Developer的运行版可以从Oracle技术网站下载,网址为:
http://www.Oracle.com/technology/software/products/sql/index.html。
下载完成后解压缩即可运行,无须安装。
9.2 创建数据库连接
要使用SQL Developer对数据库进行操作,首先需要创建到数据库的连接,以下我们分别介绍SQL Developer如何创建到Oracle、MySQL和SQL Server数据库的连接。
9.2.1 连接到Oracle数据库
可以通过下面方式实现到Oracle数据库的连接。
如图9-1所示,运行SQL Developer.exe,进入操作界面。
图9-1 初始操作界面
右键单击Connection,新创建一个数据库连接。
① 基本的连接方式,如图9-2所示。
图9-2 连接方式
② 基于TNS配置的客户端连接,如图9-3所示。
图9-3 基于TNS配置的客户端连接
③ 瘦客户端的连接,如图9-4所示。
图9-4 瘦客户端的连接
④ 连接完成以后,自动打开SQL Worksheet窗口,如图9-5所示。
图9-5 SQL Worksheet窗口
9.2.2 连接到MySQL数据库
创建SQL Developer到MySQL数据库的连接,如图9-6所示,指定用户名,密码,主机IP地址,以及相应MySQL数据库的监听端口号即可。
图9-6 MySQL数据库的连接
9.2.3 连接到SQL Server数据库
创建SQL Developer到SQL Server数据库的连接,如图9-7所示,指定用户名,密码,主机IP地址,以及相应的SQL Server数据库的监听端口号即可。
图9-7 SQL Server数据库的连接
9.3 使用SQL Worksheet操作数据库
此处,创建一个名为HR_ORCL的到Oracle数据库的连接,连接用户为hr(Oracle中默认该用户是被锁定的,需要提前对该用户解锁)。
可以以sys用户执行以下命令:
alter user hr unlock account; alter user hr identified by hr.
使用hr用户连接到数据库之后,可以浏览模式、对象,查询、插入及修改数据。以下介绍如何用SQL Worksheet完成检索、插入和修改数据等基本的数据库操作。
9.3.1 检索数据
1.编写SELECT语句浏览数据
创建数据库连接之后,需要确保SQL Worksheet是打开的。如果工作表尚未打开,则使用上下文菜单打开它,如图9-8所示。
连接之后,您应当看到SQL Worksheet Enter SQL Statement窗口,如图9-9所示。
图9-8 创建SQL Worksheet菜单
图9-9 打开Worksheet
现在,您准备开始。查询DEPARTMENTS表中的所有数据。输入以下SQL语句,然后按F9键。
Select * from Departments;
注意
检索到的行数显示在Results选项卡下方,如图9-10所示。
图9-10 检索数据
2.检索列
无须选择表中的所有列,您可以逐条列举它们,只选择您需要的数据。
无须输入每个列名,可以从Connections导航器中拖动表名。展开Tables节点,将EMPLOYEES表拖至工作表上,如图9-11所示。
图9-11 检索列
对于更长、更复杂的查询语句,如果设置SQL的格式,则SQL更易于阅读。
使用上下文菜单,选择Format SQL即可。
现在,从语句中删除所选的列。下面是一个例子,如图9-12所示。
图9-12 删除所选列
3.检索行
通常,如果希望限制返回的记录数量。则需要添加一个WHERE子句。这可能会涉及很多代码并且很复杂。这里仅列举最简单的例子,如图9-13所示。
使用与上面相同的SELECT语句,删除“;”,添加:
where department_id = 100;
图9-13 检索行
可以发现Results选项卡显示较少的返回记录。
9.3.2 插入数据
往数据库表中插入数据可以使用Data选项卡插入行,也可以使用SQL Worksheet插入行,如下所示。
SQL Developer使用表定义简化了数据输入。在Connections导航器中选择EMPLOYEES表,如图9-14所示。
图9-14 选择表
注意
某些值是必需的(Nullable =“No”)。插入新行时,至少需要填充这些值。
单击Data选项卡。你所看到的显示内容是该表中当前拥有的数据。要插入新的一行,请单击“Insert Row”按钮,如图9-15所示。
图9-15 插入行
为必需的项EMPLOYEE_ID、LAST_NAME、EMAIL、HIRE_DATE和JOB_ID填入值。
要将该记录保存到数据库中,请单击“Commit Changes”按钮。
您提交了更改之后,Data编辑器日志将显示Commit Successful注释。
您还可以在使用命令行或SQL Plus时使用“传统”方法插入数据。
返回到SQL Worksheet并输入命令:
Insert into departments (DEPARTMENT_ID,DEPARTMENT_NAME) Values (300, 'http://www.Oracle.com/technology/products/database/sql_developer/howtos/ Research/index.html');
按F9键,如图9-16所示。
图9-16 插入行
9.3.3 修改数据
和上一节的数据插入操作类似,可以使用SQL Worksheet或SQL命令更新数据,也可以在表定义中使用Data选项卡并更新单个行。
使用Data选项卡界面,您可以轻松地更新行。
单击Connections导航器中的一个表。这里使用DEPARTMENTS表来演示,如图9-17所示。
图9-17 选择表
这里需要注意,新选择的表替换了选项卡。要保持EMPLOYEES选项卡和DEPARTMENTS选项卡处于打开状态,先单击Freeze View图标,然后选择新对象。
在上一个练习中,您添加了一条新记录。单击任何值并进行更改,即可更新该值,如图9-18所示。
图9-18 修改值
注意
更新了记录之后,记录旁边会显示一个星号(*)。如前文所述,单击“Commit Changes”按钮,更新数据库中的记录。
可以使用该方法更新多条记录,但仍需要单步调试每条记录并单击域以更新记录。如果有多条记录需要更新,这样做很麻烦。要更新多条记录,使用SQL语句更简单。
update departments set manager_id = 108 where department_id in (120, 130, 140); Commit;
返回至该表的Data选项卡,查看上述内容的结果(或者在SQL Worksheet中编写一个SQL查询),如图9-19所示。
图9-19 查看结果
9.3.4 删除数据
与前面两个例子相同,可以使用SQL Worksheet删除单行或多行,也可以使用Data选项卡。
返回至DEPARTMENTS数据选项卡,选择并删除新插入的记录,如图9-20所示。
图9-20 删除记录
该行未删除,即更改没有提交至数据库,直至单击Commit Changes按钮。
最后,返回到SQL Worksheet删除所选的行。
delete from departments where department_id > 200;
如前文所述,这些更改不保存到数据库。为了撤销所进行的任何更改,请输入:
ROLLBACK;
按F9键,则发出的删除操作现在已经恢复,如图9-21所示。
图9-21 删除行
9.4 使用SQL Developer开发和调试PL/SQL
9.4.1 准备工作
为了能够顺利地完成本实验中的演示实例,需要注意以下两点。
(1)确保hr用户已经解锁(unlock)。
ALTER USER hr UNLOCK ACCOUNT; ALTER USER hr IDENTIFIED BY hr;
(2)对于PL/SQL调试部分,hr用户需要一些额外的权限。使用以下命令授予权限:
GRANT debug any procedure, debug connect session TO hr;
9.4.2 创建并编译PL/SQL过程
本节中,我们将创建、编辑并编译一个PL/SQL过程。执行以下步骤。
在Connections导航器中,右键单击Procedures节点以调用上下文菜单,然后选择New PROCEDURE,如图9-22所示。
图9-22 创建过程
输入EMP_LIST作为过程名。然后单击“+”,添加一个参数,如图9-23所示。
图9-23 指定过程名称
双击该参数,您可以将值更改为pMaxRows,然后将VARCHAR2更改为NUMBER。确保在单击“确定”之前按了Enter键,如图9-24所示。
图9-24 修改过程属性
随即显示指定了参数过程的框架,如图9-25所示。
图9-25 默认代码生成
替换以下PL/SQL:
BEGIN NULL; END;
使用以下代码:
CURSOR emp_cursor IS SELECT l.state_province, l.country_id , d.department_name, e.last_name , j.job_title, e.salary, e.commission_pct FROM locations l, departments d, employees e, jobs j WHERE l.location_id = d.location_id AND d.department_id = e.department_id AND e.job_id = j.job_id; emp_record emp_cursor%ROWTYPE; TYPE emp_tab_type IS TABLE OF emp_cursor%ROWTYPE INDEX BY BINARY_INTEGER; emp_tab emp_tab_type;i NUMBER := 1; BEGIN OPEN emp_cursor; FETCH emp_cursor INTO emp_record; emp_tab(i) := emp_record; WHILE ((emp_cursor%FOUND) AND (i <= pMaxRows) LOOP i := i + 1; FETCH emp_cursor INTO emp_record; emp_tab(i) := emp_record; END LOOP; CLOSE emp_cursor; FOR j IN REVERSE 1..i LOOP DBMS_OUTPUT.PUT_LINE(emp_tab(j).last_name); END LOOP;END;
注意SQL Developer是如何自动设置代码格式的。单击工具栏中的Save按钮,编译PL/SQL子程序,如图9-26所示。
图9-26 过程编码
在导航器中展开Procedures,如图9-27所示。
图9-2 7 编译过程
当SQL Developer检测到无效PL/SQL子程序时,系统导航器中该子程序的图标会用红色的×来指示状态,如图9-28所示。
Log窗口中显示编译错误。只需双击错误,即可导航到错误中报告的对应行。SQL Developer还在右侧边列(gutter)中显示错误和提示消息。如果您将鼠标放在边列中每个红色方块上,将显示错误消息。
图9-28 编译错误提示窗口
在本例中,错误消息指示LOOP语句中存在格式错误。仔细检查代码后,会发现WHILE语句中多了一个圆括号,删除多余的圆括号,如图9-29所示。
图9-29 修改过程编码
单击Compile图标,如图9-30所示。
图9-30 再次编译过程
该过程成功编译,您现在可以运行该过程,如图9-31所示。
图9-31 编译成功
9.4.3 运行PL/SQL过程
创建并编译了一个PL/SQL过程之后,您可以使用SQL Developer运行它。执行以下步骤。
在左侧导航器中,右键单击EMP_LIST并选择Run。
调用Run PL/SQL对话框。
Run PL/SQL对话框允许选择要运行的目标过程或函数(对程序包有用),并显示所选目标的参数列表。PL/SQL块文本区域中包含的是SQL Developer用来调用所选程序的生成代码。可以使用该区域填充要传送到程序单元的参数,以及处理复杂的返回类型。如图9-32、图9-33、图9-34所示。
图9-32 运行过程
图9-33 修改参数(1)
将PMAXROWS := NULL; 更改为 PMAXROWS := 5;,然后单击“OK”按钮。
图9-34 修改参数(2)
Log窗口中显示了返回的结果,如图9-35所示。
图9-35 返回结果
9.4.4 调试PL/SQL过程
SQL Developer还支持使用Oracle数据库进行PL/SQL调试。在本主题中,您将调试一个PL/SQL过程、单步调试代码并在运行时修改值。执行以下步骤。
通过在OPEN emp_cursor;语句所在行对应的代码左侧区中单击,可在EMP_LIST过程中设置一个断点,如图9-36所示。
图9-36 过程调试
单击Debug图标(瓢虫),如图9-37所示。
Debug PL/SQL对话框应仍显示值 PMAXROWS = 5;,单击“OK”按钮,如图9-38所示。
图9-37 修改属性(1)
图9-38 修改属性(2)
调试器应在您设置的断点处暂停。您现在可以控制执行流程、修改变量值,以及执行其他调试函数,如图9-39所示。
图9-39 断点设置
注意
如果此时收到错误消息“This session requires DEBUG CONNECT SESSION and DEBUG ANY PROCEDURE user privileges”,则说明用户没有被授予相应的debug权限,如图9-40所示。
图9-40 查看错误信息
单击Step Into图标,如图9-41所示。
图9-41 单步运行
转至光标所在的第一行。再次单击 Step Into图标,如图9-42所示。
图9-42 再次单步运行
您现在应该选择光标所在的第一行。第3次单击Step Into图标,如图9-43所示。
Smart Data窗口开始显示有限的变量列表,这些变量用在要执行的代码行中及之前执行的代码中,如图9-44所示。
右键单击“DBMS_OUTPUT.PUT_LINE(emp_tab(j).last_name);”这一行,然后选择Run to Cursor,如图9-45所示。
图9-43 单步运行
图9-44 显示有限的变量列表
图9-45 选择Run to Cursor
展开emp_tab > _values > [1] > _key,您会看到表中给定记录中域的值。选择LAST_NAME域,如图9-46所示。
图9-46 选择LAST_NAME域
右键单击LAST_NAME域并选择Modify Value,如图9-47所示。
图9-47 选择Modify Value
将名称更改为其他内容,单击“OK”按钮,如图9-48所示。
单击Resume图标以允许PL/SQL运行直至完成,如图9-49所示。
查看修改后的值是否显示在Log窗口中,如图9-50所示。
图9-48 单击“OK”按钮
图9-49 运行完成
图9-50 查看结果
9.5 使用SQL Developer运行或创建报表
SQL Developer提供了许多预定义的报表,也可以进行自定义报表。在本节中,我们将介绍如何运行和创建报表。
9.5.1 运行预定义报表
查看预定义报表,可以按照以下步骤进行操作。
在SQL Developer中,切换至Reports选项卡,展开Data Dictionary Reports节点,如图9-51所示。
选择About Your Database节点并展开它,可以了解有关数据库的基本详细信息。
单击Version Banner,如图9-52所示。
图9-51 展开Data Dictionary Reports节点
图9-52 数据库的基本详细信息
选择任意报表并运行它。
例如,有一个报表列出了模式中表的所有主键。
展开Table -> Constraints节点,选择Primary Key Constraints,如图9-53所示。
选择该节点后,会弹出一个窗口。该窗口允许限制对某个条件的查询。在本例中,只能限制对表名的查询。立即单击“Apply”按钮,即可选择所有记录。
清除Null复选框,在域中输入字母“e”。(该操作限制了对所有名称中包含字母“e”的表的查询)
单击“Apply”按钮,如图9-54所示。
图9-53 选择Primary Key Constraints
图9-54 指定参数
产生的报表显示了所有名称中包含字母“e”、具有主键的报表,如图9-55所示。
9.5.2 创建自定义报表
SQL Developer提供创建、保存及运行自定义报表的能力。只需要SQL!自定义报表可以简单,也可以复杂。这里我们举一个简单示例进行说明。
折叠Data Dictionary Reports节点,使用上下文菜单添加一个新报表,如图9-56所示。
图9-55 显示结果
图9-56 创建自定义报表
可以在此处添加任何查询。例如,使用以下查询,如图9-57所示。
select object_name, object_type from user_objects;
单击“Apply”按钮后,报表提示连接到数据库。可以使用hr(如同在整个练习中所做的一样),或者使用其他连接(如果有的话),如图9-58所示。
图9-57 数据查询语句
图9-58 连接到数据库
最后,可以采用该查询在SQL Worksheet中使用它,方法是单击“Run Report in SQL Worksheet”按钮。
9.6 使用SQL Developer导出操作
使用SQL Developer,可以导出数据,也可以导出元数据(对象定义,DDL语句),本节分别予以介绍。
9.6.1 导出数据
SQL Developer能够将用户数据导出为多种格式:CSV、XML、LOADER、TEXT和INSERT。
为了导出表中的数据,可以使用SQL Worksheet并编写SQL查询来检索所需数据,也可以单击表定义的Data选项卡。这里我们将使用后面这个方法,如图9-59所示。
① 展开Connections Navigator和Tables节点。
② 单击DEPARTMENTS。
③选择Data选项卡。
图9-59 数据导出
右键单击数据的任何位置以调用上下文菜单,如图9-60所示。
从EXPORT上下文菜单中选择INSERT,这将生成一个包含INSERT语句的文件。
图9-60 生成INSERT语句
选择适当的目录,并为该文件命名,如图9-61所示。
可以通过选择列并添加WHERE子句来减少返回的记录数,对导出的内容进行微调。在本例中,我们将接受默认的所有记录和列。
图9-61 创建文件
单击“Apply”按钮创建文件。
查看创建的文件。可以为每个文件格式重复这些步骤,以观察所提供的不同格式。
9.6.2 导出对象定义
SQL Developer能够将部分或全部对象定义导出到脚本文件。可以将这些脚本文件用作对象定义的备份,或在其他模式中运行它们。在本例中,将导出2个表。
在主菜单中,选择Tools -> Export,如图9-62所示。
图9-62 导出对象的脚本文件
在第一个选项卡中,确保提供了目录和文件名,如图9-63所示。
图9-63 指定目录和文件名
注意
可以选择内联添加约束或将约束作为“alter”表命令。
切换选项卡,选择所需的对象定义。选择EMPLOYEES和DEPARTMENTS,如图9-64所示。
图9-64 创建脚本文件
单击“Apply”按钮。
查看创建的文件。
9.7 使用SQL Developer迁移工作台
本节我们将通过具体实例讲解SQL Developer迁移工作台的使用方法。
9.7.1 迁移工作台概述
Oracle SQL Developer 1.2版集成了一个功能强大的迁移工作台工具,即Oracle SQL Developer迁移工作台(Oracle SQL Developer Migration Workbench)。使用该工具,可以完成从非Oracle数据库到Oracle数据库的迁移工作。在此之前,只能使用Oracle提供的独立的迁移工具来完成这种工作。
1.SQL Developer迁移工作台特点
(1)单一集成环境:可以实现在单一的工具和环境下浏览第三方数据、迁移数据库对象和数据,以及浏览迁移后的数据库,从而降低从第三方数据库向Oracle数据库迁移所需的时间、成本及有关风险。
(2)细粒度移植支持:可以选择用于移植的具体对象,比如可以迁移单个表格或几个数据库。而且即使有用户连接在数据库上也可以进行迁移。
(3)复杂对象的移植支持:支持对存储过程、触发器、视图等对象的移植。
(4)具有新的语法分析程序,可以百分百识别T-SQL语法。该工作台还具有单个语句翻译器,可以将任何种类的T-SQL语句粘贴到编辑器中,并将其即时翻译成PL/SQL语句。
(5)可以用该迁移工作台附带的实用向导程序进行单步迁移,也可以将迁移过程分成几个部分,在需要时对各个不同的部分进行统一修改。
(6)可以生成项目表,将其作为迁移项目的组成部分,并用Oracle SQL Developer的SQL和PL/SQL编制与调试工具修改项目表。
2.SQL Developer迁移工作台目前支持的数据库
使用SQL Developer迁移工作台将以下第三方数据库迁移到Oracle数据库中。
◎ Microsoft SQL Server(版本7.0、2000和2005)
◎ Microsoft Access(版本97、2000、2002和2003)
◎ MySQL(版本3.0、4.0和5.0)
9.7.2 数据迁移实例演示
本节将通过实例说明如何完成从第三方数据库到Oracle数据库的迁移。我们以MySQL 5.0数据库为例来进行说明。
1.下载相应的JDBC驱动
由于Oracle SQL Developer使用JDBC驱动来完成到数据库的连接,因此,为了使Oracle SQL Developer能够连接到第三方数据库,需要下载相应的驱动:
◎ MySQL JDBC driver,version 5.1.5,相应的下载地址:http://dev.mysql.com/downloads/ connector/j/5.1.html。
◎ Microsoft SQL Server需要JTDS驱动,相应的网址为:http://jtds.sourceforge.net,具体的1.2版本的下载地址为:http://sourceforge.net/project/showfiles.php?group_id=33291。
◎ 对于Microsoft Access数据库,由于可以使用JDBC/ODBC桥,所以不需要下载额外的驱动。
2.安装驱动
将下载文件解压缩后,得到相应的JAR包。
◎ 对于MySQL数据库,压缩文件为mysql-connector-java-5.1.5.zip,压缩包内JAR文件的名称为mysql-connector-java-5.1.5-bin.jar。
◎ 对于SQL Server数据库,压缩文件为jtds-1.2-dist.zip,JAR文件为jtds-1.2.jar。
在Oracle SQL Developer的主菜单中,单击Tools -> Preferences,打开DataBase节点,选择“Third Party JDBC Drivers”,在右边的窗口中选择“Add Entry”,选择解压缩后得到的JAR包,最后单击“确定”按钮,如图9-65所示。
图9-65 添加驱动
3.创建连接
创建Oracle SQL Developer到MySQL数据库(源)的连接,如图9-66所示。
图9-66 创建连接
注意
在创建连接的时候,可以使用Test进行测试,确保Oracle SQL Developer能够以指定的用户连接到源数据库;并可以展开目录树,浏览数据库对象。
4.创建迁移资料库
SQL Developer迁移工作台需要使用一个迁移资料库来存储相应的元数据库,该资料库包括大约37个表,8个视图,还有相关的主键、索引及触发器和PL/SQL代码。虽然不是必需的,但Oracle建议为该资料库创建一个单独的数据库模式(用户)。资料库一旦创建完成,就可以对数据迁移进行多次重复操作。
创建并且拥有该资料库的用户必须具有相应的权限,以下代码创建一个资料库用户,并赋予必需的权限。
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;
用户创建完成以后,需要创建一个该用户到Oracle数据库的连接。这里我们假定创建的连接名称为Migration_Repos,连接创建完成以后,在主菜单中选择Migration -> Repository Management -> Create Repository(如图9-67所示)。指定连接为Migration_Repos,单击“Create”按钮。
图9-67 创建资料库
创建过程窗口如图9-68所示。
迁移资料库创建完成以后,在Connections导航栏中会多出两个窗口:Captured Models和Converted Models,如图9-69所示。
5.数据迁移
在完成源数据库的连接与迁移资料库的创建以后,接下来进行以下的步骤。
指定要迁移的源数据库。
转换源数据库。
生成Oracle模式对象所需要的DDL语句。
运行DDL脚本,创建用户及对象。
图9-68 创建资料库过程窗口
图9-69 Captured Models和Converted Models
将数据从源数据库迁移到新数据库。
以下是上述步骤的详细说明。
捕捉源数据库。在连接导航栏中,右键单击到源数据库的连接节点(本例中为MySQL 5.0_mvb),选择Capture MySQL(M),会弹出一个过程窗口,运行完成以后,单击“Close”按钮,如图9-70所示。
图9-70 捕捉源数据库
这样,已经完成了源数据库的捕捉过程。此时,关于源数据库的元数据定义已经存储在迁移资料库中,而且已经为下一步的convert(转换)做好了准备。在左边的Capture Objects窗口中,捕捉的定义已经是可用的了,如图9-71所示,可以打开该节点浏览。
转换源数据库。在Captured Objects窗口中右键单击源数据库,选择Convert to Oracle Model。在打开的映射窗口中,我们可以看到数据的转换规则,可以编辑转换规则,也可以新增加转换规则。此处我们单击“Apply”按钮来接受该默认的转换规则。一个过程窗口会被打开,运行完毕以后,单击“Close”按钮关闭。该过程完成以后,在Converted Objects窗口中,可以看到相应的结果。此处的转换规则会被存储到迁移数据库中进行保存,如图9-72所示。
图9-71 浏览源数据库
图9-72 转换源数据库
在打开的映射窗口中,我们可以看到数据的转换规则,可以编辑转换规则,也可以新增加转换规则。
此处我们单击“Apply”按钮来接受该默认的转换规则。一个过程窗口会被打开,运行完毕以后,单击“Close”按钮关闭。该过程完成以后,在Converted Objects窗口中,可以看到相应的结果。此处的转换规则会被存储到迁移数据库中进行保存,如图9-73和图9-74所示。
图9-73 映射窗口
图9-74 运行过程窗口
该过程完成后,在Converted Objects窗口中可以看到相应的结果。此处的转换规则会被存储到迁移数据库中进行保存,如图9-75所示。
图9-75 Converted Objects窗口
为新的Oracle模式生成DDL语句。在该过程中,可以选择单个、某一类或者全部对象。在鼠标右键快捷菜单中选择“Generate”,如图9-76所示。
图9-76 创建DDL语句
运行产生的脚本,创建新的用户和模式对象。生成的DDL脚本会显示在SQL Worksheet工作区中。此处需要注意的是,这些脚本会在数据库中创建新的用户并且给被创建的用户授予权限。也就是说运行这些DDL脚本的用户必须具有相应的系统权限,比如SYSTEM,如图9-77所示。
脚本运行完成以后,可以为新创建的用户创建一个新的连接,以查看迁移以后的对象。
迁移数据迁移的最后一步是将源数据库中的数据迁移到目标数据库中。在主菜单中选择Migration -> Migrate Data,在打开的对话框中,选择Source Connection、tTarget Connection和Converted Model。单击“OK”按钮,数据迁移过程开始,完成以后关闭对话框,如图9-78所示。
图9-77 产生的DDL脚本
图9-78 迁移数据库
至此,数据迁移的工作全部完成。可以在Oracle中以新的用户查看相应的模式对象。
注意
SQL Developer也提供了一个快速迁移工具,原理与我们上面所说的是一样的。读者可以自己去尝试使用。
9.8 本章小结
本章主要介绍了Oracle SQL Developer的使用,包括创建数据库连接,使用SQL Worksheet操作数据库,开发调试PL/SQL语句,运行和创建报表。另外,通过实例演示了如何使用SQL Developer的迁移工作台完成数据库的迁移操作。