第 8 章:管理模式对象

模式是一个数据库对象的集合。模式为一个数据库用户所有,并具有与该用户相同的名称。模式对象是由用户创建的逻辑结构,用以包含或引用他们的数据。模式对象包含诸如表、视图和索引之类的结构。您可以使用 Oracle Enterprise Manager 来创建和操作模式对象。

大约 1 小时

主题

本教程包括以下主题:

将光标置于此图标上可以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)

注:此外,您还可以在下列步骤中将光标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图将其隐藏。

开始本教程之前,您应该:

1.

完成第 2 章:安装 Oracle 软件和构建数据库 OBE

2.

完成第 3 章:Oracle Enterprise Manager 入门 OBE

3.

完成第 4 章:配置网络环境 OBE

4.

完成第 5 章:管理 Oracle 实例 OBE

5.

完成第 6 章:管理数据库存储结构 OBE

6.

完成第 7 章:管理用户和安全性 OBE

返回主题列表

访问模式对象

执行以下步骤,使用 Enterprise Manager 访问模式对象:

1.

打开您的浏览器并将用户名和口令指定为 SYS,登录到 Enterprise Manager Database Control。

单击 Login

2.

单击 Schema,并在 Database Objects 部分中选择 Tables 链接。

3.

选择手电筒图标,选择一种特定的模式。

4.

选择 HR 并单击 Select

5.

在 Object Name 域中输入 emp 并单击 Go

6.

显示与您的搜索条件相匹配的对象。

返回主题列表

管理表

表是 Oracle 数据库中数据存储的基本单元。它们保存所有用户可访问的数据。每一个表都包含列和行。在本节中,您将执行以下任务:

A 查看表的属性
B. 查看表的内容
C. 创建新表
D. 修改表
E. 删除表

查看表的属性

执行以下步骤,查看 HR.EMPLOYEES 表的属性:

1.

单击 EMPLOYEES 表链接。

2.

出现 Table View 页,其中显示了包括列、约束和存储选项的表属性。

单击 Tables 链接,返回 Tables 属性页。

返回主题

查看表的内容

执行下面列出的步骤,查看 HR.EMPLOYEES 表的内容:

1.

选择 EMPLOYEES 表并从 Actions 列表中选择 View Data。单击 Go

2.

出现 View Data For Table 页,其中的 Result 部分显示了行数据。单击 Tables 链接,返回 Tables 属性页。

返回主题

创建新表

在本节中,您将为数据库创建三个新表:EMPLOYEESCUSTOMERSORDERS

1.

单击 Tables 属性页上的 Create

2.

显示 Create Table:Table Organization 页面。选择 Standard, Heap Organized 并单击 Continue

3.

显示 Create Table 页面。在 Name 域中输入 employees。在 Schema 域中输入 fsowner。在 Tablespace 域中输入 fsdata。定义如下的列,并单击 Add 5 Table Columns

Name:EMPLOYEE_ID,Data Type:NUMBER,Size:6
Name:FIRST_NAME,Data Type:VARCHAR2,Size:20
Name:LAST_NAME,Data Type:VARCHAR2,Size:25
Name:EMAIL_ADDRESS,Data Type:VARCHAR2,Size:25
Name:PHONE_NUMBER,Data Type:VARCHAR2,Size: 20

4.

按如下所示输入剩余的列:

HIRE_DATE DATE
JOB_ID VARCHAR2(10)
SALARY NUMBER(8)
MANAGER_ID NUMBER(6)

单击 Constraints

5.

显示 Constraints 页面。从下拉列表中选择 PRIMARY 并单击 Add

6.

显示 Add PRIMARY Constraint 页面。在 Name 域中输入 emp_id_pk。在 Available Columns 列表中选择 EMPLOYEE_ID。单击 Move 将其选中。单击 Continue

7.

显示 Create Table 页面。单击 OK

8.

出现 Tables 页,其中包含一条更新消息,指示您的表已创建。

9.

重复步骤 2 到 8,按如下定义的格式在 FSOWNER 模式中创建 CUSTOMERSORDERS 表。将 Customers 表的主键命名为 CUST_ID_PK将 Orders 表的主键命名为 ORD_PK_ID

CUSTOMERS
类型 PK?
CUSTOMER_ID NUMBER(6)
Y
CUST_FIRST_NAME VARCHAR2(20)
CUST_LAST_NAME VARCHAR2(20)
STREET_ADDRESS VARCHAR2(40)
CITY VARCHAR2(30)
STATE VARCHAR2(10)
POSTAL_CODE VARCHAR2(10)
PHONE_NUMBER VARCHAR2(20)

ORDERS
类型 PK?
ORDER_ID NUMBER(12)
Y
ORDER_DATE DATE
ORDER_MODE VARCHAR2(8)
CUSTOMER_ID NUMBER(6)
DELIVERY_MODE VARCHAR2(8)
ORDER_STATUS NUMBER(2)
SALES_CLERK_ID NUMBER(6)
ORDER_TOTAL NUMBER(8.2)

