【文档说明】oracle数据库实用教程课件.ppt,共(156)页,619.059 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92290.html
以下为本文档部分文字说明:
欢迎参加学习ORACLE数据库实用教程trainingasiainfo亚信科技(中国)有限公司培训中心什么是数据库?•数据库是管理数据的一种方法,•如何组织和存储数据,•如何高效地获取和处理数据。数据管理的发展的3个阶段•人工管理阶段–无数据管理的专用软件,数据
和程序在一起•文件系统阶段–软件进行数据管理,程序和数据分离–数据冗余度大,数据和程序缺乏独立性–文件之间不能建立联系•数据库系统阶段–数据具有更高的独立性–数据库管理系统-DBMS:数据库的定义、操作和管理关系型数据库•关系型数据库支持关系模型,以关系
(表)形式组织数据。•著名的关系型数据库DB2,ORACLE,INFORMIX,SYBASE等。•关系型数据库=Datafile+RDBMSRDBMSOSDBdatafile1datafile2实验环境•%telnet2
00.1.1.115•用户名/口令:oracle8/oracle8•%sqlplusscott/tiger•sql>connectscott/tiger•sql>showuser•sql>quit表•表---关系型DB数据组织
的形式•报道表–空表--表的结构–白纸--设计一张表--多少项内容(列)--画表时,每项多宽–列---字段;列类型(宽、类型)---数据类型(长度、类型)–行---记录–表=列+行-------字段+记录
姓名编号单位性别表看scott用户有哪些表然后查看其中一个表的结构和内容#sqlplusscott/tigersql>selecttable_namefromtabs;(user_tables)sql>descemp;sql>select*fromemp;表•表
结构(DDL)•createtable•altertable•droptable•truncatetable•表内容(DML)•insert•update•delete•desctable_name•selectfield_namefromtable_name
基本数据类型CHAR[(n)]n<=255VARCHAR2(n)n<=2000LONG(n)n<=2G•NUMBER[(m[,n])]m精度(1-38)n小数后位数•RAW(n)二进制数据n<=2000•LONGRAW(n)n<=2GDATE缺省形式‘D
D-MON-YY’ROWID内部数据类型(数据库序号.行序号.数据文件号)NULL字符串用单引号括起来可以存储声音、图片日期型数据的格式说明•Days–ddnumber12–dyabbreviatedfri–
dayspelledoutFriday–ddspthspelledout,ordinaltwelfth•Month–mmnumber03–monabbreviatedmar–monthspelledoutmar
ch•Year–yyyear87–yyyyyearandcentury1987日期型数据的格式说明•缺省日期型:dd-mon-yyselectsysdatefromdual;系统:date,time•改变日期形式:•1.本次会话SQL>ALTE
RSESSIONSETNLS_DATE_FORMAT='YY-MM-DD';•2.下次启动后永久生效----改文件设置INITSID.ORA中的NLS_DATE_FORMAT参数可改变缺省日期的格式。表结构•1.建立sql>createtabl
etable_name(column_name1datatype[notnull|unique],column_name2datatype[notnull|unique],column_name2datatype[notnull|unique]);表内容•1.插入记录sq
l>insertintotable_name[column_name-a,…,column_name-x]values(column_value-a,…,column_value-x);表结构•2.变更1>修改sql>altertabletable_namemodify(colu
mn_namedatatype);2>增加sql>altertabletable_nameadd(column_namedatatype);表内容•2.修改记录sql>updatetable_nameset
column_name1=values1,column_name2=values2[wheresearch_conditions];表内容•3.删除记录sql>delete[from]table_name[wheresea
rch_conditions];sql>truncatetabletable_name;表结构•3.删除1>删结构及内容sql>droptabletable_name;事物处理•事物处理命令提交:commit回滚:ro
llback保留点:savepoint•SQL>SAVEPOINTCLARK_SAL;•SQL>ROLLBACKTOSAVEPOINTBLAKE_SAL;2.命令修改a当前行末追加c/old/new更改clbu
ff清缓存del删除(n,last,mn)i加入(i,itext)savefilename保存edit、vifilename编辑startfilenamefilename3.保存命令4.执行命令1.显示命令l显示(l,ln,lmn,llast)SQL*PLUS练习•建表•注意利用SQL命
令缓冲区•插入、修改、删除数据(注意条件)•提交、回滚练习•表名txl-n•结构:学号数字型3唯一姓名可变长字符串10非空出生日期型电话数字型10•查看结构、查看内容练习•1.增加字段单位可变长字符串12•2.修改字段出生可变长字符串5(原日期)练习
•插入数据至少5条•修改数据(根据条件)•删除数据(根据条件)SQL语句中的函数•字符函数–substr、length、lower、rtrim、ltrim•数值函数–abs、mod、round、trunc、nvl•日期函数–months_between、add_months、
next_day•转换函数–to_char、to_date数据查询语言(DML)命令•SELECT语句SELECT<查询内容>FROM<表名>WHERE<条件>GROUP<分组内容>HAVING<组内条件>ORDERBY<排序内
容>简单查询•无条件查询•条件查询•排序•统计•分组统计分组函数(统计函数)•完成对一组记录的统计处理–count({*|[distinct|all]x}):行数–sum(x):数据列求和–avg([distinct|all]x):数据列平均值–max
(x):列的最大值–min(x):列的最小值除count(*)外,当使用分组函数时,均忽略空值分组函数(统计函数)•练习1工资的平均值2奖金的最大值3工资的总和4最低工资5表中数据行的总数6有多少个不同的部门分组查询与排序•数据分组:对
有重复值的列进行分组。•查询:SELECTcol1,col2,分组函数FROMtable1WHEREconditionsGROUPBYcol1,col2HAVINGconditionORDERBYcol1,col2SELECT选择的列,必须出现在GROUPBY子句中;GROUPBY子
句中的列只能是SELECT选择的列或分组函数中的列。顺序无关。分组查询练习:1)编写SQL语句,从EMP表中返回---部门编号、部门平均工资。2)编写SQL语句,从EMP表中返回----部门编号、部门工资总
和条件是:部门工资总和大于8000。3)编写SQL语句,从EMP表中返回----部门编号、部门平均工资条件是:除了部门10,部门工资平均值大于1500的部门的情况。多表查询---连接•等值连接•非等值连接-------------
-------•自连接•外连接selectename,dnamefromempe,deptdwheree.deptno=d.deptno等值连接(EQUIJOIN)•基于列的相等性来连接两张或多张表。题目:查找雇员姓名及所在部门的名称.MGRJOBENAMEEMPNOSALHIR
EDATECOMMDEPTNODEPTNODNAMELOCemp表emp表dept表dept表非等值连接(NON-EQUIJOIN)•基于列的不等性来连接两张或多张表。题目:请查找雇员SMITH的工资和工资等级情况,希
望显示的信息---员工名、工资、工资等级.MGRJOBENAMEEMPNOSALHIREDATECOMMDEPTNODEPTNODNAMELOCGRADELOSALHISALemp表emp表salgrad表salgrad表dept表dept表非等值连接(
NON-EQUIJOIN)请分析下列语句:SELECTENAME,SAL,GRADEFROMEMP,SALGRADWHEREENAME=‘SMITH’;SELECT*FROMSALGRAD;SELECTENAME,SAL,GRADEF
ROMEMP,SALGRADWHEREENAME=‘SMITH’ANDSALBETWEENLOSALANDHISAL等值连接和非等值连接题目:查找工资级别为2的雇员的信息。要求显示的信息:雇员的姓名,部门的名称,工资、工资级别MGRJOBENAMEEMPNOSALHIREDATECO
MMDEPTNODEPTNODNAMELOCGRADELOSALHISALemp表emp表salgrad表salgrad表dept表dept表SELECTENAME,DNAME,SAL,GRADEFROMEMP,DEPT,SALGRADEWHEREG
RADE=2ANDSALBETWEENLOSALANDHISALANDEMP.DEPTNO=DEPT.DEPTNO;自我连接(SELFJOIN)•将表连接到自身–在SQL语句中一个表暂时重新命名为两个表。题目:
EMP中查找员工和其经理的对应关系:要求-员工名称和其经理的名称同一基表的不同行做联接,如同两个独立的基表,在FROM子句中至少要为一个基表起别名,以区别联接条件中的列名自连接(SELFJOIN)MGREMPNO60100601015060....305030EMPNO10010160.
...5030EMP(WORKER)EMP(MANAGER)ENAMExhlxqwjAAAKINGENAMExhlxqwjAAAKINGSELECTWORKER.ENAME,MANAGER.ENAMEMANAGERFROMEMPWOR
KER,EMPMANAGERWHEREWORKER.MGR=MANAGER.EMPNO;外连接(OUTERJOIN)MGREMPNO60100601015060....305030EMPNO10010160....5030EMP(WO
RKER)EMP(MANAGER)ENAMExhlxqwjAAAKINGENAMExhlxqwjAAAKING需增加一条空记录与WORKER表的相应记录进行匹配•用于返回存在在一张表上的所有数据行,甚至相对应的行在连接的表中不存在。•(+)号用于在查询中的OUTERJOIN。•带(+)的表是
那些没有相应行的表。外连接(OUTERJOIN)题目1:EMP中查找员工和其经理的对应关系:要求-员工名称和其经理的名称,请注意使用外连接及(+)放置位置。SELECTWORKER.ENAME,MANAGER.ENAMEMANAGERFROM
EMPWORKER,EMPMANAGERWHEREWORKER.MGR=MANAGER.EMPNO(+);外连接(OUTERJOIN)题目2:查找哪些部门有叫SMITH的人显示:雇员名称、部门名称(所有部门都要列出来)ENAME
DNAME------------------------ACCOUNTINGSMITHRESEARCHSALESOPERATIONSMGRJOBENAMEEMPNOSALHIREDATECOMMDEPTNODEPTNODNAMELOCemp表emp表de
pt表dept表SELECTENAME,DNAMEFROMEMPE,DEPTDWHEREE.DEPTNO(+)=D.DEPTNOANDE.ENAME(+)=’SMITH’;外连接(OUTERJOIN)题目3:查找哪些部
门没有叫SMITH的人要求显示信息:雇员名称、部门名称ENAMEDNAME------------------------ACCOUNTINGSMITHRESEARCHSALESOPERATIONSMGRJOBENAMEEMPNOSALHIREDATECOMMDEPTNODEPTNOD
NAMELOCemp表emp表dept表dept表selectename,dnamefromempe,deptdwheree.deptno(+)=d.deptnoande.ename(+)='SMITH'ande.enameisn
ull子查询•单行值子查询•多行值子查询•多列子查询•相关子查询单行值子查询•工资高于7698号雇员,并且工种与他相同的雇员情况SQL>SELECTENAME,SAL,JOBFROMEMPWHERESAL>(SELECTSALFROMEMPWHEREEMPNO=7698
)ANDJOB=(SELECTJOBFROMEMPWHEREEMPNO=7698);多行值子查询•谓词IN,NOTIN–哪些部门没有叫SMITH的雇员。SQL>selectdept.deptno,dname,locfromdept2whe
redept.deptnonotin3(selectdeptnofromemp4whereename='SMITH');多行值子查询•ANY:子查询返回结果中的任一值满足条件即可。•ANY前可以使用!=、>、<、
>=、<=。•查询工种不为销售员,并且工资小于其中任一销售员的雇员信息。SQL>SELECTEMPNO,ENAME,SAL2FROMEMP3WHERESAL<ANY(SELECTSALFROMEMP4WHEREJOB='SALESMAN')5ANDJOB!='SALESMAN';多行值
子查询•ALL:子查询返回结果中的所有值满足条件才行。•查找工资高于20号部门所有雇员的人员信息。SQL>SELECTEMPNO,ENAME,SALFROMEMP2WHERESAL>ALL(SELECTSALFR
OMEMPWHEREDEPTNO=20);•也可表达为:SQL>SELECTEMPNO,ENAME,SALFROMEMP2WHERESAL>(SELECTMAX(SAL)FROMEMPWHEREDEPTNO=20
);多行值子查询•EXISTS:子查询至少返回一行时条件成立。•NOTEXISTS:子查询不返回任何行时条件成立。用途确定一个表中的哪些信息在另一个表中没有匹配。•用NOTEXISTS代替NOTIN多列子查询•例:
查出工资、奖金与20号雇员匹配的人员。SQL>selectenamefromempwhere(nvl(comm,0),sal)in(selectnvl(comm,0),salfromempwheredeptno=20)
;相关子查询•例:查出工资、奖金与20号雇员匹配的人员。SQL>selectenamefromempwhere(nvl(comm,0),sal)in(selectnvl(comm,0),salfromempwheredeptno=20);其它查询•集合–UNION–INTERSECT–M
INUS•树查询UNION•UNION:将表和视图中的记录合并在一起。所有部门中有哪些雇员的工资超过2OOO?SQL>select*fromempwheresal>2000SQL>selectename,salfromdept10wheresal>2000unionselecten
ame,salfromdept20wheresal>2000unionselectename,salfromdept30wheresal>2000;视图SQL>createviewdept10as2sel
ectename,job,salfromemp3wheredeptno=10;dept20、dept30的创建过程同dept10INTERSECT返回查询结果中相同的部分。哪些部门有相同的工种?SQL>selectdistincta.jobfro
mempa,empbwherea.deptno<>b.deptnoanda.job=b.jobSQL>selectjobfromdept30intersectselectjobfromdept20intersectselectjobfrom
dept10;MINUS返回第一个查询结果中与第二个查询结果不相同的那部分行记录有哪些工种是在财会部有,而在销售部中没有?SQL>selectjobfromempwheredeptno=10andjobnotin(selectjobfromempwheredeptn
o=30);SQL>selectjobfromdept10minusselectjobfromdept30;子查询注意•子查询必须用括号括住;•子查询必须只有一列,或者子查询的多列与主查询中用括号括起来的多个列
连接;•单行值子查询可以使用单值或多值运算符,多行子查询必须使用多值运算符;•BETWEENAND不能用于子查询;•子查询中不能使用ORDERBY子句;测试操作运算符单值:=、>、>=、<、<=、!=、^=、<>LIKE、ISNULL、ISNOTNULL。多值:IN、
NOTIN;(BETWEENAND、NOTBETWEENAND)ANY、NOTANY;ALL、NOTALL;EXISTS、NOTEXISTS。ORACLE数据库体系结构•ORACLE数据库的存储结构•ORACLE数
据库的软件体系结构1.逻辑存储结构2.物理存储结构1.实例2.Oracle8网络*锁机制和SCN数据库存储结构•物理结构–是实际数据的存储单元,例如数据库文件•逻辑结构–是数据概念上的组织,例如表空间因为物理和逻辑结构是分开的,数据物理存储的管理并不
影响逻辑结构,能灵活的独立管理。表空间和数据文件数据库SYSTEM表空间逻辑组成物理组成TEMP表空间ROLLBACK表空间Data1.ORAData2.ORAData3.ORAData4.ORAData6.ORAData5.ORA数据文件USER表空间Data7.ORA
Data8.ORA•由组成数据库的操作系统文件决定•数据库的文件提供了数据库信息的实际物理存储•三种类型的文件–控制文件:记录数据库的物理结构–数据文件:包括全部数据库数据–日志文件:记录对数据库所做的修改物理
结构--数据库文件Oracle数据库结构组成ParameterFileDatafilesControlFilesRedoLogFilesOracleDatabase物理结构-控制文件数据文件的名称、位置、状态及大小联机重做日志文件的名称、位置、状态及大小数据库的
创建时间SCN等控制文件物理结构-控制文件控制文件控制文件1控制文件2读写控制文件写控制文件数据库磁盘C磁盘D物理结构-控制文件1.$ORACLE_HOME/dbs目录下,ls*.ora:initTX08.ora
configTX08.oracontrol_files=(/data1/oracle8//oradata/TX08/control01.ctl,/data1/oracle8/oradata/TX08/control02.ctl
,/data1/oracle8/oradata/TX08/control03.ctl)2.SQL>select*fromV$controlfile;物理结构-日志文件LGWR联机重做日志组一事务修改联机重做日志组二联机重做日志组N......LG
WR联机重做日志联机重做日志ARCn存档日志复制联机重做日志文件归档日志文件以ORACLEFORSOLARIS为例:数据文件:mount_point/oradata/ora_sid/system01.dbfmount_point/o
radata/ora_sid/tools01.dbfmount_point/oradata/ora_sid/users01.dbfmount_point/oradata/ora_sid/temp01.dbfmount_point/oradata/ora_sid/rbs01
.dbf控制文件:mount_point/oradata/ora_sid/control01.ctlmount_point/oradata/ora_sid/control02.ctlmount_point/oradata/ora_sid/
control03.ctl日志文件:mount_point/oradata/ora_sid/redoora_sid01.logmount_point/oradata/ora_sid/redoora_sid02.logmount_point/oradata/ora_sid/redoora_si
d03.log逻辑组成•多个表空间(tablespace)组成•一个表空间是一个逻辑存储区•数据库模式(schema)对象•模式是对象的集合。模式对象直接涉及数据库数据的逻辑结构,包括表、视图、序列、存储过程、同义词、索引等
逻辑存储结构包括表空间、段(segment)、区(extent)、块(block),指明如何使用数据库物理空间。表空间的几个概念•表空间分类:–System表空间、其它表空间–只读表空间、可读写表空间•表空间的状态:脱机、联
机--控制数据的可用性•表空间大小的管理:建立、增加、修改表空间的几个概念•表空间的状态:脱机、联机--控制数据的可用性•SQL>altertablespacenameofflinenormal;•SQL>select*f
romuser_tablespaces;•SQL>altertablespacetestonline;•SQL>selecttable_name,tablespace_namefromtabs;单一表空间-system表空间多个表空间-system表空间和其它表空间表空间中数据文件的自动增长表
空间的物理存储区-数据文件表空间数据文件数据文件数据文件数据库对象的物理存储区-段2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb2Kb区间24
2Kb区间114Kb数据块段EMPDEPTEMPDEPT段1区间1段2区间1段1区间2自由空间例子:表空间与表空间中对象CREATETABLESPACEuser_dataDATAFILE'\data\user1Tx08.d
bf'SIZE5MONLINEDEFAULTSTORAGE(INITIAL10KNEXT10KMINEXTENTS2MAXEXTENTS50PCTINCREASE0);逻辑结构—段、区和数据块•数据库空间的分配单元是段、区和数据块。段:决定数据库对象使用的全部区的集合。区:由连续的数据
块的集合。块:Oracle数据库磁盘存取的最小的单元。保存表和簇的所有数据的区的聚集保存特殊索引的所有数据的区的聚集1.数据段2.索引段逻辑结构—段类型4.临时段回滚段记录一个事务的回滚数据。事务可以使用提交或回滚结束。回滚即撤消事务的全部作用,就象事务从
未发生过。要实现回滚,必须跟踪事务所更改的数据,直到提交或回滚。保存属于临时对象的数据的区的聚集SQL语句经常要求临时工作区。例如,当为一个大表创建索引时,必须分配临时空间,排序全部的索引项;当处理一条需要临时工作空间的SQL,就从数据库的表
空间中分配小的临时段。语句完成后,将段释放回表空间。3.回滚段逻辑结构—段类型查询有哪些类型的段:SQL>selectdistinctsegment_typefromdba_segments;(以SYS和SYS
TEM用户身份登录)逻辑结构—段类型•查询某一用户在某一表空间中段的占有情况:SQL>columnsegment_nameformata10SQL>select*fromuser_segments;SQL>select*fromuser_segmentswheretablespace_na
me='TEST';•数据段每张非聚簇表有一个单独的数据段来存放所有的数据。SQL>selectsegment_namefromdba_segmentswheresegment_type='TABLE';逻辑结构—段类型•索引段每个索引有单独的索引段来存放数据。SQL>selectsegm
ent_namefromdba_segmentswheresegment_type='INDEX';•ROLLBACK•TEMPORARY逻辑结构—区•当创建新的数据对象(表、索引等)时,Oracle为对象的段分配一个或多个区。•区是存储对象段的表空间数据文件中的一系列连续的数据块。逻辑结构—区•
区的设置(决定区的参数)–创建段时,可以决定分配区的数目。maxextents最大分配的区数,minextents最小分配的区数–可以控制区的大小。能够设置段的初始区间和后续区间的大小initial最
初分配的空间数(缺省为10k,5个数据块)next下一步分配的空间数pctincrease增长率,指数级增长逻辑结构—区•SQL>select*fromuser_extents;•SQL>select*fromdba_extents;(SYS
用户和SYSTEM用户)逻辑结构—数据块•最小的磁盘存取单元,当操作一个数据库时,Oracle使用数据块存储和提取磁盘上的数据。当查询一个表时,Oracle将含有查询结果集记录的全部数据快读取到服务器的内存中
。•由一个或多个O/S块组成•在数据库创建时设定块大小,块大小必须等于O/S块的大小或它的倍数。如果服务器的操作系统块大小是512K,数据块大小可以是512K、1024K和2048K等。InsertsInsertsInsertsInserts1234PCTFREE=2080%8
0%40%逻辑结构—数据块空间PCTUSED=40MadeupofPartofTemporaryIndexCacheClusterRollbackDataSegmentTablespaceDatabaseLocationofFreeExtentUse
dMadeupofInLocationofInstanceDBBlockPartofMadeupofOSBlockControllingControlledbyFileLogicalDiscPartofMadeu
pofPartofMadeupofMadeupofPartofMadeupofPartofPartofPartof数据库结构组成实例客户实例请求响应数据库写入数据获取数据数据库服务器实例=PGA+SGA+后台进程用户进程用户进程..
.服务器线程服务器线程...PGA数据块高速缓存重做日志缓冲区共享SQL池SGASMONPMONRECOLGWRARCH...Oracle后台进程实例数据字典高速缓存DBWR程序全局区(PGA)•程序全局区(PGA)–用于保存服务器进程的数据和控制信息。–当用户进程要连接到O
racle数据库服务器时,会在实例中为其分配相应的服务器进程。SGA组成SharedPoolDatabaseBufferCacheRedoLogBufferSystemGlobalArea(SGA)SharedSQLAreasDataDictionary系统全局区(S
GA)1.数据库高速缓存(DataBlockBufferCache)客户应用①检索数据④返回数据数据库高速缓存②查找数据块③读取数据块数据库系统全局区(SGA)2.重做日志缓冲区(RedoLogBuffers)UPDATE...I
NSERT......COMMIT重做日志缓冲区①记录②写入联机重做日志系统全局区(SGA)3.数据字典高速缓存(DictionaryCache)该高速缓存用于存放最近使用和经常使用的数据字典信息。当下次需要这些信息时,就可以直接从数据字典高速缓存中读取到这些信息,从而提高系统
性能.系统全局区(SGA)•共享SQL池用于保存SQL语句的执行计划和分析树。•当执行SQL语句时,系统会将相应的执行计划和分析树保存到共享SQL池中。然后当再次执行这些SQL语句时,系统会自动使用原有执行计划和分析树,从而提高了系统性能。
4.共享SQL池(SharedSQLPool)Oracle后台线程后台进程数据库高速缓存发出检查点DBWR修改内容数据文件写入1.DBWR后台进程UPDATEAUTHSSETsalary=salary*1.05;INSERTINT
OAUTHS...;......COMMIT;重做日志缓冲区客户端SQL语句LGWR联机重做日志事务修改2.LGWR日志组一日志组二LGWRLGWR日志组一填满日志组二填满后台进程日志组一日志组二LGWRLGWR日志组一填满日志组二填满AR
CH0001ARCH000200013.ARCH实例与数据库的关系数据库实例一实例N...一对一一对多创建实例创建参数文件创建实例OPENMOUNTNOMOUNTSHUTDOWNAllfilesopenedasdesc
ribedbythecontrolfileforthisinstance.Controlfileopenedforthisinstance.Instancestarted.启动一个实例STARTUP数据库的启动•启动实例-----nomount打开初始化参数文件svrmgr>c
onnectinternalsvrmgr>startupnomount;svrmgr>select*fromv$process;svrmgr>select*fromv$controlfile;svrmgr>select
*fromv$logfile;svrmgr>select*fromv$datafile;数据库的启动•装配数据库-----mount打开控制文件方法1:svrmgr>alterdatabasemount;方法2:svrmgr>connectinternalsvrmgr
>startupmount;查询操作同前页。数据库的启动•打开数据库------open打开数据文件和日志文件方法1:svrmgr>alterdatabaseopen;方法2:svrmgr>connectinternalsvrmgr>star
tup;svrmgr>select*fromuser_tablespaces;svrmgr>select*fromdba_data_files;OPENMOUNTNOMOUNTSHUTDOWNAllfilesopen
edasdescribedbythecontrolfileforthisinstance.Controlfileopenedforthisinstance.Instancestarted.关闭一个实例SHUTDOWN数据库实
例的关闭•关闭数据库关闭数据文件和日志文件svrmgr>shutdown;•卸下数据库关闭控制文件svrmgr>shutdown;•停止实例关闭初始化参数文件svrmgr>shutdown;Oracle8网络与Net8•Net8----Oracle的网络连接软件•连接描述器与tnsnam
es.ora•监听进程与listener.ora•监听进程的操作命令•配置服务器•配置客户机•调试连接问题Net8clientsever协议适配器TNS层Net层Net8Net8SQL语句数据库SQL*NET原理及所需配置文件listener.oratnsnames.
oraProcessServer连接描述器与tnsnames.ora•TX08=(DESCREPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=200.1.1.115)(PORT=1521)
)(CONNECTDATA=(SID=TX08))……)•$ORACLE_HOME/network/admin-----tnsnames.ora•tnsnames.ora2个要求监听进程与listener.ora•Listener=
(ADDRESSLIST=(ADDRESS=(PROTOCOL=TCP)(HOST=200.1.1.115)))-------------------------------------------------------
---------------------(SID_LIST_LISTENER=(SIDLIST=(SID_DESC=SID_NAME=TX08ORACLE_HOME=/DATA1/ORACLE/TX08)))1.地址列表2.监听服务的实例列表监听进程的操作
命令•lsnrctl•lsnrctl>startlistenername•stoplistenername••statuslistenername•versionlistenername•setcurrent_listenerlistenername•----
-检查监听进程是否启动:ps-ef|greptnslsnr配置服务器•识别可用宿主/etc/hosts------解决地址映射•识别可用服务/etc/services----listener1521•识别可用数据库/var/opt/oracle/oratabOracle_SID:ORACLE
_HOME:N/Y•启动Net8----lsnrctl配置客户机•识别可用宿主/etc/hosts(or..)------解决地址映射•识别可用服务/etc/services(or..)----listener1521•
NIC(网络接口卡)、OS、TCP/IP、NET8•运行NET8远程访问数据库•Sqlplus用户名/密码服务名(连接串)•Sqlplusscott/tigerTX08调试-连接问题•可达?telnet、ping(客户端--远程主机)•监听?服务器---通过连自己客户端---tnsping服务名
次数安全管理•用户管理–创建用户createuser–修改用户alteruser–删除用户dropuser用户与模式用户USER1模式USER1用户USER2模式USER2这些对象均是由用户USER1所
创建的这些对象均是由用户USER2所创建的用户分类超级用户数据库管理员普通用户超级用户超级用户启动和关闭实例创建和修改数据库修改日志操作模式其它数据库操作internal数据库管理员•数据库管理员(DBA)是指具有DBA角色的用户,它们用于管
理发生在数据库内的操作。如SYS、SYSTEM普通用户•普通用户是指根据特定需求使用命令CREATEUSER所创建的用户。数据库验证数据库验证数据库发出登录信息返回登录信息验证用户及口令CREATEUSERacaIDE
NTIFIEDBYasiainfo;CONNECTaca/asiainfo外部验证外部验证数据库验证用户服务器①②CREATEUSEROPS$administratorIDENTIFIEDEXTERNALLY;企业验证•企业验证是指由OracleSecurityServ
ice(OSS)来验证数据库用户的方式。当使用这种方式验证数据库用户时,由Oracle数据库来管理用户帐户,并且口令和用户鉴定则由OSS来完成。创建用户•创建用户ACA用户ACA模式ACA用户数据表空间USER_DATA临时数据表空间TMP_DATA创建用户CREATEUSERu
sernameIDENTIFIEDBYuserpassword[DEFAULTTABLESPACEtablespace1][TEMPORARYTABLESPACEtablespace2][QUOTAnKONtablespace1];MUNLIMITED空间限额修改用户•修改用户usernam
e所使用的缺省表空间•修改用户的口令ALTERUSERusernameTABLESPACEuser_data;ALTERUSERusernameIDENTIFIEDBYuserpasswd;删除用户•DR
OPUSERusername[cascade]特权管理•特权简介•系统特权的授予和收回•对象特权的授予和收回系统特权SYSTEMCREATETABLECREATESESSION授予用户ACA对象特权用户ACASELECTONAUTHSSELECTONARTICLESELECT
ONTYPE授予用户GUEST特权管理•系统权限(systemprivilege)–针对整个系统操作的权限–dba_sys_privs,•用户权限(objectprivilege)–针对具体object操作权限–dba_tab_privs;视图–dba_co
l_privs;系统特权的授予和收回•授予用户系统特权GRANTsystemprivsTOusername[WITHADMINOPTION]•收回系统特权REVOKEsystemprivsFROMusername;对象特权的授予和收回•授予用户对象特权GRANT对象特权TOusername[WI
THGRANTOPTION];•收回对象特权REVOKE对象特权FROMusername;授于用户连接Oracle数据库的权限Sgrantconnecttousername[withgrantoption];rolenameprivilege......ObjectPrivilegeSELECT
UPDATEINSERTALTERDELETEEXECUTEINDEXREFERENCESTypesofObjectPrivilegesTableViewSequenceProcedure1231包括存储过程、函数和包2该权限不能授予角色3授予快照对象权限种类表角色管理•角色简介•
创建、修改、删除角色•授予和收回角色特权•授予和收回用户角色•禁止和激活角色角色简介总经理人财物用户角色特权角色简介•角色分类•角色特权•授予和收回用户角色•角色口令•禁止和激活角色角色•连接角色–
connect连上Oracle,做最基本操作•资源角色–resource具有程序开发最基本的权限•数据库管理员角色–dba数据库管理员所有权限角色•卸出数据库角色–exp-full-database可把数据库整个备份输出的权限•卸入数据库角
色–imp-full-database可把数据库整个备份恢复输入的权限创建角色•创建角色CONNECTsystem/securityCREATEROLEconnect_role;CREATEROLEinsert_roleIDENTIFIEDBYinsert_data;;授予角色特权CONNE
CTsystem/securityGRANTCREATESESSIONTOconnect_role;CONNECTaca/asiainfoGRANTinsertONdeptTOinsert_role;GRAN
TupdateONempTOupdate_role;授予用户角色CONNECTsystem/securityGRANTconnect_role,update_roleTOusername;CONNECTusername/passwdupdateusername.empsetsalar
y=salary+100wheresalary<2000;禁止角色•CONNECTusername/passwd•SETROLENONE;•updateaca.authssetsalary=salary+100;激活角色•SETROLEupdate_roleIDENTIF
IEDBYupdate_data;•updateusername.empsetsalary=salary+100;设置用户的缺省角色CONNECTsystem/securityALTERUSERusernameDEFAULTROLEconnect_role;修改和删除角色•修改角色•ALTERRO
LE•删除角色•DROPROLE完整性约束•主码完整性约束•非空完整性约束•唯一完整性约束•check完整性约束•引用完整性约束完整性约束Createtableemp1(empnonumber(4)notnullcheck(empnobetween1000and9999)unique,ena
mechar(10),jobchar(9),mgrnumber(4)constraintemp1_self_keyreferencesemp1(empno),hiredatedate,salnumber(7,2),commnumber(7,2),deptnonumber(2)notnull,co
nstraintemp1_foreign_keyforeignkey(deptno)referencedept(deptno),constraintemp1_primary_keyprimarykey(empno));数据定义语言(DDL)•建立DB结构(DB,
表空间)•建立DB对象–TABLE,VIEW,CLUSTER,INDEX•实现分布式DB机制(数据透明性)–VIEW,同义词,DB链,快照,快照日志•安全性控制–用户,角色,授权,环境文件,审计•完整性控制–完整性约束,触发器•提供应用处理
–过程,函数,包数据定义语言命令•表空间•表•视图•索引会话控制命令•ALTERSESSION命令•SETROLE命令系统控制命令•ALTERSYSTEM命令视图•结构–createview–alterview–dropview•内容–inser
t–update–delete索引•结构–createindex–alterindex–dropindex–reindex