Oracle实验三、四答案
oracle实验报告及答案 用户、权限安全

实验三用户、权限安全班级:座号:姓名:时间:一、实验目的1.创建用户2.创建角色3.使用GRANT和REVOKE语句授予和撤销对象权限二、实验设备一台PC机,widows操作系统,oracle 10g三、实验内容1. 使用sys身份连接到数据库。
2.创建一个用户TEMPUSER,其口令为oracle,默认表空间为USERS,对表空间没有配额限制,临时表空间为TEMP。
3. 创建一个用户配置文件TEMPPROFILE,包含的资源及口令限制如下:该用户最多可以建立3个并发的会话连接用户执行语句使用的CPU最长时间为20分钟空闲时间超过15分钟后,断开与用户的连接限制用户每次调用SQL语句时,能够读取的数据库块数200限制用户在登录到Oracle数据库时允许失败的次数24. 为用户TEMPUSER指定配置文件5. 向用户授予连接数据库系统权限。
6.向用户授予对对象HR.JOBS的SELECT权限,并以用户TEMPUSER连接到数据库,以查询jobs表。
7.以sys身份登录,撤销向用户TEMPUSER授予的系统权限,向用户授予CONNECT,resource角色。
8. 以tempuser身份登录,在exer_tabspace表空间创建表customer(x number)。
四、实验步骤1.使用sys身份连接到数据库。
Connect sys/oracle as sysdba;(查看表空间信息SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;)2. 创建一个用户TEMPUSERCreate user tempuser identified by oracle default tablespace USERS temporary tablespace temp quota unlimited on users;3.创建一个用户配置文件TEMPPROFILE4.为用户TEMPUSER指定配置文件Alter user tempuser profile tempprfile;5向用户授予连接数据库系统权限6、ALTER SYSTEM SET RESOURCE_LIMIT=TRUE SCOPE=BOTH;(启用资源限制,参数立即生效)(再开第二个窗口,第三个窗口,第四个窗口都用TEMPUSER/ORACLE登陆,看看会发生什么情况)7. 向用户授予对对象“HR.JOBS”的SELECT权限,并以用户TEMPUSER连接到数据库,以查询“JOBS”表。
oracle4级考试习题,带答案选择题3

PART A第1题:使用下列哪个数据字典可以查看因约束而创建的唯一性索引?(单选题)USER_INDEXESUSER_TAB_COLUMNSUSER_COLUMNSUSER_CONS_COLUMNS (正确答案)第2题:你运行了select 5+4 from DUAL的查询。
但你以前从未在DUAL表中插入过数据。
下列哪一条语句最好的描述了这一DUAL表?(单选题)包含了两个模式名的字典视图一行一列的广泛适用的表 (正确答案)含有两个索引名的字典试图两列无行的广泛适用的表第3题:DBA为什么要测试备份和恢复策略?(多选题)为验证备份和恢复过程 (正确答案)为熟悉崩溃的类型(正确答案)练习备份和恢复(正确答案)构造后备产品数据库来支持新版本第4题:你发出以下语句: SELECT DECODE(ACCTNO, 123456, 'CLOSED', 654321,'SEIZED', 590395, 'TRANSFER','ACTIVE') FROM BANK_ACCT; 如果ACCTNO的值是503952,这条语句将显示什么信息? (单选题)ACTIVE (正确答案)TRANSFERSEIZEDCLOSED第5题:哪种崩溃通常是最严重的?(单选题)非介质崩溃语句失败实例崩溃介质崩溃 (正确答案)第6题:哪两种数据库配置影响可恢复性?(多选题)ARCHIVELOG模式 (正确答案)NOARCHIVELOG模式 (正确答案)MOUNT模式NOMOUNT模式第7题:哪种数据库配置最容易在数据库崩溃时导致数据丢失?(单选题) ARCHIVELOG模式NOARCHIVELOG模式 (正确答案)第8题:选择数据库崩溃类型(多选题)语句 (正确答案)进程 (正确答案)实例 (正确答案)NOMOUNT模式第9题:哪种才是经受得起灾难性崩溃的高可靠性解决方案?(单选题) 并行服务器 (正确答案)独立数据库第10题:哪两种是Oracle数据库最通常的磁盘容错选项?(多选题)RAID 0RAID 10 (正确答案)RAID 5 (正确答案)RAID 0 + 1第11题:下列哪一功能不是having子句的?(单选题)将返回值按序排放排除规范的数据组包含不规范的数据组 (正确答案)包含规范的数据组第12题:下列关于笛卡尔集的定义哪个是正确的?(单选题)Oracle数据库的一个特性组函数模糊理论的结果没有where子句的连接语句的结果 (正确答案)第13题:你从一个表列里得到一组值,并想对其进行一组操作.下列哪一选项的函数在对所有行的数据进行操作时没有成为一组?(单选题)avg( )sqrt( ) (正确答案)count( )stddev( )第14题:选择防止对那些没有执行完全数据库恢复的数据库不正确修改的方法(多选题) 备份经常使用的表空间 (正确答案)备份控制文件 (正确答案)Exports多份重做日志 (正确答案)第15题:你正在写对数据库的查询。
Oracle实验报告及答案 数据库管理与工具使用

