第 8 章:管理模式对象

目的

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

主题

本章讨论以下主题:

访问模式对象
管理表
管理索引
管理视图
管理数据库驻留程序单元
将数据加载到表中

将鼠标移到该图标上可以显示所有屏幕截图。还可以将鼠标移到特定的图标上来查看相关的屏幕截图。

访问模式对象

返回主题列表

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

1.

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

单击 Login

2.

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

将鼠标移到该图标上可以查看该图像

3.

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

将鼠标移到该图标上可以查看该图像

4.

选择 HR 并单击 Select

将鼠标移到该图标上可以查看该图像

5.

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

将鼠标移到该图标上可以查看该图像

6.

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

将鼠标移到该图标上可以查看该图像

返回主题列表

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

查看表的属性
查看表的内容
创建新表
修改表
删除表

查看表的属性

返回主题列表

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

1.

选择 EMPLOYEES 表并单击 View

将鼠标移到该图标上可以查看该图像

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

EMPLOYEE_ID NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME VARCHAR2(25)
EMAIL_ADDRESS VARCHAR2(25)
PHONE_NUMBER VARCHAR2(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
类型 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 页,其中包含有确认更新的消息。

将鼠标移到该图标上可以查看该图像

删除表

返回主题列表

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


1.

在 Administration 页面的 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.

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

将鼠标移到该图标上可以查看该图像

8.

显示 Tables 页面,并在 Result 部分中显示 JOBS_HIST 表。单击 Delete With Options 删除 JOBS_HIST 表。

将鼠标移到该图标上可以查看该图像

9.

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

将鼠标移到该图标上可以查看该图像

10.

显示一条消息,指示已删除表。单击 Go 尝试检索该表。

将鼠标移到该图标上可以查看该图像

11.

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

将鼠标移到该图标上可以查看该图像

返回主题列表

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

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

查看索引的属性
创建新索引

查看索引的属性

返回主题列表

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

1.

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

将鼠标移到该图标上可以查看该图像

2.

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

将鼠标移到该图标上可以查看该图像

3.

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

将鼠标移到该图标上可以查看该图像

4.

显示 EMPLOYEES 表的 EMP_ID_PK 索引。

将鼠标移到该图标上可以查看该图像

单击 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 域中输入 fsindex。选择 Standard B-tree 作为索引类型。在 Order 列中输入 1 以选择 CUSTOMER_ID 列。接受 ASC 作为 Sorting Order。单击 OK 创建索引。

将鼠标移到该图标上可以查看该图像

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

将鼠标移到该图标上可以查看该图像

返回主题列表

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

访问视图
创建新视图

访问视图

返回主题列表

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

1.

在 Administration 页面的 Database Objects 部分中,选择 Views。在 Views 属性页面中,在 Schema 域内输入 HR,然后单击 Go

将鼠标移到该图标上可以查看该图像

2.

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

将鼠标移到该图标上可以查看该图像

3.

显示 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 链接返回 Administration 页面。

返回主题列表

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

1.

在 Administration 页面的 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.

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

将鼠标移到该图标上可以查看该图像

2.

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

将鼠标移到该图标上可以查看该图像

输入您数据库服务器上控制文件的完整路径并单击 Next

将鼠标移到该图标上可以查看该图像

3.

显示 Load Data:Data File 页面。选择 The data file is specified in the control file。单击 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 页面。

将鼠标移到该图标上可以查看该图像

将鼠标移到该图标上可以隐藏所有屏幕截图