复习1
1. 理解oracle 体系结构:
逻辑存储结构中各个对象中英文的写法和大小的排列次序
块、(Block)
区、(Extent)
段、(Segment)
表空间(Tablespace)
oracle数据库的物理存储结构有那些文件,每种文件的作用。
数据文件:用来存放数据库中的数据,也包括库中的一些脚本.
控制文件:记录了数据库的物理结构。
控制文件是一个很小的二进制文件,其中包含了关
于数据库物理结构的重要信息,通过在加载数据库时
读取控制文件,Oracle才能找到自己所需的文件(数据
重做日志文件:记录数据库操作的信息。
重做日志文件:
重做日志文件也称为事务日志。Oracle在重做日志文件中以重做记录的形式记录下用户对数据库所进行的操作。
归档日志文件:用于保存重做日志文件,因为重做日志文件本身是循环使用的,所以需要通过归档日志文件将日志文件信息进行保存。
密码文件:用于记录sysdba用户的密码信息。
初始化文件:用于系统启动时,使用这些参数进行初始化。
内存结构:分为SGA区与PGA区两大部分。
SGA区(系统全局区 System Global Area)
PGA区(程序全局区 Program Global Area)
§ SGA区
SGA区中主要包含如下内存结构:
数据库缓存 重做日志缓存
共享池 Java池
大型池 数据字典缓存
保存其他控制信息的结构
§ PGA区
PGA区是保存有特定服务进程的数据和控制信息的
内存结构,这个内存结构是非共享的,只有服务进程
本身才能够访问它自己的PGA区。
服务进程与后台进程的作用。
Oracle进程 创建实例时由Oracle本身产生,执行的
是Oracle自身的代码,用于完成特定的服务功能。
Oracle进程根据功能可以分为两类,即服务进程
和后台进程。
服务进程:服务进程由Oracle自身创建,用于处理
连接到实例中的用户进程所提出的请求。
后台进程:后台进程的主要作用是以最有效的方式为并发建立的
多个用户进程提供Oracle的系统服务,这些系统服务
包括I/O操作、监视各个进程状态、维护系统的性能和
可靠性。
2. 数据库启动的三个过程是什么?
启动实例是启动oracle数据库的第一个过
程
(1)读取初始化参数文件。读取初始化参数文
件的顺序:spfileSID.ora,spfile.ora,initSID.ora
(2)分配系统全局区。
(3)启动后台进程。
(4)打开alertSID.log文件和跟踪文件
装载数据库是启动oracle数据库的第二个过
程,主要完成以下工作:
(1)将数据库与一个已打开的实例关联起来。
(2)打开初始化参数文件中指定的控制文件。
(3)根据控制文件获得数据文件和重做日志文件的名称和状态。
打开数据库是启动oracle数据库的最后一个
过程,
(1)打开数据文件。
(2)打开联机重做日志文件。
控制文件在哪个过程中被打开?
第二个过程
控制文件的作用及它保存那些重要信息?
作用:记录了数据库的物理结构
其记录了数据库名称、相关的数据文件和联机重做日志文件的名称和位置、数据库创建的时标、当前日志的序号、以及检查信息的等内容。
数据库名称和标识,数据文件和重做日志文件的名称
和位置,创建数据库时的时间戳,表空间名称,当前
重做日志文件序号,检查点信息,回滚段的起始和结
束位置,重做日志归档信息,备份信息。
3. 数据库的实例组成部分及作用是什么?
Oracle软件结构被称为“实例”。
实例:实例组成分为:实例内存结构、实例进程结构
作用:用户直接与实例交互,由实例来访问数据库。每一
个数据库至少有一个与之对应的实例。
一个oracle数据库可以有多个实例吗?
可以 一个数据库最少有一个实例
4. 数据库启动读取参数文件的次序是什么?
顺序:spfileSID.ora,spfile.ora,initSID.ora
5. oracle数据库的一个默认表空间是什么?
每个Oracle数据库必须至少具有一个默认的表空
间,就是SYSTEM表空间。在创建新数据库时,Oracle
将自动创建SYSTEM表空间。
它的管理方式什么?
字典管理方式
表空间有哪两种管理方式?
字典管理方式表空间和本地管理方式表空间。
表空间与数据文件的关系是怎样的?
一个表空间可以拥有一个或多个数据文件。
一个数据文件只能属于一个表空间。
当存储空间不足时,有那些方法可以增加存储空间?
以在创建表空间是用autoallcoate自动扩展,也可用uniform size指定统一的扩展数
在本地管理方式的表空间中,其所有存储空间的管理信息都存放在哪里?
dba_tablespaces
system表空间,临时表空间和撤消表空间的作用是什么?
system表空间:它用于存储数据字典对象,用户数据,并且包含了系统回滚段
撤销表空间 :专门用来在自动撤销管理方式下存储撤
销信息,即回退信息。(撤销表空间只能采用本地管理
方式)。
临时表空间 :实例运行过程中,Oracle必须使用一些
临时存储表空间来保存SQL语句在执行过程中所产生
的临时数据(主要是在排序时产生的临时数据)。
6. 一个oracle数据库最少需要多少个联机重做日志文件?日志组成员的关系是怎样的?
每个数据库至少需要拥有两个重做日志文件
因为
Oracle是以循环方式来使用重做日志文件的。当一个
重做日志文件被写满后,后台进程LGWR开始写入下
一个重做日志文件,以此类推。当所有的日志文件都
写满后,LGWR进程再重新写入第一个日志文件。被
依次循环写入的多个重做日志文件组成一个组,当前
正在被数据库所使用的一组重做日志文件称为“联机重
做日志文件”。
7. oracle数据字典中有4中类型的动态视图,分别是以dba_,all_,user_和v$开头的,例如dba_tablespaces,all_tables,user_source和v$controlfile,请理解它们的作用?
dba_tablespaces 数据库表空间信息
v$controlfile 控制文件信息查看所有控制文件的名称和状态
all_tables 所有的表对象信息
user_source 数据库用户的所有资源对象信息
8. oracle数据库的操作模式有哪两种?
专用服务器操作模式
共享服务器操作模式
用户有哪两种认证方式?
认证方式,其中有操作系统认证和数据库认证
它是通过哪两个概念来建立访问控制结构?
权限和角色的关系怎样的?
每个权限可以分配多个角色
每个角色可以拥有0个或多个权限
常见的角色有DBA,RESOURCE和CONNECT.
9. 监听器的作用是什么?
基本概念:listener(监听器)
监听器是位于服务器端的一个后台进程,它负责对
客户端传入的连接请求进行监听,并且负责对服务器
端的连接负荷进行调整。当客户端试图建立一个到
服务端的网络会话时,首先是由监听器来处理实际的
网络请求的。
10. oracle为表建立默认的索引是什么?
创建PRIMARY KEY和UNIQUE约束条件时,系统将自动为相应的列创建惟一(UNIQUE)索引
11. 触发器的概念是什么?
所谓数据库触发器,就是一类靠事件驱动的特殊过程,一旦由某个用户定义,任何用户对该数据的增、删、改操作均由服务器自动激活相应的触发器,在核心层进行集中的完整性控制。
有那些事件能引起触发器自动执行?
增、删、改操作
12. 存储参数 storage (initial 64k next 128k pctincrease 100) 分别代表什么,第三个区在这种情况下应该是多大?
(2)存储参数
create table 语句的storage 子句中可以设置6个参数:
l Initial 指定为表的数据段分配的第一个区的大小,
以kb或mb为单位。默认为5个oracle块大小,最小值为2个oracle块大小。
l Next 指定为表的数据段分配的第二个区的大小,以
kb或mb为单位。默认值为5个oracle块大小,最小为1
个oracle块大小。
l Pctincrease 指定从第二个区之后,为表的数据段分
配的区的大小增加比例。
l Minextents指定允许为表的数据段所分配的最小区数目。默认值为1,最小为1。
l Maxextents 指定允许为表的数据段所分配的最大区间数目。默认值为unlimited,最小值为1。
l Buffer_pool 指定存放表的数据块的缓存池。
(3)例如
create table employees(
empno number(5) primary key,
ename varchar2(15) not null,
job varchar2(10),
mgr number(5),
hiredate date default(sysdate),
sal number(7,2),
comm number(7,2),
deptno number(3) not null
constraint emp_deptno_fk references dept)
tablespace users
storage(initial 50k
next 50k
maxextents 10
pctincrease 25);
13. 理解模式和模式对象.
14. 理解 create, drop, alter, grant, revoke 的意义和基本用法
Create:创建
Drop:删除
//删除表空间和数据文件:
DROP TABLESPACE TBS2 including contents and datafiles
Alter:修改
Revoke:权限的回收
REVOKE CREATE TABLE FROM FOXCONN;
REVOKE SELECT ON EMP FROM FOXCONN;
-- 权限的回收
revoke select any table from jg_com
Grant:授权
GRANT CREATE SESSION TO FOXCONN;
GRANT UPDATE,DELETE,INSERT,SELECT ON SCOTT.DEPT TO FOXCONN WITH GRANT OPTION;
15. desc的作用是什么?
降序排列数据
16. 理解alter database add logfile member “redo.log” to logfile group 1和alter table 表名 drop constraint约束名 分别是做什么样的操作?
往第一联机日志组增加一个成员redo.log
alter table 表名:修改table表
drop constraint:删除名为constraint的约束
17. 在一台服务器上安装了oracle数据库,同时配置了服务名: service_server,在客户机上也配置同样的服务,服务名service_client, 如何利用 “connect 用户名/密码@服务名” 分别在服务器和客户机上连接登陆该数据库.
(1)运行net manger,创建服务名s508teacher,然后在监听器的监听地址上添加教师机上oracle数据库的地址信息及数据库服务信息,并将首选命名方式设置为本地命名方式。
(2)运行sql*plus工具,看是否能够通过下面的方式连接教师机上的Oracle数据库 :
conn scott/tiger@s508teacher
(3)打开文件tnsnames.ora,利用完整的连接描述符连接到教师机上的Oracle数据库。
18. 请写出完整的操作语句: 创建用户,激活用户和更改用户密码,授予用户使用其他用户表的权限如insert,update, 并说明带有 with grant option的操作的作用.
CREATE USER FOXCONN IDENTIFIED BY FOX
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA 2M ON USERS
;
alter user FOXCONN account unlock;
alter user FOXCONN identified by FOX;
SQL> GRANT UPDATE,DELETE,INSERT,SELECT ON SCOTT.DEPT TO FOXCONN WITH GRANT OPTION;
with grant option 或 with admin option 是让得到授权的用户可以把得到的权限继续授权给其他用户如果是对象权限,那么使用 with grant option
19. oracle的备份分为物理备份和逻辑备份,如何理解物理备份?
物理备份:将实际组成数据库的操作系统文件从一处
拷贝到另一处的备份过程,通常是从磁盘到磁盘或从
磁盘到磁带。
如何做逻辑备份?
逻辑备份:指使用export程序将存储于一个
或多个数据文件中的数据集中转储至一个操作系统文件。
Export使用程序的命令格式
EXPORT[[keyword1={value(value1,[value2,…])}]
[keyword2={value(value1,[value2,…])}] ]
其中,keyword是参数名,value是该参数所对应的值。
请写出联机备份的操作步骤和完整的操作语句.
联机表空间备份的步骤如下:
1)确认数据库运行在archivelog模式下,如不是,将数据库的日志操作模式设为归档模式;
2)查询视图dba_data_files获得要备份的表空间的数据文件信息。
3)进行联机的表空间备份。
对要备份的每个表空间逐个使用下述步骤:
A) Alter tablespace <表空间名> begin backup;
B) 使用操作系统命令拷贝表空间数据文件;
C) Alter tablespace <表空间名> end backup;
例如:执行下列步骤对数据库orcl数据库的users表空
间实现联机备份。
(1)连接到orcl数据库并确认数据库的日志操作模式;
SQL> conn sys/admin@orcl as sysdba
SQL> archive log list
如果数据库的日志操作模式是archivelog,继续后面的
步骤,否则更改数据库的日志操作模式。
(2)查看orcl数据库中Users表空间包含的数据文件;
SQL>select file_name from dba_data_files where tablespace_name=‘users’
(3)对users表空间中的数据文件进行联机备份;
SQL> alter tablespace users begin backup;
SQL> host 使用主机命令拷贝users表空间中数据文件
SQL> alter tablespace users end backup;
Oracle第一次作业
1. 用自己的语言描述oracle体系结构.
答:oracle体系结构包括以下内容:
A. 数据库
数据库是一个数据的集合,不仅是物理上的数据;也指物理、存储以及进程对象的一个组。
B. Oracle存储结构
a) 逻辑存储结构:单元类型分为块、区、段以及表空间。
b) 物理存储结构:物理文件类型分为:数据文件、控制文件、重做日志文件。
C. Oracle软件结构
a) 实例:实例组成分为:实例内存结构、实例进程结构。
b) 数据库操作模式:专用服务器模式、共享服务器模式。
c) 实例内存结构:SGA区、PGA区。
d) 实例进程结构:用户进程、Oracle进程。
e) 后台进程:系统监控、进程监控、数据写入进程、日志写入进程、检查点进程、归档进程、RECO进程、快照进程、Dnnn进程以及服务器进程Sever。
D. 外部结构:日志文件、控制文件、跟踪文件以及修改日志。
2. Oracle启动过程的操作,并简单描述不同的过程中对Oracle的管理。
答:A.启动实例 startup nomount:启动实例是启动Oracle数据库的第一个过程,主要完成以下工作:
a) 读取初始化参数文件。读取初始化参数文件顺序:spfileSID.ora,spfile.ora,initSID.ora
b) 分配系统全局区
c) 启动后台进程。
d) 打开alertSID.log文件和跟踪文件。
在 startup nomount 模式下能执行以下操作:
a) 运行一个创建新数据库的脚本。
【即创建数据库】
b) 重建控制文件。
B.装载数据库 startup mount:装载数据库是启动Oracle数据库的第二过程,主要完成以下工作:
【如果数据库的例程已经启动,这时候的操作是 alter database mount】
a)讲数据库与一个已打开的实例关联起来。
b)打开初始化参数文件中指定的控制文件。
c)根据控制文件获得数据文件和重做日志文件的名称和状态。
在startup mount模式下能执行以下操作:
a) 重命名数据文件。
b) 添加、删除、重命名重做日志文件。
c) 执行数据库完全恢复操作。
d) 改变数据库的归档模式。
C.打开数据库 startup:打开数据库是启动Oracle数据库的最后一个过程,主要完成以下工作: 【如果数据库已经装载,这时候的操作是 alter database open】
a)打开数据文件。
b)打开联机重做日志文件。
在startup 模式下,任何具有create session权限的用户都可以连接到数据库;进行常规数据库操作。
3. 请配置一个用自己的名字作为连接标识符,并提供连接描述符,用户Scott、密码tiger怎样连接你的数据库?
答:连接标识符:HuangXu。操作代码在文件里。
SQL> conn scott/tiger@HuangXu;
已连接。
SQL> conn scott/tiger@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = littlestar)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = star.never)));
已连接。
4.请增加第五个联机日志组,它只有一个成员,容量为10M,再往第三联机日志组增加一个成员。
答:请查看操作代码。
SQL> alter database add logfile group 5 ('C:\oracle\oradata\star\LogTest.log') size 10M;
数据库已更改。
SQL> ALTER DATABASE ADD LOGFILE MEMBER 'C:\oracle\oradata\star\LogTest2.log' to group 3;
数据库已更改。
作业2:
/*1.
oracle数据库表空间的类型及其作用:
oracle数据库表空间可以简单地分为系统表空间和非系统表空间。系统表空间是在创建数据库时一同创建的,它用于存储数据字典对象,用户数据,并且包含了系统回滚段。非系统表空间还可以分为永久表空间,临时表空间,还原表空间三类。永久表空间用于存储用户数据;临时表空间用于存储临时数据;还原表空间用于自动还原管理,它包含了回滚记录,提供了对用户数据进行回滚的能力。
表空间与数据文件的关系、表空间的两种管理方式的优缺点:
一个表空间可以拥有一个或多个数据文件。一个数据文件只能属于一个表空间。表空间有字典管理和本地管理两种管理方式。字典管理方式的表空间中,各个区的信息都存储在数据字典中。因此,当对表空间进行存储空间的分配与回收时,会在数据库中产生读写操作。而在本地管理方式下,表空间中所有区的分配信息都保存在该表空间内部(数据文件的头部)。与字典管理方式下的表空间相比,本地管理方式表空间有如下优点:
1)由于在表空间的存储分配过程中不需要访问数据库(只是简单的改变数据文件中的位图),能够提高存储分配操作的速度。
2)能够避免在表空间的存储管理操作中产生的递归现象,优化了存储管理操作的性能。
3)本地管理的临时表空间在使用过程中不会产生任何重做信息和撤销信息。
简化DBA对空间的存储管理操作。
4)降低用户对数据字典的依赖性。*/
--创建本地管理表空间:
create tablespace 黄爱龙
logging
datafile 'F:\oracle\oradata\ora\黄爱龙.dbf' size 50m
extent management local
autoallocate
segment space management auto;
--创建字典管理的表空间:
create tablespace h0740111109
datafile 'F:\oracle\oradata\ora\h0740111109.dbf' size 10m
default storage(initial 64k
next 128k
minextents 2
pctincrease 50
maxextents 4096)
minimum extent 128k
logging
online
permanent
extent management dictionary;
2.
/*一、Oracle中的实体完整性
Oracle在CREATE TABLE语句中提供了PRIMARY KEY子句,供用户在建表时指定关系的主码列。
例 在学生-选课数据库中,要定义Student表的Sno为主码,可使用如下语:*/
CREATE TABLE student
(sno NUMBER(8),
sanme VARCHAR(20),
sage NUMBER(20),
CONSTRAINT pk_sno PRIMARY KEY(sno));
/*其中,PRIMARY KEY(Sno)表示是Student表的主码。PK_SNO是此主码约束名。
用PRIMARY KEY语句定义了关系的主码后,每当用户程序对主码列进行更新操作时,系统自动进行完整性检查,凡操作使主码值为空或使主码值在表中不唯一,系统拒绝此操作,从而保证了实体完整性。*/
/*二、Oracle中的参照完整性
Oracle的CREATE TABLE语句也可以定义参照完整性规则,即用FOREIGN KEY子句定义哪些列为外码列,用REFERENCES子句指明这些外码相应于哪个表的主码,用ON DELETE CASCADE子句指明在删除被参照关系的元组时,同时删除参照关系中相应的远祖。
例 使用如下SQL语句建立EMP表:*/
CREATE TABLE emp
(empno NUMBER(4),
ename VARCHAR(10),
job VARCHAR2(9),
mgr NUMBER(4),
sal NUMBER(7,2),
deptno NUMBER(2),
CONSTRAINT fk_deptno
FOREIGN KEY(deptno)
REFERENCES dept(deptno));
/*则表明EMP是参照表,DEPT为其被参照表,EMP表中Deptno为外码,它相应于DEPT表中的主码Deptno。当删除或修改DEPT表中某个元组的主码时要检查EMP中是否有元组的DEPTNO值等于DEPT中要删除的元组的Deptno值,如没有,接受此操作;否则系统拒绝这一更新操作。
三、Oracle中用户定义的完整性
除实体完整性和参照完整性外,应用系统中往往还需要定义与应用有关的完整性限制。例如:要求某一列的值不能取空值,要在表中是唯一的,要在某个取值范围中等。Oracle允许用户在建表时定义下列完整性约束:
列值非空(NOT NULL短语)
列值唯一(UNIQUE短语)
检查列值是否满足一个布尔表达式(CHECK短语)
例 建立学生登记表Student,要求学号在90000~99999之间,年龄%26lt;29,性别只能是“男”或“女”,姓名非空。 */
CREATE TABLE student
(sno NUMBER(5) CONSTRAINT c1 CHECK (sno BETWEEN 90000 AND 99999),
sname VARCHAR(20) CONSTRAINT c2 NOT NULL,
sage NUMBER(3) CONSTRAINT c3 CHECK (sage%26lt;29),
ssex VARCHAR(2) CONSTRAINT c4 CHECK(ssex IN('男','女')));
/*在Oracle中,除列值非空、列值唯一、检查列值是否满足一个布尔表达式外,用户还可以通过触发器(Trigger)来实现其他完整性规则。所谓数据库触发器,就是一类靠事件驱动的特殊过程,一旦由某个用户定义,任何用户对该数据的增、删、改操作均由服务器自动激活相应的触发器,在核心层进行集中的完整性控制。
定义数据库触发器的语句是CREATE TRIGGER。
例 为教师表Teacher定义完整性规则“教授的工资不得低于1000元,如果低于1000元,自动改为1000元”。*/
CREATE TRIGGER update_sal
BEFORE INSERT OR UPDATE OF sal, pos
ON teacher
FOR EACH ROW
WHEN (:NEW.pos = '教授')
BEGIN
IF :NEW.sal %26lt; 1000
THEN
:NEW.sal := 1000;
END IF;
END;
/*综上所述,Oracle提供了CREATE TABLE语句CREATE TRIGGER语句定义完整性约束条件,其中用CREATE TABLE语句可以定义很复杂的完整性约束条件。完整性约束条件一旦定义好,Oracle会自动执行相应的完整性检查,对于违反完整性约束条件的操作或者拒绝执行或者执行事先定义的操作。
查询自己的数据库中有多少个表,用户scott拥有哪些表,能操作哪些表?*/
数据库中有833个表,可通过select count(*) from dba_tables查询;
用户scott拥有BONUS,DEPT,EMP,SALGRADE这些表,
可登录到scott,通过select table_name from user_tables;
能操作的表,可登录到scott,通过select table_name from all_tables;
作业3:
SQL> /*
DOC>
DOC>数据库对象可以分为模式对象与非模式对象,模式对象是用户拥有的对象,而非模式对象与用户无关。
DOC>模式对象有表、视图、索引、索引化表、簇、序列、同义词、触发器、数据库链接、pl/sql包、存储函数与存储过程、Java类与其他Java资源和完整性约束;
DOC>非模式对象包括表空间、用户、角色、回退段、概要文件等.
DOC>
DOC>模式对象
DOC>表是数据库中数据存储的基本单位。
DOC>视图是由一个或若干个表生成的虚表。
DOC>索引为提高数据的查询而建立的与表相关的一种结构。
DOC>序列是由序列发生器生成的的整数。
DOC>同义词是为模式对象定义的别名。
DOC>完整性约束是为保证数据的完整性而定义的数据约束条件。
DOC>包是一组相关的设计元素的组合。
DOC>触发器是在表空间中的一种元素,用于数据插入修改时自动激发做出相应的操作。
DOC>数据库链接是为访问远程对象创建的通道。
DOC>存储过程和函数,存储与数据库中的课调用的程序和函数。
DOC>聚簇用于将不同表的字段并用的一个特殊结构的表集合。
DOC>
DOC>非模式对象
DOC>表空间是存放模式对象的逻辑空间。
DOC>用户是一个数据库的使用者,也是各种权限的集合。
DOC>角色用于权限的管理方便,把权限集合起来的机制。
DOC>回退段是数据删除更改时,用于临时保存删除数据以备还原使用。
DOC>概要文件是一份描述系统如何使用系统资源的配置文件。
DOC>
DOC>
DOC>
DOC>Oracle数据库的用户具有以下属性:认证方式,其中有操作系统认证和数据库认证;默认表空间和临时表空间;空间配额,在指定的表空间中能使用的存储空间;概要文件,设置用户的资源限制和口令策略
DOC>
DOC>*/
SQL>
SQL>
SQL> conn /@oracleDB as sysdba;
已连接。
SQL> CREATE PROFILE "MYPROFILE"
2 LIMIT CPU_PER_SESSION 1000 CPU_PER_CALL DEFAULT CONNECT_TIME
3 DEFAULT IDLE_TIME DEFAULT SESSIONS_PER_USER 2
4 LOGICAL_READS_PER_SESSION DEFAULT LOGICAL_READS_PER_CALL
5 DEFAULT PRIVATE_SGA DEFAULT COMPOSITE_LIMIT DEFAULT
6 FAILED_LOGIN_ATTEMPTS 6 PASSWORD_LOCK_TIME 10 ;
配置文件已创建
SQL>
SQL>
SQL> CREATE USER "CHENYUNXING" PROFILE "MYpROFILE"
2 IDENTIFIED BY "123" DEFAULT TABLESPACE "USERS"
3 TEMPORARY TABLESPACE TEMP
4 ;
IDENTIFIED BY "123" DEFAULT TABLESPACE "USERS"
*
ERROR 位于第 2 行:
ORA-02380: 配置文件MYpROFILE不存在
SQL> ED;
已写入文件 afiedt.buf
1 CREATE USER "CHENYUNXING" PROFILE "MYPROFILE"
2 IDENTIFIED BY "123" DEFAULT TABLESPACE "USERS"
3* TEMPORARY TABLESPACE TEMP
4 /
用户已创建
SQL> GRANT UPDATE,DELETE,INSERT,SELECT ON SCOTT.DEPT TO CHENYUNXING WITH GRANT OPTION;
授权成功。
SQL> GRANT CREATE TABLE TO CHENYUNXING WITH GRANT OPTION;
GRANT CREATE TABLE TO CHENYUNXING WITH GRANT OPTION
*
ERROR 位于第 1 行:
ORA-01939: 只可以指定 ADMIN OPTION
SQL> ED;
已写入文件 afiedt.buf
1* GRANT CREATE TABLE TO CHENYUNXING WITH ADMIN OPTION
SQL> /
授权成功。
SQL> REVOKE CREATE TABLE FROM CHENYUNXING;
撤销成功。
SQL> SPOOL OFF;
作业4:
第一题. 用自己的语言描述你所理解的触发器
触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。
功能:
1、 允许/限制对表的修改
2、 自动生成派生列,比如自增字段
3、 强制数据一致性
4、 提供审计和日志记录
5、 防止无效的事务处理
6、 启用复杂的业务逻辑
使用scott连接数据库并为EMP表创建一个触发器:当员工工资被更改并且工资总和低于15000时,输出“工资总量低于15000 的信息”,并验证该触发器。
SQL> connect scott/tiger@oracle9i;
已连接。
SQL> set serveroutput on;
SQL> create or replace trigger chenmingjie_salary
2 after update on scott.emp 【这一语句改为 after insert or update or delete on scott.emp --因为中文的更改不仅仅指 update】
3 for each row
4 declare sum_salary int;
5 begin
6 select sum(sal)into sum_salary from scott.emp;
7 if(sum_salary<15000)then
8 dbms_output.put_line('总工资量低于15000的信息');
9 end if;
10 end;
11 /
触发器已创建。
SQL> update scott.emp set sal=70 where EMPNO='6945';
Sorry,scott.emp工资总量低于15000 【这里为什么会出现sorry。。。的输出呢?】
已更新 1 行。
第二题. 用自己的语言描述Oracle数据库备份的基本概念
oracle备份的概念是防止数据的丢失,等同复制一个档,当数据库出现异常时可以恢复.
oracle备份分两类,逻辑备份和物理备份.
oracle逻辑备份是将数据库的记录集写进文件.
缺点:
1、不能恢复到任意时间点
2、如果数据库物理文件损坏,必须重新建库才能导入
3、如果数据量较大,导入导出也不是很方便
oracle物理备份是复制数据库文件,与逻辑内容无关.
查询数据库有哪些表空间
SQL> conn /as sysdba;
已连接。
SQL> select * from v$tablespace;
TS# NAME INC
---------- ------------------------------ ---
3 CWMLITE YES
4 DRSYS YES
5 EXAMPLE YES
6 INDX YES
7 ODM YES
0 SYSTEM YES
8 TOOLS YES
1 UNDOTBS1 YES
9 USERS YES
10 XDB YES
2 TEMP YES
已选择11行。
现在要联机备份表空间users,请写出所有操作过程和语句
SQL> select status from v$instance;
STATUS
------------
OPEN
SQL> shutdown;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 182331828 bytes
Fixed Size 850492 bytes
Variable Size 109451504 bytes
Database Buffers 25882824 bytes
Redo Buffers 666688 bytes
数据库装载完毕。
SQL> archive log list;
数据库日志模式 存档模式
自动存档 禁用
存档终点 E:\oracle\ora92\RDBMS
最早的概要日志序列 19
下一个存档日志序列 20
当前日志序列 21
SQL> alter database archivelog;
数据库已更改。
SQL> archive log list;
数据库日志模式 存档模式
自动存档 禁用
存档终点 E:\oracle\ora92\RDBMS
最早的概要日志序列 19
下一个存档日志序列 20
当前日志序列 21
SQL> archive log start;
已处理的语句
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 E:\oracle\ora92\RDBMS
最早的概要日志序列 19
下一个存档日志序列 21
当前日志序列 21
SQL> alter database open;
数据库已更改。
SQL> select file_name from dba_data_files where tablespace_name='USERS';
FILE_NAME
E:\ORACLE\ORADATA\ORACLE9I\USERS01.DBF
SQL> alter tablespace users begin backup;
表空间已更改。
SQL> host copy E:\oracle\oradata\oracle9i\USERS01.DBF E:\
SQL> alter tablespace users end backup;
表空间已更改。