返回主题

修改表

您可以使用 Enterprise Manager 修改表,如添加和删除列或添加约束。在本节中,您将一个约束添加到您创建的 EMPLOYEES 表上。您将通过添加一个 NOT NULL 约束来确保 EMAIL_ADDRESS 列包含一个值。

执行以下的步骤,将一个 NOT NULL 约束添加到您的 EMPLOYEES 表:

1.

选择 EMPLOYEES 表并单击 Edit

2.

选中 EMAIL_ADDRESS 列的 Not NULL 列。单击 Apply

3.

显示 Edit Table 页,其中包含有确认更新的消息。

单击 Tables 链接,返回 Tables 页。

返回主题

删除表

您可以使用 Enterprise Manager 按如下方式删除表。出于本次练习的目的,您将创建一个新表然后删除该表。

1.

在 Schema 页面的 Database Objects 部分中单击 Tables 链接,访问 Tables 属性页面。在 Schema Name 域中输入 HR,并在 Object Name 域中输入 JOBS。单击 Go

2.

从 Actions 列表中选择 Create Like。单击 Go

3.

显示 Create Table 页面。在 Name 域中输入 JOBS_HIST。针对 JOB_ID 列和 JOB_TITLE 列取消选中 Not Null。单击 Constraints

4.

显示 Constraints 页面。通过选择表上的每一个约束并单击 Delete,可删除该表上的约束。本次练习不需要这些约束。单击 General 返回 General 页面。

5.

单击 OK 创建 JOBS_HIST 表。

6.

显示一条消息,指示已创建表。

7.

向下滚动至页面底部,然后选择 JOBS_HIST 链接。

8.

单击 Delete With Options 删除 JOBS_HIST 表。

9.

选择 Delete the table definition, all its data, and dependent objects。单击 Yes

10.

显示一条消息,指示已删除表。在 Object Name 域中输入 jobs_hist,单击 Go 尝试再次检索表。

11.

在结果区中显示 No object found,指示表已删除。单击 Database Instance 链接返回 Schema 页面。

返回主题

管理索引

索引是与表关联的可选结构,可用于改进查询的性能。索引提供了对表数据的快速访问路径。可以在表的一个或多个列上创建索引。创建好索引后,Oracle 数据库服务器将自动维护和使用它。对表的数据或结构所作的更改会自动合并到所有相关的索引中,这对于用户是完全透明的。

在本节中,您将执行以下任务:

A 查看索引的属性
B. 创建新索引

查看索引的属性

执行下面列出的步骤,在您的 FSOWNER 模式中查看索引的属性:

1.

在 Schema 页面的 Database Objects 部分中单击 Indexes 链接,访问 Indexes 属性页面。

2.

显示 Indexes 页面。在 Schema 域中输入 FSOWNER,然后单击 Go

3.

显示您定义主键时所创建的索引。通过单击索引名链接,选择在 EMPLOYEES 表上创建的 EMP_ID_PK索引。

4.

显示 FSOWNER 模式中 EMP_ID_PK 索引的 View Index 页面。

单击 Indexes 链接返回 Indexes 属性页面。

返回主题

创建新索引

ORDERS 表的 CUSTOMER_ID 列上创建一个索引,以使您能够快速访问特定客户的所有订单。该索引将存储在 FSINDEX 表空间中。

执行下面列出的步骤以创建 ORD_CUSTID_IDX 索引:

1.

从 Object Type 列表中选择 Table。页面刷新。在 Schema 域中输入 FSOWNER 并单击 Go

2.

显示 Tables 页面。选择 ORDERS 表,并从 Actions 列表中选择 Create Index。单击 Go

3.

显示 Create Index 页面。在 Name 域中输入 ORD_CUSTID_INDX。在 Tablespace 域中输入 fsdata。选择 Standard B-tree 作为索引类型。在 Order 列中输入 1 以选择 CUSTOMER_ID 列。接受 ASC 作为 Sorting Order。单击 OK 创建索引。

您将收到一条消息,指示索引已经创建。单击 Database Instance 链接返回 Schema 页面。

返回主题

管理视图

视图是一个或多个表或其他视图中的数据的自定义显示。它们可以被看作存储的查询。视图并不真正包含数据,相反它们是从所基于的表中获取它们的数据。这些表被称为视图的基表。与表一样,可以通过某些限制条件对视图执行查询、更新、插入和删除操作。在视图上执行的所有操作实际上影响的是视图的基表。通过限制对预先确定的表的行列集的访问,视图提供了一个额外的安全等级。它们还隐藏了数据复杂性并存储复杂的查询。

在本节中,您将执行以下任务:

A 访问视图
B. 创建新视图

访问视图

执行下面列出的步骤以访问视图:

