Oracle Standard Edition
Oracle Enterprise Edition
Oracle Personal Edition
Oracle Lite
Instance=SGA+background process
实例 = 内存分配 + 一组后台进程
后台进程
smon 系统监控器
在失败的实例重新启动时起到恢复的功能。
pmon 进程监控器
对失败的用户进程执行恢复功能,并释放可能用到的所有系统资源。
dbwr 数据库复写器
把变化的数据从缓存中写入数据库文件。
lgwr 日志复写器
负责把缓存中的日志写到磁盘的物理文件中。
ckpt 校验点
在校验点,SGA中改变的数据必须写入数据库。
arch 归档进程
当数据库服务器以归档方式运行时调用该进程完成日志归档.
查看授予角色的对象权限
select * from role_tab_privs ;
查看一个角色中包含了哪些角色
select * from role_role_privs ;
授予角色的系统权限
select * from role_sys_privs;
查看用户对哪些对象有操作权限:
select * from DBA_tab_privs where GRANTEE='ESTORE';
查看授予用户帐户的角色
select * from DBA_role_privs where GRANTEE='ESTORE';
授予用户帐户的系统权限
select * from DBA_sys_privs where grantee='ESTORE';
安装ORACLE数据库并建立数据库实例之后,第一次使用OMS应该做什么操作?
答:建立资料档案库。
在ORACLE中,程序块分为 命名程序块、匿名程序块 。
SQL语言的主要特点是什么?
答:SQL语句的特点主要有:①综合统一;②高度非过程化;③面向集合的操作方式;④以同一种语法提供两种操作方式;⑤语言简洁,易学易用。
简单介绍ORACLE的物理结构?
答:物理结构:在oracle中四类文件 数据文件.dbf 日志文件.log 控制文件.ctl 配置文件.ora
描述数据的三个范式:
答:属性的原子性,非主属性对主键的依赖;非主属性之间不互相依赖。
写出PL/SQL程序的三个组成部分。
答:声明部分、执行部分、异常处理部分。
介绍日志的种类,各种日志的运行机制,各有什么优缺点?
答:日志可分为:归档模式和不归档模式两种。
归档模式运行机制是:重复写数据,当文件写满重新备份再写、恢复强、占空间。
特点是:缺点 占地方 优点 恢复能力强。
非归档模式的运行机制是:不备份,恢复能力有限。
特点是:缺点 占空间小 优点 恢复能力差。
写出序列在实际操作中的作用。
答:序列(sequence)是多个用户能够在此产生唯一整数的数据库对象,可以用序列自动产生主键值。序列是一个连续数字生成器。序列通过提供唯一数值的顺序来简化程序设计工作。
写出数据库默认的两个用户的名称和密码
答:普通管理员:system 密码:manager 超级管理员:sys 密码:change_on_install;
普通用户:scott 密码:tiger
在用OMS/OEM建立数据库时,什么情况下使用“数据仓库”类型,什么情况使用“事务处理”类型?
答:当数据库必须处理大量的复杂查询,这些复杂查询将涉及到数据库中大量的表和记录,并且大部分查询都是只读的时候,使用“数据仓库”类型。经常反馈给客户信息,处理大容量或超大容量的数据.
当数据库每天必须处理来自许多并发用户的成千乃至上百的事务,用户必须能够快速访问到最新数据的时候,使用“事务处理”类型。主要频繁处理小型数据库,只是进行一些查询等操作.
建立数据库时,“专用服务器模式”和“共享服务器模式”的区别是?
答:在专用服务器模式下,每个用户进程都对应有一个专用的服务器进程为其提供服务。如果同时存在大量的用户进程,就需要启动同样数量的服务器进程。
在共享服务器模式下,Oracle始终保持一定数量的服务器进程,每个用户进程由调度器进程分配一个服务器进程为该客户进程提供服务。这样只需要少量的服务器进程就可以为大量的客户进程服务。
在创建表时,选择“方案”的作用是?
答:数据库建立时建立了一组方案,每个方案对应一个角色。建表时选择方案就是将表的所有权给了这个角色,以后对该表操作时,要以这个角色或这个角色权限相当的用户进行。
delete from system.table1与truncate table system.table1区别是?
答:Delete语句删除记录并不能释放Oracle中占用的数据块表空间,它只把删除的数据块标记为unused,可恢复。
Truncate语句删除表中的全部记录,释放占用的数据块表空间,不能恢复。
(+)在左表示右连接
(+)在右表示左连接
为了保存原始的emp表的信息,在进行更新 删除 插入表前先将表复制一份Create table myemp AS select * from emp;
使用TO_DATE()函数,将一个字符串类型的数据变为DATE类型的数据。
Insert into myemp(empno,ename,job,hiredate,sal ,deptno) Values (7899,’张三’,’清洁工’,TO_DATE(‘2009-07-19’,’yyyy-mm-dd’),9000, 40);
事务就是把很多相联的sql语句作为一个单元进行操作。
在ORACLE中对每一个连接到数据库中的窗口,都会与数据库建立一个Session。一个Session对数据库所做得修改不会马上反应到数据库的真实数据之上。是允许回滚的,当一个Session提交所有操作之后,数据库才真正做出修改。提交事务:COMMIT
回滚:Roolback
保存点:savepoint
写出“概要文件”的作用之一。
答:对数据库用户进行基本的资源限制,并且可对用户的口令进行管理。
select count(*) from student 和select count(id) from student 之间的区别。
答:select count(*) 统计所有学生的记录个数,包括空记录。
select count(Id) 统计所有学生的记录个数,不包括null记录。
oracle 服务器包括哪两个部分?各个部分又是由什么组成的?
答:oracle 服务器由 oracle实例和oracle数据库两部分组成。Oracle 实例由SGA和后台进程组成。数据库主要由重作日志文件,数据文件和控制文件组成
举出ORACLE提出的独特的数据库对象的概念
答:簇:对于那些经常要同时访问的表,可以在物理位置上将它们存储在一起。为了实现这个目的,可以创建一个簇来管理这些表。表中的数据一起存储在簇中,从而最小化必须执行的I/O次数,并改善系统性能。
序列:是多个用户能够以此产生惟一整数的数据库对象。可用序列来自动产生主键值。
简单介绍OEM 和OMS共同点和不同点?
答:OEM 功能比较少,比较简单 。OMS 功能比较丰富 功能比较强大。支持网络登陆。支持数据库导入导出。
什么是数据字典?写出数据字典的三种前缀,并写出一个数据字典的应用。
答:数据字典是Oracle数据库的核心组件,它由对用户来说为只读类型的表和视图所组成,在其中保存着关于数据库系统本身以及其中存储的所有对象的基本信息。
三种前缀:USER_ ALL_ BA_ select * from user_tables;
简单写出在SYSTEM方案中建立序列XL的步骤。
答:create sequence system.xl start with 1 increment by 1 minvalue 1 nomaxvalue nocycle nocache order;
写出索引的作用与建立索引时应注意的问题。
答:索引的作用:提高数据的检索速度。应注意的问题:对查询型的表,创建多个索引会大大提高查询速度。对更新型的表,如果索引过多,会增大开销。
简单介绍表空间,并写出一种建立表空间的方法。
答:表空间是Oracle逻辑存储结构的最高层,一个数据库就是若干个表空间组成的。每个表空间对应操作系统中的一个或多个数据文件,但每个数据文件只能属于一个表空间。Create tablespace 表空间名 datafile 数据文件名;
CREATE SEQUENCE 序列名
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}]
[{CYCLE|NOCYCLE}]
[{CACHE n|NOCACHE}];
CREATE SEQUENCE myseq;
CREATE TABLE testseq(
next NUMBER,
curr NUMBER
);
Insert into testseq(next,curr) values( myseq.nextval,myseq.currval);
CREATE OR REPLACE 视图名称 AS 子查询
CREATE OR REPLACE VIEW empv20 AS SELECT empno,ename,job,sal,hiredate
FROM emp WHERE deptno=20;
分组的简单原则:只要一列上存在重复的内容才考虑用分组
WHERE子句只能用来对单行而不是行组进行过滤。要过滤行组,可以使用HAVING子句。
如果查询中包含聚合函数,而所选择的列并不在聚合函数中,那么这些列就必须在GROUP BY子句中。
按部门分组,并显示部门名称,以及部门员工数
select d.dname,count(e.empno) from dept d,emp e
where d.deptno=e.deptno
GROUP BY d.dname;
CREATE TABLE person_a(
Pid VARCHAR(18) NOT NULL ,
Name VARCHAR(200) NOT NULL,
Age NUMBER(3) CHECK( age BETWEEN 0 AND 150),
Birthday DATE,
SEX VARCHAR(2) DEFAULT '男' CHECK( sex IN ('男','女','中性')),
CONSTRAINT person_pid_pk PRIMARY KEY(pid)
);
唯一约束
CREATE TABLE person_b(
Pid VARCHAR(18) NOT NULL ,
Name VARCHAR(200) UNIQUE NOT NULL,
Age NUMBER(3),
Birthday DATE,
SEX VARCHAR(2) DEFAULT '男',
CONSTRAINT person_Pid_pk PRIMARY KEY(Pid)
);
sql 练习题
CREATE TABLE person_a(
Pid VARCHAR(18) NOT NULL ,
Name VARCHAR(200) NOT NULL,
Age NUMBER(3) CHECK( age BETWEEN 0 AND 150),
Birthday DATE,
SEX VARCHAR(2) DEFAULT ‘男’ CHECK( sex I N (‘男’,’女’,’中性’)),
CONSTRAINT person_pid_pk PRIMARY KEY(pid)
);
4.列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称
select ename from emp where deptno=(Select deptno from dept where dname=’SALES’);