oracle大型数据库实验报告3

  • 格式:doc
  • 大小:65.50 KB
  • 文档页数:10

练习:用desc命令查看V$log视图的结构,并试着查询控制文件更详细的信息。

(3)控制文件

通过如下方式查看控制文件相关信息:

给出运行结果截图:

练习:用desc命令查看V$controlfile视图的结构,并试着查询更详细的信息。

(4)参数文件

①通过如下方式查看参数文件相关信息:

a、show parameter显示服务器参数

b、查询试图v$Parameter,可以利用该动态性能视图来确定参数的默认值是否被修改,以及是否可以用alter system和alter session命令修改

阅读结果并理解各数据项的含义。

②修改服务器参数

a、通过企业管理器(OEM)修改

b、使用 alter system修改服务器参数。格式如下:

Alter system set parameter =value

Eg:alter system set db_block_size=4096;

练习:在%oracle_home%(如D:\app\Administrator\product\11.2.0\dbhome_1\database或者D:\app\Administrator\product\11.2.0\dbhome_1\srvm\admin)找到名为SPFileSID.ora(如:SPfileorcl.ora)和init.ora的文件,此文件即为参数文件,用记事本或者写字板打开它们,阅读其内容并理解各数据项的作用。

3、Oracle逻辑存储结构

(1)查看表空间的名称及大小

执行以下语句,并给出运行结果。

(2)查看表空间物理文件的名称及大小

执行以下语句,并给出运行结果。

(3)查看回滚段名称及大小

执行以下语句,并给出运行结果。

(4)查看所有表空间对应的数据文件名:

SQL>select distinct file_name,tablespace_name,AUTOEXTENSIBLE

from dba_data_files;

(5)查看表空间的使用情况:

SQL>select sum(bytes)/(1024*1024) as free_space,tablespace_name

from dba_free_space group by tablespace_name;

(6)查看回滚段的使用情况,哪个用户正在使用回滚段的资源:

SQL>select ername,

from v$transaction t,v$rollstat r,v$rollname u,v$session s

where s.taddr=t.addr and t.xidusn=n and n=n order by ername;

4、Oracle内存与进程结构

(1)查看sga情况:

SQL>SELECT NAME, BYTES

FROM SYS.V_$SGASTAT ORDER BY NAME ASC;

(2)数据库共享池性能检查:

SQL>Select namespace,gets,gethitratio,pins,pinhitratio,reloads,Invalidations

from v$librarycache

where namespace in ('SQLAREA','TABLE/PROCEDURE','BODY','TRIGGER');

(3)检查共享内存的剩余情况:

SQL>select request_misses, request_failures

from v$shared_pool_reserved;

(4)数据高速缓冲区性能检查:

SQL>select 1-p.value/(b.value+c.value) "db buffer cache hitratio"

from v$sysstat p,v$sysstat b,v$sysstat c

Where ='physical reads' and ='db block gets'

and ='consistent gets'; (5)查看排序段的性能:

SQL>SELECT name, value

FROM v$sysstat

WHERE name IN ('sorts (memory)', 'sorts (disk)');

(6)查看数据库中某用户,正在运行什么SQL语句

SQL>SELECT SQL_TEXT

FROM V$SQLTEXT T, V$SESSION S

WHERE T.ADDRESS=S.SQL_ADDRESS

AND T.HASH_value=S.SQL_HASH_value AND S.MACHINE='XXXXX' OR USERNAME='WACOS';

4、其他

(1)查看数据库库对象:

SQL>select owner, object_type, status, count(*) count# from all_objects

group by owner, object_type, status;

(2)查看数据库的创建日期和归档方式:

SQL>Select Created, Log_Mode From V$Database;

5、作业与思考练习题

1、现有控制文件的位置及其名称是什么?

提示:查询动态性能视图V$CONTROLFILE。注:您还可以使用 V$PARAMETER,或者执行 SHOW PARAMETER命令以显示控制文件的名称和位置。

2、控制文件中数据文件部分的初始大小是多少?

提示:查询动态性能视图V$CONTROLFILE_RECORD_SECTION。

3、实验报告要求

