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操作不能回滚)