oracle复习提纲.docx
- 文档编号:3613542
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:7
- 大小:22.08KB
oracle复习提纲.docx
《oracle复习提纲.docx》由会员分享,可在线阅读,更多相关《oracle复习提纲.docx(7页珍藏版)》请在冰豆网上搜索。
oracle复习提纲
ORACAL复习提纲
1、了解Oracle数据库启动过程和需要加载的文件;
了解ORACLE的启动过程很关键,对数据库维护尤其重要,oracle服务一定要先开启动,不然的话,在SQLPLUS下怎么操作基本都没有用。
1、启动实例startupnomount:
读取参数文件,分配SGA,
启动后台进程。
2、安装数据库startupmount实例与数据库对应,数据库仍
关闭,依据参数文件中的control_files,读取并打开控制文件.
3、打开数据库startup根据控制文件,找到数据文件和日志
文件,数据库被打开,此时用户可以操作数据库.
所以基本上是四个状态:
shutdown->nomount->mount->open
Oracle启动进程
0
开始状态
SHUTDOWN
1
启动实例
读参数文件;分配SGA;启动后台进程;打开跟踪文件和警告。
NOMOUNT
(Startup
nomount;)
2
装载数据库
打开控制文件(控制文件的位置在参数文件中约定)。
MOUNT
(Alterdatabase
mount;)
3
打开数据库
打开数据文件;打开日志文件;(数据库包含的文件名及位置信息在控制文件中约定)。
OPEN
(Alterdatabase
open;)
2.了解数据库的逻辑结构,并掌握各个结构之间的关系;
常见的逻辑结构包括:
表空间、数据段、扩展区间、块构成。
表空间是数据库中的基本逻辑结构,一系列数据文件的集合。
表空间和段是逻辑存储上的一对多的关系,在一个段中可以存在多个区间。
数据块是ORACLE最基本的存储单位,他是OS数据块的整数倍。
ORACLE的操作都是以块为基本单位,一个区间可以包含多个块。
3.一个客户端发起的连接数据库请求,了解与数据库连接的过程,通过哪个服务来建立关系;
OracleOraDb10g_home1TNSListener,该服务是服务器端为客户端提供的监听服务,只有该服务在服务器上正常启动,客户端才能连接到服务器。
该监听服务接收客户端发出的请求,然后将请求传递给数据库服务器。
一旦建立了连接,客户端和数据库服务器就能直接通信了
使用ADO.NET数据访问技术连接Oracle数据库:
1.使用Connection对象建立数据库连接。
2.使用Command对象执行数据库操作。
3.采用连线或者断线的方式进行数据的存取。
4.使用Connection对象的Close方法关闭数据库连接。
4.关注用户的建立语法和其中相关的参数
Creatuser用户名
Identifiedby口令
Defaulttablespace默认表空间
Temporarytablespace临时表空间
5.了解数据库中的集中登录模式,哪些模式对应哪些用户,各用户都拥有什么权限;
1)操作系统权限验证登陆:
系统管理员身份登录
2)Oracle密码验证:
一般用户登录
一般情况下,oracle用户权限都是通过角色来赋予的,另外,oracle登录时也可以控制用户的权限,例如assysdba,实际上是以最高的系统管理员身份登录,拥有最高权限;如果asnomal这种方式登录时,就是具有创建用户时所赋予的权限和角色;一般sysdba、sysoper这两个登录权限只是适用于管理员使用。
6.了解数据库中各文件的写入模式,哪些是顺序写?
哪些是循环写?
(不考)
数据和控制是顺序的
重做日志是循环的
7.了解数据库中一些基本函数和用法
字符函数1、selectupper('coolszy')fromdual;将小写字母转换成大写,dual为一虚表2、selectlower('KUKA')fromdual;将大写字母转换成小写3、selectinitcap('kuka')fromdual;将首字母大写4、selectconcat('Hello','world')fromdual;连接字符串,但没有||好用5、selectsubstr('hello',1,3)fromdual;截取字符串6、selectlength('hello')fromdual;求字符串长度7、selectreplace('hello','l','x')fromdual;替换字符串8、selectsubstr('hello',-3,3)fromdual;截取后三位数值函数9、selectround(789.536)fromdual;四舍五入,舍去小数10、selectround(789.536,2)fromdual;保留两位小数11、selectround(789.536,-1)fromdual;对整数进行四舍五入12、selecttrunc(789.536)fromdual;舍去小数,但不进位13、selecttrunc(789.536,2)fromdual;14、selecttrunc(789.536,-2)fromdual;15、selectmod(10,3)fromdual;返回10%3的结果日期函数16、selectsysdatefromdual;返回当前日期17、selectmonths_between(sysdate,to_date('20120101','yyyymm'))fromdual;返回之间的月数18、selectadd_months(sysdate,4)fromdual;在日期上加上月数19、selectnext_day(sysdate,'星期一')fromdual;求下一个星期一20、selectlast_day(sysdate)fromdual;求本月的最后一天转换函数30、selectto_char(sysdate,'yyyy')year,to_char(sysdate,'mm'),to_char(sysdate,'dd')fromdual;31、selectto_char(sysdate,'yyyy-mm-dd')fromdual;32、selectto_char(sysdate,'fmyyyy-mm-dd')fromdual;取消月日前面的033、selectto_char('20394','99,999')fromdual;分割钱9表示格式34、selectto_char('2034','L99,999')fromdual;加上钱币符号35、selectto_number('123')*to_number('2')fromdual;36、selectto_date('1988-07-04','yyyy-mm-dd')fromdual;通用函数37、selectnvl(null,0)fromdual;如果为null,则用0代替38、selectdecode(1,1,'内容是1',2,'内容是2',3,'内容是3')fromdual;类似于switch...case...二.日期函数的应用1、取得当前日期是本月的第几周SQL>selectto_char(sysdate,'YYYYMMDDWHH24:
MI:
SS')fromdual;TO_CHAR(SYSDATE,'YY-------------------20030327418:
16:
09SQL>selectto_char(sysdate,'W')fromdual;2、取得当前日期是一个星期中的第几天,注意星期日是第一天SQL>selectsysdate,to_char(sysdate,'D')fromdual;
8.了解oracle数据库中权限的赋予和收回的方法
Oracle系统中用户权限的赋予,查看和管理.在Oracle数据库中,用户的权限分为两种,分别是SystemPrivilege系统权限和UserTablePrivilege用户数据表权限.1.首先,创建用户:
createuserDB_USERidentifiedbyDB_USER_PW'创建用户DB_USER,密码为DB_USER_PWgrantcreatesessiontoDB_USER'给用户创建会话的权限grantresourcetoDB_USER2.当用户建立后,会自动在Oracle数据库系统中生成属于该用户的Scheme(可以理解为所有属于该用户的表,视图....等对象的集合).该用户可以将对这些对象的访问权限赋予其它的系统用户.
收回用户的权限:
revokecreatetablefromicdpub;
9.SGA的组成部分和相关的作用
SGA由多个部分组成:
1:
固定SGA(FixedSGA)这部分是Oracle内部使用的一个区,Oracle通过这个区找到SGA其他区,类似一个SGA各个组件的索引,不同平台和不同版本下这部分的大小可能不一样。
2:
数据缓冲区(Dbcache)在数据高速缓冲区中存放着Oracle系统最近使用过的数据块(即用户的高速缓冲区),当把数据写入数据库时,它以数据块为单位进行读写,当数据高速缓冲区填满时,则系统自动去掉一些不常被用访问的数据。
如果用户要查的数据不在数据高速缓冲区时,Oracle自动从磁盘中去读取。
数据高速缓冲区包括三个类型的区:
1)脏的区(DirtyBuffers):
包含有已经改变过并需要写回数据文件的数据块。
2)自由区(FreeBuffers):
没有包含任何数据并可以再写入的区,Oracle可以从数据文件读数据块该区。
3)保留区(PinnedBuffers):
此区包含有正在处理的或者明确保留用作将来用的区。
3:
重做日志缓冲区(Redologbuffer)数据写到重做日志文件之前在这里缓存,在以下情况中触发:
每隔3秒
缓存达到1MB或1/3满时
用户提交时
缓冲区的数据写入磁盘前
4:
共享池(Sharedpool)共享池是SGA中最重要的内存段之一。
共享池太大和太小都会严重影响服务器性能。
共享池包括:
1.库缓冲(Librarycache)
2.数据词典缓冲(Datadictionarycache)
3.用户全局区(UGA)
5:
Java池(Javapool)在数据库中运行Java代码时用到这部分内存。
6:
大池(Largepool下面三种情况使用到大池:
并行执行:
存放进程间的消息缓冲区
RMAN:
某些情况下用于磁盘I/O缓冲区
共享服务器模式:
共享服务器模式下UGA在大池中分配(如果设置了大池)
7:
流池(Streampool)用于缓存流进程在数据库间移动/复制数据时使用的队列消息。
流池只对使用了流数据库特性的系统是重要的。
10.主键和索引的作用
主键,就是对应记录的唯一标识。
最大的用处就是在其它位置引用这条记录时可以准确定位到它。
建立索引可以:
✓加快查询速度。
✓确保唯一性特征。
可以为表中某一列建一个唯一性索引,那么如果有人企图向表中插入这样一行记录,即它在这个有索引的列的数值与以前已有值重复,则这个操作就会失败。
11.Oracle数据库中清表数据的方法和利弊
相同点:
1.truncate和不带where子句的delete,以及drop都会删除表内的数据。
2.drop,truncate都是DDL(数据定义语言)语句,执行后会自动提交。
不同点:
1. truncate和delete只删除数据不删除表的结构(定义)
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid状态.
2.delete语句是dml,这个操作会放到rollbacksegement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
truncate,drop是ddl,操作立即生效,原数据不放到rollbacksegment中,不能回滚.操作不触发trigger.
3.delete语句不影响表所占用的extent,高水线(highwatermark)保持原位置不动
drop语句将表所占用的空间全部释放
truncate语句缺省情况下见空间释放到minextents个extent,除非使用reusestorage;truncate会将高水线复位(回到最开始).
4.速度,一般来说:
drop>truncate >delete
5.安全性:
小心使用drop和truncate,尤其没有备份的时候.使用上,想删除部分数据行用delete,注意带上where子句.回滚段要足够大.
想删除表,当然用drop
想保留表而将所有数据删除.如果和事务无关,用truncate即可.如果和事务有关,或者想触发trigger,还是用delete.
如果是整理表内部的碎片,可以用truncate跟上reusestroage,再重新导入/插入数据
6.delete是DML语句,不会自动提交。
drop,truncate都是DDL(数据定义语言)语句,执行后会自动提交
7:
truncate只能对TABLE
delete可以是table,view,synonym
8:
TRUNCATETABLE的对象必须是本模式下的,或者有dropanytable的权限,而DELETE则是对象必须是本模式下的,或被授予DELETEONSCHEMA.TABLE或DELETEANYTABLE的权限。
12.了解常见的DML和DDL语句
1)DDL
createtable创建表
altertable修改表
droptable删除表
truncatetable删除表中所有行
createindex创建索引
dropindex删除索引
当执行DDL语句时,在每一条语句前后,oracle都将提交当前的事务。
如果用户使用insert命令将记录插入到数据库后,执行了一条DDL语句(如createtable),此时来自insert命令的数据将被提交到数据库。
当DDL语句执行完成时,DDL语句会被自动提交,不能回滚。
2)DML
insert将记录插入到数据库
update修改数据库的记录
delete删除数据库的记录
当执行DML命令如果没有提交,将不会被其他会话看到。
除非在DML命令之后执行了DDL命令或DCL命令,或用户退出会话,或终止实例,此时系统会自动发出commit命令,使未提交的DML命令提交。
13.了解连接远程数据库的方法
先安装oracle10G,再安装oracle8i,然后配置一下客户端,就能连接上oracle10g服务器了。
客户端配置方法:
1、打开cmd输入netca。
2、选择【本地net服务名配置】→下一步。
3、选择【添加】→下一步。
4、在【服务名】中输入你想要连接的服务器上的oracle服务的名字→下一步。
5、选择【tcp】→下一步。
6、在【主机名】中输入你想要连接的服务器ip,端口号不变→下一步。
7、选择【进行测试】→下一步。
(当然你也可以选择不测试) ※1测试如果不通过,点击【更改登录】输入一个肯定能登入的【用户名】和【口令】→确定,出现【正在连接...测试成功。
】表明测试成功。
※2测试不通过的话,点【上一步】确认你写的【服务名】和【主机名】,确认无误的情况下,确认你要连接的服务器oracle监听服务已经打开。
8、在【net服务名中】输入你想要使用的本地的服务名→下一步。
※就是【sqlplus user/passwd @本地服务名】。
9、选择【否】→下一步。
10、出现【net服务配置完毕】字样→下一步。
11、点击【完成】完成服务配置。
12、在上面服务配置完成以后,在cmd中输入如下命令即可远程登录oracle服务器:
sqlplus user_name/password@本地服务名
14.了解建表的两种方法
1)在oracleenterprisemanager中创建表空间:
在表空间管理页面中单击“创建”按钮,打开“创建表空间”页面;在一般信息页面中用户可以选择空间的去管理、类型和状态;在“名称”文本框中输入表空间的名称,单击“添加”按钮,打开“添加数据文件”页面;输入文件名。
2)使用creattablespace语句创建表空间:
15。
掌握常用的数据库操作的SQL语句,如插入、删除、更新等
---插入(insertinto)
比如向a表插入(‘1111’,‘1112’)固定值
Insertintoavalues(‘1111’,’1112’)
(2)如向a表插入b表的所有记录
Insertintoaselect*fromb
---删除
如要删除整个表a及表结构
Droptablea;
(2)如要删除表数据而不删除表结构
Truncatetablea;
或者deletefroma;
(3)如要删除a表部分数据(如a表某字段=1的数据删除),要在delete后加上where条件
Deletefromawherea.column=1
---更新
(1)将表a中id值与和表b中id值相同的行的val更新为tab2中val的值
updateaseta.val=(selectvalfrombwherea.id=b.id)
whereexists(select1frombwherea.id=b.id)
或者
mergeintoa
usingb
on(a.id=b.id)
whenmatchedthen
updateseta.val=b.val
(2)将表a中value值更新为固定的数值如’aabb’
Updateaseta.value=’aabb’;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 复习 提纲