1.

在 Schema 页面的 Database Objects 部分中,选择 Views

2.

在 Views 属性页面中,在 Schema 域内输入 HR,然后单击 Go

3.

显示了定义在 HR 模式中的表上的视图。选择 EMP_DETAILS_VIEW 并单击 View 查看其定义。

4.

显示 View 页面,其中提供了视图的定义。

单击 Views 链接返回 Views 页。

返回主题

创建新视图

执行下面列出的步骤创建一个新视图:

1.

在 Views 属性页上单击 Create

2.

输入以下信息,并单击 OK

视图名称:CLERK10_ORDS
模式:FSOWNER
查询文本:

SELECT order_id, customer_id, order_total FROM orders WHERE sales_clerk_id = 10

3.

显示 Views 页面,确认视图已创建。

单击 Database Instance 链接返回 Schema 页面。

返回主题

管理数据库驻留程序单元

您可以使用 Enterprise Manager 管理数据库驻留的程序单元,如 PL/SQL 包、过程、触发器和函数,以及 Java 源代码和类。这些操作包括创建和编译数据库驻留的程序单元、为数据库驻留的程序单元创建别名、授权使用数据库驻留的程序单元,以及显示数据库驻留的程序单元的依赖性。

1.

在 Schema 页面的 Programs 部分中单击 Procedures 链接。

2.

在 Schema 域中输入 hr。单击 Go

3.

选择 ADD_JOB_HISTORY 过程。从 Actions 列表中选择 Object Privileges,然后单击 Go

4.

单击 Add

5.

选择 EXECUTE 作为权限并选择 FSOWNER 作为用户。单击 OK

6.

单击 Apply

7.

您会收到一条确认消息。单击 Database 选项卡返回 Database Home 页面。

返回主题列表

将数据加载到表中

您可以使用 Enterprise Manager 成批地将数据加载到表中。当您有许多数据时,批量加载会很方便。您可以加载来自操作系统文件或其他数据库的数据。还可以将数据导出到文件中。一种加载的方法是使用控制 (.ctl) 和数据 (.dat) 文件。这些文件被转化为标准的 SQL*Loader 文件格式。SQL*Loader 是一种实用程序,您可以用它将外部文件的数据加载到 Oracle 数据库的表中。

在本节中,您将使用 load_cust.ctl 文件把客户信息加载到您的 FSOWNER.CUSTOMERS 表中。创建一个名为 $HOME/labs 的目录。下载 load_cust.zip 文件并将 load_cust.ctlload_cust.dat 文件解压缩到 $HOME/labs 中,以供本节所用。

1.

在 Data Movement 页面的 Move Row Data 部分中单击 Load Data from User Files 链接。

2.

显示 Load Data:Generate or Use Existing Control File 页面。选择 Use Existing Control File。同时输入主机的用户名和口令。单击 Continue

输入您数据库服务器上控制文件的完整路径并单击 Next。(注意:对于本示例,您将使用 load_cust.zip 文件中包含的控制文件)。

3.

显示 Load Data:Data File 页面。选择 Provide the full path and name on the database server machine。输入您数据库服务器上 dat 文件的完整路径。(注意:对于本示例,您将使用 load_cust.zip 文件中包含的 .dat 文件)。单击 Next

4.

显示 Load Data:Load Method 页面。接受默认的 Conventional Path 作为加载方法。单击 Next

5.

显示 Load Data:Options 页面。在 Optional Files 区域中选择 Generate log file。您可以接受默认的文件名和路径或输入不同的文件名或路径。单击 Next

6.

显示 Load Data:Schedule 页面。在 Job Name 域中输入一个名称,并在 Description 域中输入说明。选择 Immediately 立即运行作业。单击 Next

7.

显示 Load Data:Review 页面。查看您的文件名和加载方法。如果您想更改一些信息,可以单击 Back 按钮。否则,单击 Submit Job 开始加载。

8.

出现 Status 页面,其中包含一条指示作业已创建的消息。单击作业名称链接查看作业一览表。

9.

该一览表页应提示作业已成功完成。如果不是这样,您可以在您作业上的 Logs 标题下方单击来查看日志,也可以直接查看日志文件。

10.

您可以导航到 Tables 页面,在 Schema 域中输入 FSOWNER,并单击 Go,随后选择表,并从 Actions 列表中选择 View Data,从而确认数据加载。单击 Go

11.

您加载的行显示在 View Data for Table:FSOWNER.CUSTOMERS 页面中。单击 OK 返回 Tables 属性页。单击 Database 返回 Database Home 页面。

返回主题列表

在本教程中,您学习了如何:

在特定模式中查询表。
创建一个表,并查看新表的属性和内容。
创建一个视图。
管理数据库驻留的程序单元。
将数据载入现有表。

返回主题列表

将光标置于该图标上可以隐藏所有的屏幕截图。