整理的Oracle精辟问答题(3)
select * from stuMark
1.我现在即将对student表的stuid=5的学生mark情况进行更新,此时我想阻止其它用户对此行记录的修改,我应如何设置?
select * from stumark
update stumark set s_mark = 100 where s_id = 5
不执行 commit
2.为了防止在修改某数据时,被其它锁定的进程锁住,我们应该如何操作?
select * from stumark for update wait 5;
update stumark set s_mark = 100 where s_id = 5
commit
3.锁定的进程何时才会释放呢?如何来释放自己锁定的操作?
用 commit 提交事务来
4.如何锁定整个表,有哪几种模式?
lock table 表名 in 锁定的模式(row share|row exclusive|share|share row exclusive|exclusive)
5.可以开两个进程测试上述操作
6.表分区的优点?
--1.改善查询的性能
--2.数据更容易管理
--3.便于备份和恢复
--4.提高数据安全性
7.建立表空间phonedat1,phonedat2,phonedat3,数据文件分别存放到d:"ordata目录下,每个表空间由两个数据文件组成,第一个数据文件初始大小20M,不自动增长,第二个数据文件初始大小50M,自动增长。
create tablespace phonedat1
datafile 'j:/my project/oracle/work/phonedat1a.dbf'
size 2m
autoextend off
create tablespace
datafile 'j:/my project/oracle/work/phonedata1b.dbf'
size 1m
autoextend on
8.建立分区表stumark(stuid,stuclass(10),stumark),按stumark进行范围分区,
40分以下放入第一分区,存储在第一表空间中
70分以下放入第二分区,存储在表空间phonedat2中
100...........三..................phonedat3中。
drop table stumark
select * from stumark
create table stumark
(
s_id int,
s_mark int,
s_name varchar(25)
)
partition by range(s_mark)
(
partition p1 values less than (40) tablespace phonedat1,
partition p2 values less than (70) tablespace phonedat2,
partition p3 values less than (100) tablespace phonedat3
)
9.建立分区表phoneinfo(phoneno(11),phonedate date,receivertel(11)),按phonedate进行范围分区
2004年1月1日之后数据为第一分区,存储在phonedat1中
2005....................二....................2中
2006....................三....................3中。
create table phoneinfo
(
phoneno number(11),
phonedate date,
receivertel number(11)
)
partition by range (phonedate)
(
partition p3 values less than (to_date('2004-01-01','yyyy-MM-dd')) tablespace phonedat3,
partition p2 values less than (to_date('2005-01-01','yyyy-MM-dd')) tablespace phonedat2,
partition p1 values less than (to_date('2006-01-01','yyyy-MM-dd')) tablespace phonedat1
)
10.建立分区表phoneinfo1(phoneno(11),phonedate date,receivertel(11)),按phoneno进行散列分区
第一分区,存储在phonedat1中
..二....................2中
..三....................3中。
create table phoneinfo1
(
phoneno number(11),
phonedate date,
receivertel number(11)
)
partition by hash(phoneno)
(
partition part1 tablespace phonedat1,
partition part2 tablespace phonedat2,
partition part3 tablespace phonedat3
)
11.仍以上表为例,请以字段phonedate为基础建立3个范围分区,再以phoneno为字段建立4个散列分区,要求数据存储在phonedat1..3表空间中。
create table phoneinfo2
(
phoneno number(11),
phonedate date,
receivertel number(11)
)
partition by range(phonedate)
subpartition by hash(phoneno)
subpartitions 4
(
partition p1 values less than (to_date('2004-01-01','yyyy-MM-dd')),
partition p2 values less than (to_date('2005-01-01','yyyy-MM-dd')),
partition p3 values less than (maxvalue)
)
12.建立分区表stumark1(stuid,stuclass(10),stumark),按stuclass建立列表分区
create table stumark1
(
stuid int,
stuclass varchar2(10),
stumark int
)
partition by list(stuclass)
(
partition part1 values ('class1'),
partition part2 values ('class2'),
partition part3 values ('class3')
)
13.在第9题中,由于2006年电话特别多,而且D盘上还放置了其他表空间,IO操作频繁,我现在想将第三个分区移到E盘的表空间phonedat41中,请完成?
create tablespace phonedat4
datafile 'd:/phonedat4.dbf'
size 1m
autoextend on
alter table phoneinfo move partition p1 tablespace phonedat4
14.在第9题中,由于2006年的电话特别多,后想根据6月30号为标准进行细分,请写脚本完成?最后修改分区的名称符合本表分区的命名规范。
alter table phoneinfo
split partition p1 at (to_date('2006-06-30'),'yyyy-MM-dd') into (partition p31,partition p32)
15.表级锁的模式有哪些?其内容分别是什么?
行共享
行排他
共享
共享行排他
排他
16.请写语句将student表以共享模式锁定。
lock table student in share mode
17.在上述16题中,在锁定过程中,此时另一用户也欲对此表进行锁定修改,最好的操作方式是什么?请写脚本。
lock table student in exclusive mode nowait
1.我现在即将对student表的stuid=5的学生mark情况进行更新,此时我想阻止其它用户对此行记录的修改,我应如何设置?
select * from stumark
update stumark set s_mark = 100 where s_id = 5
不执行 commit
2.为了防止在修改某数据时,被其它锁定的进程锁住,我们应该如何操作?
select * from stumark for update wait 5;
update stumark set s_mark = 100 where s_id = 5
commit
3.锁定的进程何时才会释放呢?如何来释放自己锁定的操作?
用 commit 提交事务来
4.如何锁定整个表,有哪几种模式?
lock table 表名 in 锁定的模式(row share|row exclusive|share|share row exclusive|exclusive)
5.可以开两个进程测试上述操作
6.表分区的优点?
--1.改善查询的性能
--2.数据更容易管理
--3.便于备份和恢复
--4.提高数据安全性
7.建立表空间phonedat1,phonedat2,phonedat3,数据文件分别存放到d:"ordata目录下,每个表空间由两个数据文件组成,第一个数据文件初始大小20M,不自动增长,第二个数据文件初始大小50M,自动增长。
create tablespace phonedat1
datafile 'j:/my project/oracle/work/phonedat1a.dbf'
size 2m
autoextend off
create tablespace
datafile 'j:/my project/oracle/work/phonedata1b.dbf'
size 1m
autoextend on
8.建立分区表stumark(stuid,stuclass(10),stumark),按stumark进行范围分区,
40分以下放入第一分区,存储在第一表空间中
70分以下放入第二分区,存储在表空间phonedat2中
100...........三..................phonedat3中。
drop table stumark
select * from stumark
create table stumark
(
s_id int,
s_mark int,
s_name varchar(25)
)
partition by range(s_mark)
(
partition p1 values less than (40) tablespace phonedat1,
partition p2 values less than (70) tablespace phonedat2,
partition p3 values less than (100) tablespace phonedat3
)
9.建立分区表phoneinfo(phoneno(11),phonedate date,receivertel(11)),按phonedate进行范围分区
2004年1月1日之后数据为第一分区,存储在phonedat1中
2005....................二....................2中
2006....................三....................3中。
create table phoneinfo
(
phoneno number(11),
phonedate date,
receivertel number(11)
)
partition by range (phonedate)
(
partition p3 values less than (to_date('2004-01-01','yyyy-MM-dd')) tablespace phonedat3,
partition p2 values less than (to_date('2005-01-01','yyyy-MM-dd')) tablespace phonedat2,
partition p1 values less than (to_date('2006-01-01','yyyy-MM-dd')) tablespace phonedat1
)
10.建立分区表phoneinfo1(phoneno(11),phonedate date,receivertel(11)),按phoneno进行散列分区
第一分区,存储在phonedat1中
..二....................2中
..三....................3中。
create table phoneinfo1
(
phoneno number(11),
phonedate date,
receivertel number(11)
)
partition by hash(phoneno)
(
partition part1 tablespace phonedat1,
partition part2 tablespace phonedat2,
partition part3 tablespace phonedat3
)
11.仍以上表为例,请以字段phonedate为基础建立3个范围分区,再以phoneno为字段建立4个散列分区,要求数据存储在phonedat1..3表空间中。
create table phoneinfo2
(
phoneno number(11),
phonedate date,
receivertel number(11)
)
partition by range(phonedate)
subpartition by hash(phoneno)
subpartitions 4
(
partition p1 values less than (to_date('2004-01-01','yyyy-MM-dd')),
partition p2 values less than (to_date('2005-01-01','yyyy-MM-dd')),
partition p3 values less than (maxvalue)
)
12.建立分区表stumark1(stuid,stuclass(10),stumark),按stuclass建立列表分区
create table stumark1
(
stuid int,
stuclass varchar2(10),
stumark int
)
partition by list(stuclass)
(
partition part1 values ('class1'),
partition part2 values ('class2'),
partition part3 values ('class3')
)
13.在第9题中,由于2006年电话特别多,而且D盘上还放置了其他表空间,IO操作频繁,我现在想将第三个分区移到E盘的表空间phonedat41中,请完成?
create tablespace phonedat4
datafile 'd:/phonedat4.dbf'
size 1m
autoextend on
alter table phoneinfo move partition p1 tablespace phonedat4
14.在第9题中,由于2006年的电话特别多,后想根据6月30号为标准进行细分,请写脚本完成?最后修改分区的名称符合本表分区的命名规范。
alter table phoneinfo
split partition p1 at (to_date('2006-06-30'),'yyyy-MM-dd') into (partition p31,partition p32)
15.表级锁的模式有哪些?其内容分别是什么?
行共享
行排他
共享
共享行排他
排他
16.请写语句将student表以共享模式锁定。
lock table student in share mode
17.在上述16题中,在锁定过程中,此时另一用户也欲对此表进行锁定修改,最好的操作方式是什么?请写脚本。
lock table student in exclusive mode nowait