实验一 Oracle数据库管理与工具使用班级:座号:姓名:时间:一、【实验目的】1.掌握Oracle的启动、关闭、连接和管理初始化参数2.熟悉oem和SQL*Plus的使用3.了解用户和模式的概念,并查询hr模式表的数据二、【实验设备】一台PC机,widows xp操作系统,oracle 10g或11g三、【实验内容】1.启动和关闭window操作系统的Oracle服务2.通过三种方式访问数据库3.使用SQL*Plus启动和关闭Oracle数据库4.使用em和SQL*Plus解锁hr模式,并使用SQL*Plus编写查询该模式中表的SQL命令5.使用em和SQL*Plus显示和设置初始化参数文件四、【实验步骤】1 启动服务(开始,设置,控制面板,管理工具,服务)2通过三种方式连接数据库:方法一:在运行窗口中输入CMD命令,然后在窗口中输入SQLPlus命令以启动SQL*Plus工具方法二:开始/程序/Oracle - OraDb10g_home1/SQL Plus打开登录界面,然后输入相应的用户名称和登录密码。
方法三:打开IE,输入本机IP:5560/isqlplus 或者localhost:5560/isqlplus,启动Oracle Enterprise Manager(OEM),以图形话方式对数据库进行操作。
Select * from hr.employees;3 使用SQL*Plus用sys用户关闭Oracle数据库4通过三种方式启动数据库:1)startup nomount;2) alter database mount;3)ALTER DATABASE OPEN;5确认数据库状态:Select instance_name,status from v$instance;6 解锁hr用户7使用hr用户连接sqlplus,Select * from employees;8用SQL*Plus显示所有初始化参数SHOW PARAMETER;五、【实验小结】通过本次实验学会通过oem和SQL*Plus与数据库建立连接,启动、关闭数据库。
《Oracle数据库应用与实践》课后习题参考答案

第 5 章 Oracle 模式对象
一、填空题
1. 字段级约束 表约束
2. NOT NULL 约束 UNIQUE 约束 PRIMARY KEY 约束
束
3. CREATE TABLE
CREATE ANY TABLE
4. UNIQUE PRIMARY KEY CHECK
5. 合并索引 重建索引
6. user_updatable_columns
一、 填空题 1. 数据挖掘 隐含的 未知的 2. API-ODM Java API ODM DBMS_DM PL/SQL API
3. Clustering Association Feature Extraction
Oracle 数据库应用与实践
2、某 cc 表数据如下: c1 c2 -------------1西 1安 1的 2天 2气
Oracle 数据库应用与实践
3好 …… 转换为 1 西安的 2 天气 3好 要求:不能改变表结构及数据内容,仅在最后通过 SELECT 显示出这个查询结果
代码为: create or replace function x return varchar2 is type t_array is table of number index by binary_integer; type tarray is table of varchar2(10) index by binary_integer; ta t_array; tar tarray; re varchar2(10); n number; na varchar2(10); begin select id bulk collect into ta from (select id,name from xx order by id) group by id; for i in st loop dbms_output.put(ta(i)||' '); select name bulk collect into tar from xx where id=ta(i); for i in st loop dbms_output.put(tar(i)); end loop; dbms_output.put_line(' '); end loop; return re; end;
《Oracle技术》实验报告5(答案)1

