orcale 期末复习资料整理
我们的征程是星辰大海,而非人间烟尘
文章目录
实验整理
数据库打开过程
①创建并启动与数据库对应的实例
,为实例创建一系列后台进程与服务进程,使用到初始化参数,如初始化参数有问题,实例将无法启动。
②为实例加载数据库
,从控制文件中获取数据库名称,数据库文件的位置和名称等有关的数据库物理结构信息,如果控制文件受损,将无法加载数据库。
③将数据库设置为打开状态
,实例将打开所有处于联机状态的数据文件和重做日志文件。
数据库启动模式
①启动实例不加载数据库(NOMOUNT模式)
A 只会创建实例,并不加载数据库。
B 创建内存结构和服务进程,不会打开任何数据文件。
C 适用工作环境:
1 创建新数据库
2 重建控制文件
D 启动命令:startup nomount
E 该模式下只能访问与SGA区相关的数据字典视图,包括V P A R A M E T E R , V PARAMETER,V PARAMETER,VSGA ,V P R O C E S S , V PROCESS , V PROCESS,VSESSION。
②启动实例但不打开载数据库(MOUNT模式)
A 为实例加载数据库,但是保持数据库的关闭状态。
B 适用工作环境:
1 重命名数据文件
2 添加,删除或重做日志文件
3 执行数据库完全恢复操作
4 改变数据库的归档模式
D 启动命令:startup mount
E 该模式下只能访问与控制文件相关的数据字典视图,包括V T H R E A D , V THREAD,V THREAD,VCONTROLFILE ,V D A T A B A S E , V DATABASE , V DATABASE,VDATAFILE, V$LOGFILE。
③打开数据库(OPEN模式)
A 正常启动模式,用户要对数据库进行操作。
B 启动命令:startup
④强制打开数据库(FORCE模式)
A 强制启动模式。
B 启动命令:startup force
数据库关闭模式
①正常关闭方式:shutdown normal
Oracle不会断开当前的用户的连接,而是等待当前用户退出才关闭。
②立即关闭方式:shutdown immediate
Oracle不仅会立即中断当前用户的连接,而且会强行终止用户的当前事务。
③事务关闭方式:showdown transactional
Oracle会在尽可能短的时间内关闭数据库,保证所有的当前事务可以运行完毕。
④终止关闭方式 shutdown abort
立即断开,所有未提交的事务均不被回退。
数据字典
1. 查看当前用户的用户名,缺省表空间。
select username,default_tablespace from user_users;
2.查看用户下所有的表
Select * from user_tables;
3.查看当前用户的角色
Select * from user_role_privs
4 查看当前用户的系统权限和表级权限
Select * from user_sys_privs;
Select * from user_tab_privs;
5 查询当前用户有权限访问 的所有对象的信息
Select object_name,object_type from all_objects;
6.查询当前用户有权限访问 的所有表对象的信息
Select owner ,table_name from all_tables;
7.查询数据库实例中有多少用户
Select username from dba_users;
8.显示指定用户所具有的系统权限
Select * from dba_sys_privs where grantee=’SCOTT’;
9.显示特权用户
Select * from v$pwfile_users;
10.显示全局存储区SGA的信息
Select name,value from v$sga;
SQL*PLUS命令的使用
这里直接放上一个链接,太多了,懒得整理了
系统函数的使用
由于我自己之前这里过了,这里直接放链接
PL/SQL 编程基础一
PL/SQL编程基础二
1、练习使用游标,包括隐式游标、显式游标和游标FOR循环。
(1)在SCOTT模式下显示工资排名前5的员工的编号、姓名和工资,并将所有执行正确的PL/SQL语句记录下来。
①使用隐式游标。
declare
v_row emp%rowtype;
i number:=0;
begin
for r in (select empno,ename,sal from emp order by sal desc)
loop
dbms_output.put_line(r.empno|| ' '||r.ename|| ' '|| r.sal);
i:=i+1;
exit when i=5;
end loop;
end;
②使用显式游标。
declare
cursor v_row is select * from emp order by sal desc;
a emp%rowtype;
i number:=0;
begin
open v_row;
fetch v_row into a;
while i<5 loop
dbms_output.put_line(a.empno|| ' '||a.ename|| ' '|| a.sal);
i:=i+1;
fetch v_row into a;
end loop;
end;
③使用游标for循环
declare
cursor v_row is select empno,ename,sal from emp order by sal desc ;
i number:=0;
begin
for r in v_row loop
dbms_output.put_line(r.empno|| ' '||r.ename|| ' '|| r.sal);
i:=i+1;
exit when i=5;
end loop;
end;
存储过程
这里直接上链接,这种语句只要看一遍就基本没有什么问题。
存储过程
函数的使用
程序包的使用
表空间管理与维护
1.创建表
create table emp1(eno NUMBER(4),
ename VARCHAR2(8),
sex CHAR (1),
sal NUMBER(8),
dno NUMBER(3));
2.在eno字段上创建主键约束
alter table emp1 add constraint eno_pk primary key(eno);
3.在ename字段上创建非空约束
alter table emp1 modify ename not null;
4.创建和emp1表字段相同的cp_emp表,将cp_emp表的eno字段与emp1表的eno字段创建外键约束
create table cp_emp1(
eno NUMBER(4),
ename VARCHAR2(8),
sex CHAR (1),
sal NUMBER(8),
dno NUMBER(3));
ALTER TABLE cp_emp1 add CONSTRAINT eno_FK FOREIGN KEY(eno) REFERENCES emp1(eno);
5.删除所建的外键约束
alter table cp_emp1 drop constraint eno_fk;
(1)创建一个本地化管理表空间(名称自拟),分配其初始空间为20M。
create tablespace myspace datafile 'd:\KwDownload\myspace.dbf' size 20M extent management local;
(2)创建一个临时表空间(名称自拟),分配其初始空间为5M。
create temporary tablespace temp_space tempfile 'd:\KwDownload\temp_sapce.dbf' size 5M extent management local;
(3)创建一个大文件表空间(名称自拟),分配其初始空间为100M。
create bigfile tablespace big_sapce datafile 'd:\KwDownload\big_sapce.dbf' size 100M extent management local;
(4)创建一个撤销表空间(名称自拟),分配其初始空间为10M。
create undo tablespace undo_space datafile 'd:\KwDownload\undo_space.dbf' size 10M autoextend on;
(5)查看当前用户下所有表空间信息(包括表空间名称、数据文件)。
select * from user_tablespace;
(6)为已创建好的本地表空间增加数据文件(文件大小用户自定)。
alter tablespace myspace add datafile 'd:\KwDownload\myspace_2.dbf' size 1M;
(7)将已创建好的本地表空间修改为脱机状态。
alter tablespace myspace offline normal;
(8)修改本地表空间中新增加的数据文件为脱机状态。
alter database datafile 'd:\KwDownload\myspace_2.dbf' offline;