oracle实验报告一至五 张凤荔
更新时间:2024-05-24 04:27:01 阅读量: 综合文库 文档下载
实验 1 数据库管理
一、目的和要求
(1)了解 Oracle 数据库的逻辑结构和物理结构; (2)了解 Oracle Enterprise Manager 的使用情况; (3)学习关闭和启动数据库实例的方法; (4)学习使用 SQL 语句创建数据库的方法; (5)学习使用 SQL 语句删除数据库的方法。
二、实验准备
首先要了解 Oracle 数据库的逻辑结构,包括方案(schema)对象、数据块(data block)、区间(extent)、段(segment)和表空间(tablespace)等。数据库由若干个表空间组成,表空间由表组成,段由区间组成,区间则由数据块组成。Oracle 数据库的物理结构由构成数据库的操作系统文件所决定。每个 Oracle 数据库都由 3 种类型的文件组成:数据文件、日志文件和控制文件。这些数据库文件为数据库信息提供真正的物理存储。
Enterprise Manager 10g 是 Oracle 10g 提供的新的管理工具,简称 EM。使用它可以完成启动、关闭数据库,创建、删除数据库等功能。只有系统管理员或拥有 CREAT E DATABASE权限的用户才能创建数据库。可以在 Enterprise Manager 中通过图形界面创建数据库,也可以使用 CREATE DATABASE 语句创建数据库。 三、实验内容
(1)练习使用不同方法启动和关闭数据库实例。
(2)练习使用不同 方法创建和删除数据库,要使操作的数据库为用户管理数据库UserMan。
1.使用 SHUTDOWN 命令关闭数据库实例
练习使用 SHUTDOWN 命令关闭数据库实例,分别按以下方式启动数据库实例。
(1)正常关闭。等待当前所有已连接的用户断开与数据库的连接,然后关闭数据库。
正常关闭的语句如下: SHUTDOWN NORMAL
(2)立即关闭。回退活动事务处理并断开所有已连接的用户,然后关闭数据库。立即
关闭的语句如下:
SHUTDOWN IMMEDIATE
(3)事务处理关闭。完成事务处理后断开所有已连接的用户,然后关闭数据库。事务
处理关闭的语句如下:
SHUTDOWN TRANSACTIONAL
(4)中止关闭。中止数据库实例,立即关闭数据库。中止关闭的语句如下: SHUTDOWN ABORT
每次执行 SHUTDOWN 语句关闭数据库实例之前,请执行 STARTUP 命令启动数据库。
2.使用 STARTUP 命令启动数据库实例
练习使用 STARTUP 命令启动数据库实例,分别按以下方式启动数据库实例。 (1)启动数据库实例时不装载数据库。执行此操作的命令如下: STARTUP NOMOUNT
(2)启动数据库实例,装载数据库,但不打开数据库。通常在数据库维护时执行此操作,对应的命令如下: STARTUP MOUNT
(3)启动后限制对数据库实例的访问。执行此操作的命令如下: STARTUP RESTRICT
(4)强制实例启动。在遇到特殊异常的情况时,可以强制启动实例。强制启动实例的
语句如下:
STARTUP FORCE
每次执行 STARTUP 语句启动数据库实例之前,请执行 SHUTDOWN 命令关闭数据库。
3.使用 ORACLE Enterprise Manager 关闭数据库实例 按照下面的步骤关闭数据库实例。 (1)在数据库处于打开状态 时,使用 SYS 用户以 SYSD BA 身份登录到 EnterpriseManager。在主目录页面的“一般信息”栏目中,可以看到“关闭”按钮。 (2)单击“关闭”按钮,可以打开“主机和目标数据库身份证明”页面。用户需要拥有管理员 的权限才能关闭数据库实 例,包 括主机操作 系统的管理员和当前数据库实例的SYSDBA 用户。
(3)输入完成后,单击“确定”按钮,打开“确认关闭”页面。
(4)单击“是”按钮,开始关闭数据库。关闭操作完成后,单击“刷新”按钮,打开“启动数据库实例”页面。
4.使用 ORACLE Enterprise Manager 启动数据库实例 按照下面的步骤启动数据库实例。
(1)使用 SYS 用户以 SYSDBA 身份登录到 Enterprise Manager。
(2)单击“启动”按钮,打开“主机和目标数据库身份证明”页面。用户需要拥有管理员的权限才能启动数据库实例,包括主机操作系统的管理员和当前数据库实例的SYSD BA用户。
(3)输入完成后,单击“确定”按钮,打开“确认打开”页面。 (4)单击“是”按钮,开始打开数据库。
5.使用 SQL 语句创建数据库
按照如下条件创建数据库 UserMan。
(1)设置 SYS 用户的密码为 SYSPWD,设置 SYSTEM 用户的密码为 SYSTEMPWD。
(2)使用已有的控制文件。
(3)指定日志文件组 redo01.log,大小为 10MB;指定日志文件组 redo02.log,大小为10MB。设置最大的日志文件数量为 10。 (4)定义日志文件组中最大的日志文件数量为 5。 (5)定义最大的数据文件数量为 100。 (6)定义数据库中最大的实例数量为 1。 (7)定义存储数据的字符集为 US7ASCII。
(8)定义数据文件名称为 SYS01.dbf,初始大小为 100MB。 (9)定义默认的表空间为 tbs_1。
(10)定义临时表空间为 tempts 1。
(11)定义临时文件为 temp01.dbf,大小为 10MB。 CREATE DATABASE 语句如下:
CREATE DATABASE OracleDB
USER SYS IDENTIFIED BY SYSPWD
USER SYSTEM IDENTIFIED BY SYSTEMPWD CONTROLFILE REUSE
LOGFILE GROUP 1 (?redo01.log?) SIZE 10M ,
GROUP 2 (?redo02.log? ) SIZE 10M ,
MAXLOGFILES 10 MAXLOGMEMBERS 5 MAXDATAFILES 100 MAXINSTANCES 1
CHARACTER SET US7ASCII
DATAFILE ?sys01.dbf? SIZ E 100M REUSE EXTENT MANAGEMENT LOCAL DEFAULT TABLESPACE tbs_1
DEFAULT TEMPORARY TABLESPACE tempts1
6.使用 SQL 语句删除数据库
按照如下步骤删除数据库 UserMan。
(1)在删除数据库之前,需要用户以 SYSDBA 或 SYSOPER 身份登录,代码如下:
CONNECT SYS/SYSPWD AS SYSDBA;
其中 SYSPWD 为 SYS 用户的密码,请根据实际情况输入。 (2)关闭数据库,再以 MOUNT 模式启动数据库,代码如下: SHUTDOWN IMMEDIATE; STARTUP MOUNT;
(3)删除数据库,代码如下:
DROP DATABASE ;
实验2 角色和用户管理
一、实验内容
1. 使用SQL语句创建数据库角色
语句如下:CREATE ROLE UserManRole IDENTIFIED BY myrollpwd;
2. 使用SQL语句为数据库角色授权
语句如下:GRANT CONNECT TO UserManRole;
GTANT RESOURCE TO UserManRole;
3. 使用SQL语句创建数据库用户
语句如下:CREATE USER UserManAdmin
IDENTIFIED BY UserPwd
DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; 设置系统权限
GRANT UNLIMITED TABLESPACE TO UserManAdmin;
4. 使用SQL语句制定用户角色
语句如下:GRANT UserManRole TO UserManAdmin;
实验3 表和视图管理
实验内容
1. 使用SQL语句创建表 语句如下:
CREATE TABLE UserManAdmin.Users (UserID Number Primary key,
UserName Varchar2(40) NOT NULL, UserType Number(1), UserPwd Varchar2(40) );
CREATE TABLE UserManAdmin.LoginInfo (UserID Number,
LoginTime CHAR(20) NOT NULL );
2. 使用SQL语句向表中插入数据 语句如下:
INSERT INTO UserManAdmin.Users VALUES(1,'Admin',1,'AdminPwd'); INSERT INTO UserManAdmin.Users VALUES(2,'User',2,'UserPwd'); INSERT INTO UserManAdmin.Users VALUES(3,'Liuli',3,'LiuliPwd');
INSERT INTO UserManAdmin.Users VALUES(4,'Wangfan',4,'WangfanPwd'); COMMIT;
INSERT INTO UserManAdmin.LoginInfo VALUES(1,'2012-03-27 10:33:02'); INSERT INTO UserManAdmin.LoginInfo VALUES(1,'2012-03-28 08:34:13'); INSERT INTO UserManAdmin.LoginInfo VALUES(1,'2012-03-29 09:13:11'); INSERT INTO UserManAdmin.LoginInfo VALUES(2,'2012-03-27 07:35:02'); INSERT INTO UserManAdmin.LoginInfo VALUES(2,'2012-03-28 08:11:54');
INSERT INTO UserManAdmin.LoginInfo VALUES(2,'2012-03-29 09:13:11'); INSERT INTO UserManAdmin.LoginInfo VALUES(3,'2012-03-27 08:33:02'); INSERT INTO UserManAdmin.LoginInfo VALUES(3,'2012-03-28 09:34:13'); INSERT INTO UserManAdmin.LoginInfo VALUES(3,'2012-03-29 10:13:11'); INSERT INTO UserManAdmin.LoginInfo VALUES(4,'2012-03-27 11:33:02'); INSERT INTO UserManAdmin.LoginInfo VALUES(4,'2012-03-28 13:34:13'); INSERT INTO UserManAdmin.LoginInfo VALUES(4,'2012-03-29 15:13:11');
COMMIT;
3. 练习使用SQL语句修改表中数据 语句如下:
UPDATE UserManAdmin.Users SET UserPwd='AdminPassword' WHERE UserName='Admin';
SELECT UserPwd FROM UserManAdmin.Users WHERE UserName='Admin';
4. 练习使用SQL语句删除表中数据 语句如下:
DELETE FROM UserManAdmin.Users WHERE UserName='Wangfan'; SELECT * FROM UserManAdmin.Users;
5. 练习使用SELETE语句查询数据 语句如下:
SELECT * FROM UserManAdmin.Users;
SELECT UserName AS X,UserPwd AS 100798 FROM UserManAdmin.Users;
SELECT * FROM UserManAdmin.Users WHERE UserType=2;
SELECT UserPwd FROM UserManAdmin.Users WHERE UserName='Admin'; SELECT * FROM UserManAdmin.Users ORDER BY UserName DESC; SELECT COUNT(*) FROM UserManAdmin.Users;
SELECT u.UserName, l.LoginTime FROM UserManAdmin.Users u INNER JOIN UserManAdmin.LoginInfo l ON
u.UserID=l.User
6.练习使用SQL语句创建视图 语句如下:
CREATE VIEW UserLogin
AS
SELECT u.UserName, l.LoginTime FROM UserManAdmin.Users u INNER JOIN UserManAdmin.LoginInfo l ON u.UserID=l.UserID;
实验4 管理索引和序列
实验内容
1. 使用SQL语句创建索引 语句如下:
CREATE TABLE Users
(UserID Number Primary key,
UserName Varchar2(40) NOT NULL, UserType Number(1), UserPwd Varchar2(40) );
CREATE INDEX index_username ON Users(UserName) TABLESPACE Users;
2. 在创建表的同时创建索引 语句如下:
CREATE TABLE Employees
(EmpId NUMBER PRIMARY KEY, EmpName VARCHAR2(50) UNIQUE, Sex CHAR(2), UserID NUMBER );
3. 使用SQL语句创建序列 语句如下:
CREATE SEQUENCE E MINVALUE 1 NOMAXVALUE START WITH 1 INCREMENT BY 1 NOCYCLE CACHE 20;
4. 在插入数据时使用序列 语句如下:
INSERT INTO Employees (EmpId, EmpName) VALUES (EMP_S.NEXTVAL, 'Employee1');
INSERT INTO Employees (EmpId, EmpName) VALUES (EMP_S.NEXTVAL, 'Employee2');
INSERT INTO Employees (EmpId, EmpName) VALUES (EMP_S.NEXTVAL, 'Employee3'); COMMIT;
SELECT * FROM Employees;
实验 5 PL/SQL 编程
实验内容:
1.使用条件语句
执行例9.4中程序,观察运行结果。 例9.4
下面演示了IF语句的使用方法,代码如下: SET ServerOutput ON; DECLARE
Num INTEGER := -11; BEGIN
IF Num < 0 THEN
dbms_output.put_line('负数'); ELSIF Num > 0 THEN
dbms_output.put_line('正数'); ELSE
dbms_output.put_line('0'); END IF; END; /
程序中声明了一个整形变量Num,使用IF语句判断Num是正数、负数或者0,程序运行结果为‘负数’。
2.使用分支语句
执行例9.5中程序,观察运行结果。 例9.5
使用CASE语句根据给定的整数输出对应的星期值,代码如下: SET ServerOutput ON; DECLARE
varDAY INTEGER := 3; Result VARCHAR2(20); BEGIN
Result := CASE varDAY
WHEN 1 THEN '星期一' WHEN 2 THEN '星期二' WHEN 3 THEN '星期三' WHEN 4 THEN '星期四' WHEN 5 THEN '星期五' WHEN 6 THEN '星期六' WHEN 7 THEN '星期七' ELSE '数据越界' END;
dbms_output.put_line(Result); END; /
程序中声明了一个整形变量varDAY和一个字符型变量Result。使用CASE语句判断varDAY变量是星期几。如果变量varDAY在1~7之间,则能显示相应的星期信息:否则返回提示信息‘数据越界’。程序运行结果为‘星期三’。
3.使用循环语句
执行例9.6和例9.9中程序,观察运行结果。 例9.6
下面是关于LOOP…EXIT…END语句的示例程序,代码如下: SET ServerOutput ON; DECLARE
v_Num INTEGER := 1; v_Sum INTEGER := 0; BEGIN LOOP
v_Sum := v_Sum + v_Num;
dbms_output.put_line(v_Num); IF v_Num = 3 THEN EXIT; END IF;
dbms_output.put_line(' + '); v_Num := v_Num + 1; END LOOP;
dbms_output.put_line(' = '); dbms_output.put_line(v_Sum); END; /
程序将计算1~3的累加结果,程序运行如下: 1+2+3=6
例9.9
例9.6的程序也可以用FOR…IN…LOOP…END LOOP语句实现,代码如下: SET ServerOutput ON; DECLARE
v_Num INTEGER; v_Sum INTEGER := 0; BEGIN
FOR v_Num IN 1..3 LOOP
v_Sum := v_Sum + v_Num;
dbms_output.put_line(v_Num); IF v_Num < 3 THEN
dbms_output.put_line(' + '); END IF; END LOOP;
dbms_output.put_line(' = '); dbms_output.put_line(v_Sum); END; /
1. 使用PL/SQL函数
执行例9.12和例9.26中的程序,观察运行结果。 例9.12
如果要计算-4的绝对值,可以执行一下命令。 SET ServerOutput ON; BEGIN
dbms_output.put_line(ABS(-4)); END; /
例9.26
执行以下语句可以统计Users中最小的用户编号: SELECT MIN(UserID) FROM UserManAdmin.Users;
正在阅读:
oracle实验报告一至五 张凤荔05-24
北师大一年级下数学单元教学反思03-01
2019年泰安中考物理模拟试题附答案满分70分时间60分钟11-20
军事理论考试题及答案01-18
战略合作协议书精选7篇03-28
2017年宜昌市中考化学试题及答案解析01-19
新东方英文讲座精华篇03-02
新版陕旅版六年级下册英语第三单元教案(2015最新精编版)05-27
中秋节活动总结范本八篇04-03
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 张凤
- 实验
- 报告
- oracle