《Oracle技术》实验报告实验名称PL/SQL编程(选作10题,程序另加附页)姓名学号日期专业班级实验目的(1)了解PL/SQL块的基本结构和分类。
(2)熟练掌握编写PL/SQL块的方法。
(3)了解PL/SQL存储过程、触发器、游标的作用。
(4)熟练掌握编写PL/SQL存储过工程的方法及维护过程。
(5)熟练掌握创建触发器的方法及维护过程。
(6)孰练掌握显式游标和隐式游标的使用。
实验内容(1)编写一个PL/SQL块,输出所有员工的员工名、员工号、工资和部门号。
BEGINFOR v_emp IN (SELECT * FROM EMP) LOOP DBMS_OUTPUT.PUT_LINE(v_emp.ename||’‘||v_emp.empno|| ’‘||v_emp.sal||’‘|| v_emp.deptno);END LOOP;END;/(2)编写一个PL/SQL块,查询名为“SMITH”的员工信息,并输出其员工号、工资、部门号。
如果该员工不存在,则插入一条新记录,员工号为2007,员工名为“SMITH”,工资为1500,部门号为10。
如果存在多个名为“SMITH”的员工,则输出所有名为“SMITH”的员工号、工资和部门号。
成绩DECLAREV_empno emp.empno%type;V_sal emp.sal%type;V_deptno emp.deptno%type;BEGINSELECT empno,sal,deptno INTOV_empno,v_sal,v_deptno FROM emp WHERE ename=’SMITH’;DBMS_OUTPUT.PUT_LINE(v_empno||’’||v_sal||’’||v_dept no);EXCEPTIONWHEN NO_DATA_FOUND THENINSERT INTO EMP(empno, ename,sal,deptno)V ALUES(2007,’SMITH’,1500,10);WHEN TOO_MANY_ROWS THENFOR v_emp IN (SELECT empno,sal,deptno FROM emp WHERE ename=’SMITH’) LOOPDBMS_OUTPUT.PUT_LINE(v_emp.empno||’‘||v_emp.sal|| ’‘||v_emp.deptno);END LOOP;END;/(3)创建一个存储过程,以员工号为参数,输出该员工的工资。
实验3-参考答案(3)

----实例启动时禁用自动归档,下次启动实例才有效
SQL> ALTER SYSTEM SET LOG_ARCHIVE_START=FALSE
----6) 更改归档模式
SQL> ALTER DATABASE ARCHIVELOG
----使用SYS账户登录“Enterprise Manager Console”,进行相关操作
SQL> show parameter UTL_FILE_DIR
------>加载并打开数据库
SQL> ALTER DATABASE OPEN
------>使用系统存储过程DBMS_LOGMNR_D.BUILD,创建LOGMINER字典文件
SQL> EXEC DBMS_LOGMNR_D.BUILD('dict.ora', 'd:\backup', DBMS_LOGMNR_D.STORE_IN_FLAT_FILE)
------>关闭数据库
SQL> shutdown immediate
------>启动实例,但不加载数据库
SQL> STARTUP NOMOUNT
------>将生成的数据字典文件放在“d:\backup”,修改初始化参数UTL_FILE_DIR
SQL> ALTER SYSTEM SET UTL_FILE_DIR='d:\backup' scope=spfile
SQL> DESC V$LOGMNR_CONTENTS
SQL> SELECT * FROM V$LOGMNR_CONTENTS WHERE USERNAME='SCOTT'
oracle课后习题答案