从物理存储结构、逻辑存储结构以及内存与进程结构中分别选择三个进行查询,并给出实验结果。 实验四: Oracle 数据库的查询与更新

实验学时:6

实验类型:设计型

一.实验目的及要求

1.熟悉Oracle的基本知识及SCOTT模式。

2.熟悉并掌握oracle常用的查询语句。

3.熟悉并掌握oracle常用的更新语句

4.熟悉并掌握oracle常用的事务语句

二、实验主要内容

1、Oracle查询语句。

2、Oracle 更新语句。

3、Oracle事务处理。

三、实验仪器设备

在局域网环境下,有一台服务器和若干台客户机。服务器成功安装Oracle 11g数据库服务器(企业版),客户机成功安装Oracle 11g客户端软件,网络服务配置正确,数据库和客户端正常工作。

四、实验步骤

(一)oracle常用的查询语句

1、选择列

1)显示所有员工的姓名及工龄,并分别用别名表示姓名和工龄。

2)在检索emp表中的sal列,并把其值调整为原来到1.2倍

3)显示每个雇员的年薪(sal+comm)*13

4)检索emp表中有奖金员工不同工种(job),即要求显示的“job”记录不重复

2、选择行

1)查询工作是CLERK的所有职工的姓名,职工号和部门号

2)查询奖金高于工资20%的员工信息。

3)查询emp表中工资(sal)大于1500且部门编号为10的数据记录

4)查询工资同时不等于3000、950、800的员工记录。

5)查询工资不在2000到3000之间的员工信息。

6)查询职务为”PRESIDENT“、”MANAGER“、”ANALYST“任意一种员工的信息

7)查询以字母‘J’开头,以’S ’结尾,中间任意长度为名的员工记录

8)把职工名字和部门编号中间用‘WORKS IN DEPARTMENT’连接起来

9)查询emp中comm为空的员工信息 10)查询工资高于500或是岗位为manager的雇员,同时还要满足他们的姓名首写字母为大写的”J“

11)查询所有工种不是MANAGER和CLERK,且工资大于或等于2000的员工信息。

12)如何按照部门升序、雇员的年薪降序显示信息

13)查询每个部分员工平均工资超过1500的记录信息,并按降序排列。

14)显示每个部门的员工工资总和(使用ROLLUP关键字)。

15)显示每个部门的员工工资总和及每一个岗位工资总和(使用CUBE关键字)。

3、连接查询

1)内连接

查询所以员工的编号、员工姓名和员工所在的部门名称。

2)等值连接

查询职位为MANAGER每个员工的编号、员工姓名和员工所在的部门名称。

3)自然连接

在emp表中检索工资(sal字段)大于2000的记录,并实现emp和dept的自然连接

4)自连接

a、查询不低于CLARK工资的员工号、员工姓名和员工工资,查询后的结果要求按员工工资升序排列。

b、查询所有管理者的下属员工信息。

5)外连接

首先使用INSERT语句在emp表中插入新纪录,但并没有为deptno,dname列插入值,即他们的值为null

INSERT INTO emp(empno,ename,job) VALUES(9527,'EAST','SALESMAN');

然后在dept表中插入如下记录

INSERT INTO dept(deptno,dname) VALUES(50,'HR',’Shanghai’)

完成下面的外连接:

a、将emp表和dept表进行左外连接,emp为左表,dept表为右表

b、将emp表和dept表进行右外连接,emp为左表,dept表为右表

c、需要了解所有员工和部门信息(完整外连接)。

4、子查询

1)单行单列子查询(使用比较运算符)

查询出既不是最高工资也不是最低工资的员工信息

2)单列多行子查询(IN子查询)

a、查询与SMITH员工从事相同工作的其他员工信息。

b、查询部门人数大于5的部门的员工的信息。

3)ANY或ALL子查询

a、查询工资大于部门编号为10的任意一个员工工资即可的其他部门的员工信息。

b、查询工资大于部门编号为30的所有员工工资的员工信息。

4)多列子查询

查询与‘SMITH’的部门和岗位完全相同的其他员工信息。

5)from子句中使用子查询