oracle入门知识 一个表空间只能属于一个数据库每个数据库最少有一个控制文件(建议3个,分别放在不同的磁盘上) 每个数据库最少有一个表空间(system表空间) 建立system表空间的目的是尽量将目的相同的表存放在一起,以提高使用效率,只应存放数据字典 每个数据库最少有两个联机日志组,每组最少一个联机日志文件 一个数据文件只能属于一个表空间一个数据文件一旦被加入到一个表空间中,就不能再从这个表空间中移走,也不能再加入到其他表空间中 建立新的表空间需要建立新的数据文件 commit后,数据不一定立即写盘(数据文件) 一个事务即使不被提交,也会被写入到重做日志中。
oracle server可以同时启动多个数据库 一套操作系统上可以安装多个版本的oracle数据库系统(unix可以,nt不可以) 一套oracle数据库系统中可以有多个oracle数据库及其相对应的实例。
仅使用权限、角色、视图甚至细粒度安全策略建立访问控制系统还不能保证数据库的安全。
因此,开启审计数据库的使用能让我们知道访问控制机制是否确实像所希望的那样工作。 审计分为标准审计和细粒度审计,标准审计基于语句级、权限级和对象级。
而细粒度审计涉及某种粒度的数据访问。 比如某个经理应该能够看到为他工作的雇员工资有关信息。
那么,怎样才能知道这位经理是否还查看了他的顶头上司的工资信息?是否要审计这位经理的所有的select语句?这个时候利用细粒度审计 (FGA)可以只审计一个表种的某些行,还可以将FGA作为一种侵入检测装置。 1。
启用审计 alter system set audit_trail = DB scope = spfile; 有些网站上写可以scope = both,但是实际修改时无法修改指定的类型,只能修改到spfile重启实例,还望达人指教。 audit_trail主要有如下几个值: NONE:10g的默认值,表示禁用数据库审计; OS:将审计记录写到一个操作系统文件中。
Examda提示: 写入的目录由audit_file_dest参数指定,但是注意:在Windows NT下(我是XP),审计记录不启用这个参数,而是直接写道本地管理日志,需要到管理中查看。 DB:将审计记录写入数据库审计跟踪,棵视为DBA_AUDIT_TRAIL(存储在SYS。
AUD$表中)。启用这个参数后注意将相关的几张表以及索引从system表空间下改到另一个表空间。
select * from dba_tables t where t。 table_name = 'AUD$'; select * from dba_tables t where t。
table_name = 'AUDIT$'; select * from dba_tables t where t。table_name = 'AUDIT_ACTIONS'; alter table aud$ move tablespace TBS_PM; alter table AUDIT$ move tablespace TBS_PM; alter table AUDIT_ACTIONS move tablespace TBS_PM; alter index I_aud1 rebuild tablespace TBS_Index; alter index i_audit rebuild online tablespace TBS_Index; alter index i_audit_actions rebuild online tablespace TBS_Index; 另有DBExtened,XML这里不做介绍了,常用的就是以上3个。
2。修改AUDIT_TRAIL后,重启实例,然后指定审计的表和活动。
create table test_audit ( col1 varchar2 (10) ); audit update on test_audit; audit insert on test_audit; insert into test_audit(col1) values ('dfasd3424'); update test_audit t set t。 col1 = '132rf'; commit; select * from dba_common_audit_trail; 1 Standard Audit 19330 8 1 15-9月 -08 12。
07。32。
343000 上午 +08:00 PREMOBILE PAUL_XI\Administrator WORKGROUP\PAUL_XI 1416:4828 PAUL_XI 0 PREMOBILE TEST_AUDIT 103 SESSION REC 05002F009C0A0000 0 0 NONE ------S--------- 2 Standard Audit 19353 33 1 15-9月 -08 10。 21。
02。328000 上午 +08:00 PREMOBILE PAUL_XI\Administrator WORKGROUP\PAUL_XI 1416:2348 PAUL_XI 0 PREMOBILE TEST_AUDIT 103 SESSION REC 09000F00DA0A0000 0 0 NONE ------S---S----- 3。
为审计使用系统级触发器(个人认为这个已经不是Audit审计功能,而仅仅是触发器) 创建数据库启动触发器 create table logon_audit ( user_id varchar2(30), sess_id number (10), logon_time date, logoff_time date, host varchar2(20) ); create or replace trigger logon_audit_trig after logon on database begin insert into logon_audit values(user,sys_context('userenv','sessionid'),sysdate,null,sys_context('userenv','host')); commit; end; select * from logon_audit; 1 PREMOBILE 19327 2008-9-14 23:51:22 WORKGROUP\PAUL_XI 2 PREMOBILE 19328 2008-9-14 23:51:35 WORKGROUP\PAUL_XI 3 SYSMAN 0 2008-9-14 23:49:44 PAUL_XI 4 SYSMAN 0 2008-9-14 23:50:49 PAUL_XI。
1、首先必须要看一本入门的书。
如果你以前有其他数据库的经验(比如sql语言的经验),则重点关注oracle的基本概念、oracle数据库管理的基本知识、与其他数据库不同的地方等,就比较容易的。2、然后自己找一个测试环境做实验。
如果没有测试环境,可以找一个windows机器,自己搭一个,图形化的安装界面,很方便。3、接下来就看你要学习的方向了:是侧重于数据库管理(DBA)还是数据库应用程序开发?根据方向,自己选择多做针对性的实验、练习。
祝你学习顺利。手码了这么多,如果能帮到你,请采纳最佳。
游标是什么: 游标字面理解就是游动的光标。
用数据库语言来描述:游标是映射在结果集中一行数据上的位置实体,有了游标用户就可以访问结果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作,例如提取当前行的数据等等。 游标的分类: 显式游标和隐式游标 显示游标的使用需要4步: 1。
声明游标 CURSOR mycur(vartype number) is select emp_no,emp_zc from cus_emp_basic where com_no = vartype; 2。打开游标 open mycur(000627) 注:000627:参数 3。
读取数据 fetch mycur into varno,varprice; 4。关闭游标 close mycur; 游标的属性 oracle 游标有4个属性: %ISOPEN , %FOUND , %NOTFOUND, %ROWCOUNT %ISOPEN 判断游标是否被打开,如果打开%ISOPEN 等于true,否则等于false %FOUND %NOTFOUND 判断游标所在的行是否有效,如果有效,则%FOUNDD等于true,否则等于false %ROWCOUNT 返回当前位置为止游标读取的记录行数。
示例: set serveroutput on; declare varno varchar2(20); varprice varchar2(20); CURSOR mycur(vartype number) is select emp_no,emp_zc from cus_emp_basic where com_no = vartype; begin if mycur%isopen = false then open mycur(000627); end if; fetch mycur into varno,varprice; while mycur%found loop dbms_output。 put_line(varno||','||varprice); if mycur%rowcount=2 then exit; end if; fetch mycur into varno,varprice;。
1、参数文件:包括大量影响Oracle数据库实例功能的设定, 如以下设定: 。
数据库控制文件的定位 。Oracle用来缓 存从磁盘上读取的数据的内存数量 。
默认的优化程序的选择。 和数据库文件相关,执行两个重要的功能 1〉为数据库指出控制文件 2〉为数据库指出归档日志的目标。
2、归档文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。 3、口令文件:认证哪些用户有权限启动和关闭Oracle例程。
逻辑结构(表空间、段、区、块) 表空间:是数据库中的基本逻辑结构,一系列数据文件的集合。 段:是对象在数据库中占用的空间。
区:是为数据一次性预留的一个较大的存储空间。 块:ORACLE最基本的存储单位,在建立数据库的时候指定。
4、内存分配(SGA和PGA) SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。 它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。
PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反,PGA 是只被一个进程使用的区域,PGA 在创建进程时分配,在终止进程时回收。 。
结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途径,而是简单地调用相应语句来直接取得结果即可。
显然,这种不关注任何实现细节的语言对于开发者来说有着极大的便利。 然而,有些复杂的业务流程要求相应的程序来描述,这种情况下4GL就有些无能为力了。
Oracle L/SQL的出现正是为了解决这一问题,Oracle PL/SQL是一种过程化语言,属于第三代语言,它与C、C++、Java等语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑。 一、编程基础知识 1。
程序结构 Oracle PL/SQL程序都是以块(block)为基本单位,整个Oracle PL/SQL块分三部分:声明部分(用declare开头)、执行部分(以 begin开头)和异常处理部分(以exception开头)。 其中执行部分是必须的,其他两个部分可选。
无论Oracle PL/SQL程序段的代码量有多大,其基本结构就是由这三部分组成。 2。
控制结构 Oracle PL/SQL程序段中有三种程序结构:条件结构、循环结构和顺序结构。 1) 条件结构 与其它语言完全类似,语法结构如下: if condition then statement1 else statement2 end if ; 2)循环结构 这一结构与其他语言不太一样,在PL/SQL程序中有三种循环结构: a。
loop … end loop; b。while condition loop … end loop; c。
for variable in low_bound 。 。
upper_bound loop … end loop; 其中的“…”代表循环体。 3)顺序结构 实际就是goto的运用,不过从程序控制的角度来看,尽量少用goto可以使得程序结构更加的清晰。
DATE和BOOLEANdatatype range description BOOLEAN TRUE/FALSE 存储逻辑值TRUE或FALSE,无参数 DATE 01/01/4712 BC 存储固定长的日期和时间值,日期值中包含时间 LOB数据类型 LOB(大对象,Large object) 数据类型用于存储类似图像,声音这样的大型数据对象,LOB数据对象可以是二进制数据也可以是字符数据,其最大长度不超过4G。
LOB数据类型支持任意访问方式,LONG只支持顺序访问方式。LOB存储在一个单独的位置上,同时一个LOB定位符(LOB locator)存储在原始的表中,该定位符是一个指向实际数据的指针。
在PL/SQL中操作LOB数据对象使用ORACLE提供的包DBMS_LOB。 LOB数据类型可分为以下四类: 。
BFILE 。 BLOB 。
CLOB 。 NCLOB 操作符 与其他程序设计语言相同,PL/SQL有一系列操作符。
操作符分为下面几类: 。 算术操作符 。
关系操作符 。 比较操作符 。
逻辑操作符 算术操作符如表4所示operator operation + 加 - 减 / 除 * 乘 ** 乘方 关系操作符主要用于条件判断语句或用于where子串中,关系操作符检查条件和结果是否为true或false,表5是PL/SQL中的关系操作符operator operation 大于操作符 >= 大于或等于操作符 = 等于操作符 != 不等于操作符 不等于操作符 := 赋值操作符 表6 显示的是比较操作符operator operation IS NULL 如果操作数为NULL返回TRUE LIKE 比较字符串值 BETWEEN 验证值是否在范围之内 IN 验证操作数在设定的一系列值中 表7。 8显示的是逻辑操作符operator operation AND 两个条件都必须满足 OR 只要满足两个条件中的一个 NOT 取反 执行部分 执行部分包含了所有的语句和表达式,执行部分以关键字BEGIN开始,以关键字EXCEPTION结束,如果EXCEPTION不存在,那么将以关键字END结束。
分号分隔每一条语句,使用赋值操作符:=或SELECT INTO或FETCH INTO给每个变量赋值,执行部分的错误将在异常处理部分解决,在执行部分中可以使用另一个PL/SQL程序块,这种程序块被称为嵌套块 所有的SQL数据操作语句都可以用于执行部分,PL/SQL块不能再屏幕上显示SELECT语句的输出。 SELECT语句必须包括一个INTO子串或者是游标的一部分,执行部分使用的变量和常量必须首先在声明部分声明,执行部分必须至少包括一条可执行语句,NULL是一条合法的可执行语句,事物控制语句COMMIT和ROLLBACK可以在执行部分使用,数据定义语言(Data Definition language)不能在执行部分中使用,DDL语句与EXECUTE IMMEDIATE一起使用或者是DBMS_SQL调用。
执行一个PL/SQL块 SQL*PLUS中匿名的PL/SQL块的执行是在PL/SQL块后输入/来执行,如下面的例子所示:declare v_comm_percent constant number:=10;begin update emp set comm=sal*v_comm_percent where deptno=10; endSQL> /PL/SQL procedure successfully completed。 SQL>。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:2.984秒