练习62.实训题(2)Create table exer_class(CNO number(2) primary key,CNAME varchar2(20),NUM number(3));Create table exer_student(SNO number(4) primary key,SNAME varchar2(10) unique,SAGE number,SEX char(2),CNO number(2));(3)Alter table exer_student add constraint ck_sage check (sage>0 and sage<=100);(4)Alter table exer_student add constraint ck_stu check(sex='M' or sex='F') modify sex default 'M';(5)Create unique index ind_cname on exer_class(cname);(6)Create view stu_class_view (e_sno,e_sname,e_cno,e_cname) ASselect sno,sname,cno,cnameFrom exer_student;(7)Create sequence exer_student_seqstart with 100000001nocyclenocache;(8)Create table exer_student_range(sno number(4) primary key,sname varchar2(10),sage number,sex char(2),cno number(2))partition by range(sage)(partition part1 values less than(20) tablespace example,partition part2 values less than(30) tablespace orcltbs1,partition part3 values less than(maxvalue) tablespace orcltbs2);(9)Create table exer_student_list(sno number(4) primary key,sname varchar2(10),sage number,sex char(2),cno number(2))partition by list(sex)(partition man values('M') tablespace orcltbs1,partition woman values('F') tablespace orcltbs2);(10)题目修改为“为exer_student_range表的SAGE列上创建本地分区索引。
oracle实验报告及答案 备份与恢复

