第 8 章:管理模式对象
模式是一个数据库对象的集合。模式为一个数据库用户所有,并具有与该用户相同的名称。模式对象是由用户创建的逻辑结构,用以包含或引用他们的数据。模式对象包含诸如表、视图和索引之类的结构。您可以使用 Oracle Enterprise Manager 来创建和操作模式对象。
本章讨论了下面几个主题:
将鼠标移到这个图标上,显示所有的屏幕截图。您还可以将鼠标移到各个图标上,以只查看与该图标相关的屏幕截图。
返回主题列表
执行下面的步骤,使用 Enterprise Manager 访问模式对象:
1.
打开浏览器,并指定用户名和密码为 SYS ,以登录到 Enterprise Manager Database Console。
单击 Login 。
2.
单击 Administration 并选择 Tables 链接。
3.
选择 flashlight 图标以选择一种特定的模式。
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 页,其中显示了 Results 区中的行数据。
创建新表
返回主题列表
在本节中,您将为数据库创建三个新表:EMPLOYEES 、CUSTOMERS 和 ORDERS 。
1.
单击 Tables 属性页上的 Create 。
2.
创建表:出现 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 并选中。 单击 OK 。
7.
出现 Create Table 页。单击 OK 。
8.
出现 Table 页,其中含 Update 消息,指示您的表已创建。
9.
重复步骤 2 到 8,按如下定义的格式在 FSOWNER 模式中创建 CUSTOMERS 和 ORDERS 表。
CUSTOMERS
Column
Type
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
Column
Type
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 页上的 Schema 部分中单击 Tables 链接以访问 Schema objects 属性页。在 Object Type 下拉菜单中选择 Table 。在 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 页,其中在 Results 部分中带有 JOBS_HIST 表。单击 Delete 以删除 JOBS_HIST 表。
9.
单击 Yes 确认删除表。
10.
显示一条消息,指示已删除表。单击 Go 以尝试取回表。
11.
在结果区中显示 No object found ,指示表已丢弃(删除)。
返回主题列表
索引是与表关联的可选结构,可用于改进查询的性能。索引提供了对表数据的快速访问路径。可以在表的一个或多个列上创建索引。创建好索引后,Oracle Database 服务器将自动维护和使用它。对表的数据或结构所作的更改会自动合并进所有相关的索引中,它对于用户是完全透明的。
在本节,您将执行以下任务:
查看索引的属性
返回主题列表
执行下面列出的步骤,以在您的 FSOWNER 模式中查看索引的属性:
1.
在 Administration 页上的 Schema 部分中单击 Indexes 链接以访问 Indexes 属性页。
2.
出现 Indexes 页。在 Schema Name 域中输入 FSOWNER 并单击 Go 。
3.
显示出在您定义主键时所创建的索引。通过单击索引名链接,选择在 EMPLOYEES 表上创建的 EMP_ID_PK 索引。
4.
显示出 EMPLOYEES 表的 EMP_ID_PK 索引。
选择 Indexes 链接以返回到 Indexes 属性页。
创建新索引
返回主题列表
在 ORDERS 表的 CUSTOMER_ID 列上创建一个索引,以使您能够快速访问特定客户的所有订单。该索引将存储在 FSINDEX 表空间中。
执行下面列出的步骤以创建 ORD_CUSTID_IDX 索引:
1.
从 Object Type 中选择 Tables 。在 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 作为排序顺序。单击 OK 创建索引。
返回主题列表
视图是一个或多个表或其他视图中的数据的自定义显示。它们可以被看作存储的查询。视图并不真正包含数据,相反 它们是从它们所基于的表中获取它们的数据。这些表被称为视图的基表。与表一样,视图可以通过某些限制条件执行查询、更新、插入和删除操作。在视图上执行的所有操作实际上影响的是视图的基表。通过限制对预先确定的表的行列集的访问,视图提供了一个额外的安全等级。它们还隐藏了数据复杂性并存储复杂的查询。在本节,您将执行以下任务:
访问视图
返回主题列表
执行下面列出的步骤以访问视图:
1.
在 Administration 页的 Schema 部分中选择 Views。在 Schema Name 域中输入 HR 并单击 Go 。
2.
显示了定义在 HR 模式中的表上的视图。选择 EMP_DETAILS_VIEW 并单击 View 以查看其定义。
3.
显示 View 页,提供了视图的定义。
选择 Views 链接。
创建新视图
返回主题列表
执行下面列出的步骤以创建一个新视图:
1.
在 Views 属性页上单击 Create 。
2.
输入下面的信息并单击 OK 。
View name:CLERK10_ORDS Schema:FSOWNER Query text:
SELECT order_id, customer_id, order_total FROM orders WHERE sales_clerk_id = 10
3.
显示 Views 页,确认视图已创建。
选择 Database 链接。
返回主题列表
您可以使用 Enterprise Manager 来管理数据库驻留的程序单元,如 PL/SQL 包、过程、触发器和函数、以及 Java 源和类。这些操作包括创建和编译数据库驻留的程序单元、为数据库驻留的程序单元创建别名、授权使用数据库驻留的程序单元、以及显示数据库驻留的程序单元的依赖性。
1.
在 Administration 页上的 Schema 部分中单击 Procedures 链接。
2.
在 Schema 域中输入 hr 并单击 Go 。
3.
选择ADD_JOB_HISTORY 过程。从下拉菜单中选择 Grant Privileges 并单击 Go 。
4.
选择 EXECUTE 作为权限并选择 FSOWNER 作为用户。单击 OK 。
加载数据到表中
返回主题列表
您可以使用 Enterprise Manager 来成批地加载数据到表中。当您有许多数据时,批量加载是方便的。您可以加载来处操作系统文件或 其他的数据库的数据。您还可以导出数据到文件中。一种加载的方法是使用控制 (.ctl ) 和数据 (.dat ) 文件。这些文件被转化为标准的 SQL*Loader 文件格式。SQL*Loader 是一种实用工具,您可以用它来把外部文件的数据加载到 Oracle 数据库的表中。
在本节,您将使用 load_cust.ctl 文件把客户信息加载到您的 FSOWNER.CUSTOMERS 表中。创建一个名称为 $HOME/labs 的目录。下载 load_cust.zip 文件并解压缩 load_cust.ctl 和 load_cust.dat 文件到 $HOME/labs 中,以为本节所用。
1.
在 Maintenance 页上的 Utilities 部分中单击 Load Data From File 链接。
2.
出现 Load Data: Control File 页。输入您数据库服务器机器上的控制文件的完整路径。同时输入主机的用户名和密码。单击 Next 。
3.
出现 Load Data: Data 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 页,其中包含一条消息,指示加载数据提交成功。单击 View Job 以查看作业一览表。
9.
该一览表页将提示作业已成功完成。如果不是这样,您可以在您的作业上的 Logs 标题下方单击来查看日志,也可以直接查看日志文件。
10.
您可以转至 Tables 页,并选择表,然后选择 View Data ,来确认数据加载。单击 Go 。
11.
您加载的行显示在 View Data for Table:FSOWNER.CUSTOMERS 页上。单击 OK 返回到 Tables 属性页。
将您的鼠标移动到这些图标上以隐藏所有的屏幕界面