
oracle数据库教程课件.ppt
156页欢迎参加学习 ORACLE数据库实用教程 培训中心oracle数据库教程课件什么是数据库?什么是数据库?•数据库是管理数据的一种方法,•如何组织和存储数据,•如何高效地获取和处理数据oracle数据库教程课件数据管理的发展的数据管理的发展的3个阶段个阶段•人工管理阶段–无数据管理的专用软件,数据和程序在一起•文件系统阶段–软件进行数据管理,程序和数据分离–数据冗余度大,数据和程序缺乏独立性–文件之间不能建立联系•数据库系统阶段–数据具有更高的独立性–数据库管理系统-DBMS:数据库的定义、操作和管理oracle数据库教程课件关系型数据库关系型数据库•关系型数据库 支持关系模型,以关系(表)形式组织数据• 著名的关系型数据库 DB2,ORACLE,INFORMIX,SYBASE等•关系型数据库=Datafile+RDBMSRDBMSOSDBdatafile1datafile2oracle数据库教程课件实验环境•%telnet 200.1.1.115 •用户名/口令:oracle8/oracle8•%sqlplus scott/tiger•sql>connect scott/tiger•sql>show user•sql>quitoracle数据库教程课件表•表---关系型DB数据组织的形式•报道表–空表--表的结构–白纸--设计一张表--多少项内容(列)--画表时,每项多宽–列列---字段;列类型( 宽、 类型)---数据类型(长度、类型)–行行---记录记录–表表=列列+行行-------字段字段+记录记录姓名编号单位性别oracle数据库教程课件表看scott用户有哪些表然后查看其中一个表的结构和内容#sqlplus scott/tigersql>select table_name from tabs; (user_tables)sql>desc emp;sql>select * from emp;oracle数据库教程课件表•表结构(DDL)•create table•alter table•drop table•truncate table•表内容(DML)•insert•update•delete•desc table_name •select field_name from table_name oracle数据库教程课件基本数据类型=CHAR[(n)]n<=255=VARCHAR2(n) n<=2000=LONG(n) n<=2G •NUMBER[(m[,n])]m精度(1-38) n小数后位数•RAW(n)二进制数据 n<=2000•LONG RAW(n)n<=2G =DATE 缺省形式‘DD-MON-YY’=ROWID 内部数据类型 (数据库序号.行序号.数据文件号)=NULL字符串用单引号括起来字符串用单引号括起来可以存储声音、图片oracle数据库教程课件日期型数据的格式说明•Days–dd number12–dyabbreviated fri–dayspelledoutFriday–ddspthspelled out,ordinaltwelfth•Month–mmnumber03–monabbreviatedmar–monthspelled outmarch•Year–yyyear87–yyyyyear and century1987oracle数据库教程课件日期型数据的格式说明•缺省日期型:dd-mon-yyselect sysdate from dual; 系统:date,time•改变日期形式:•1.本次会话SQL> ALTER SESSION SET NLS_DATE_FORMAT='YY-MM-DD';•2.下次启动后永久生效----改文件设置INITSID.ORA中的NLS_DATE_FORMAT参数可改变缺省日期的格式。
oracle数据库教程课件表结构•1.建立sql>create table table_name (column_name1 datatype [not null|unique], column_name2 datatype [not null|unique], column_name2 datatype [not null|unique]);;oracle数据库教程课件表内容•1.插入记录sql>insert into table_name [column_name-a, …,column_name-x] values (column_value-a,…,column_value-x);oracle数据库教程课件表结构•2.变更1>修改 sql>alter table table_name modify(column_name datatype );2>增加 sql>alter table table_name add(column_name datatype );oracle数据库教程课件表内容•2.修改记录sql>update table_name set column_name1= values1,column_name2=values2 [where search_conditions];oracle数据库教程课件表内容•3.删除记录sql>delete [from] table_name [where search_conditions];sql>truncate tabletruncate table table_name; ;oracle数据库教程课件表结构•3.删除1>删结构及内容sql>drop tabledrop table table_name; ;oracle数据库教程课件事物处理•事物处理命令提交:commit回滚:rollback保留点:savepoint•SQL> SAVEPOINT CLARK_SAL;•SQL> ROLLBACK TO SAVEPOINT BLAKE_SAL;oracle数据库教程课件2. 命令修改a 当前行末追加c/old/new 更改cl buff 清缓存del 删除(n, last, m n)i 加入(i, i text)save 保存edit、vi 编辑start @3.保存命令4.执行命令1.显示命令l 显示(l,l n ,l m n,l last)SQL*PLUSSQL*PLUSoracle数据库教程课件练习•建表•注意利用SQL命令缓冲区•插入、修改、删除数据(注意条件)•提交、回滚oracle数据库教程课件练习•表名txl-n•结构:学号 数字型 3 唯一 姓名 可变长字符串 10 非空 出生 日期型 数字型 10•查看结构、查看内容oracle数据库教程课件练习•1.增加字段 单位 可变长字符串 12•2.修改字段 出生 可变长字符串 5(原日期)oracle数据库教程课件练习•插入数据 至少5条•修改数据 (根据条件)•删除数据(根据条件)oracle数据库教程课件SQL语句中的函数•字符函数–substr、length 、lower 、rtrim 、ltrim•数值函数–abs 、mod 、round 、trunc 、nvl•日期函数–months_between 、add_months 、next_day•转换函数–to_char 、to_dateoracle数据库教程课件数据查询语言(DML)命令•SELECT语句SELECT <查询内容>FROM <表名>WHERE <条件>GROUP <分组内容>HAVING <组内条件>ORDER BY <排序内容>oracle数据库教程课件简单查询•无条件查询•条件查询•排序•统计•分组统计oracle数据库教程课件分组函数(统计函数)•完成对一组记录的统计处理–count({*| [distinct|all] x}): 行数–sum(x):数据列求和–avg([distinct|all] x):数据列平均值–max(x):列的最大值–min(x): 列的最小值 除count(*)外,当使用分组函数时,均忽略空值oracle数据库教程课件分组函数(统计函数)•练习1 工资的平均值2 奖金的最大值3 工资的总和4 最低工资5 表中数据行的总数6 有多少个不同的部门oracle数据库教程课件分组查询与排序•数据分组:对有重复值的列进行分组。
•查询: SELECT col1,col2,分组函数 FROM table1 WHERE conditions GROUP BY col1,col2 HAVING condition ORDER BY col1,col2 SELECT选择的列,必须出现在GROUP BY 子句中;GROUP BY 子句中的列只能是SELECT选择的列或分组函数中的列顺序无关oracle数据库教程课件分组查询练习:1)编写SQL语句,从EMP表中返回---部门编号、部门平 均工资2)编写SQL语句,从EMP表中返回----部门编号、部门工资总和条件是:部门工资总和大于80003)编写SQL语句,从EMP表中返回----部门编号、部门平均工资条件是:除了部门10,部门工资平均值大于1500的部门的情况oracle数据库教程课件2多表查询---连接•等值连接•非等值连接--------------------•自连接•外连接oracle数据库教程课件select ename,dnamefrom emp e,dept dwhere e.deptno=d.deptno 2 等值连接(EQUIJOIN)•基于列的相等性来连接两张或多张表。
题目: 查找雇员姓名及所在部门的名称.oracle数据库教程课件2非等值连接(NON-EQUIJOIN)•基于列的不等性来连接两张或多张表题目:请查找雇员SMITH的工资和工资等级情况, 希望显示的信息---员工名、工资、工资等级.oracle数据库教程课件2非等值连接(NON-EQUIJOIN)请分析下列语句:请分析下列语句:SELECT ENAME,SAL,GRADE FROM EMP,SALGRADWHERE ENAME=‘SMITH’;SELECT * FROM SALGRAD;SELECT ENAME,SAL,GRADE FROM EMP,SALGRADWHERE ENAME=‘SMITH’AND SAL BETWEEN LOSAL AND HISALoracle数据库教程课件2等值连接和非等值连接题目:查找工资级别为2的雇员的信息 要求显示的信息:雇员的姓名,部门的名称, 工资、工资级别SELECT ENAME,DNAME,SAL,GRADEFROM EMP,DEPT,SALGRADEWHERE GRADE=2 AND SAL BETWEEN LOSAL AND HISAL AND EMP.DEPTNO=DEPT.DEPTNO;oracle数据库教程课件2自我连接(SELF JOIN)•将表连接到自身–在SQL语句中一个表暂时重新命名为两个表。
题目:EMP中查找员工和其经理的对应关系:要求-员工名称和其经理的名称同一基表的不同行做联接,如同两个独立的基表,在FROM子句中至少要为一个基表起别名,以区别联接条件中的列名oracle数据库教程课件2自连接(SELF JOIN)SELECT WORKER.ENAME, MANAGER.ENAME MANAGERFROM EMP WORKER, EMP MANAGERWHERE WORKER.MGR=MANAGER.EMPNO;oracle数据库教程课件2外连接(OUTER JOIN)•用于返回存在在一张表上 的所有数据行,甚至相对 应的行 在连接的表中不存 在•(+)号用于在查询中的 OUTERJOIN• 带(+)的表是那些没有 相应行的表oracle数据库教程课件2外连接(OUTER JOIN)题目1:EMP中查找员工和其经理的对应关系: 要求-员工名称和其经理的名称,请注意使用外连接及(+)放置位置SELECT WORKER.ENAME, MANAGER.ENAME MANAGERFROM EMP WORKER,EMP MANAGERWHERE WORKER.MGR=MANAGER.EMPNO(+);oracle数据库教程课件2外连接(OUTER JOIN)题目2:查找哪些部门有叫SMITH的人 显示:雇员名称、部门名称(所有部门都要列出来)ENAME DNAME---------- -------------- ACCOUNTINGSMITH RESEARCH SALES OPERATIONS SELECT ENAME,DNAMEFROM EMP E,DEPT DWHERE E.DEPTNO(+)=D.DEPTNO AND E.ENAME(+)=’SMITH’;oracle数据库教程课件2外连接(OUTER JOIN)题目3:查找哪些部门没有叫SMITH的人 要求显示信息:雇员名称、部门名称ENAME DNAME---------- -------------- ACCOUNTINGSMITH RESEARCH SALES OPERATIONS select ename,dnamefrom emp e,dept dwhere e.deptno(+)=d.deptnoand e.ename(+)='SMITH'and e.ename is null oracle数据库教程课件子查询•单行值子查询•多行值子查询•多列子查询•相关子查询oracle数据库教程课件单行值子查询•工资高于7698号雇员,并且工种与他相同的雇员情况SQL>SELECT ENAME,SAL,JOB FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE EMPNO=7698) AND JOB=(SELECT JOB FROM EMP WHERE EMPNO=7698);oracle数据库教程课件多行值子查询•谓词IN, NOT IN–哪些部门没有叫SMITH的雇员。
SQL> select dept.deptno,dname,loc from dept 2 where dept.deptno not innot in 3 ( select deptno from emp 4 where ename='SMITH');oracle数据库教程课件多行值子查询•ANY: 子查询返回结果中的任一值满足条件即可•ANY前可以使用!=、>、<、>=、<=•查询工种不为销售员,并且工资小于其中任一销售员的雇员信息SQL> SELECT EMPNO,ENAME,SAL 2 FROM EMP 3 WHERE SAL
•NOT EXISTS:子查询不返回任何行时条件成立用途确定一个表中的哪些信息在另一个表中没有匹配•用NOT EXISTS代替NOT INoracle数据库教程课件多列子查询•例:查出工资、奖金与20号雇员匹配的人员SQL> select ename from emp where (nvl(comm,0),sal) in (select nvl(comm,0),sal from emp where deptno=20);oracle数据库教程课件相关子查询•例:查出工资、奖金与20号雇员匹配的人员SQL> select ename from emp where (nvl(comm,0),sal) in (select nvl(comm,0),sal from emp where deptno=20);oracle数据库教程课件其它查询•集合–UNION –INTERSECT–MINUS•树查询oracle数据库教程课件UNION•UNION:将表和视图中的记录合并在一起所有部门中有哪些雇员的工资超过2OOO?SQL> select * from emp where sal>2000SQL>select ename,sal from dept10 where sal>2000 union select ename,sal from dept20 where sal>2000 union select ename,sal from dept30 where sal>2000;oracle数据库教程课件视图SQL> create view dept10 as 2 select ename,job,sal from emp 3 where deptno=10;dept20、dept30的创建过程同dept10oracle数据库教程课件INTERSECTl返回查询结果中相同的部分。
哪些部门有相同的工种?SQL>select distinct a.job from emp a,emp b where a.deptno<>b.deptno and a.job=b.jobSQL> select job from dept30 intersect select job from dept20 intersect select job from dept10;oracle数据库教程课件MINUSl返回第一个查询结果中与第二个查询结果不相同的那部分行记录 有哪些工种是在财会部有,而在销售部中没有?SQL>select job from emp where deptno=10 and job not in (select job from emp where deptno=30);SQL> select job from dept10 minus select job from dept30;oracle数据库教程课件子查询注意•子查询必须用括号括住;•子查询必须只有一列,或者子查询的多列与主查询中用括号括起来的多个列连接;•单行值子查询可以使用单值或多值运算符,多行子查询必须使用多值运算符;•BETWEEN AND不能用于子查询;•子查询中不能使用ORDER BY子句;oracle数据库教程课件测试操作运算符单值: =、>、>=、<、<=、!= 、^=、<> LIKE、IS NULL、IS NOT NULL。
多值: IN、NOT IN; (BETWEEN AND、NOT BETWEEN AND) ANY、NOT ANY; ALL、NOT ALL; EXISTS、NOT EXISTSoracle数据库教程课件ORACLE数据库体系结构•ORACLE数据库的存储结构•ORACLE数据库的软件体系结构1. 逻辑存储结构逻辑存储结构2. 物理存储结构物理存储结构1. 实例实例2. Oracle 8网络网络* 锁机制和锁机制和SCNoracle数据库教程课件数据库存储结构•物理结构–是实际数据的存储单元,例如数据库文件•逻辑结构–是数据概念上的组织,例如表空间 因为物理和逻辑结构是分开的,数据物理存储的管理并不影响逻辑结构,能灵活的独立管理oracle数据库教程课件表空间和数据文件oracle数据库教程课件•由组成数据库的操作系统文件决定•数据库的文件提供了数据库信息的实际物理存储•三种类型的文件–控制文件:记录数据库的物理结构–数据文件:包括全部数据库数据–日志文件:记录对数据库所做的修改物理结构--数据库文件oracle数据库教程课件Oracle数据库结构组成 Parameter FileDatafilesControl FilesRedo Log FilesOracle Databaseoracle数据库教程课件物理结构-控制文件控制文件oracle数据库教程课件物理结构-控制文件控制文件oracle数据库教程课件物理结构-控制文件1. $ORACLE_HOME/dbs目 录 下 , ls *.ora : initTX08.ora configTX08.ora control_files = (/data1/oracle8//oradata/TX08/control01.ctl, /data1/oracle8/oradata/TX08/control02.ctl, /data1/oracle8/oradata/TX08/control03.ctl) 2. SQL> select * from V$controlfile;oracle数据库教程课件物理结构-日志文件联机重做日志文件归档日志文件oracle数据库教程课件以ORACLE FOR SOLARIS为例:数据文件:mount_point/oradata/ora_sid/system01.dbfmount_point/oradata/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_sid03.logoracle数据库教程课件逻辑组成•多个表空间(tablespace)组成•一个表空间是一个逻辑存储区•数据库模式(schema)对象•模式是对象的集合。
模式对象直接涉及数据库数据的逻辑结构 ,包括表、视图、序列、存储过程、同义词、索引等 逻辑存储结构包括表空间、段逻辑存储结构包括表空间、段(segment)、区、区(extent)、块、块(block),指明如何使用数据库物理空间指明如何使用数据库物理空间oracle数据库教程课件表空间的几个概念•表空间分类: – System表空间、其它表空间–只读表空间、可读写表空间 •表空间的状态: 脱机、联机--控制数据的可用性•表空间大小的管理:建立、增加、修改oracle数据库教程课件表空间的几个概念•表空间的状态: 脱机、联机--控制数据的可用性•SQL> alter tablespace name offline normal;•SQL> select * from user_tablespaces;•SQL> alter tablespace test online;•SQL> select table_name , tablespace_name from tabs; oracle数据库教程课件单一表空间-system表空间oracle数据库教程课件多个表空间-system表空间和其它表空间oracle数据库教程课件表空间中数据文件的自动增长oracle数据库教程课件表空间的物理存储区-数据文件oracle数据库教程课件数据库对象的物理存储区-段oracle数据库教程课件例子:表空间与表空间中对象CREATE TABLESPACE user_dataDATAFILE '\data\user1Tx08.dbf ' SIZE 5MONLINEDEFAULT STORAGE (INITIAL 10KNEXT 10KMINEXTENTS 2MAXEXTENTS 50PCTINCREASE 0 ); ;oracle数据库教程课件逻辑结构—段、区和数据块•数据库空间的分配单元是段、区和数据块。
段:决定数据库对象使用的全部区的集合区:由连续的数据块的集合块:Oracle数据库磁盘存取的最小的单元oracle数据库教程课件保存表和簇的所有数据的区的聚集保存特殊索引的所有数据的区的聚集1.数据段2.索引段逻辑结构—段类型oracle数据库教程课件4.临时段回滚段回滚段记录一个事务的回滚数据记录一个事务的回滚数据事务可以使用提交或回滚结束回滚即撤消事务的全部作用,就象事务从未发生过要实现回滚,必须跟踪事务所更改的数据,直到提交或回滚保存属于临时对象的数据的区的聚集保存属于临时对象的数据的区的聚集SQLSQL语句经常要求临时工作区语句经常要求临时工作区例如,当为一个大表创建索引时,必须分配临时空间,排序全部的索引项;当处理一条需要临时工作空间的SQL,就从数据库的表空间中分配小的临时段语句完成后,将段释放回表空间3.回滚段逻辑结构—段类型oracle数据库教程课件查询有哪些类型的段:SQL> select distinct segment_type from dba_segments;(以SYS和SYSTEM用户身份登录)逻辑结构—段类型•查询某一用户在某一表空间中段的占有情况:SQL> column segment_name format a10SQL> select * from user_segments;SQL> select * from user_segments where tablespace_name='TEST';oracle数据库教程课件•数据段每张非聚簇表有一个单独的数据段来存放所有的数据。
SQL> select segment_name from dba_segments where segment_type='TABLE';逻辑结构—段类型•索引段每个索引有单独的索引段来存放数据SQL> select segment_name from dba_segments where segment_type='INDEX';•ROLLBACK•TEMPORARYoracle数据库教程课件逻辑结构—区•当创建新的数据对象(表、索引等)时,Oracle为对象的段分配一个或多个区•区是存储对象段的表空间数据文件中的一系列连续的数据块oracle数据库教程课件逻辑结构—区•区的设置(决定区的参数)–创建段时,可以决定分配区的数目maxextents 最大分配的区数,minextents 最小分配的区数–可以控制区的大小能够设置段的初始区间和后续区间的大小initial 最初分配的空间数(缺省为10k,5个数据块)next 下一步分配的空间数pctincrease 增长率,指数级增长oracle数据库教程课件逻辑结构—区•SQL> select * from user_extents;•SQL> select * from dba_extents;(SYS用户和SYSTEM用户)oracle数据库教程课件逻辑结构—数据块•最小最小的磁盘存取单元,当操作一个数据库时,Oracle使用数据块存储和提取磁盘上的数据。
当查询一个表时,Oracle将含有查询结果集记录的全部数据快读取到服务器的内存中•由一个或多个O/S 块组成•在数据库创建时设定块大小块大小,块大小必须等于O/S 块的大小或它的倍数 如果服务器的操作系统块大小是512K,数据块大小可以是512K、1024K和2048K等oracle数据库教程课件InsertsInsertsInsertsInserts1234PCTFREE=2080%80%40%逻辑结构— 数据块空间PCTUSED=40oracle数据库教程课件Made up ofPart ofTemporaryIndexCacheClusterRollbackDataSegmentTablespaceDatabaseLocation ofFreeExtentUsedMade up ofI nLocation ofInstanceDB BlockPart ofMade up ofOS BlockControllingControlled byFileLogical DiscPart ofMade up ofPart ofMade up ofMade up ofPart ofMade up ofPart ofPart ofPart of数据库结构组成oracle数据库教程课件实例实例oracle数据库教程课件实例实例=PGA+SGA+后台进程后台进程oracle数据库教程课件程序全局区(PGA)•程序全局区(程序全局区(PGA))–用于保存用于保存服务器进程服务器进程的的数据数据和和控制信息控制信息。
–当当用用户户进进程程要要连连接接到到Oracle数数据据库库服服务务器器时时,,会在实例中为其分配相应的服务器进程会在实例中为其分配相应的服务器进程oracle数据库教程课件SGA组成Shared PoolDatabase Buffer CacheRedo LogBuffer System Global Area(SGA)Shared SQL AreasData Dictionaryoracle数据库教程课件系统全局区(系统全局区(SGA))1.数据库高速缓存(数据库高速缓存(Data Block Buffer Cache))oracle数据库教程课件系统全局区(系统全局区(SGA))2.重做日志缓冲区(重做日志缓冲区(Redo Log Buffers))oracle数据库教程课件系统全局区(系统全局区(SGA))3.数据字典高速缓存(数据字典高速缓存(Dictionary Cache))该高速缓存用于存放该高速缓存用于存放最近使用和经常使用最近使用和经常使用的数据字典的数据字典信息当下次需要这些信息时,就可以直接从数据字信息当下次需要这些信息时,就可以直接从数据字典高速缓存中读取到这些信息,从而提高系统性能典高速缓存中读取到这些信息,从而提高系统性能.oracle数据库教程课件系统全局区(系统全局区(SGA))•共享共享SQL池用于保存池用于保存SQL语句的语句的执行计划和分析树执行计划和分析树。
•当当执执行行SQL语语句句时时,,系系统统会会将将相相应应的的执执行行计计划划和和分分析析树树保保存存到到共共享享SQL池池中中然然后后当当再再次次执执行行这这些些SQL语语句句时时,,系系统统会会自自动动使使用用原原有有执执行行计计划划和和分分析析树树,,从从而而提提高高了了系系统统性性能能4. 共享共享SQL池(池(Shared SQL Pool)oracle数据库教程课件Oracle后台线程后台线程oracle数据库教程课件后台进程后台进程1. DBWRoracle数据库教程课件后台进程后台进程 2. LGWRoracle数据库教程课件后台进程后台进程3. ARCHoracle数据库教程课件实例与数据库的关系一对一一对多oracle数据库教程课件创建实例oracle数据库教程课件 OPENOPENMOUNTMOUNTNOMOUNTNOMOUNTSHUTDOWNSHUTDOWNAll files opened as All files opened as described by the described by the control thiscontrol thisinstance.instance.Control for this Control for this instance.instance.Instance Instance started.started.START UPSTART UP 启动一个实例START UPSTART UPoracle数据库教程课件数据库的启动•启动实例启动实例-----nomount打开初始化参数文件 svrmgr>connect internal svrmgr>startup nomount; svrmgr>select * from v$process; svrmgr>select * from v$controlfile; svrmgr>select * from v$logfile; svrmgr>select * from v$datafile;oracle数据库教程课件数据库的启动•装配数据库装配数据库-----mount 打开控制文件 方法1: svrmgr>alter database mount; 方法2: svrmgr>connect internal svrmgr>startup mount; 查询操作同前页。
oracle数据库教程课件数据库的启动•打开数据库------open 打开数据文件和日志文件 方法1: svrmgr> alter database open; 方法2: svrmgr>connect internal svrmgr>startup; svrmgr>select * from user_tablespaces; svrmgr>select * from dba_data_files;oracle数据库教程课件 OPENOPENMOUNTMOUNTNOMOUNTNOMOUNTSHUTDOWNSHUTDOWNAll files opened as All files opened as described by the described by the control thiscontrol thisinstance.instance.Control for this Control for this instance.instance.Instance Instance started.started.SHUTDOWNSHUTDOWN 关闭一个实例SHUTDOWNSHUTDOWNoracle数据库教程课件数据库实例的关闭•关闭数据库 关闭数据文件和日志文件 svrmgr>shutdown;•卸下数据库 关闭控制文件 svrmgr>shutdown;•停止实例 关闭初始化参数文件 svrmgr>shutdown;oracle数据库教程课件Oracle8网络与Net8•Net8----Oracle的网络连接软件•连接描述器与tnsnames.ora•监听进程与listener.ora•监听进程的操作命令•配置服务器•配置客户机•调试连接问题oracle数据库教程课件Net8oracle数据库教程课件SQL*NET原理及所需配置文件原理及所需配置文件listener.oratnsnames.oraProcessServeroracle数据库教程课件连接描述器与tnsnames.ora•TX08=( DESCREPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=200.1.1.115) (PORT=1521) ) (CONNECT DATA= (SID=TX08) )… …)•$ORACLE_HOME/network/admin-----tnsnames.ora•tnsnames.ora 2个要求个要求oracle数据库教程课件监听进程与listener.ora•Listener=(ADDRESS LIST= (ADDRESS= (PROTOCOL=TCP) (HOST=200.1.1.115) ) ) ---------------------------------------------------------------------------- (SID_LIST_LISTENER= (SID LIST= ( SID_DESC= SID_NAME=TX08 ORACLE_HOME=/DATA1/ORACLE/TX08 ) ) )1.地址列表地址列表2.监听服务的实例列表监听服务的实例列表oracle数据库教程课件监听进程的操作命令•lsnrctl•lsnrctl> start listenername• stop listenername• • status listenername• version listenername• set current_listener listenername•-----检查监听进程是否启动检查监听进程是否启动: ps -ef|grep tnslsnroracle数据库教程课件配置服务器•识别可用宿主识别可用宿主 /etc/hosts ------解决地址映射解决地址映射•识别可用服务识别可用服务 /etc/services ----listener 1521•识别可用数据库识别可用数据库 /var/opt/oracle/oratab Oracle_SID:ORACLE_HOME:N/Y•启动启动Net 8 ----lsnrctloracle数据库教程课件配置客户机•识别可用宿主识别可用宿主 /etc/hosts (or ..)------解决地解决地址映射址映射•识别可用服务识别可用服务 /etc/services (or.. )----listener 1521•NIC(网络接口卡网络接口卡)、、OS、、TCP/IP、、NET8•运行运行NET8oracle数据库教程课件远程访问数据库•Sqlplus 用户名用户名/密码密码@ 服务名(连接串)服务名(连接串)•Sqlplus scott/tiger@TX08oracle数据库教程课件调试-连接问题•可达?可达?telnet、、ping (客户端(客户端--远程主机)远程主机)•监听?监听? 服务器服务器---通过通过@连自己连自己 客户端客户端---tnsping 服务名服务名 次数次数oracle数据库教程课件安全管理•用户管理–创建用户create user–修改用户alter user–删除用户drop useroracle数据库教程课件用户与模式oracle数据库教程课件用户分类l超级用户l数据库管理员l普通用户oracle数据库教程课件超级用户internaloracle数据库教程课件数据库管理员•数据库管理员(数据库管理员(DBA)) 是指具有是指具有DBA角色的用户,它们用于管理发生角色的用户,它们用于管理发生在数据库内的操作。
如在数据库内的操作如SYS、、SYSTEMoracle数据库教程课件普通用户•普通用户是指根据特定需求使用命令普通用户是指根据特定需求使用命令CREATE USER所创建的用户所创建的用户oracle数据库教程课件数据库验证CREATE USER aca IDENTIFIED BY asiainfo;CONNECT aca/asiainfooracle数据库教程课件外部验证CREATE USER OPS$administrator IDENTIFIED EXTERNALLY;oracle数据库教程课件企业验证•企业验证是指由企业验证是指由Oracle Security Service (OSS)来验证数据库用户的方式当使用这种来验证数据库用户的方式当使用这种方式验证数据库用户时,由方式验证数据库用户时,由Oracle数据库来数据库来管理用户帐户,并且口令和用户鉴定则由管理用户帐户,并且口令和用户鉴定则由OSS来完成oracle数据库教程课件创建用户•创建用户ACAoracle数据库教程课件创建用户CREATE USER username IDENTIFIED BY userpassword [DEFAULT TABLESPACE tablespace1] [TEMPORARY TABLESPACE tablespace2][QUOTA n K ON tablespace1]; M UNLIMITED空间限额oracle数据库教程课件修改用户•修改用户username所使用的缺省表空间•修改用户的口令ALTER USER username TABLESPACE user_data;ALTER USER username IDENTIFIED BY userpasswd;oracle数据库教程课件删除用户•DROP USER username [cascade]oracle数据库教程课件特权管理•特权简介•系统特权的授予和收回•对象特权的授予和收回oracle数据库教程课件系统特权oracle数据库教程课件对象特权oracle数据库教程课件特权管理•系统权限(system privilege )–针对整个系统操作的权限–dba_sys_privs,•用户权限(object privilege)–针对具体object操作权限–dba_tab_privs;视图–dba_col_privs;oracle数据库教程课件系统特权的授予和收回•授予用户系统特权GRANT systemprivs TO username [WITH ADMIN OPTION] •收回系统特权REVOKE systemprivs FROM username ;oracle数据库教程课件对象特权的授予和收回•授予用户对象特权GRANT 对象特权对象特权 TO username [WITH GRANT OPTION];•收回对象特权REVOKE 对象特权对象特权 FROM username ;oracle数据库教程课件授于用户连接Oracle数据库的权限Sgrant connect tousername [with grant option];rolenameprivilege......oracle数据库教程课件Object PrivilegeSELECT UPDATE INSERT ALTER DELETE EXECUTE INDEX REFERENCESTypes of Object PrivilegesTableView Sequence Procedure1 12 23 31包括存储过程、函数和包2该权限不能授予角色3授予快照对象权限种类表oracle数据库教程课件角色管理•角色简介•创建、修改、删除角色•授予和收回角色特权•授予和收回用户角色•禁止和激活角色oracle数据库教程课件角色简介oracle数据库教程课件角色简介•角色分类角色分类•角色特权角色特权•授予和收回用户角色授予和收回用户角色•角色口令角色口令•禁止和激活角色禁止和激活角色oracle数据库教程课件角色•连接角色–connect连上Oracle,做最基本操作•资源角色–resource 具有程序开发最基本的权限•数据库管理员角色–dba数据库管理员所有权限oracle数据库教程课件角色•卸出数据库角色–exp-full-database 可把数据库整个备份输出的权限•卸入数据库角色–imp-full-database 可把数据库整个备份恢复输入的权限oracle数据库教程课件创建角色•创建角色CONNECT system/securityCREATE ROLE connect_role;CREATE ROLE insert_role IDENTIFIED BY insert_data;;oracle数据库教程课件授予角色特权授予角色特权CONNECT system/securityGRANT CREATE SESSION TO connect_role;CONNECT aca/asiainfoGRANT insert ON dept TO insert_role;GRANT update ON emp TO update_role;oracle数据库教程课件授予用户角色授予用户角色 CONNECT system/securityGRANT connect_role,update_role TO username;CONNECT username/passwdupdate username.emp set salary=salary+100 where salary<2000;oracle数据库教程课件禁止角色禁止角色•CONNECT username/passwd•SET ROLE NONE;•update aca.auths set salary=salary+100;oracle数据库教程课件激活角色激活角色•SET ROLE update_role IDENTIFIED BY update_data;•update username.emp set salary=salary+100;oracle数据库教程课件设置用户的缺省角色设置用户的缺省角色CONNECT system/securityALTER USER username DEFAULT ROLE connect_role;oracle数据库教程课件修改和删除角色•修改角色•ALTER ROLE•删除角色•DROP ROLEoracle数据库教程课件完整性约束•主码完整性约束•非空完整性约束•唯一完整性约束•check完整性约束•引用完整性约束oracle数据库教程课件完整性约束Create table emp1(empno number(4) not null check(empno between 1000 and 9999) unique, ename char(10), job char(9), mgr number(4) constraint emp1_self_key references emp1(empno), hiredate date, sal number(7,2), comm number(7,2), deptno number(2) not null, constraint emp1_foreign_key foreign key(deptno) reference dept(deptno), constraint emp1_primary_key primary key(empno));oracle数据库教程课件数据定义语言(DDL)•建立DB结构(DB,表空间)•建立DB对象–TABLE,VIEW,CLUSTER,INDEX•实现分布式DB机制(数据透明性)–VIEW,同义词,DB链,快照,快照日志•安全性控制–用户,角色,授权,环境文件,审计•完整性控制–完整性约束,触发器•提供应用处理–过程,函数,包oracle数据库教程课件数据定义语言命令•表空间•表•视图•索引oracle数据库教程课件会话控制命令•ALTER SESSION命令•SET ROLE命令系统控制命令•ALTER SYSTEM命令oracle数据库教程课件视图•结构–create view–alter view–drop view•内容–insert–update–deleteoracle数据库教程课件索引•结构–create index–alter index–drop index–reindexoracle数据库教程课件。