实验四备份与恢复班级:座号:姓名:时间:一、实验目的1.了解备份的重要性2.对数据库进行物理备份、恢复与逻辑备份、恢复3.使用RMAN对数据库进行备份与恢复二、实验设备一台PC机,widows操作系统,oracle 10g三、实验内容1.本练习将使用EXPORT工具按用户方式对SCHOOL模式中的对象进行逻辑备份,并使用该备份恢复将被用户删除的表。
1)在命令提示符窗口中输入命令,启动EXP工具按用户方式备份SCHOOL模式中的对象。
2)删除表STUDENT中的所有数据库。
3)使用IMPORT工具按用户方式恢复STUDENT表中的数据。
2.本练习将对数据库进行物理备份(冷备份),并恢复被用户误删除的数据。
1)以SYSDBA身份连接数据库。
2)复制Oracle目录中的所有文件。
3)删除user01.dbf(模拟误删除)。
4)关闭数据库,启动数据库。
3.本练习将对数据库进行物理备份(热备份),并恢复被用户误删除的数据。
1)以SYSDBA身份连接数据库。
2)确定数据库运行在归档模式下。
3)切换表空间USER为脱机状态。
4)复制Oracle目录中的USERS01.DBF文件,然后设置表空间USERS为ONLINE状态。
5)删除数据文件users01.dbf,并归档当前的日志信息。
6)关闭数据库,切换数据库到MOUNT状态。
7)复制备份的文件到数据库目录,并使用RECOVER命令执行完全恢复。
8)打开数据库,并验证是否恢复被误删除的数据。
4.本练习将对数据库进行物理备份(热备份),并执行基于时间的不完全恢复,以恢复被用户误删除的数据。
1)以SYSDBA身份连接数据库。
2)确定数据库运行在归档模式下。
3)切换表空间USER为脱机状态。
4)复制Oracle目录中的USERS01.DBF文件,然后设置表空间USERS为ONLINE状态。
5)删除STUDENT表中存储的学生信息,并归档当前的日志信息。
6)关闭数据库,切换数据库到MOUNT状态。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上机练习三∙选择部门30中的所有员工Select * from emp where deptno=30∙列出所有办事员的姓名、编号和部门编号Select empno,ename,deptno from emp where job='CLERK';∙找出佣金高于薪金的员工Select * from emp where comm>sal;∙找出佣金高于薪金60%的员工Select * from emp where comm>sal*1.6;∙找出部门10中所有经理和部门20中所有办事员的详细资料Select * from empWhere (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK');∙找出部门10中所有经理、部门20中所有办事员、既不是经理又不是办事员但薪金大于或等于2000的所有员工的详细资料Select * from empWhere (deptno=10 and job=‟MANAGER‟) or (deptno=20 and job=‟CLERK‟)Or (job not in(‟MANAGER‟ ,‟CLERK‟) and sal>=2000)∙找出收取佣金的员工的不同工作Select distinct job from empWhere comm is not null;∙找出不收取佣金或收取的佣金低于100的员工Select * from empWhere comm is null or comm<100;∙找出各月倒数第三天受雇的所有员工。
Select * from empWhere last_day(hiredate)-2=hiredate;∙找出早于12年前受雇的员工Select * from empWhere months_between(sysdate,hiredate)/12>12;∙以首字母大写的方式显示所有员工的姓名Select initcap(ename) from emp;∙显示正好为5个字符的员工姓名Select ename from empWhere length(ename)=5;∙显示不带有R的员工姓名Select * from empWhere ename not like '%R%';∙显示所有员工的前三个字符Select substr(ename,0,3) from emp;∙显示所有员工的姓名,用a替换所有ASelect replace(ename, 'A', 'a') from emp;∙显示满10年服务年限的员工的姓名和受雇日期Select ename,hiredate from empWhere months_between(sysdate,hiredate)/12>10;∙显示员工的详细资料,按姓名排序Select * from emp order by ename;∙显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面Select ename,hiredate from empOrder by hiredate;∙显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同按薪金排序Select ename,job,sal from empOrder by job desc,sal;∙显示所有员工姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面。
Select ename,to_char(hiredate, 'yyyy') year, to_char(hiredate, 'mm') monthsFrom empOrder by months,year;∙显示在一个月为30天的情况下所有员工的日薪金,忽略余数Select ename,sal,trunc(sal/30) from emp;∙找出在任何年份的2月受聘的所有员工Select * from emp where to_char(hiredate, 'mm')= 2;∙对于每个员工显示其加入公司的天数Select ename,trunc(sysdate-hiredate) from emp;∙以年月日的方式显示所有员工的服务年限Select ename,hiredate,trunc(months_between(sysdate,hiredate)/12) year,mod(trunc(months_between(sysdate,hiredate)),12) months,trunc(sysdate-add_months(hiredate,months_between(sysdate,hiredate))) day from emp;实验四∙列出所有员工的姓名、部门名称和工资Select e.ename,d.dname,e.salFrom emp e,dept dWhere e.deptno=d.deptno(+);∙列出所有部门的详细信息和部门人数Select d.deptno,d.dname, d.loc,count(e.empno)From emp e,dept dWhere e. deptno(+)=d.deptnoGroup by d.deptno,d.dname,d.loc;∙列出所有员工的年工资、所在部门名称,按年薪升序排序Select e.ename,e.sal*12 income,d.dnameFrom emp e,dept dWhere e.deptno=d.deptnoOrder by income;∙查出每个员工的上级主管及所在部门名称,并要求这些主管的薪水超过3000 Select distinct m.ename,d.dname,m.salFrom emp e,emp m,dept dWhere e.mgr=m.empno and m.deptno=d.deptno and m.sal>3000;∙求出部门名称中带…S‟字符的部门员工的工资合计、部门人数。
Select d.dname,sum(nvl(e.sal,0)),count(e.empno)From emp e,dept dWhere e.deptno(+)=d.deptno and d.dname like '%S%'Group by d.dname;∙列出部门名称和这些部门的员工信息(数量、平均工资),同时列出那些没有员工的部门。
Select d.deptno,d.dname,d.loc,count(e.empno),avg(e.sal)From emp e,dept dWhere e.deptno(+)=d.deptnoGroup by d.deptno, d.dname,d.loc;∙列出在部门“SALES”工作的员工姓名、基本工资、雇佣日期、部门名称,假定不知道销售部的部门编号。
Select e.ename,e.sal,e.hiredate,d.dnameFrom emp e,dept dWhere e.deptno=d.deptno and d.dname='SALES';∙列出公司各个工资等级雇员的数量、平均工资Select s.grade,s.losal,s.hisal,count(e.empno),avg(e.sal)From emp e,salgrade sWhere e.sal between s.losal and s.hisalGroup by s.grade,s.losal,s.hisal;∙列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称Select e.empno,e.ename,d.dname,e.salFrom emp e,dept dWhere sal>all(Select sal from emp where deptno=30)And e.deptno=d.deptno;∙列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称、部门位置、部门人数。
Select e.empno,e.ename,d.dname,d.loc,temp.countFrom emp e,emp m,dept d,(Select deptno dno,count(empno) countFrom empGroup by deptno) tempWhere e.mgr=m.empno(+) and e.hiredate<m.hiredateAnd e.deptno=d.deptno and e.deptno=temp.dno;∙列出所有“clerk”的姓名及其部门名称、部门人数、工资等级。
Select e.ename,d.dname,e.job,temp.count,s.gradeFrom emp e,dept d,(Select deptno dno,count(empno) countFrom empGroup by deptno) temp,salgrade sWhere e.job='CLERK' and e.deptno=d.deptnoAnd d.deptno=temp.dno and e.sal between s.losal and s.hisal;∙列出最低薪金大于1500的各种工作及从事此工作的全部雇员人数及所在部门名称、位置、平均工资。
Select temp.job,temp.count,d.dname,e.ename,res.avgFrom dept d,(Select e.job job,count(e.empno) countFrom emp eGroup by e.jobHaving min(e.sal)>1500) temp,emp e,(Select deptno dno,avg(sal) avgFrom empGroup by deptno) resWhere e.deptno=d.deptno and e.job=temp.jobAnd e.deptno=res.dno;∙列出薪金高于公司平均薪金的所有员工、所在部门、上级领导、公司的工资等级。
Select e.empno,e.ename,e.job,e.sal,d.dname,d.loc,m.ename,s.gradeFrom emp e,dept d,emp m,salgrade sWhere e.sal>(Select avg(sal) from emp)And e.deptno=d.deptno and e.mgr=m.empnoAnd e.sal between s.losal and s.hisal;∙列出与SCOTT从事相同工作的所有员工及部门名称、部门人数Select e.empno,e.ename,e.job,d.dname,temp.countFrom emp e,dept d,(Select deptno dno,count(empno) countFrom empGroup by deptno) tempWhere e.job=(Select jobFrom empWhere ename='SCOTT') and e.ename<>'SCOTT'And e.deptno=d.deptno and temp.dno= e.deptno;∙列出在每个部门工作的员工数量、平均工资和平均服务期限Selectd.deptno,d.dname,d.loc,count(e.empno),avg(sal),avg(months_between(sysdate,e.hiredate)/12) yearFrom emp e,dept dWhere e. deptno(+)=d.deptnoGroup by d.deptno,d.dname,d.loc;∙列出各种工作的最低工资及此雇员姓名Select e.ename,e.job,e.salFrom emp e,(Select job,min(sal) min from empGroup by job) tempWhere e.job=temp.job and e.sal=temp.min;∙列出各个部门的MANAGER的最低薪金、姓名、部门名称、部门人数Select e.ename,e.sal,d.dname,res.countFrom emp e,(Select deptno dno,min(sal) salFrom empWhere job='MANAGER'Group by deptno) temp, dept d,(Select deptno dno,count(empno) countFrom empGroup by deptno) resWhere e.deptno=temp.dno and e.sal=temp.sal and e.job='MANAGER'And e.deptno=d.deptno and res.dno=d.deptno;给任职日期超过30年或者在87年雇佣的雇员加薪,加薪原则:10部门增长10%,20部门增长20%,30部门增长30%。