• 1. 欢迎参加学习 ORACLE数据库实用教程 training@asiainfo.com 亚信科技(中国)有限公司 培训中心
  • 2. 什么是数据库?数据库是管理数据的一种方法, 如何组织和存储数据, 如何高效地获取和处理数据。
  • 3. 数据管理的发展的3个阶段人工管理阶段 无数据管理的专用软件,数据和程序在一起 文件系统阶段 软件进行数据管理,程序和数据分离 数据冗余度大,数据和程序缺乏独立性 文件之间不能建立联系 数据库系统阶段 数据具有更高的独立性 数据库管理系统-DBMS:数据库的定义、操作和管理
  • 4. 关系型数据库关系型数据库 支持关系模型,以关系(表)形式组织数据。 著名的关系型数据库 DB2,ORACLE,INFORMIX,SYBASE等。 关系型数据库=Datafile+RDBMSRDBMSOSDBdatafile1datafile2
  • 5. 实验环境%telnet 200.1.1.115 用户名/口令:oracle8/oracle8 %sqlplus scott/tiger sql>connect scott/tiger sql>show user sql>quit
  • 6. 表表---关系型DB数据组织的形式 报道表 空表--表的结构 白纸--设计一张表--多少项内容(列)--画表时,每项多宽 列---字段;列类型( 宽、 类型)---数据类型(长度、类型) 行---记录 表=列+行-------字段+记录姓名编号单位性别
  • 7. 表看scott用户有哪些表 然后查看其中一个表的结构和内容 #sqlplus scott/tiger sql>select table_name from tabs; (user_tables) sql>desc emp; sql>select * from emp;
  • 8. 表表结构(DDL) create table alter table drop table truncate table表内容(DML) insert update deletedesc table_name select field_name from table_name
  • 9. 基本数据类型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字符串用单引号括起来可以存储声音、图片
  • 10. 日期型数据的格式说明Days dd number 12 dy abbreviated fri day spelledout Friday ddspth spelled out,ordinal twelfth Month mm number 03 mon abbreviated mar month spelled out march Year yy year 87 yyyy year and century 1987
  • 11. 日期型数据的格式说明缺省日期型:dd-mon-yy select sysdate from dual; 系统:date,time 改变日期形式: 1.本次会话 SQL> ALTER SESSION SET NLS_DATE_FORMAT='YY-MM-DD'; 2.下次启动后永久生效----改文件 设置INITSID.ORA中的NLS_DATE_FORMAT参数可改变缺 省日期的格式。
  • 12. 表结构1.建立 sql>create table table_name (column_name1 datatype [not null|unique], column_name2 datatype [not null|unique], column_name2 datatype [not null|unique] );
  • 13. 表内容1.插入记录 sql>insert into table_name [column_name-a, …,column_name-x] values (column_value-a,…,column_value-x);
  • 14. 表结构2.变更 1>修改 sql>alter table table_name modify(column_name datatype ); 2>增加 sql>alter table table_name add(column_name datatype );
  • 15. 表内容2.修改记录 sql>update table_name set column_name1= values1,column_name2=values2 [where search_conditions];
  • 16. 表内容3.删除记录 sql>delete [from] table_name [where search_conditions]; sql>truncate table table_name;
  • 17. 表结构3.删除 1>删结构及内容 sql>drop table table_name;
  • 18. 事物处理事物处理命令 提交:commit 回滚:rollback 保留点:savepoint SQL> SAVEPOINT CLARK_SAL; SQL> ROLLBACK TO SAVEPOINT BLAKE_SAL;
  • 19. 2. 命令修改a 当前行末追加 c/old/new 更改 cl buff 清缓存 del 删除(n, last, m n) i 加入(i, i text)save filename 保存 edit、vi filename 编辑start filename @filename3.保存命令4.执行命令1.显示命令l 显示(l,l n ,l m n,l last)SQL*PLUS
  • 20. 练习建表 注意利用SQL命令缓冲区 插入、修改、删除数据(注意条件) 提交、回滚
  • 21. 练习表名txl-n 结构:学号 数字型 3 唯一 姓名 可变长字符串 10 非空 出生 日期型 电话 数字型 10 查看结构、查看内容
  • 22. 练习1.增加字段 单位 可变长字符串 12 2.修改字段 出生 可变长字符串 5(原日期)
  • 23. 练习插入数据 至少5条 修改数据 (根据条件) 删除数据(根据条件)
  • 24. SQL语句中的函数字符函数 substr、length 、lower 、rtrim 、ltrim 数值函数 abs 、mod 、round 、trunc 、nvl 日期函数 months_between 、add_months 、next_day 转换函数 to_char 、to_date
  • 25. 数据查询语言(DML)命令SELECT语句 SELECT <查询内容> FROM <表名> WHERE <条件> GROUP <分组内容> HAVING <组内条件> ORDER BY <排序内容>
  • 26. 简单查询无条件查询 条件查询 排序 统计 分组统计
  • 27. 分组函数(统计函数)完成对一组记录的统计处理 count({*| [distinct|all] x}): 行数 sum(x):数据列求和 avg([distinct|all] x):数据列平均值 max(x):列的最大值 min(x): 列的最小值 除count(*)外,当使用分组函数时,均忽略空值
  • 28. 分组函数(统计函数)练习 1 工资的平均值 2 奖金的最大值 3 工资的总和 4 最低工资 5 表中数据行的总数 6 有多少个不同的部门
  • 29. 分组查询与排序数据分组:对有重复值的列进行分组。 查询: SELECT col1,col2,分组函数 FROM table1 WHERE conditions GROUP BY col1,col2 HAVING condition ORDER BY col1,col2 SELECT选择的列,必须出现在GROUP BY 子句中; GROUP BY 子句中的列只能是SELECT选择的列或分组函数中的列。 顺序无关。
  • 30. 分组查询练习: 1)编写SQL语句,从EMP表中返回---部门编号、部门平 均工资。 2)编写SQL语句,从EMP表中返回----部门编号、部门工资总和 条件是:部门工资总和大于8000。 3)编写SQL语句,从EMP表中返回----部门编号、部门平均工资 条件是:除了部门10,部门工资平均值大于1500的部门的情况。
  • 31. 多表查询---连接等值连接 非等值连接 -------------------- 自连接 外连接
  • 32. select ename,dname from emp e,dept d where e.deptno=d.deptno 等值连接(EQUIJOIN)基于列的相等性来连接两张或多张表。 题目: 查找雇员姓名及所在部门的名称.
  • 33. 非等值连接(NON-EQUIJOIN)基于列的不等性来连接两张或多张表。 题目:请查找雇员SMITH的工资和工资等级情况, 希望显示的信息---员工名、工资、工资等级.
  • 34. 非等值连接(NON-EQUIJOIN)请分析下列语句: SELECT ENAME,SAL,GRADE FROM EMP,SALGRAD WHERE ENAME=‘SMITH’;SELECT * FROM SALGRAD; SELECT ENAME,SAL,GRADE FROM EMP,SALGRAD WHERE ENAME=‘SMITH’ AND SAL BETWEEN LOSAL AND HISAL
  • 35. 等值连接和非等值连接题目:查找工资级别为2的雇员的信息 。 要求显示的信息:雇员的姓名,部门的名称, 工资、工资级别 SELECT ENAME,DNAME,SAL,GRADE FROM EMP,DEPT,SALGRADE WHERE GRADE=2 AND SAL BETWEEN LOSAL AND HISAL AND EMP.DEPTNO=DEPT.DEPTNO;
  • 36. 自我连接(SELF JOIN)将表连接到自身 在SQL语句中一个表暂时重新命名为两个表。 题目:EMP中查找员工和其经理的对应关系: 要求-员工名称和其经理的名称 同一基表的不同行做联接,如同两个独立的基表, 在FROM子句中至少要为一个基表起别名,以区别联接条件中的列名
  • 37. 自连接(SELF JOIN)SELECT WORKER.ENAME, MANAGER.ENAME MANAGER FROM EMP WORKER, EMP MANAGER WHERE WORKER.MGR=MANAGER.EMPNO;
  • 38. 外连接(OUTER JOIN)用于返回存在在一张表上 的所有数据行,甚至相对 应的行 在连接的表中不存 在。 (+)号用于在查询中的 OUTERJOIN。 带(+)的表是那些没有 相应行的表。
  • 39. 外连接(OUTER JOIN)题目1:EMP中查找员工和其经理的对应关系: 要求-员工名称和其经理的名称,请注意使用外连接及(+)放置位置。SELECT WORKER.ENAME, MANAGER.ENAME MANAGER FROM EMP WORKER,EMP MANAGER WHERE WORKER.MGR=MANAGER.EMPNO(+);
  • 40. 外连接(OUTER JOIN)题目2:查找哪些部门有叫SMITH的人 显示:雇员名称、部门名称(所有部门都要列出来)ENAME DNAME ---------- -------------- ACCOUNTING SMITH RESEARCH SALES OPERATIONS SELECT ENAME,DNAME FROM EMP E,DEPT D WHERE E.DEPTNO(+)=D.DEPTNO AND E.ENAME(+)=’SMITH’;
  • 41. 外连接(OUTER JOIN)题目3:查找哪些部门没有叫SMITH的人 要求显示信息:雇员名称、部门名称ENAME DNAME ---------- -------------- ACCOUNTING SMITH RESEARCH SALES OPERATIONS select ename,dname from emp e,dept d where e.deptno(+)=d.deptno and e.ename(+)='SMITH' and e.ename is null
  • 42. 子查询单行值子查询 多行值子查询 多列子查询 相关子查询
  • 43. 单行值子查询工资高于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);
  • 44. 多行值子查询谓词IN, NOT IN 哪些部门没有叫SMITH的雇员。 SQL> select dept.deptno,dname,loc from dept 2 where dept.deptno not in 3 ( select deptno from emp 4 where ename='SMITH');
  • 45. 多行值子查询ANY: 子查询返回结果中的任一值满足条件即可。 ANY前可以使用!=、>、<、>=、<=。 查询工种不为销售员,并且工资小于其中任一销售员的雇员信息。 SQL> SELECT EMPNO,ENAME,SAL 2 FROM EMP 3 WHERE SAL
  • 46. 多行值子查询ALL: 子查询返回结果中的所有值满足条件才行。 查找工资高于20号部门所有雇员的人员信息。 SQL> SELECT EMPNO,ENAME,SAL FROM EMP 2 WHERE SAL>ALL( SELECT SAL FROM EMP WHERE DEPTNO=20); 也可表达为: SQL> SELECT EMPNO,ENAME,SAL FROM EMP 2 WHERE SAL>( SELECT MAX(SAL) FROM EMP WHERE DEPTNO=20);
  • 47. 多行值子查询EXISTS: 子查询至少返回一行时条件成立。 NOT EXISTS:子查询不返回任何行时条件成立。用途确定一个表中的哪些信息在另一个表中没有匹配。 用NOT EXISTS代替NOT IN
  • 48. 多列子查询例:查出工资、奖金与20号雇员匹配的人员。 SQL> select ename from emp where (nvl(comm,0),sal) in (select nvl(comm,0),sal from emp where deptno=20);
  • 49. 相关子查询例:查出工资、奖金与20号雇员匹配的人员。 SQL> select ename from emp where (nvl(comm,0),sal) in (select nvl(comm,0),sal from emp where deptno=20);
  • 50. 其它查询集合 UNION INTERSECT MINUS 树查询
  • 51. UNIONUNION:将表和视图中的记录合并在一起。 所有部门中有哪些雇员的工资超过2OOO? SQL> select * from emp where sal>2000 SQL>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;
  • 52. 视图SQL> create view dept10 as 2 select ename,job,sal from emp 3 where deptno=10; dept20、dept30的创建过程同dept10
  • 53. INTERSECT返回查询结果中相同的部分。 哪些部门有相同的工种? SQL>select distinct a.job from emp a,emp b where a.deptno<>b.deptno and a.job=b.job SQL> select job from dept30 intersect select job from dept20 intersect select job from dept10;
  • 54. MINUS返回第一个查询结果中与第二个查询结果不相同的那部分行记录 有哪些工种是在财会部有,而在销售部中没有? 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;
  • 55. 子查询注意 子查询必须用括号括住; 子查询必须只有一列,或者子查询的多列与主查询中用括号括起来的多个列连接; 单行值子查询可以使用单值或多值运算符,多行子查询必须使用多值运算符; BETWEEN AND不能用于子查询; 子查询中不能使用ORDER BY子句;
  • 56. 测试操作运算符单值: =、>、>=、<、<=、!= 、^=、<> LIKE、IS NULL、IS NOT NULL。 多值: IN、NOT IN; (BETWEEN AND、NOT BETWEEN AND) ANY、NOT ANY; ALL、NOT ALL; EXISTS、NOT EXISTS。
  • 57. ORACLE数据库体系结构ORACLE数据库的存储结构 ORACLE数据库的软件体系结构1. 逻辑存储结构 2. 物理存储结构1. 实例 2. Oracle 8网络 * 锁机制和SCN
  • 58. 数据库存储结构物理结构 是实际数据的存储单元,例如数据库文件 逻辑结构 是数据概念上的组织,例如表空间 因为物理和逻辑结构是分开的,数据物理存储的管理并不影响逻辑结构,能灵活的独立管理。
  • 59. 表空间和数据文件
  • 60. 由组成数据库的操作系统文件决定 数据库的文件提供了数据库信息的实际物理存储 三种类型的文件 控制文件:记录数据库的物理结构 数据文件:包括全部数据库数据 日志文件:记录对数据库所做的修改物理结构--数据库文件
  • 61. Oracle数据库结构组成Parameter FileDatafilesControl FilesRedo Log FilesOracle Database
  • 62. 物理结构-控制文件控制文件
  • 63. 物理结构-控制文件控制文件
  • 64. 物理结构-控制文件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;
  • 65. 物理结构-日志文件联机重做日志文件归档日志文件
  • 66. 以ORACLE FOR SOLARIS为例: 数据文件: mount_point/oradata/ora_sid/system01.dbf mount_point/oradata/ora_sid/tools01.dbf mount_point/oradata/ora_sid/users01.dbf mount_point/oradata/ora_sid/temp01.dbf mount_point/oradata/ora_sid/rbs01.dbf 控制文件: mount_point/oradata/ora_sid/control01.ctl mount_point/oradata/ora_sid/control02.ctl mount_point/oradata/ora_sid/control03.ctl 日志文件: mount_point/oradata/ora_sid/redoora_sid01.log mount_point/oradata/ora_sid/redoora_sid02.log mount_point/oradata/ora_sid/redoora_sid03.log
  • 67. 逻辑组成多个表空间(tablespace)组成 一个表空间是一个逻辑存储区 数据库模式(schema)对象 模式是对象的集合。模式对象直接涉及数据库数据的逻辑结构 ,包括表、视图、序列、存储过程、同义词、索引等 逻辑存储结构包括表空间、段(segment)、区(extent)、块(block),指明如何使用数据库物理空间。
  • 68. 表空间的几个概念表空间分类: System表空间、其它表空间 只读表空间、可读写表空间 表空间的状态: 脱机、联机--控制数据的可用性 表空间大小的管理:建立、增加、修改
  • 69. 表空间的几个概念表空间的状态: 脱机、联机--控制数据的可用性 SQL> alter tablespace name offline normal; SQL> select * from user_tablespaces; SQL> alter tablespace test online; SQL> select table_name , tablespace_name from tabs;
  • 70. 单一表空间-system表空间
  • 71. 多个表空间-system表空间和其它表空间
  • 72. 表空间中数据文件的自动增长
  • 73. 表空间的物理存储区-数据文件
  • 74. 数据库对象的物理存储区-段
  • 75. 例子:表空间与表空间中对象CREATE TABLESPACE user_data DATAFILE '\data\user1Tx08.dbf ' SIZE 5M ONLINE DEFAULT STORAGE ( INITIAL 10K NEXT 10K MINEXTENTS 2 MAXEXTENTS 50 PCTINCREASE 0 );
  • 76. 逻辑结构—段、区和数据块数据库空间的分配单元是段、区和数据块。 段:决定数据库对象使用的全部区的集合。 区:由连续的数据块的集合。 块:Oracle数据库磁盘存取的最小的单元。
  • 77. 保存表和簇的所有数据的区的聚集 保存特殊索引的所有数据的区的聚集 1.数据段2.索引段逻辑结构—段类型
  • 78. 4.临时段回滚段记录一个事务的回滚数据。 事务可以使用提交或回滚结束。回滚即撤消事务的全部作用,就象事务从未发生过。要实现回滚,必须跟踪事务所更改的数据,直到提交或回滚。 保存属于临时对象的数据的区的聚集 SQL语句经常要求临时工作区。 例如,当为一个大表创建索引时,必须分配临时空间,排序全部的索引项;当处理一条需要临时工作空间的SQL,就从数据库的表空间中分配小的临时段。语句完成后,将段释放回表空间。3.回滚段逻辑结构—段类型
  • 79. 查询有哪些类型的段: SQL> select distinct segment_type from dba_segments; (以SYS和SYSTEM用户身份登录) 逻辑结构—段类型查询某一用户在某一表空间中段的占有情况: SQL> column segment_name format a10 SQL> select * from user_segments; SQL> select * from user_segments where tablespace_name='TEST';
  • 80. 数据段 每张非聚簇表有一个单独的数据段来存放所有的数据。 SQL> select segment_name from dba_segments where segment_type='TABLE'; 逻辑结构—段类型索引段 每个索引有单独的索引段来存放数据。 SQL> select segment_name from dba_segments where segment_type='INDEX'; ROLLBACK TEMPORARY
  • 81. 逻辑结构—区当创建新的数据对象(表、索引等)时,Oracle为对象的段分配一个或多个区。 区是存储对象段的表空间数据文件中的一系列连续的数据块。
  • 82. 逻辑结构—区区的设置(决定区的参数) 创建段时,可以决定分配区的数目。 maxextents 最大分配的区数,minextents 最小分配的区数 可以控制区的大小。能够设置段的初始区间和后续区间的大小 initial 最初分配的空间数(缺省为10k,5个数据块) next 下一步分配的空间数 pctincrease 增长率,指数级增长
  • 83. 逻辑结构—区SQL> select * from user_extents; SQL> select * from dba_extents;(SYS用户和SYSTEM用户)
  • 84. 逻辑结构—数据块最小的磁盘存取单元,当操作一个数据库时,Oracle使用数据块存储和提取磁盘上的数据。 当查询一个表时,Oracle将含有查询结果集记录的全部数据快读取到服务器的内存中。 由一个或多个O/S 块组成 在数据库创建时设定块大小,块大小必须等于O/S 块的大小或它的倍数。 如果服务器的操作系统块大小是512K,数据块大小可以是512K、1024K和2048K等。
  • 85. InsertsInsertsInsertsInserts1234PCTFREE=20 80%80%40%逻辑结构— 数据块空间PCTUSED=40
  • 86. 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数据库结构组成
  • 87. 实例
  • 88. 实例=PGA+SGA+后台进程
  • 89. 程序全局区(PGA)程序全局区(PGA) 用于保存服务器进程的数据和控制信息。 当用户进程要连接到Oracle数据库服务器时,会在实例中为其分配相应的服务器进程。
  • 90. SGA组成Shared PoolDatabase Buffer CacheRedo Log BufferSystem Global Area(SGA)Shared SQL AreasData Dictionary
  • 91. 系统全局区(SGA)1.数据库高速缓存(Data Block Buffer Cache)
  • 92. 系统全局区(SGA)2.重做日志缓冲区(Redo Log Buffers)
  • 93. 系统全局区(SGA)3.数据字典高速缓存(Dictionary Cache) 该高速缓存用于存放最近使用和经常使用的数据字典信息。当下次需要这些信息时,就可以直接从数据字典高速缓存中读取到这些信息,从而提高系统性能.
  • 94. 系统全局区(SGA) 共享SQL池用于保存SQL语句的执行计划和分析树。 当执行SQL语句时,系统会将相应的执行计划和分析树保存到共享SQL池中。然后当再次执行这些SQL语句时,系统会自动使用原有执行计划和分析树,从而提高了系统性能。4. 共享SQL池(Shared SQL Pool)
  • 95. Oracle后台线程
  • 96. 后台进程1. DBWR
  • 97. 后台进程 2. LGWR
  • 98. 后台进程3. ARCH
  • 99. 实例与数据库的关系一对一一对多
  • 100. 创建实例
  • 101. OPENMOUNTNOMOUNTSHUTDOWNAll files opened as described by the control file for this instance.Control file opened for this instance.Instance started.START UP 启动一个实例START UP
  • 102. 数据库的启动启动实例-----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;
  • 103. 数据库的启动装配数据库-----mount 打开控制文件 方法1: svrmgr>alter database mount; 方法2: svrmgr>connect internal svrmgr>startup mount; 查询操作同前页。
  • 104. 数据库的启动打开数据库------open 打开数据文件和日志文件 方法1: svrmgr> alter database open; 方法2: svrmgr>connect internal svrmgr>startup; svrmgr>select * from user_tablespaces; svrmgr>select * from dba_data_files;
  • 105. OPENMOUNTNOMOUNTSHUTDOWNAll files opened as described by the control file for this instance.Control file opened for this instance.Instance started.SHUTDOWN 关闭一个实例SHUTDOWN
  • 106. 数据库实例的关闭关闭数据库 关闭数据文件和日志文件 svrmgr>shutdown; 卸下数据库 关闭控制文件 svrmgr>shutdown; 停止实例 关闭初始化参数文件 svrmgr>shutdown;
  • 107. Oracle8网络与Net8Net8----Oracle的网络连接软件 连接描述器与tnsnames.ora 监听进程与listener.ora 监听进程的操作命令 配置服务器 配置客户机 调试连接问题
  • 108. Net8
  • 109. SQL*NET原理及所需配置文件listener.oratnsnames.oraProcessServer
  • 110. 连接描述器与tnsnames.oraTX08=( DESCREPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=200.1.1.115) (PORT=1521) ) (CONNECT DATA= (SID=TX08) ) … … ) $ORACLE_HOME/network/admin-----tnsnames.ora tnsnames.ora 2个要求
  • 111. 监听进程与listener.oraListener=(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.监听服务的实例列表
  • 112. 监听进程的操作命令lsnrctl lsnrctl> start listenername stop listenername status listenername version listenername set current_listener listenername -----检查监听进程是否启动: ps -ef|grep tnslsnr
  • 113. 配置服务器识别可用宿主 /etc/hosts ------解决地址映射 识别可用服务 /etc/services ----listener 1521 识别可用数据库 /var/opt/oracle/oratab Oracle_SID:ORACLE_HOME:N/Y 启动Net 8 ----lsnrctl
  • 114. 配置客户机识别可用宿主 /etc/hosts (or ..)------解决地址映射 识别可用服务 /etc/services (or.. )----listener 1521 NIC(网络接口卡)、OS、TCP/IP、NET8 运行NET8
  • 115. 远程访问数据库Sqlplus 用户名/密码@ 服务名(连接串) Sqlplus scott/tiger@TX08
  • 116. 调试-连接问题可达?telnet、ping (客户端--远程主机) 监听? 服务器---通过@连自己 客户端---tnsping 服务名 次数
  • 117. 安全管理用户管理 创建用户 create user 修改用户 alter user 删除用户 drop user
  • 118. 用户与模式
  • 119. 用户分类超级用户 数据库管理员 普通用户
  • 120. 超级用户internal
  • 121. 数据库管理员数据库管理员(DBA) 是指具有DBA角色的用户,它们用于管理发生在数据库内的操作。如SYS、SYSTEM
  • 122. 普通用户普通用户是指根据特定需求使用命令 CREATE USER 所创建的用户。
  • 123. 数据库验证CREATE USER aca IDENTIFIED BY asiainfo; CONNECT aca/asiainfo
  • 124. 外部验证CREATE USER OPS$administrator IDENTIFIED EXTERNALLY;
  • 125. 企业验证企业验证是指由Oracle Security Service (OSS)来验证数据库用户的方式。当使用这种方式验证数据库用户时,由Oracle数据库来管理用户帐户,并且口令和用户鉴定则由OSS来完成。
  • 126. 创建用户创建用户ACA
  • 127. 创建用户CREATE USER username IDENTIFIED BY userpassword [DEFAULT TABLESPACE tablespace1] [TEMPORARY TABLESPACE tablespace2][QUOTA n K ON tablespace1]; M UNLIMITED空间限额
  • 128. 修改用户修改用户username所使用的缺省表空间 修改用户的口令ALTER USER username TABLESPACE user_data; ALTER USER username IDENTIFIED BY userpasswd;
  • 129. 删除用户DROP USER username [cascade]
  • 130. 特权管理特权简介 系统特权的授予和收回 对象特权的授予和收回
  • 131. 系统特权
  • 132. 对象特权
  • 133. 特权管理系统权限(system privilege ) 针对整个系统操作的权限 dba_sys_privs, 用户权限(object privilege) 针对具体object操作权限 dba_tab_privs;视图 dba_col_privs;
  • 134. 系统特权的授予和收回授予用户系统特权 GRANT systemprivs TO username [WITH ADMIN OPTION] 收回系统特权 REVOKE systemprivs FROM username ;
  • 135. 对象特权的授予和收回授予用户对象特权 GRANT 对象特权 TO username [WITH GRANT OPTION]; 收回对象特权 REVOKE 对象特权 FROM username ;
  • 136. 授于用户连接Oracle数据库的权限S grant connect tousername [with grant option]; rolenameprivilege......
  • 137. Object Privilege SELECT UPDATE INSERT ALTER DELETE EXECUTE INDEX REFERENCESTypes of Object PrivilegesTable View Sequence Procedure1231 包括存储过程、函数和包 2 该权限不能授予角色 3 授予快照对象权限种类表
  • 138. 角色管理角色简介 创建、修改、删除角色 授予和收回角色特权 授予和收回用户角色 禁止和激活角色
  • 139. 角色简介
  • 140. 角色简介角色分类 角色特权 授予和收回用户角色 角色口令 禁止和激活角色
  • 141. 角色连接角色 connect连上Oracle,做最基本操作 资源角色 resource 具有程序开发最基本的权限 数据库管理员角色 dba 数据库管理员所有权限
  • 142. 角色卸出数据库角色 exp-full-database 可把数据库整个备份输出的权限 卸入数据库角色 imp-full-database 可把数据库整个备份恢复输入的权限
  • 143. 创建角色创建角色 CONNECT system/security CREATE ROLE connect_role; CREATE ROLE insert_role IDENTIFIED BY insert_data;;
  • 144. 授予角色特权CONNECT system/security GRANT CREATE SESSION TO connect_role; CONNECT aca/asiainfo GRANT insert ON dept TO insert_role; GRANT update ON emp TO update_role;
  • 145. 授予用户角色 CONNECT system/security GRANT connect_role,update_role TO username; CONNECT username/passwd update username.emp set salary=salary+100 where salary<2000;
  • 146. 禁止角色CONNECT username/passwd SET ROLE NONE; update aca.auths set salary=salary+100;
  • 147. 激活角色SET ROLE update_role IDENTIFIED BY update_data; update username.emp set salary=salary+100;
  • 148. 设置用户的缺省角色CONNECT system/security ALTER USER username DEFAULT ROLE connect_role;
  • 149. 修改和删除角色修改角色 ALTER ROLE 删除角色 DROP ROLE
  • 150. 完整性约束主码完整性约束 非空完整性约束 唯一完整性约束 check完整性约束 引用完整性约束
  • 151. 完整性约束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) );
  • 152. 数据定义语言(DDL)建立DB结构(DB,表空间) 建立DB对象 TABLE,VIEW,CLUSTER,INDEX 实现分布式DB机制(数据透明性) VIEW,同义词,DB链,快照,快照日志 安全性控制 用户,角色,授权,环境文件,审计 完整性控制 完整性约束,触发器 提供应用处理 过程,函数,包
  • 153. 数据定义语言命令表空间 表 视图 索引
  • 154. 会话控制命令ALTER SESSION命令 SET ROLE命令系统控制命令ALTER SYSTEM命令
  • 155. 视图结构 create view alter view drop view 内容 insert update delete
  • 156. 索引结构 create index alter index drop index reindex