select * from stu_score where score > 60 with check option CONSTRAINT chk_pv;
5.创建表person,表项:身份证号,姓名.更改person使身份证号非空约束,并在身份证号上面添加唯一索引.重新建立person,这一次在身份证号上面建立主键非空约束,在user_indexes里面查看person表上是否有index. create table person (id varchar2(20) not null,name varchar2(8)); create unique index person_index on person(id); select * from user_indexes;
6.熟悉创建唯一索引,反向键索引,位图索引,键压缩索引的方法.给出实例的sql语句. create unique index person_index on person(id); create index comind1 on emp(deptno,empno); create index revind1 on salgrade(grade) reverse;
create index compress_ind on emp (deptno) compress;
7.对第三题中的表b进行范围分区,分区键为学生成绩.在表b上面建立本地索引.
对第三题中的表b重新进行分区,分区键为(学生成绩,学生姓名),在b上面建立本地前缀索引.
删除上面的本地前缀索引,在表b上面重新建立全局前缀索引,时候能够在学生姓名上面建立全局索引? drop table stu_score; create table stu_score (
stu_id int,
stu_name varchar2(8), stu_tel varchar2(20), score int, classid int )
partition by range(score) (
partition p1 values less than (60); partition p2 values less than (80); partition p3 values less than (100); );
create index myind on stu_score(score) local;
------------------------------------------------------------------------------- drop table stu_score; create table stu_score (
stu_id int,
stu_name varchar2(8), stu_tel varchar2(20), score int, classid int )
partition by range(score)
subpartition by hash (stu_name) subpartition 4
(
partition p1 values less than (60); partition p2 values less than (80); partition p3 values less than (100); );
create index myind on stu_score(score) local;
------------------------------------------------------------------------------------ drop index myind;
create index myind on stu_score(score) global; create index myind on stu_score(stu_name) global; ORACLE实例与数据库有什么区别?(容易) ORACLE实例 = 进程 + 进程所使用的内存(SGA)
实例是一个临时性的东西,你也可以认为它代表了数据库某一时刻的状态! 数据库 = 重做文件 + 控制文件 + 数据文件 + 临时文件 数据库是永久的,是一个文件的集合。 ORACLE实例和数据库之间的关系
1.临时性和永久性转自:考试网 - [Examw.Com]
2.实例可以在没有数据文件的情况下单独启动 startup nomount , 通常没什么意义
3.一个实例在其生存期内只能装载(alter database mount)和打开(alter database open)一个数据库
4.一个数据库可被许多实例同时装载和打开(即RAC),RAC环境中实例的作用能够得到充分的体现! SGA主要有那些部分,主要作用是什么 (容易)
数据库信息存储在SGA中,并由多个数据库进程共享。SGA有多个内存结构,按其作用不同,可分为共享池、数据缓冲区及日志缓冲区。中华考试网
共享池是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域。如果共享池太小,则运行SQL、PL/SQL程序所用的时间就会较长,影响数据库的性能。
数据缓冲区用于存储从磁盘数据文件中读入的数据,所有用户共享。数据缓冲区的大小对数据库的读取速度有直接的影响。
日志数据首先产生于日志缓冲区,当日志缓冲区的日志数据达到一定数量时,由日志写入进程LGWR将日志数据写入日志文件中。
Oracle进程主要有哪些,作用是什么 (容易) Oracle进程主要有用户进程、服务器进程和后台进程。 用户进程是一个需要与Oracle服务器进行交互的程序。
服务器进程是一个用于处理连接到该实例的用户进程的请求。服务器进程和用户进程通信并为所连接的用户请求服务。
后台进程主要作用是使系统性能最好和协调多个用户。其主要包括进程监控进程(PMON,在用户进程出现故障时执行进程恢复)、系统监控进程(SMON,在实例启动时执行实例恢复、整理数据文件的自由
空间、释放不再使用的临时段)、数据写入进程(DBWR,主要负责将数据缓冲区内的数据写入数据文件)、日志写入进程(LGWR,主要负责将日志数据区内的数据写入日志文件)及检查点进程(CKPT, 其作用是保证所有修改过的数据库缓冲区都被写入数据库文件)。 一、数据描述有通常有哪几种形式?(中等) 数据描述有物理描述和逻辑描述两种形式。
物理数据描述指数据在存储设备上的存储方式,物理数据是实际存放在存储设备上的数据。 逻辑数据描述指程序员或用户用以操作的数据形式,是抽象的概念化数据。
二、和排序相关的内存在8i和9i分别怎样调整,临时表空间的作用是什么(中等)
Oracle 8i中sort_area_size/sort_area_retained_size决定了排序所需要的内存;如果排序操作不能在sort_area_size中完成,就会用到temp表空间。中华考试网
Oracle 9i中如果workarea_size_policy=auto时,排序在pga内进行,通常pga_aggregate_target的1/20可以用来进行disk sort;如果workarea_size_policy=manual时,排序需要的内存由sort_area_size 决定。
在执行order by/group by/distinct/union/create index/index rebuild/minus等操作时,如果在pga或sort_area_size中不能完成,排序将在临时表空间进行(disk sort)。
临时表空间主要作用就是完成系统中的disk sort。
一、Oracle有哪些用户?其默认口令和权限是什么?(容易)
当新建一个数据库时,Oracle将创建几个默认数据库用户模式,如SYS、SYSTEM和SCOTT。
SYS用户是Oracle中的超级用户,它的默认口令是change_on_install。数据库中数据字典的所有表和视图都存储在SYS模式中。
SYSTEM用户也有管理员权限,它的默认口令是manager。该用户创建显示管理信息的表和视图,以及Oracle工具所使用的内部表和视图。
SCOTT用户是一个示范帐户,其默认口令为tiger,此帐户包含4个示范表。 二、怎样查看哪些用户拥有SYSDBA、SYSOPER权限? (中等) conn sys/change_on_install
select * from V_$PWFILE_USERS;
三、请简述SQL语言的组成、作用及其常用命令。(容易) SQL语言分为数据定义语言(DDL)、数据操纵语言(DML)和数据控制语言(DCL)。
DDL用于定义SQL模式、基本表、视图和索引的创建和撤消操作。常用命令有:CREATE、ALTER、DROP。 DML用于数据的插入、修改、删除和查询。常用命令有:INSERT、UPDATE、DELETE、SELECT。
DCL用于对基本表的授权、完整性规则的描述和事务的控制等。常用的命令有:GRANT、REVOKE、COMMIT、SAVEPOINT、ROLLBACK。
四、数据库正常启动所经历的状态有哪几种 ? (中等) STARTUP NOMOUNT 数据库实例启动 STARTUP MOUNT 数据库装载 STARTUP OPEN 数据库打开
1.测试共享锁,for update锁和排他锁,并创造一种死锁的情况。非别给出相应的sql语句。 --测试共享更新锁
lock table in share update mode; lock table in share update mode;
select empno from emp where empno=7902 for update of ename; select ename from emp where empno=7900 for update of sal; --测试死锁 --USERA:
lock table emp in share mode; --USERB:
lock table emp in share mode ;
USERA: update emp set ename=\\'Smith\\' where empno=7369; USERB: update emp set job=\\'CLERK\\' where empno=79002; 2.创建一张表stu_score,表项:学号,学生姓名,学生成绩。
a.对学生成绩进行范围分区,分别分成0~60,60~70,70~80,80~100。 b.将上述分区中的60~70,70~80两个分区合并。
c.将上述合并后的分区插分成两个分区,插分点为70。 a>
CREATE TABLE stu_score (
sid number(10), sname varchar(8), sscore int )
PARTITION BY RANGE (sscore) (
PARTITION p1 VALUES LESS THAN (60), PARTITION p2 VALUES LESS THAN (70), PARTITION p3 VALUES LESS THAN (80), PARTITION p4 VALUES LESS THAN (100) ) tablespace test; b>
alter table stu_score merge partitions p2,p3 into partition p3; c>
alter table stu_score split partition p3 at (70)
into(partition p31,partition p32);
3.能否在一张表上的两个列上面进行范围分区,举例说明。 ----以sscore为主进行分区 CREATE TABLE stu_score1 (
sid number(10), sname varchar(8), sage int, sscore int )
PARTITION BY RANGE (sscore,sage) (
PARTITION p1 VALUES LESS THAN (60,20), PARTITION p2 VALUES LESS THAN (70,22), PARTITION p3 VALUES LESS THAN (80,24), PARTITION p4 VALUES LESS THAN (100,26) ) tablespace test;
4.建立表emp,表项:雇员号,雇员姓名,雇员工资,对雇员号进行hash分区,采用 partitions 分区数目
store in (tablespace1,tablespace2,...,tablespacen)
语句来实现。然后使用coalesce子句合并hash分区。 create table emp
(
eid int,
ename varchar(8), emoney int )
partition by hash (eid) partitions 4 store in( test);
5.对第四题中的表进行复合分区,对雇员工资使用范围分区,对雇员号使用hash分区。 create table emp (
eid int,
ename varchar(8), emoney int )
partition by range (emoney) subpartition by hash(eid) subpartitions 5 (
partition p1 values less than (2000), partition p2 values less than (3000), partition p3 values less than (4000), partition p4 values less than (maxvalue) );
6.重建第二题中的stu_score表,增加学生性别域并添加check限制,限制性别在\\'M\\',\\'F\\'之间。对性别进行列表分区。
CREATE TABLE stu_score (
sid number(10), sname varchar(8), sscore int,
ssex char check(ssex=\\'M\\' or ssex=\\'F\\') ORACLE习题8 转载 标签: 触发器 log update it
--语句级触发器 create table emp_log (
who varchar2(30), when date,
action varchar2(20)
);
--触发器
create or replace trigger modify_emp before insert or update or delete on emp declare
l_action emp_log.action%type; begin
if inserting then l_action :=\\'插入\\';
dbms_output.put_line(\\'插入\\'); elsif updating then l_action :=\\'更新\\';
dbms_output.put_line(\\'更新\\'); elsif deleting then l_action :=\\'删除\\';
dbms_output.put_line(\\'删除\\'); end if;
insert into emp_log(who,when,action) values (User,sysdate,l_action); end; --测试 update emp set sal=sal+500 --行级触发器
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Oracle习题(3)在线全文阅读。
相关推荐: