1.有4条与游标有关的语句,它们在程序中出现的正确顺序是:(B)
1) OPEN abc
2) CURSOR abc IS SELECT ename FROM emp
3) FETCH abc INTO vname
4) CLOSE abc
BA.1、2、3、4 B.2、1、3、4
C.2、3、1、4 D.1、3、2、4
2.数据库运行在归档模式下,如果发生日志切换,为了保证不覆盖旧的日志信息,系统将启动如下哪个进程?(D)
A.DBWR B.LGWR
C.SMON D.ARCH
D3.对于ROLLBACK命令,以下准确的说法是:(C)
A.撤销刚刚进行的数据修改操作
B.撤销本次登录以来所有的数据修改
C.撤销到上次执行提交或回退操作的点
D.撤销上一个COMMIT命令
C4.创建表空间时,可以指定表空间中存储对象的默认存储参数,其中哪个参数用于设置分配给每一个对象的初始区大小(B)
A.NEXT B.INITIAL
C.PCTINCREASE D.MINEXTENTS
B5.现将CONNECT 角色授予TEXT_ROLE角色,下面哪个语句可以实现(D)
A.GRANT ROLE CONNECT ON TEST_ROLE;
B.GRANT ROLE CONNECT TO TEST_ROLE;
C.GRANT CONNECT ON TEST_ROLE;
D.GRANT CONNECT TO TEST_ROLE;
D 二、填空题样题:1.Oracle数据库系统的物理存储结构主要有三类文件组成,分别:数据文件和日志文件和控制文件。逻辑存储结构包括oracle 数据块、区、段 和 表空间。
2.SQL*Plus中直接调用过程的关键字是exec;查询中去掉重复的行,必须使用的关键字是distinct;关键字describe可以用来显示表的结构信息。
3.使用EXPORT命令时,可以有3种不同方式导出数据,表方式就是导出一个指定的基本表,包括表的定义和数据及表上的索引、约束等。用户方式是导出一个用户的所有对象,包括表、视图、存储过程、序列等。全数据库方式是导出数据库中所有的对象。
4.在ORACLE数据库中,将权限分为两类即系统权限和对象权限,分别指在系统级控制数据库的存取和使用机制和在模式对象上控制存取和使用的机制。
三、判断题样题1.INSERT事件触发器中可以使用:old伪记录;DELETE事件触发器中可以使用:new伪记录。 (×)
2.后台进程LGWR的作用是数据库写入程序。 (×)
3.Alter user tempuserIdentified by oracle Default tablespace users Default temporary tablsespace temp Quota 100M on users (×)
4.SQL*PLUS中,显示登录的用户的命令是DESCRIB user。 (×)
5.默认登录Oracle Enterprise Manager Database Control 的端口号是1158。(√)
四、简答题样题:1.How to connect remote oracle server by SQL*PLUS?Please write down the steps and the operating statements?
配置Net Configuration Assisant
在SQlplus客户端运行conn命令
1.配置Net Configuration Assisant 首先打开Net Configuration Assiant客户端,选择“本地网络服务名配置”。选择所要做的工作,选择“添加”。 输入服务名。 选择通信协议。然后配置主机名和端口号。 最后进行测试。
2.在sqlplus中运行命令 先输入username和password登录sqlplus,然后运行命令conn scott/tiger@orcl (其中scott就是Net Configuration Assistant中配置的orcl实例登录名。)
配置Net Configuration Assisant在SQlplus客户端运行conn命令1.配置Net Configuration Assisant 首先打开Net Configuration Assiant客户端,选择“本地网络服务名配置”。选择所要做的工作,选择“添加”。 输入服务名。 选择通信协议。然后配置主机名和端口号。 最后进行测试。 2.在sqlplus中运行命令 先输入username和password登录sqlplus,然后运行命令conn scott/tiger@orcl (其中scott就是Net Configuration Assistant中配置的orcl实例登录名。)2.What is the difference between procedures and functions in the Oracle database?
存储过程
函数
用于在数据中完成特定的操作或者任务
用于特定的数据
程序头部申明procedure
程序头部申明function
程序头部申明时不需要描述返回类型
程序头部申明时需要描述返回类型,而且PL/SQL至少要包含一个有效的return语句
可以使用in/out/ in out
可以使用in/out/in out
可作为一个独立的PL/SQL语句来执行
不能立即执行,必须作为表达式的一部分
可以通过out.int out
通过return语句返回一个值
SQL语句中不得调用任何存储过程
SQL语句中可以调用函数
3.读懂如下程序:
CREATE OR REPLACE FUNCTION ret_deptinfo(
p_deptnodept.deptno%TYPE,p_num OUT NUMBER,p_max OUT NUMBER)
RETURN dept.dname%TYPE
AS
v_dnamedept.dname%TYPE;
BEGIN
SELECT dname INTO v_dname FROM dept WHERE deptno=p_deptno;
SELECT count(*),max(sal) INTO p_num,p_max FROM emp WHERE deptno=p_deptno;
RETURN v_dname;
END ret_deptinfo;
分析程序实现的功能:
按照部门号查询该部门总人数、最高工资,同时返回该部门的部门名称。
4.输入和运行以下程序:
CREATE OR REPLACE TRIGGER CHECK_SAL
BEFORE UPDATE ON emp
FOR EACH ROW
BEGIN
IF :new.job='CLERK' AND (:new.sal1000) THEN
RAISE_APPLICATION_ERROR(-20001, '工资修改超出范围,操作取消!');
END IF;
END;
分析程序实现的功能:
为emp表的“CLERK”职位的工资添加约束条件:大于500小于1000
五、设计题样题:1、创建一个存储过程,以部门号为参数,查询该部门的平均工资,并输出该部门中比平均工资高的员工号、员工名。并且调用该存储过程,要求根据输入部门编号,查询平均工资及输出比平均工资高的员工号、员工名。
CREATE OR REPLACE PROCEDURE show_emp(p_deptnoemp.deptno%TYPE)
AS
v_salemp.sal%TYPE;
BEGIN
SELECT avg(sal) INTO v_sal FROM emp WHERE deptno=p_deptno;
DBMS_OUTPUT.PUT_LINE(p_deptno||' '||'average salary is:' ||v_sal);
FOR v_emp IN (SELECT * FROM emp WHERE deptno=p_deptno AND sal>v_sal) LOOP
DBMS_OUTPUT.PUT_LINE(v_emp.empno||' '||v_emp.ename);
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('The department doesn’’t exists!');
END show_emp;
过程调用语句:
declare
vdeptnoemp.detpno%type;
Begin
vdeptno:=&deptno;
show_emp(vdeptno);
End;
CREATE OR REPLACE PROCEDURE show_emp(p_deptnoemp.deptno%TYPE)ASv_salemp.sal%TYPE;BEGIN SELECT avg(sal) INTO v_sal FROM emp WHERE deptno=p_deptno; DBMS_OUTPUT.PUT_LINE(p_deptno||' '||'average salary is:' ||v_sal); FOR v_emp IN (SELECT * FROM emp WHERE deptno=p_deptno AND sal>v_sal) LOOP DBMS_OUTPUT.PUT_LINE(v_emp.empno||' '||v_emp.ename); END LOOP;EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('The department doesn’’t exists!');END show_emp;过程调用语句:declarevdeptnoemp.detpno%type;Beginvdeptno:=&deptno;show_emp(vdeptno);End;2、创建一个函数,以部门号为参数,返回部门名、部门人数及部门平均工资。并且调用该函数,输出所有有员工的部门的名称、部门人数和平均工资。
CREATE OR REPLACE FUNCTION ret_deptinfo(p_deptnodept.deptno%TYPE,
p_num OUT NUMBER, p_avg OUT NUMBER)
RETURN dept.dname%TYPE
AS
v_dnamedept.dname%TYPE;
BEGIN
SELECT dname INTO v_dname FROM dept WHERE deptno=p_deptno;
SELECT count(*),avg(sal) INTO p_num,p_avg FROM emp WHERE deptno=p_deptno;
RETURN v_dname;
END ret_deptinfo;
函数调用语句:
DECLARE
v_avgsalemp.sal%TYPE;
v_num NUMBER;
v_dnamedept.dname%TYPE;
BEGIN
FOR v_dept IN (SELECT DISTINCT deptno FROM emp) LOOP
v_dname:=ret_deptinfo(v_dept.deptno,v_num,v_avgsal);
DBMS_OUTPUT.PUT_LINE(v_dname||' '||v_maxsal||' '|| v_avgsal||' '||v_num);
END LOOP;
END;
CREATE OR REPLACE FUNCTION ret_deptinfo(p_deptnodept.deptno%TYPE,p_num OUT NUMBER, p_avg OUT NUMBER)RETURN dept.dname%TYPEASv_dnamedept.dname%TYPE;BEGIN SELECT dname INTO v_dname FROM dept WHERE deptno=p_deptno; SELECT count(*),avg(sal) INTO p_num,p_avg FROM emp WHERE deptno=p_deptno; RETURN v_dname;END ret_deptinfo;函数调用语句:DECLAREv_avgsalemp.sal%TYPE;v_num NUMBER;v_dnamedept.dname%TYPE;BEGIN FOR v_dept IN (SELECT DISTINCT deptno FROM emp) LOOPv_dname:=ret_deptinfo(v_dept.deptno,v_num,v_avgsal); DBMS_OUTPUT.PUT_LINE(v_dname||' '||v_maxsal||' '|| v_avgsal||' '||v_num); END LOOP;END;3、创建学生表student(sno,sname,sex,sage),要求学号sno主键,姓名sname不能重复,性别sex只能是‘男’或者‘女’,年龄sage在15到25之间。创建课程表course(cno,cname),要求课程号cno主键,课程名cname唯一,同时为主键约束列上的唯一性索引设置存储位置和存储参数。创建学生选课表SC(sno,cno,grade),要求成绩grade大于0小于100,有两位小数,sno,cno都是外键,而且sno,cno一起做主键。
CREATE TABLE student(
sno NUMBER(6) CONSTRAINT S_PK PRIMARY KEY,
sname VARCHAR2(20) UNIQUE,
sex CHAR(2) CONSTRAINT S_CK1 CHECK(sex in('男', '女')),
sage NUMBER(6,2) CONSTRAINT S_CK2 CHECK(sage between 15 and 25)
);
CREATE TABLE course(
cno NUMBER(6) PRIMARY KEY,
cname CHAR(20) UNIQUE
USING INDEX TABLESPACE USER
STORAGE(INITIAL 64K NEXT 64K)
);
CREATE TABLE SC(
sno NUMBER(6) REFERENCES student(sno),
cno NUMBER(6) REFERENCES course(cno),
grade NUMBER(5,2)CHECK(grade between 0 and100),
CONSTRAINT SC_PK PRIMARY KEY(sno, cno)
);
CREATE TABLE student(sno NUMBER(6) CONSTRAINT S_PK PRIMARY KEY,sname VARCHAR2(20) UNIQUE, sex CHAR(2) CONSTRAINT S_CK1 CHECK(sex in('男', '女')),sage NUMBER(6,2) CONSTRAINT S_CK2 CHECK(sage between 15 and 25) );CREATE TABLE course(cno NUMBER(6) PRIMARY KEY,cname CHAR(20) UNIQUE USING INDEX TABLESPACE USER STORAGE(INITIAL 64K NEXT 64K) );CREATE TABLE SC(sno NUMBER(6) REFERENCES student(sno),cno NUMBER(6) REFERENCES course(cno), grade NUMBER(5,2)CHECK(grade between 0 and100), CONSTRAINT SC_PK PRIMARY KEY(sno, cno) );4、创建用户user2,口令为user2,默认表空间为USERS,在该表空间的配额为10 MB,初始状态为锁定。创建用户user3,口令为user3,默认表空间为USERS,在该表空间的配额为10 MB,概要文件为example_profile(假设该概要文件已经创建),为用户user2授予CREATE SESSION,CREATE TABLE ,CREATE VIEW系统权限。user2获得权限后,为用户user3授予CREATE TABLE权限。然后回收user2的CREATE TABLE权限。
SQL> conn system/oracle@orcl或者conn / as sysdba仅供参考,正确就行
SQL>CREATE USER user2IDENTIFIED BY user2
DEFAULT TABLESPACE USERS QUOTA 10M ON USERS
ACCOUNT LOCK;
SQL> CREATE USER user3 IDENTIFIED BY user3
DEFAULT TABLESPACE USERS
QUOTA 10M ON USERS
PROFILE example_profile ;
SQL>GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW
TO user2 WITH ADMIN OPTION;
SQL> CONNECT user2/user2 @ORCL
SQL> GRANT CREATE TABLE TO user3;
SQL>conn system/oracle@orcl或者conn / as sysdba
SQL>revoke CREATE TABLE from user2;
SQL> conn system/oracle@orcl或者conn / as sysdba仅供参考,正确就行SQL>CREATE USER user2IDENTIFIED BY user2 DEFAULT TABLESPACE USERS QUOTA 10M ON USERS ACCOUNT LOCK;SQL> CREATE USER user3 IDENTIFIED BY user3 DEFAULT TABLESPACE USERS QUOTA 10M ON USERS PROFILE example_profile ;SQL>GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW TO user2 WITH ADMIN OPTION;SQL> CONNECT user2/user2 @ORCLSQL> GRANT CREATE TABLE TO user3;SQL>conn system/oracle@orcl或者conn / as sysdbaSQL>revoke CREATE TABLE from user2;5、使用EXPDP导出scott模式相关数据,并使用IMPDP将刚刚导出的scott模式相关数据导入到system模式,写出核心操作语句。
1、创建DIRECTORY:create directory dir_dp as 'D:/oracle/dir_dp';
2、授权 :Grant read,write on directory dir_dp to scott;
3、执行导出
expdpscott/tiger@orcl schemas=scott directory=dir_dpdumpfile =expdp_test1.dmp logfile=expdp_test1.log;
4、执行导入
impdp system/oracle@orcl directory=dir_dpdumpfile =expdp_test1.dmp remap_schema=scott:systemlogfile=impdp_test1.log;
1、创建DIRECTORY:create directory dir_dp as 'D:/oracle/dir_dp';2、授权 :Grant read,write on directory dir_dp to scott;3、执行导出expdpscott/tiger@orcl schemas=scott directory=dir_dpdumpfile =expdp_test1.dmp logfile=expdp_test1.log;4、执行导入impdp system/oracle@orcl directory=dir_dpdumpfile =expdp_test1.dmp remap_schema=scott:systemlogfile=impdp_test1.log; Oracle期末模拟题 一、选择题:(每题2分,共30分)1、启动Oracle数据库应该用_____D_____命令。
A.SETUP B.SHUTDOWN C.START D.STARTUP
2、使用ORACLE的_____B_____组件可以创建一个新的数据库。
A.NET MANAGER B.DCBA
C.EMPDP D.DATABASE ADMIN ASSITANT
3、Oracle 安装过程中SID指的是_____A__。
A.系统标示号 B.数据库名 C.用户名 D.用户口令
4、下列哪一项是ORACLE数据库中最小的逻辑存储分配单元?____ C___
A.表空间 B.段 C.盘区 D.数据块
5、删除表中数据的使用____A___命令
A.DELETE B.WHERE
C.INSERT INTO D.UPDATE
6、如果创建表的主键是可以自动编号,则应该为主键设置什么类型的索引?____A______
A.反向键索引 B.B树索引
C.位图索引 D.基于函数据索引
7、当数据库运行在归档模式下时,哪个进程负责系统日志的归档?___ D_______
A.DBWR B.LGWR C.SMON D.ARCH
8、在使用创建行级触发器时,通过使用关键字__ D___可以引用插入更新的数据。
A.FOR EACH B.ON
C.REFERENCING D.NEW
9、为了去除结果集中重复的行,可在SELECT语句中使用下面哪个关键字?_ B________
A.ALL B.DISTINCT C.SPOOL D.HAVING
10、下面哪一个函数可以把一个列中的所有值累加求和?__B_______
A.MAX B.SUM C.COUNT D.AVG
11、在Oracle中,关于触发器的描述正确的是。____D_____
A. 触发器可以删除,但不能禁用 B. 触发器只能用于表
C.触发器可以分为行级和语句级两种 D.触发器是特殊的存储过程
12、下列哪个对象属于模式对象?_____ C__
A. 数据段 B. 盘区 C.表 D.表空间
13、为了减少表中的