答:create tablespace neuspace datafile ‘d:\data\neudata.dbf’ size 200m auto extend on next 5m maxsize 500m;
2. 假设表空间neuspace已用尽500MB空间,现要求增加一个数据文件,存放在e:\appdata目录下,文件名为appneudata,大小为500MB,不自动增长。(5分)
答:alter tablespace neuspace add datafile ‘e:\appdata\appneudata.dbf’ size 500m;
3. 以系统管理员身份登录,创建账号tom,设置tom的默认表空间为neuspace。为tom分配connect和resource系统角色,获取基本的系统权限。然后为tom分配对用户scott的表emp的select权限和对SALARY, MGR属性的update权限。(8分)
答:create user tom identified by jack default tablespace neuspace;
Grant connect, resource to tom;
Grant select, update(salary, mgr) on scott.emp to tom;
4. 按如下要求创建表class和student。(15分)
属性 类型(长度) 默认值 约束 含义
CLASSNO 数值 (2) 无 主键 班级编号
CNAME 变长字符 (10) 无 非空 班级名称
属性 类型(长度) 默认值 约束 含义
STUNO 数值 (8) 无 主键 学号
SNAME 变长字符 (12) 无 非空 姓名
SEX 字符 (2) 男 无 性别
BIRTHDAY 日期 无 无 生日
EMAIL 变长字符 (20) 无 唯一 电子邮件
SCORE 数值 (5, 2) 无 检查 成绩
CLASSNO 数值 (2) 无 外键,关联到表CLASS的CLASSNO主键 班级编号
答:create table class
(classno number(2) constraint class_classno_pk primary key,
cname varchar2(10) not null);
create table student
(stuno number(8) constraint student_stuno_pk primary key,
sname varchar2(12) not null,
sex char(2) default ‘男’,
birthday date,
email varchar2(20) constraint student_email_uk unique,
score number(5,2) constraint student_score_ck check(score>=0 and score<=100),
classno number(2) constraint student_classno_fk references class(classno)
);
5. 在表student的SNAME属性上创建索引student_sname_idx(5分)
答:create index student_sname_idx on student(sname);
6. 创建序列stuseq,要求初值为20050001,增量为1,最大值为20059999。(6分)
答:create sequence stuseq increment by 1 start with 20050001 maxvalue 20059999 nocache nocycle;
7. 向表student中插入如下2行。(5分)
STUNO SNAME SEX BIRTHDAY EMAIL SCORE CLASSNO
从stuseq取值 tom 男 1979-2-3 14:30:25 tom@163.net 89.50 1
从stuseq取值 jerry 默认值 空 空 空 2
答:insert into student values(stuseq.nextval, ’tom’, ’男’, to_date(‘1979-2-3
14:30:25’, ’yyyy-mm-dd fmhh24:mi:ss’), ’tom@163.net’, 89.50, 1);
insert into student (stuno, sname, classno) values(stuseq.nextval, ’jerry’, 2);
8. 修改表student的数据,将所有一班的学生成绩加10分。(4分)
答:update student set score=score+10 where classno=1;
9. 删除表student的数据,将所有3班出生日期小于1981年5月12日的记录删除。(4分)
答:delete from student where classno=3 and birthday > ’12-5月-81’;
10.schema含义
schema是数据库对象的集合,包括表,视图,序列,存储过程,逻辑结构,索引,集群和数据库链接等等逻辑结构。一个user拥有一个schema,user和他的schema的名字相同,CREATE USER命令创建一个user,同时也为这个user创建一个schema,CREATE SCHEMA命令并不像命令说的那样创建一个SCHEMA, 他只是给你创建table的权限和在同一个事务中在你创建的schema中查看和进行赋与权限的权限。在任何情况下你都可以把用户和schema当作同一个东西。
11.影响oracle查询性能的因素都有哪些?
a. 硬件配置:处理器速度,内存大小,磁盘读写速度,网络传输速度等等,这些都影响oracle的整体性能和查询性能
b. 是否建立了索引,索引是否合理
c. 表碎片和索引碎片,生产库由于长时间运营,碎片可能导致查询使用错误的执行计划,导致查询速度变慢
d. 表或者索引的initial 参数配置不同,导致数据扩展区大小不一,也可能 导致查询速度降低。
e. SQL执行效率低下,导致查询速度很慢
f. 数据库负载过大
12. 解释FUNCTION,PROCEDURE和PACKAGE区别
答:function 和procedure是PL/SQL代码的集合,通常为了完成一个任务。procedure 不需要返回任何值而function将返回一个值在另一方面,Package是为了完成一个商业功能的一组function和procedure的集合。
13. 取某个序列的当前值的PL/SQL语句怎么写?
答:SELECT 序列名.CURRVAL FROM DUAL;
14. 说明ORACLE数据库实例与ORACLE用户的关系?
答:实例可以包含多个用户,一个用户只能在一个实例下
15. 创建数据库时,自动建立的tablespace名称?
答:SYSTEM tablespace
16. 创建用户时,需要赋予新用户什么权限才能使它连上数据库?
答:CONNECT
17. IMPORT和SQL*LOADER这2个工具的不同点?
答:这两个ORACLE工具都是用来将数据导入数据库的。
区别是:IMPORT工具只能处理由另一个ORACLE工具EXPORT生成的数据。而SQL*LOADER可以导入不同的ASCII格式的数据源。
18.解释冷备份和热备份的不同点以及各自的优点?
答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘)
19.比较truncate和delete命令?
答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL(data defining language数据定义语言),它移动HWK,不需要rollback segment(处理事务回滚操作)而Delete是DML(data manufacturing language数据操作语言)操作,需要rollback segment(处理事务回滚操作)且花费较长时间。
20.给出数据的相关约束类型?
答:主键约束,外键约束,非空约束,唯一约束,检查约束。
21.说明索引的类型与作用?
答:索引类型上分为聚集索引,非聚集索引其作用是加快查询速度。
22.解释归档和非归档模式之间的不同和它们各自的优缺点
答:归档模式是指你可以备份所有的数据库 transactions并恢复到任意一个时间点。非归档模式则相反,不能恢复到任意一个时间点。但是非归档模式可以带来数据库性能上的少许提高。
23.解释$ORACLE_HOME和$ORACLE_BASE的区别?
答:ORACLE_BASE是oracle的根目录,ORACLE_HOME是oracle产品的目录。
24.获取某个字符字段的最后3个字符的函数是什么?
答:select substr (字段,(length(字段)-3)) from 表
25.取当前系统时间点日期(不包括年月)的SQL写法是怎样的?
答:Select substr (to_char(sysdate,’YYYYMMDDh24hh:MM:SS’),5) from dual;
26.返回大于等于N的最小整数值?
答:select ceil(N) from dual;
27.将根据字符查询转换后结果,规则为:’A’转换为’男’,’B’转换为’女’,其他字符转换为’未知’,请用一个SQL语句写出。
答:select decode(字符,’A’,’男’,’B’,’女’,’未知’) from dual;
28.如何搜索出前N条记录?
答:select * from 表 where Rownum <= N;
29.如何搜索出第N~M条记录?
答:select * from 表 where Rownum <= M
Minus
select * from 表 where Rownum <= N;
30.有一个数据表(TEST),字段如下:
ID number
PARENT_ID number
NAME Varchar(20)
请使用PL/SQL来按父子层次关系查询出该表的所有数据
答:Select * from test a, test b Where a.parent_id = b.id;
31.怎样用SQL语句实现查找一列中的第N大值?
答:select * from (select * from 表 order by 列名 Desc) where Rownum <= N
Minus
select * from (select * from 表 order by 列名 Desc) where Rownum <= N-1;
32. Oracle安裝完成后的初始口令?
internal/oracle
sys/change_on_install
system/manager
scott/tiger
sysman/oem_temp
33. ORACLE9IAS WEB CACHE的初始默认用户和密码?
administrator/administrator
34. oracle 8.0.5怎么创建数据库?
用orainst。如果有motif界面,可以用orainst /m
35. oracle 8.1.7怎么创建数据库?
dbassist
36. oracle 9i 怎么创建数据库?
dbca
37. oracle中的裸设备指的是什么?
裸设备就是绕过文件系统直接访问的储存空间
38. oracle如何区分 64-bit/32bit 版本???
$ sqlplus ‘/ AS SYSDBA’
SQL*Plus: Release 9.0.1.0.0 – Production on Mon Jul 14 17:01:09 2003
(c) Copyright 2001 Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.0.1.0.0 – Production
With the Partitioning option
JServer Release 9.0.1.0.0 – Production
SQL> select * from v$version;
BANNER
Oracle9i Enterprise Edition Release 9.0.1.0.0 – Production
PL/SQL Release 9.0.1.0.0 – Production
CORE 9.0.1.0.0 Production
TNS for Solaris: Version 9.0.1.0.0 – Production
NLSRTL Version 9.0.1.0.0 – Production
SQL>
39. SVRMGR什么意思?
svrmgrl,Server Manager.
9i下没有,已经改为用SQLPLUS了
sqlplus /nolog
变为归档日志型的
40. 请问如何分辨某个用户是从哪台机器登陆ORACLE的?
SELECT machine , terminal FROM V$SESSION;
41. 用什么语句查询字段呢?
desc table_name 可以查询表的结构
select field_name,… from … 可以查询字段的值
select * from all_tables where table_name like ‘%’
select * from all_tab_columns where table_name=’??’
42. 怎样得到触发器、过程、函数的创建脚本?
desc user_source
user_triggers
43. 怎样计算一个表占用的空间的大小?
select owner,table_name,
NUM_ROWS,
BLOCKS*AAA/1024/1024 “Size M”,
EMPTY_BLOCKS,
LAST_ANALYZED
from dba_tables
where table_name=’XXX’;
Here: AAA is the value of db_block_size ;
XXX is the table name you want to check
44. 如何查看系统被锁的事务时间?
select * from v$locked_object ;
45. 如何以archivelog的方式运行oracle。
init.ora
log_archive_start = true
RESTART DATABASE
46. 怎么获取有哪些用户在使用数据库
select username from v$session;
47. 数据表中的字段最大数是多少?
表或视图中的最大列数为 1000
48. 怎样查得数据库的SID ?
select name from v$database;
也可以直接查看 init.ora文件
49. 如何在Oracle服务器上通过SQLPLUS查看本机IP地址 ?
select sys_context(’userenv’,'ip_address’) from dual;
如果是登陆本机数据库,只能返回127.0.0.1,呵呵
50. unix 下怎么调整数据库的时间?
su -root
date -u 08010000
51.如何高效率的查找一个月以内的数据?
进行时间比较要尽量避免用sysdate. 比如:如果使用select * from eventtable where eventdate>sysdate-30进行查找,当数据量小的时候看不出来,数据量大一些就会发现执行很慢,但日期型字段上也是有索引的,为什么会慢呢?原来是Oracle在进行查找的时候不断地去取sysdate这个不断变化的值,而不是我们想象中的一次产生一个条件语句然后进行查找。为了加快速度,我们可以先把当天的日期取出来,然后转成字符串后再用如下语句查,select * from eventtable where eventdate > to_date(’2001-12-1′,’yyyy-mm-dd’)。速度相差几十倍。
52.简要介绍一下Oracle快照(snapshot)
照是指表的或者表的行或者列的子集的副本, 快照在分布式的系统环境下很有用。 可以通过create snapshot语法来创建一个snapshot, 可以在创建快照的时候指定刷新频率
什么是Oracle的同义词(synonym)? 如何创建synonym?
同义词是相当于别名,是为了简化一些表名或者数据对象。 当我们以一个用户登陆而要去访问另一个用户创建的数据对象时,我们需要使用用户名.对象名的方法来使用,这样造成对象名难记,麻烦,使用同义词可以解决这个问题。
假定我们现在以system的身份的登陆进去,我们需要访问scott用户下面的一个表emp;
常规的写法是:select * from scott.emp;
现在我们可以先建立一个同义词:
create synonym my_syn for scott.emp;
然后我们这样来访问这个表了:
select * from my_syn;
53.什么是表空间(tablespace)和系统表空间(System tablespace)?
表空间(tablespace)是数据库的一个逻辑的存储单元,用来将相关的数据结构到组织到一起。
系统表空间是在数据库建立的时候自动创建的,它包含了整个数据库的数据字典
54.什么是数据库的约束?
数据库约束是防止非法记录的规则, 约束保存在数据字典(data dictionary)中, 约束可以被定义在列级或者表级。
Oracle中包括以下集中约束:
a. Not Null – 明确一列数据不能包含null值
b. Unique – 强制所有数据行不能有重复值
c. Primary Key – 每一行数据的唯一标示
d. Foreign Key – 强制一列数据与引用表的外键约束关系
55. Check – 检查,明确规定一个必须为true的condition
什么是数据库锁?Oracle中都有哪些类型的锁?
锁是用来在多个用户同时访问同一个表的时候保护数据的。 它是Oracle的一种并发控制技术。锁使数据库最大并发的情况下保证数据的完整性。 Oracle会在需要的时候自动的提供锁的功能。
56.锁的种类:
共享锁: 这个锁是数据在被viewed的时候放置的。
排他锁: 这种锁在Insert, Update, Delete命令执行的时候放置的,每一条记录同一时间只能有一个排他锁