oracle 复习总结

 1、以SYS身份登录,观察数据库运行模式,如果运行在非归档模式下,请切换至归档模式下

archive log list;
mount:alter database archivelog;
 
2、用SYS查看HR的状态,如果是锁定,则解锁并重设密码
select * from dba_users where username='HR';
 
3、创建表空间inventory,数据文件inventory01.dbf,大小10M
create tablespace inventory datafile 'k:\dbf\inventory01.dbf' size 10m;
 
4、修改inventory01.dbf的大小为20m
alter database datafile 11(文件号) resize 30m;
 
5、用hr登录查看拥有的角色,用sys查HR拥有的角色
hr:select * from user_role_privs;
sys:select * from dba_role_privs where grantee='HR';
 
6、查看CONNECT角色包装的权限
select * from dba_sys_privs where grantee='CONNECT';
 
7、查看hr的默认表空间,用hr创建表hrtest1到inventory表空间上。
create table hrtest1(int id) tablespace inventory;
 
8、查看hr的系统权限。
select * from dba_sys_privs where grantee='HR';
 
9、回收hr的unlimited tablespace权限
 revoke unlimited tablespace from hr;
 
10、用hr创建表hrtest2到inventory表空间上。(观察结果)
create table hrtest2(int id) tablespace inventory;(报错)
 
11、为hr在inventory表空间上分配使用限额10m
 alter user hr quota 5m on inventory;
 
12、用hr创建表hrtest2到inventory表空间上。
create table hrtest2(int id) tablespace inventory;
 
13、查看hr在inventory表空间上创建了哪些表。
select * from user_tables where tablespace_name='INVENTORY';
 
14、在hrtest1中录入100条测试数据。
declare
  i int:=1; 
begin
  for i in 1..100 loop
     insert into hrtest1 values(i);
  end loop;
  commit;
end;
 
15、删除前10条。
delete from hrtest1 where id in(
select id from hrtest1 where rownum<=10)
 
16、为表添加一列testTime date型
alter table hrtest1 add testTime date;
 
18、更新第5列至第10列的testTime为2011-8-20 11:30:20
update hrtest1 set testTime=to_date('2011-08-20 11:20:30','yyyy-mm-dd hh24:mi:ss') where id in
(select id from (select rownum r,id,testTime from hrtest1) tmp where r>=5 and r<=10);
 
19、删除ID号为100的记录,并提交(记录时间)
delete from hrtest1 where id=100; 
commit;
 
20、闪回到未删除ID号为100的记录前的状态
alter table hrtest1 enable row movement;
flashback table hrtest1 to timestamp to_timestamp('20110825 10:48:40','yyyymmdd hh24:mi:ss');
 
21、删除表hrtest1,检查回收站
drop table hrtest1;
select * from user_recyclebin;(show recyclebin;)
 
22、从回收站闪回hrtest1表
flashback table hrtest1 to before drop;
 
23、手工备份inventory表空间(联机状态)
alter tablespace inventory begin backup;
host copy k:\dbf\INVENTORY01.DBF k:\bak\inven01.dbf;
alter tablespace inventory end backup;
 
查看归档日志列表,并强制切换当前在线日志的内容至归档日志中。
select * from v$archived_log;
alter system switch logfile;
 
24、在hrtest1表中插入一条ID为101,testTime为当前时间的记录,并提交。
insert into hrtest1 values(101,sysdate);
commit;
 
25、关闭数据库,删除磁盘上的inventory01.dbf文件后启动数据库。
shutdown immediate
删除OS文件。
startup
 
26、查看哪些文件需要恢复。使这些文件单独脱机。并查看需要哪些日志。
select * from v$recover_file;(mount下可用)
select * from v$recovery_log;(若日志信息很少,则无显示,但并不是不需要)
alter database datafile 12 offline;
alter database open;
 
27、恢复缺失文件。
host copy  k:\bak\inven01.dbf k:\dbf\INVENTORY01.DBF;
recover datafile 12;
alter database datafile 12 online;
 
28、使用RMAN备份inventory表空间,分配两个通道
run
{
 allocate channel c1 type disk;
 allocate channel c2 type disk;
 backup tablespace inventory;
 release channel c1;
 release channel c2;
}
 
29、使用RMAN备份inventory表空间(压缩方式),分配两个通道
run
{
 allocate channel c1 type disk;
 allocate channel c2 type disk;
 backup as compressed backupset tablespace inventory;
 release channel c1;
 release channel c2;
}
 
30、向hrtest1表中插入一条ID为102的记录并提交。然后关闭数据库。
insert into hrtest1 values(102,sysdate);
commit;
shutdown immediate;
 
31、删除磁盘上的inventory01.dbf文件后启动数据库。重复第26题。
 
32、利用RMAN恢复缺失文件。
run
{
allocate channel c1 type disk;
restore tablespace inventory;
recover tablespace inventory;
release channel c1;
}
 
33、修改RMAN配置为两个通道。
configure device type disk parallelism 2;
 
34、查看shared pool以及database buffer cache的大小,调整。
 alter system set shared_pool_size=70m scope=both;
 alter system set db_cache_size=34m scope=both;
(alter system flush shared_pool;)
 
35、查看hr的使用限额(在其可使用的表空间上)
select * from dba_ts_quotas where username='HR';
 
36、查看HR在默认表空间上创建的表
select * from user_tables;
 
37、在默认表空间上的表test2
create table test2(tid int,tname varchar2(10));
 
38、添加主键约束
alter table test2 add constraint PK_TID primary key (tid);
 
38、录入两条数据
insert into test2 values(1,'aa');
insert into test2 values(2,'aa');
commit;
 
39、添加唯一性约束在列tname上。
alter table tt add constraint UK_TNAME UNIQUE(tname) DEFERRABLE ENABLE NOVALIDATE;
 
40、扩展列tname的长度为20个字节。
alter table tt modify tname varchar2(20);
 
41、hr授权给scott查询自己的表departments的权限。
grant select on departments to scott;
 
42、用scott用户查hr的departments表。
select * from hr.departments;
 
43、在scott下创建同义词(为departments建同义词depts)
create synonym depts for hr.departments;
 
44、复制表departments表
create table dept2 as select * from departments;
 
45、导出dept2的数据后,用快速方式删除表中数据,再进行导入。
快速删除表数据:truncate table dept2;(ddl操作不能回滚)