第一篇:Oracle 的安装与配置实验报告
Oracle 的安装与配置实验报告
班 级:10网工三班
学生姓名:谢昊天
学号:1215134046
实验目的和要求:
掌握Oracle的基本安装方法。掌握Oracle 10g的网络配置。能够使用DBCA创建数据库。
实验内容:
1、Oracle 10g的安装。
2、Oracle 10g的网络配置。
3、使用DBCA创建数据库。
实验步骤与调试过程:
安装oracle:
1、执行Oracle10g中的安装文件,点击setup开始Oracle 10g的安装
2、出现“选择要使用的安装方法”窗口选择高级安装,点击下一步。
3、所需安装的路径,点击下一步;
4、在此可以选择企业版,点击下一步
5、选择“创建启动数据库”
6、选择“创建象样本方案的数据库”选项),点击下一步。
7、选择默认设置,即“使用Database Console管理数据库”,以便在本地对数据库进行管理。单击“下一步”按钮。
8、指定数据库文件存储选项选择默认设置,单击“下一步”按钮。
9、即选中“不启用自动备份”单选按钮,单击“下一步”按钮
10、选择“所有用户都使用同一个口令”选项,口令输入oracle
11、“概要”窗口按照全局设置、产品语言、空间要求、新安装组件分类显示安装设置。可以先在概要窗口中检查一下这些设置是否满意,如不满意可以单击“上一步”按钮,返回到前一个步骤修改。
12、单击“口令管理”按钮,弹出“口令管理”窗口。
13、口令管理窗口。可以分别为SYS、SYSTEM、SCOTT用户设置口令。
14、安装完成,点击退出按钮,退出Oracle universal installer。可以记下该页面上面的文本内容,将来通过web访问控制oracle。
15、配置Oracle 10g网络环境
网络配置
1、安装目录中点击Net Manager,进入如下界面。
2、选择协议,这里选择TCP/IP
3、输入主机的IP地址或名称,然后输入端口号。
4、选择服务器。
5、通过网页打开登陆界面进行验证。
创建DBCA数据库。
1、开始菜单中的Database Configuration Assistant(DBCA),单击下一步。
2、选择创建数据库,单击下一步,“数据库模板”窗口,单击常规用途模板,然后单击下一步。
3、输入全局数据库名和SID,保持configure the Database with Enterprise Manager被选中,“数据库连接选项”窗口,选择在缺省情况下您需要您的数据库工作的模式。单击未用模式或分享服务器模式并单击下一步。
4、“初始化参数”窗口的字符集选项卡上,单击使用 Unicode(AL32UTF8)。
5、当数据库创建过程完成时,单击完成。
实验结果:
1、oracle安装完成,可以通过web访问控制oracle。
2、oracle安装成功后可以通查看服务,也可以通过sqlplus+用户名/密码来进行验证。
3、网络配置好后可以通过http://PC-201301151832:1158/em来验证,还可以查看oracle的各项作用。
4、可以通过网页来查看发现DBCA数据库创建成功。
疑难小结:
通过本次试验,我对Oracle 的安装与配置思想有了进一步的了解,通过动手实现Oracle 的安装与配置,更加深刻的理解了Oracle 安装的特点。在实验的过程中同时,发现如果在Oracle安装时候同时创建一个数据库实例会比先安装Oracle程序,再创建数据库慢。如果一开始不创建一个数据库实例,那么Oracle不会往系统服务里安装服务项。并且在实验过程中,回顾书本上的理论知识,巩固了我的知识。
主要算法和清单程序:
1、只需要安装包然后点击 setup、按照提醒 就可以进行安装;
2、创建数据库的语句 和一些命令;
3、Oracle 10g网络环境配置;
4、操作系统(XP),安装oracle10g;
5、验证安装是否正确;
6、看相关服务是否正常启动;
7、登录sql *plus客户端和OEM验证;
8、把oracle相关服务设置成手动启动(不让自动启动,这样可以减轻系统负担);
9、建立一个批处理文件,通过它实现oracle服务的启动和停止;
10、配置本地服务命名,本地服务器有问题时连接远程服务器操作(net manager)。
第二篇:Oracle实验报告
Oracle数据库实验报告
实验一:Oracle 10g安装卸载及相关工具配置
一、实验目标:
安装Oracle 10g,了解OEM,通过DBCA安装数据库,通过DBCA删除数据库,sqldeveloper连接数据库,卸载oracle 10g。
二、实验学时数 2学时
三、实验步骤和内容:
1、安装Oracle10g(默认安装数据库)双击setup.exe,选择基本安装,安装目录D:盘,标准版,默认数据库orcl,口令bhbh。进入先决条件检查界面时:网络配置需求选项不用打勾,直接下一步,是。直到安装成功。
2、登陆和了解OEM 主要是已网页的形式来对数据库进行管理。
第1页 http://主机IP:1158/em 用户名:sys 口令:bhbh 身份:sysdba 或者
用户名:system 口令:bhbh 身份:normal
3、通过DBCA删除已安装的默认数据库orcl 程序->OracleOraDb10g_home1->配置和移植工具->Database Configuration Assistant->创建数据库->……
5、sqldeveloper连接数据库 打开sqldeveloper,新建连接 连接名:system_ora 用户名:system 口令:bhbh 主机名:本机计算机名 SID:xscj 测试,显示成功,连接,保存。
第2页
6、卸载oracle 10g Windows下
1>停止所有Oracle服务,点Universal Installer卸载
2>删除注册表中的所有关于Oracle项
在HKEY_LOCAL_MACHINESOFTWARE下,删除Oracle目录
3>删除硬盘上所有Oracle文件。(1)Oracle安装文件
(2)系统目录下,在Program files文件夹中的Oracle文件
四、上机作业
根据实验步骤完成逐个实验目标中的任务。
五、心得体会
通过这次的实验,我了解了oracle数据库的情况。懂得了数据库就是把数据存储在一个类似与仓库的地方,需要用时才从数据库里调出来。通过上机实践,知道了装数据库和卸载数据库,并且学会了怎样连数据库。
实验二:Oracle 10g手工建数据库
一、实验目标:
安装Oracle 10g数据库环境,手工建立数据库;通过Net Configuration Assistant建立监听,使用sqldeveloper连接数据库测试。
二、实验学时数 2学时
三、实验步骤和内容:
先安装好Oracle 10g数据库环境(不安装默认数据库)。1.创建好相关的目录
第3页 假设oracle安装在D盘,打开命令行,运行->cmd-> md D:oracleproduct10.2.0adminmydbpfile md D:oracleproduct10.2.0adminmydbbdump md D:oracleproduct10.2.0adminmydbcdump md D:oracleproduct10.2.0adminmydbudump md D:oracleproduct10.2.0oradatamydb md D:oracleproduct10.2.0flash_recovery_areamydb 2.创建数据库实例
(1)设置环境变量SID(注:以后每打开一次CMD都要运行此句)set ORACLE_SID=mydb(2)创建口令文件
orapwd file=D:oracleproduct10.2.0oradatamydbPWDmydb.ora Password=bhbh entries=5(3)使用oradim命令创建数据库实例mydb oradim-new-sid mydb-startmode manual-pfile “D:oracleproduct10.2.adminmydbpfileinitmydb.ora” 3.用sys账户以sysdba的身份登录 输入sqlplus sys/bhbh as sysdba 4.创建实例初始化参数文件initmydb.ora,并将其放到D:oracleproduct10.2.adminmydbpfile路径下。
initmydb.ora # Copyright(c)1991, 2001, 2002 by Oracle Corporation
第4页 job_queue_processes=10 # Job Queues # Shared Server dispatchers=“(PROTOCOL=TCP)(SERVICE=mydbXDB)” # Miscellaneous compatible=10.2.0.1.0 # Security and Auditing remote_login_passwordfile=EXCLUSIVE # Sort, Hash Joins, Bitmap Indexes pga_aggregate_target=25165824 sort_area_size=65536 # Database Identification db_domain=“" db_name=mydb # File Configuration control_files=(”D:oracleproduct10.2.0oradatamydbcontrol01.ctl“, ”D:oracleproduct10.2.0oradatamydbcontrol02.ctl“,”D:oracleproduct10.2.0oradatamydbcontrol03.ctl“)db_recovery_file_dest=D:oracleproduct10.2.0flash_recovery_area db_recovery_file_dest_size=2147483648 # Pools
第5页 java_pool_size=50331648 large_pool_size=8388608 shared_pool_size=83886080 # Cursors and Library Cache open_cursors=300 # System Managed Undo and Rollback Segments undo_management=AUTO undo_tablespace=UNDOTBS1 # Diagnostics and Statistics background_dump_dest=D:oracleproduct10.2.0adminmydbbdump core_dump_dest=D:oracleproduct10.2.0adminmydbcdump user_dump_dest=D:oracleproduct10.2.0adminmydbudump # Processes and Sessions processes=150 # Cache and I/O db_block_size=8192 db_cache_size=25165824 db_file_multiblock_read_count=16
5.运行命令实例初始化 STARTUP NOMOUNT
第6页 pfile=”D:oracleproduct10.2.0adminmydbpfileinitmydb.ora“;6.运行创建数据库SQL命令 CREATE DATABASE mydb MAXINSTANCES 1 MAXLOGHISTORY 1 MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXDATAFILES 100 DATAFILE 'D:oracleproduct10.2.0oradatamydbsystem01.dbf' SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED SYSAUX DATAFILE 'D:oracleproduct10.2.0oradatamydbsysaux01.dbf' size 20M UNDO TABLESPACE UNDOTBS1 DATAFILE 'D:oracleproduct10.2.0oradatamydbundotbs01.dbf' SIZE 150M REUSE AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE TEMP1 TEMPFILE 'D:oracleproduct10.2.0oradatamydbtemp01.dbf' SIZE 100M REUSE CHARACTER SET ZHS16GBK NATIONAL CHARACTER SET AL16UTF16 LOGFILE 'D:oracleproduct10.2.0oradatamydbredo01.log' SIZE 50M,第7页
'D:oracleproduct10.2.0oradatamydbredo02.log' SIZE 50M,'D:oracleproduct10.2.0oradatamydbredo03.log' SIZE 50M;7.创建用户表空间USERS CREATE TABLESPACE USERS DATAFILE 'D:oracleproduct10.2.0oradatamydbusers01.dbf' SIZE 128M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED;8.创建数据字典(需要几分钟,报错不要紧)
@D:oracleproduct10.2.0db_1RDBMSADMINcatalog.sql;9.创建内部包(需要几分钟,报错不要紧)
@D:oracleproduct10.2.0db_1RDBMSADMINcatproc.sql;10.创建自启动文件,以便以后不用每次打开数据库实例都要运行一次第5步。
create spfile FROM pfile='D:oracleproduct10.2.0adminmydbpfileinitmydb.ora';11.重启数据库,即关闭再打开。shutdown;connect sys/bhbh as sysdba;startup;12.授权用户system为dba,置密码为bhbh
第8页 grant dba to system identified by bhbh;13.使用system用户登录 conn system/bhbh;14.为system用户创建一张KC表 CREATE TABLE KC(KCH CHAR(3)NOT NULL, KCM CHAR(16)NOT NULL, KKXQ NUMBER(1)NOT NULL, XS NUMBER(2)NOT NULL, XF NUMBER(2), CONSTRAINT CH_KKXQ CHECK(kkxq between 1 and 8), CONSTRAINT ”PK_KCH“ PRIMARY KEY(”KCH“))TABLESPACE USERS;15.给KC表插入一条数据,并提交。
INSERT INTO KC VALUES('001','数据库',7,68,4);commit;16.测试查询 Select * from kc;17.使用Net Configuration Assistant添加监听器,并重启监听器(运行cmd->netca也一样)。
第9页 18.创建Em资料档案库(这一步可以省略,只为创建OEM,我们以后学习用不到)。
cmd->emca-config dbcontrol db-repos create 19.打开SQLDeveloper,并新建数据库连接并测试是否成功。
20.若之前手工安装数据库出现差错,可使用以下命令删除数据库实例: cmd->oradim-delete-sid mydb 然后删除第1步所建目录即可。
四、上机作业
根据实验步骤完成逐个实验目标中的任务。
五、心得体会:
通过这次的实验,明白了手动建数据库,建表空间等。还知道了运行数据库的命令,授权命令插表等等。这次学习让我对数据库的了解和运用又新的体会。
实验三:数据库修改
一、实验目标:
学习简化实验二里的实验步骤,学习修改数据库某些属性,完成数据库作业1:手工快速创建数据库实例XSCJ和数据库XSCJ。
二、实验学时数 2学时
三、实验步骤和内容:
第10页 1.安装好ORACLE 10g,(不需要安装数据库)。
2.快速安装数据库实例mydb和数据库mydb需要3个文件:init.bat,initmydb.ora,ctreatedb.sql。
(1)双击运行init.bat文件;
(2)将initmydb.ora放到正确的路径下(参考实验二);(3)在sqlplus环境下运行ctreatedb.sql
3.了解startup nomount,startup mount和startup三种状态的使用情况的区别,即打开实例不装载数据库、打开实例装载数据库但不打开数据库和打开实例装载数据库同时打开数据库。
(1)运行P45页例子2-7修改数据库(提示:startup;)ALTER DATABASE mydb DATAFILE 'D:oracleproduct10.2.0oradatamydbusers01.dbf' RESIZE 200M;(2)运行P45页例子2-9删除数据库(提示:startup mount;)取消数据库的受限制状态:
alter system enable restricted session;删除数据库: DROP DATABASE;(3)重建数据库
sys重新登录,运行ctreatedb.sql。
4.删除数据库实例mydb和数据库mydb。使用命令 oradim-delete-sid mydb 以及删除相关文件夹。
四、上机作业
第11页 适当地修改建库所用到的3个文件里的参数,手工安装数据库实例xscj和数据库xscj(快速安装),用户表空间myts。
五、心得体会
这次学习,让我明白了怎样修改数据库某些属性,手工快速创建数据库实例XSCJ和数据库XSCJ。DROP DATABASE命令可以删除数据库…
实验四:表的创建、修改和删除 以及表数据的插入、修改和删除
一、实验目标:
学习表的创建、插入、修改和删除以及表数据的插入、修改和删除。
二、实验学时数 4学时
三、实验步骤和内容: 1.手工创建好数据库XSCJ。
2.为用户system创建3个表XSB、KCB和CJB(P66-67 例子3.7-3.9,create table用法,自己照书完成)。
CREATE TABLE XSB(XH char(6)NOT NULL PRIMARY KEY, XM char(8)NOT NULL, XB char(2)DEFAULT '1' NOT NULL,第12页
CSSJ date NOT NULL, ZY char(12)NULL, ZXF number(2)NULL, BZ varchar2(200)NULL)TABLESPACE myts;CREATE TABLE KCB(KCH char(3)NOT NULL PRIMARY KEY,KCM char(16)NOT NULL, KKXQ number(1)NULL, XS number(2)NULL, XF number(1)NOT NULL)TABLESPACE myts;CREATE TABLE CJB(XH CHAR(6)NOT NULL, KCH CHAR(3)NOT NULL, CJ NUMBER(2), XF NUMBER(1), PRIMARY KEY(XH,KCH))TABLESPACE myts;3.学习修改表结构(P70 例子3.11(1)-(3)alter table用法)。(1)在表XSB中增加两列:JXJ(奖学金等级)、DJSM(奖学金等级说明)。
第13页 ALTER TABLE XSB ADD(JXJ number(1), DJSM varchar2(40)DEFAULT '奖金1000元');(2)在表XSB中修改名为DJSM的列的默认值。ALTER TABLE XSB MODIFY(DJSM DEFAULT '奖金800元');(3)在表XSB中删除名为JXJ和DJSM的列。ALTER TABLE XSB DROP COLUMN JXJ;ALTER TABLE XSB DROP COLUMN DJSM;修改好可用命令:describe table_name;查看。4.删除表(P71 drop table用法)。DROP TABLE table_name;5.向XSCJ数据库的表XSB中插入一行(P75 例子3.12 insert用法)。INSERT INTO XSB(XH, XM, XB, CSSJ, ZY, ZXF)VALUES('101101', '王林', '男',TO_DATE('19900210','YYYYMMDD'), '计算机', 50);提交数据: Commit;
插入后可用命令:select * from table_name;查看。
第14页 6.学习删除表数据(P78 DELETE和TRUNCATE的用法)。将XSCJ数据库的XSB表中总学分小于50的行删除: DELETE FROM XSB WHERE ZXF<50;使用TRUNCATE TABLE语句删除表中的所有数据,且不能恢复。TRUNCATE TABLE table_name;插入后可用命令:select * from table_name;查看。7.为3个表XSB、KCB和CJB插入数据(使用insert.sql)8.学习修改表数据(P78-79 例子3.17-3.20 UPDATE 用法)。UPDATE XSB SET BZ='三好' WHERE XH='101110';UPDATE XSB SET ZXF=ZXF+10;
UPDATE XSB SET ZY='通信工程', BZ='转专业学习', XH='101241' WHERE XM= '罗林琳';
UPDATE XS
第15页 SET ZXF=ZXF+ 4, BZ= '提前修完《数据结构》,并获得学分'
插入后可用命令:select * from table_name where(条件);查看。9.将数据恢复到刚插入时的状态(即把修改过的表清空再插入)。10.了解一下同义词,知道同义词的作用(不作重点)。
四、上机作业
手工安装数据库实例xscj和数据库xscj(快速安装),用户表空间myts后,为用户system创建3个表XSB、KCB和CJB,并插入所有数据。
五、心得体会
这次学习的表创建,删除和修改的学习使我对数据库的表的认识更进一步。通过这次的学习,学会对表的创建、修改、删除。创建表就是按格式写些代码;修改(UPDATE+表名+需修改的内容)和删除(DROP TABLE + 表名)就是使用指定的指令对表进行操作,使之完成想要的目的。
WHERE XM='李明';
实验五:数据库查询练习
一、实验目标:
学习数据库数据查询语句的基本方法以及视图的使用方法。
二、实验学时数
第16页 6学时
三、实验步骤和内容:
课本例子:4.5,4.6,4.8,4.9,4.12(2),4.14,4.15(2),4.16,4.17 4.18,4.19,4.28,4.29,4.37,4.39(1),(3),4.42,4.43,4.46
(一)学习和掌握课本查询语句的基本语法和使用方法,完成下面练习(*为必做,@为选做)。
*
1、查询所有计算机系学生的信息。Select * from xsb;*
2、查询王同学所修的学号
Select kch from xsb where xm like '王%';*
3、查询出生于85和86年的女同学的学号和姓名。Select xh,xm from xsb where cssj between to_date('19900101','yyyymmdd')and to_date('19911231','yyyymmdd')and xb='女';*
4、查询学号为101104所选修的全部课程成绩。Select cj from cjb where xh='101104';*
5、检索每个学生的姓名和年龄。
Select xm,to_char(sysdate,'yyyy')-to_char(cssj,'yyyy')as 年龄 from xsb;*
6、在XS表中检索学生的姓名和出生年份,输出的列名为姓名和生年 Select xm,to_char(cssj,'yyyy')as 出生时间 from xsb;*
7、在XS_KC表中,求选修课程206的学生的学号和得分,并将结果按分数降序排序。
第17页 Select xh,cj from cjb where kch=’206’ order by cj desc;*
8、把课程名为软件工程的成绩从学生选课数据表XS_KC中删除。Delete from kcb where kcm=(select kch from kcb where kcm=‘软件工程’);*
9、把女同学的成绩提高10%。
Update cjb set cj=cj*1.1 where xh in(select xh from xsb where xb='女')and cj<=90;*
10、如果学号为061106的学生的成绩少于90,则加上10分。Update cjb set cj=cj+10 where xh=’061106’and cj<90;*
11、查询学号为061104的学生选修的课程号和课程名。
Select xh,xm from xsb where xh in(select xh from cjb where kcb=’061104’;
*
12、检索学习课程号为206的学生学号与姓名。Select xm,xh from xsb where kch=’206’;*
13、检索‘李明’所选修的全部课程名称。
Select kcm from kch where xm=(select xm from xsb where xm=’李明’);*
14、查找每个同学的学号及选修课程的平均成绩情况。Select xh,avg as 课程号平均成绩 from cjb;*
15、求选修了各课程的学生的人数。
Select count(distinct xh)as 选修课程总人数 from cjb;Select kch as课程号 ,count(xh)as 选修人数 group by kch;
第18页 *
16、查询平均成绩都在80分以上的学生学号及平均成绩。Select xh,cj from cjb group by xh having avg(cj)>80;Select xh,cj from cjb group by xh having avg(cj)>80 order by avg(cj);Select xh,cj from cjb group by xh having avg(cj)>80 order by avg(cj)desc;*
17、查询至少有6人选修的课程号。
Select kch as 课程号 from cjb group by having count(*)>=6;*
18、检索选修课程号为101或102的学生学号,姓名和所在系
Select xh,xm,zy from kch=(select kch from kcb where kch=’101’and kch= ‘102’;
*
19、统计被学生选修的课程门数。Select cjb 每个学生情况以及选修课程情况
Select * from xsb inner join cjb on xsb.xh=cjb.xh Select xsb.*,cjb.* from xsb,cjb where xsb.xh=cjb.xh *20、查询没有选修数据库的学生学号,姓名和专业名。
@
21、取出选修‘操作系统’课程的学生姓名。
@
22、检索至少选修课程“数据结构”和“计算机基础”的学生学号。@
23、检索至少选修课程号为101和206的学生姓名。@
24、列出学生所有可能的选课情况。@
25、查询101号课程得最高分的学生的学号
@
26、‘计算机基础’课程得最高分的学生的姓名、性别、所在系。
第19页 @
27、将成绩最低的学生的成绩加上10分。@
28、所有成绩都在70分以上的学生姓名及所在系。@
29、列出选修课程超过3门的学生姓名及选修门数。@30、至少选修了两门课及以上的学生的姓名和性别 @
31、检索至少有两名男生选修的课程名。
@
32、统计每门课程的学生选修人数(超过10人的课程才统计)。@
33、计算机基础成绩比离散数学成绩好的学生
@
34、列出每个同学的学号、姓名及选修课程的平均成绩情况,没有选修的同学也列出。
@
35、列出每个同学的学号及选修课程号,没有选修的同学也列出
(二)视图
1、创建一个名为zy_view的视图,该视图可以用来查看每个系名称和学生人
Create or replace view zy_view(专业,专业人数)as select zy,count(xh)from xsb group by zy;
2、创建一名为xs_view的视图,该视图可以用来查看每个学生的姓名、选修的课程名和成绩。查看视图。
Create or replace view xs_view(姓名,课程名,成绩)as select xm kcm cj from xsb,kcb,cjb where xsb.xh=cjb.xh and cjb.kch=kcb.kch;
3、创建一个名为kc_view的视图,该视图可以用来查看每门课的课程号,课程名,选修人数和平均成绩。
Create or replace view kc_view(课程号,课程名,选修人数,平均成绩)as select kcb.kch,kcm,count(xh),avg(cj)from cjb,kcb where cjb.kch=kcb.kch group by kcb.kch,kcm;
4、利用kc_view视图,查看平均成绩最高的课程名。
Select 课程名 from kc_view where平均成绩=(select max(平均成绩)from kc_view);
5、修改xs_view视图,将视图重定义为每个学生的姓名、选课门数和平均
第20页 成绩。
Create or replace view xs_view(姓名,选课门数,平均成绩)as select xm,count(kch),avg(cj)from cjb,xsb where xsb.xh=cjb.xh group by xsb.xh,xm;
6、删除zy_view视图。Drop view zy_view;
四、上机作业
完成实验内容中的任务,并把语句记录在每道题的下面。
五、心得体会
这次学习,我知道了对表的内容的查询,修改的操作,并通过实践对这次操作命令进一步的熟悉,运用和掌握。还学会了怎么建立视图,视图是可以快速的查询多个表的不同的信息的图表,它使我们更方便。
实验六:索引和约束
一、实验目标:
(1)掌握索引的使用方法。
(2)掌握各种约束即数据完整性的实现方法。
二、实验学时数 2学时
三、实验步骤和内容: 1.关于索引
第21页 建立索引的最大好处是快速存取数据。
假设有10个学生,10门课,则成绩表会有100条记录,对于成绩表中某人某门课成绩的查找,最坏情况是逐行查找100次,即最后一行。而如果对成绩表中的学号和课程号创建索引,则最坏情况只需查找20次(先查找学号,再查找课程号)。
建立索引的原则:(1)先插数据再建索引。
(2)如果经常检索的内容仅为包含大量数据的表中少于15%的行,就需要创建索引。
(3)建立索引的先后顺序会影响查询的性能。2.创建索引表空间 CREATE TABLESPACE INDX DATAFILE 'D:oracleproduct10.2.0oradataxscjindx01.dbf' SIZE 32M REUSE AUTOEXTEND ON NEXT 1280K MINIMUM EXTENT 128K DEFAULT STORAGE(INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);2.创建索引
CREATE INDEX kc_name_idx ON KCB(KCM)TABLESPACE ”INDX";3.维护索引
第22页 ALTER INDEX kc_name_idx
4.删除索引 DROP INDEX kc_idx;5.数据完整性
生活中有些数据除了数据类型和宽度,还必须要定义其他规则的,比如学生学号必须是唯一的,不能重复的;性别必须是男或女,成绩必须是0-100的范围等。因此必须使用一些方法对数据进行约束,才得以保持数据完整性。
6.约束
(1)建表同时添加约束: XSB表: 主键为学号。KCB表: 课程号为主键,开课学期默认值为1,且只能为1-8。CJB表
主键为学号和课程号,存在外键XH参照XSB表的XH,存在外键KCH参照KCB表的KCH。(2)建表后时添加约束 XSB表:
第23页 RENAME TO kc_idx;性别必须为“男”或者“女”。CJB表:
成绩必须>=0且<=100或者为空。7.插入数据验证。8.思考题
(1)建KCB表时添加约束,使课程号必须为三位0-9数字
(2)建XSB表时添加约束,使学号为101开头,后三位为0-9数字
四、上机作业
完成实验内容中的任务,并把语句记录在每道题的下面。
五、心得体会
通过这次的学习,我知道了索引的最大好处是快速存取数据。1:先插数据再建索引。2:如果经常检索的内容仅为包含大量数据的表中少于15%的行,就需要创建索引。3:建立索引的先后顺序会影响查询的性能。这3条是建立索引的原则。
我还知道了可以增加约束,就是制约范围。
实验七:PL/SQL编程
一、实验目标:
(1)掌握变量、运算符以及控制语句的使用。(2)掌握系统函数和自定义函数的使用。
二、实验学时数 4学时
三、实验步骤和内容: SYS登录,先导入数据字典:
第24页 @D:oracleproduct10.2.0db_1RDBMSADMINcatalog.sql;@D:oracleproduct10.2.0db_1RDBMSADMINcatproc.sql;(1)定义变量
例子1:定义一个长度为10的变量count,其初始值为1,是varchar2类型。
count varchar2(10):= '1';例子2:在表XSB中包含XH列,为了声明一个变量my_xh与XH列具有相同的数据类型,声明时可使用点和%TYPE属性,格式如下:
my_xh XSB.XH%TYPE;例子3:可以使用%ROWTYPE属性声明描述表的行数据的记录。
如:声明一个记录名为cj_rec,它与CJB表具有相同的名称和数据类型,格式如下:
DECLARE cj_rec CJB%ROWTYPE;对于用户定义的记录,必须声明自己的域: DECLARE TYPE TimeRec IS RECORD(HH number(2),MM number(2));(2)程序块
例子6.6:查询总学分大于50的学生人数 set serveroutput on DECLARE v_num number(3);
第25页 BEGIN SELECT COUNT(*)INTO v_num
FROM xsb
WHERE zxf>50;
IF v_num<>0 THEN dbms_output.put_line('总学分>:50的人数为:'|| TO_CHAR(v_num));END IF;END;/ 例子6.9:求10的阶乘。DECLARE n number:=1;count1 number:=2;BEGIN LOOP
n:=n*count1;
count1:=count1+1;
IF count1>10 THEN
EXIT;END IF;
第26页 END LOOP;DBMS_OUTPUT.PUT_LINE(to_char(n));END;/(3)函数
系统函数:例子6.20、6.21、6.22、6.23、6.24 自定义函数:例子6.26、6.27、6.28
如果李明同学的年龄大于20岁,则显示“李明同学年龄为X岁”,否则打印“李明同学不符合条件” set serveroutput on declare age number(2);begin select to_char(sysdate, 'yyyy')-to_char(cssj, 'yyyy')into age from xsb where xm='李明';if age>20 then dbms_output.put_line('李明同学年龄为'||to_char(age)||'岁');else dbms_output.put_line('李明同学不符合条件');end if;end;/
2.计算1+3+5+……+99的和,并显示结果。
declare s number:=0;i number:=1;begin loop
第27页 s:=s+i;i:=i+2;exit when i>99;end loop;dbms_output.put_line(to_char(s));end;/
3.编写一个函数f_age,可以在xs表中根据姓名求出某人的年龄。
create or replace function f_age(sname in char)return number as age number;begin select to_char(sysdate,'yyyy')-to_char(cssj,'yyyy')into age from xsb where xm=sname;return(age);end;/
4.改写第1题的程序块,调用函数f_age来求年龄。set serveroutput on;declare age number(2);begin age:=f_age('李明');if age>20 then dbms_output.put_line('李明同学年龄为'||to_char(age)||'岁');else dbms_output.put_line('李明同学不符合条件');end if;end;/
第28页
四、上机作业
完成实验内容中的任务,并把语句记录在每道题的下面。
五、心得体会
通过这次的学习,学会了用sql语言编写简单的程序,定义和调用简单函数。在此基础上还巩固了sql语句查询的方法。在以后的学习中要多加理解,上机练习。
实验八:游标与存储过程
一、实验目标:
(1)掌握游标的使用方法。(2)掌握存储过程的使用方法。
二、实验学时数 6学时
三、实验步骤和内容: 游标 例子:
set serveroutput on DECLARE v_xh char(6);v_zxf number(2);CURSOR XS_CUR3
第29页 IS SELECT XH,ZXF FROM XSB WHERE ZYM='计算机';BEGIN OPEN XS_CUR3;FETCH XS_CUR3 INTO v_xh,v_zxf;WHILE XS_CUR3%FOUND LOOP dbms_output.put_line(v_xh||' '||TO_CHAR(v_zxf));FETCH XS_CUR3 INTO v_xh,v_zxf;END LOOP;CLOSE XS_CUR3;END;1.使用游标,将平均分大于75分的学生的学号、姓名、平均分逐行输出。
set serveroutput on DECLARE v_xh char(12);v_xm char(12);v_cj number(38);CURSOR XS_CUR3 IS SELECT CJB.XH,XSB.XM,avg(CJ)FROM XSB,CJB WHERE xsb.xh=cjb.xh group by CJB.XH,XSB.XM having avg(cj)>75;
第30页 BEGIN OPEN XS_CUR3;FETCH XS_CUR3 INTO v_xh,v_xm,v_cj;WHILE XS_CUR3%FOUND LOOP dbms_output.put_line(v_xh||' '||TO_CHAR(v_xm)||v_cj);FETCH XS_CUR3 INTO v_xh,v_xm,v_cj;END LOOP;CLOSE XS_CUR3;END;存储过程 例子1:
CREATE OR REPLACE PROCEDURE update_info(xname in char)AS xf number;BEGIN SELECT ZXF INTO xf FROM XS WHERE XM=xname;IF XF>60 THEN UPDATE XSB SET BZ='三好学生' WHERE XM= xname;
第31页
END IF;IF XF<35 THEN UPDATE XS SET BZ='学分未修满' WHERE XM=xname;END IF;END update_info;执行:
(1)EXECUTE update_info('李明');(2)begin update_info('李明');end;例子2: CREATE OR REPLACE PROCEDURE count_grade(zym in char,person_num out number)AS BEGIN
SELECT COUNT(XH)
INTO person_num
FROM XS WHERE ZYM=zym;END count_grade;
第32页 执行:
set serveroutput on DECLARE v_num number;BEGIN count_grade('计算机',v_num);dbms_output.put_line(v_num);END;/ 1.创建一个存储过程p_delete可以删除CJB表的信息。CREATE OR REPLACE PROCEDURE p_delete AS
BEGIN delete FROM CJB;END p_delete;执行
EXECUTE p_delete;
2.创建一个存储过程p_insert,可以给学生表添加一条记录。CREATE OR REPLACE PROCEDURE p_insert(XH IN CHAR,XM IN CHAR,XB IN CHAR,CSSJ IN DATE,ZY IN CHAR,ZXF IN NUMBER,BZ IN CHAR)AS BEGIN insert into xsb values(XH,XM,XB,CSSJ,ZY,ZXF,BZ);END p_insert;执行:
execute p_insert('102222','罗','女',to_date('19860310','yyyymmdd'),'通信工程',50,'转专业学习');
第33页
3.创建一个存储过程p_count,输入参数为姓名,输出参数为选课门数,平均成绩。CREATE OR REPLACE PROCEDURE p_count(XNO IN CHAR,K_COUNT OUT NUMBER,AVG_CJ OUT NUMBER)BEGIN SELECT count(kch),avg(cj)INTO K_COUNT,AVG_CJ FROM XSB,CJB WHERE XSB.XH=CJB.XH AND XSB.XH=XNO;END p_count;
set serveroutput on DECLARE v_num1 number;v_num2 number(4,2);BEGIN p_count('101104',v_num1,v_num2);dbms_output.put_line(v_num1||' '||v_num2);END;
四、上机作业
完成实验内容中的任务,并把语句记录在每道题的下面。
五、心得体会
通过这次学习,我知道了游标和存储过程,还知道了游标和存储过程的使用方法,并且掌握了它们的使用方法,为以后打下基础。
实验九:触发器、用户角色创建和逻辑备份
第34页
一、实验目标:
(1)掌握触发器的使用。
(2)掌握用户和角色的创建和使用。(3)掌握数据表的导入导出。
二、实验学时数 2学时
三、实验步骤和内容:
(一)触发器
例子1: 假设XSCJ数据库中增加一个新表XSB_HIS,表结构和表XSB相同,用来存放从XSB表中删除的记录。创建一个触发器,当XSB表被删除一行,把删除的记录写到日志表XSB_HIS中。
CREATE OR REPLACE TRIGGER del_xs BEFORE DELETE ON XSB FOR EACH ROW BEGIN INSERT INTO XSB_HIS(XH,XM, XB,CSSJ, ZY, ZXF,BZ)VALUES(:OLD.XH,:OLD.XM, :OLD.XB, :OLD.CSSJ, :OLD.ZY, :OLD.ZXF, :OLD.BZ);END;1.创建一个触发器,当XSB表删除一个人时,把这个人的选课信息也删掉。CREATE OR REPLACE TRIGGER del_xs BEFORE DELETE ON XSB FOR EACH ROW BEGIN
第35页 DELETE FROM CJB WHERE XH=:OLD.XH;END del_xs;
(二)用户和角色
1.创建一个用户tom,密码为cat。该用户角色为dba。使用该用户建表,插入数据。
CREATE USER tom identified by cat default tablespace users;grant dba to tom;导入table.sql和insert.sql drop user tom cascade;
(三)数据库逻辑备份 exp和imp的使用
(1)将XSB,KCB和CJB表导出成为DMP文件
(2)将XSB,KCB和CJB表删除
(3)将刚导出DMP文件导入恢复3个表
(1)将用户tom导出成为DMP文件
(2)将用户tom删除再重建
(3)将刚导出DMP文件导入恢复用户tom
四、上机作业
完成实验内容中的任务。
五、心得体会
第36页 通过这次实践,我明白了什么是触发器,并掌握的它的使用方法,还掌握了用户和角色的创建和使用。还学会了数据表的导入导出,使保存数据变的很容易。
第37页
第三篇:Oracle数据库实验报告
中南林业科技大学
实验报告
课程名称:
Oracle数据库 专业班级: 姓名:
学号:
****年**月**日
实验一
安装和使用Oracle数据库
【实验目的】
1.掌握Oracle软件安装过程,选择安装组件 2.掌握建立Oracle数据库,配置网络连接 3.掌握Oracle企业管理器的基本操作 4.使用SQL*Plus,登录到实例和数据库 5.掌握命令方式的关闭和启动实例及数据库 【实验内容】
1.查看已安装的Oracle组件
2.查看服务,记录下和数据库有关的服务名,将他们设为手动方式,启动相关服务。
3.配置监听器,查看是否在服务中有LISTENER,是否能启动。4.配置本地net服务,提示:设置正确的服务器地址和端口号。5.打开SQL*Plus,用SYS和SYSTEM用户名和密码登录。6.思考题:有几种打开SQL*Plus的方法?分别是什么? 7.用命令关闭实例和数据库,记录命令
8.用命令以NOMOUNT的方式启动实例,再加载数据库,打开数据库。
【实验结论】
1.查看已安装的Oracle组件
2.查看服务,记录下和数据库有关的服务名,将他们设为手动方式,启动相关服务。
3.配置监听器,查看是否在服务中有LISTENER,是否能启动。
4.配置本地net服务,提示:设置正确的服务器地址和端口号。
5.打开SQL*Plus,用SYS和SYSTEM用户名和密码登录。
6.思考题:有几种打开SQL*Plus的方法?分别是什么?(1)直接打开 sql plus 即窗口方式(2)cmd 命令行方式
(3)WEB 页面中 iSQL*Plus 方式 7.用命令关闭实例和数据库,记录命令 SQL>shutdown immediate
8.用命令以NOMOUNT的方式启动实例,再加载数据库,打开数据库。
sql>startup nomount sql>alter database mount;sql>alter database open;sql>startup
(1).用SQLplus 命令:show parameters参数名
(2).用select [列名] from 表名
2.初始化文件有几种?默认的保存位置在哪里?
初始化文件有三种:数据文件,日志文件,控制文件; 默认的保存位置E:oracleproduct10.2.0oradataorcl
4.打开OEM,查看三类物理文件信息
三类物理文件:数据文件、控制文件、日志文件 数据文件:.DBF存储表、索引及数据结构信息
日志文件:.LOG记录对数据库的所有修改信息,用于恢复
控制文件:.CTL二进制文件,记录数据库名、文件标识、检查点
5.分别用select命令查询V$parameter动态性能视图,用show命令查看全局数据库名、实例名、是否启动自动归档、标准数据块大小这四个参数的值,记录命令和结果。用select命令查询V$parameter动态性能视图
用show命令查看全局数据库名、实例名
用show命令查看是否启动自动归档、标准数据块大小
6.如何用命令查看数据文件、控制文件的文件名、存储位置和状态信息?
(1).查看数据文件的文件名、存储位置和状态信息
(2).查看控制文件的文件名、存储位置和状态信息
0
和服务器型文件都要找到),查看各类默认位置并记录下来(包括物理文件所在目录,该数据库相关的各个目录等),登录到mydb数据库。
2.用命令方式手工创建数据库testorcl
(1)创建批处理文件,建立必需的各级目录,参考第一题MYDB数据库的默认目录。
(4)运行数据库建立脚本,更改相关服务为手动启动方式
(5)运行数据字典等创建脚本
3.在DBCA中删除MYDB数据库。
Enter valuefor 4:runner Specify log path as parameter 5: Enter valuefor 5: D:oracleproduct10.2.0db_2RDBMSlog
二、完成下面的查询,记录查询命令和结果。1.查询HR方案种有哪些表,列出表名 2.设置行宽为160,每页行数为40 3.查询employees表中所有薪水在3000到6000元之间的员工编号、姓、名、受聘日期、工作代号、薪水、经理代号、部门号,按部门号升序排列,同一部门按员工编号降序排列
4.查询每个部门的人数、平均薪水、最高薪水、最低薪水,按部门编号升序排列
5.查询first_name的第三个字母是t的员工编号,first_name,电话号码,部门编号,部门名称
6.在job_history表中查询任职时间超过1年的员工编号,任职历时月份(保留整数),工作代号,部门代号。
7.查询每个部门经理的员工编号、姓名、薪水、部门号。
【实验结论】
一、需要访问HR示例方案中的表,如果机器上没有该示例方案,则运行相关包和相应配置装入HR方案。
1.将hr.rar解压到D:oracleproduct10.2.0db_2demoschema human_resources目录下,然后在SQL*PLUS 中执行 hr_main.sql
二、完成下面的查询,记录查询命令和结果。1.查询HR方案种有哪些表,列出表名
5.查询first_name的第三个字母是t的员工编号,first_name,电话号码,部门编号,部门名称
738
实验五
PL/SQL编程
【实验目的】
1.熟悉PL/SQL的数据类型和书写规则 2.熟悉控制结构和游标的使用 3.编写和运行函数、过程和触发器 【实验内容】
编写脚本文件,调试运行脚本文件,并记录结果。
1.在SQL*Plus中编写一个PL/SQL块,功能用于打印学生信息 在DECLARE部分完成:
(2)建立学生信息记录类型stu_record_type,包括学号,姓名,性别,籍贯,学习成绩和活动成绩。均为可变长字符类型(3)编写本地子过程:学生信息打印过程PrintStuRecord,把(1)中定义的记录类型作为参数(4)定义学生信息记录变量stu_record 在BEGIN…END部分完成:
(1)为stu_record变量的各个元素赋值如下: 学号:‘2001001’ 姓名:’李新’
性别:‘m’
籍贯:‘黑龙江省哈尔滨市’ 学习成绩:‘Excellent’
0
(1)建立学生信息记录类型stu_record_type,包括学号,姓名,性别,籍贯,学习成绩和活动成绩。均为可变长字符类型
set serveroutput on declare type stu_record_type is record
(s_no varchar2(8), s_name varchar2(10), s_sex varchar2(2), s_address varchar2(20), s_studyscore varchar2(10), s_activescore varchar2(10));(2)编写本地子过程:学生信息打印过程PrintStuRecord,把中定义的记录类型作为参数
procedure PrintStuRecord as begin dbms_output.put_line('学号:'|| stu_record.s_no);dbms_output.put_line('姓名 :'|| stu_record.s_name);dbms_output.put_line('性别:'|| stu_record.s_sex);dbms_output.put_line('籍贯:'|| stu_record.s_address);dbms_output.put_line('学习成绩:'|| stu_record.s_studyscore);dbms_output.put_line('活动成绩:'|| stu_record.s_activescore);end PrintStuRecord;(3)定义学生信息记录变量stu_record stu_record stu_record_type;在BEGIN…END部分完成:
(4)为stu_record变量的各个元素赋值如下: 学号:‘2001001’ 姓名:’李新’
性别:‘m’
籍贯:‘黑龙江省哈尔滨市’
2.建立对bookinfo表的DML触发器,一旦bookinfo表发生了任何变化,立即触发,对bookinfo表的数据进行统计,结果存储在数据统计表中
(1)如果没有则建立bookinfo表,选择建立在scott用户下,表结构为(bookno varchar2(36)Primary key, bookname varchar2(40)not null, authorname varchar2(10)not null, publishtime date, bookprice float)
create table bookinfo(bookno varchar2(36)Primary key,4
Selectcount(bookno),count(distinct authorname)from bookinfo;end;/
(4)在bookinfo表中插入、删除和更新信息,再查看major_stats表中数据的变化 <1>插入
647
实验六
模式对象管理与安全管理
【实验目的】
1.了解模式对象的类型
2.掌握在OEM中操作模式对象的方法
3.掌握命令方式建立表、视图、索引等常见对象的方法 4.熟悉Oracle中权限分类和设置,理解系统提供用户的角色和权限
5.熟练使用建立用户、角色,为用户授权、授予角色的命令
【实验内容】
1.创建一个TESTUSET用户,密码为test,默认表空间为user表空间
2.创建用户后为其授予登录数据库和创建数据库对象的权限 3.用TESTUSER用户登录数据库
4.创建学生信息表(学号,姓名,性别,入学成绩),定义主键和输入数据(至少5条数据),提交添加的数据。并完成下面的题目:
(1)再继续添加2条数据,设置一个保存点savepoint,再添加1条数据,执行回退到保存点的回退命令。查看此时表中数据(2)查询入学成绩大于480的学生信息(3)建立男生信息视图
(4)在“成绩”字段上建立B-树索引
5.创建一个表簇,名为empl_dep,容纳empl表和dep表,有公
第四篇:Oracle安装报告
Oracle 安装报告
安装Oracle 10g 数据库
步骤:
1、先装虚拟机
2、在虚拟机中装一个windows xp 操作系统
3、安装数据库Oracle 10g 在windows xp 中(注意安装时的细节)
注释:由于Oracle 10g 数据库卸载比较麻烦,所以我们选择在虚拟机中安装 虚拟机的安装:
从官网上下载一个虚拟机,然后进行安装,根据提示一步一步的安装,最后完成。Windows xp 的安装:
在虚拟机中找到windows 镜像的路径,点击确定。然后运行,进行安装。分配空间时,不能分的太小,不然Oracle 会跑步起来,硬盘分配不能低于10G,内存不能少于256MB。系统安装完毕以后,在安装一个小工具,就是Vmare Tools 工具,装上这个工具就可以从我们的电脑上拷贝数据了。Oracle 10g 安装:
先把数据库安装文件拷贝到虚拟机中,然后在进行安装。安装时会遇到很多问题,一定要仔细对待。本数据库安装会默认三个用户:sys(默认密码change_on_install)、system(默认密码manager)、scott(默认密码tiger)。默认数据库orcl 在密码设置的时候,首字母必须是英文字母,不能为数字。路径的设置也要注意。安装完成以后,进行测试一下,点击sqlplus,进入这个界面,出现一个登录界面,输入用户名System,你自己设置的密码 ******,主机字符串就不用管了,因为现在你就有一个数据库。进入以后若出现连接成功就说明Oracle 安装成功。心得体会:
在安装Oracle数据库的过程中,我也遇到了一系列的问题,通过询问老师和同学、查阅资料,最总得到了解决。自我感觉还可以,自己进行安装开发软件,从中能学到不少的东西,进而为以后的发展打下一定的基础。这样的话我们就会对这个产品更加彻底的了解了。
第五篇:1,班级学号姓名,实验报告范文Oracle安装
《Oracle 数据库系统》电子实验报告(1)
题 目:安装 Oracle 数据库
日期
201..姓 名
实验环境:
Windows 或 linux,Oracle 11g 2
实验目的:
1.熟悉 Oracle 数据库安装包的获取方法 2.熟悉 Oracle 软件的安装
实验内容:
1.安装环境说明
2.安装包的获取
3.安装步骤,及注意事项
4.Oracle 数据库的初步使用 1)Sql Plus 环境
2)Sql Developer 环境 3)浏览器环境
完成情况:
完成了***************完成了****************
出现的问题:(小四宋体)在完成**任务时,遇到了**问题,解决思路是****,解决步骤时*****。在完成**任务时,遇到了**问题,解决思路是****,解决步骤时*****。
*****************