Oracle安全全接触(上)
随着计算机的普及以及网络的发展,数据库已经不再仅仅是那些程序员所专有的话题。而Oracle数据库更是凭借其性能卓越,操作方便灵活的特点,在数据库的市场中已经占据了一席之地。但是同样随着网络技术的不断进步,数据信息的不断增加,数据安全已经不再是以前的“老生长谈”,也更不是以前书本上那些“可望不可及”的条条框框。
或许很久以前,大家都觉得Oracle数据库的安全并不存在隐患,因为Oracle公司在去年11月份开始促销其数据库软件时提出的口号是“只有Oracle9i能够做到绝对安全”。但是不管它这么说是为了促销,还是为了扩大知名度,总之伴去年12 月份,英国的安全专家 David Litchfield 发现的9iAS 中存在的程序错误导致的缓冲溢出漏洞以及后来,PenTest Limited 和 eEye Digital Security 各自提出了一个小的漏洞,所有使用Oracle公司产品的人都不由地紧张了原本松弛的大脑--这个对于用户来说,毕竟关系到了自己的“身家性命”。
下面笔者将带着大家走进Oracle数据安全的世界。由于笔者水平有限,所以不足之处在所难免,望大家不吝赐教。
(一)Oracle数据库的一些基本常识
这里仅仅是为了以后的安全奠定一些基础,因为我们后面要用到它们。
1.Oracle所包含的组件:
在 Oracle,数据库是指整个 Oracle RDBMS 环境,它包括以下组件:
·Oracle 数据库进程和缓冲(实例)。
·SYSTEM 表空间包含一个集中系统类目,它可以由一个或多个数据文件构成。
·其它由数据库管理员 (DBA)(可选)定义的表空间,每个都由一个或多个数据文件构成。
·两个以上的联机恢复日志。
·归档恢复日志(可选)。
·其它文件(控制文件、Init.ora、Config.ora 等)。
每个 Oracle 数据库都在一个中央系统类目和数据字典上运行,它位于SYSTEM 表空间。
2.关于“日志”
Oracle数据库使用几种结构来保护数据:数据库后备、日志、回滚段和控制文件。下面我们将大体上了解一下作为主要结构之一的“日志”:
每一个Oracle数据库实例都提供日志,记录数据库中所作的全部修改。每一个运行的Oracle数据库实例相应地有一个在线日志,它与Oracle后台进程LGWR一起工作,立即记录该实例所作的全部修改。归档(离线)日志是可选择的,一个Oracle数据库实例一旦在线日志填满后,可形成在线日志归档文件。归档
相关文档:
今天做了1个数据导入需求,文本记录有12万多条,TXT文件大小6M多,因为以前都是用oracle的text import方式导入,刚试验了一下,不灵验,当导入到2万多条的时候,PLSQL就当掉了,走不动了。
因为考虑到1次导入,所有决定采用SQLLOADER的方式。 ......
Oracle 3 个主要的内存结构:
系统全局区(System Global Area,SGA):这是一个很大的共享内存段,几乎所有Oracle
进程都要访问这个区中的某一点。
进程全局区(Process Global Area,PGA):这是一个进程或线程专用的内存,其他进程/
线程不能访问。
用户全局区(User Global Area,UGA):这个内存区与 ......
Oracle创建表时,常遇到先删除后创建的情况,而它又没有drop table... if exists语法。为此可以使用user_objects数据字典和动态sql语句实现类似的功能,如下所示:
create or replace procedure proc_dropifexists(
p_table in varchar2
) is
v_count number(10);
begin
&nbs ......
最近在项目报表中需要一个查询语句,用来统计符合某一列条件的其它几列的个数
比如有下面一个表结构:
需要在列D后面增加一列,统计在列A不为空,并且列B、C、D不为空的个数
经过自己试验,查找帮助,总算实现了上面的查询。
&nb ......