데이터 베이스 MySQL 튜토리얼 Oracle8的不安全因素及几点说明

Oracle8的不安全因素及几点说明

Jun 07, 2016 pm 03:37 PM
아니요 안전하지 않다 요인 설명하다

Oracle8的不安全因素及几点说明 —- 作为对象关系型数据库的杰出代表,Oracle无疑是最具实力的。无论是在数据库的规模,多媒体数据类型的支持,SQL操作复制的并行性还是在安全服务方面,Oracle均比SYBASE、Informix强许多,加上其最新版本Oracle8.0.4更是增

Oracle8的不安全因素及几点说明

—- 作为对象关系型数据库的杰出代表,Oracle无疑是最具实力的。无论是在数据库的规模,多媒体数据类型的支持,SQL操作复制的并行性还是在安全服务方面,Oracle均比SYBASE、Informix强许多,加上其最新版本Oracle8.0.4更是增强了这方面的特性,而且还引入了一些新的特性,比如:数据分区(Data Partitioning)、对象关系技术(Object Relational Technology)、唯索引表(Index only tables)、连接管理器(Connection Manager)[NET8特性]、高级队列(Advanced Quening)等,所以有一种说法:Oracle8是适用于如Peoplesoft,SAP和Baan等封装式应用系统最好的数据库引擎。

—- 虽然Oracle8有许多的优点,但正如微软的WINDOWS系统也会死机一样,任何再好的软件也有他的缺陷,一个优秀的软件不可能就是十全十美,他只是避免了大多数常见的或者可能被考虑到的问题,而一些不容易被发现却非常致命的问题往往会被疏忽掉。Oracle8也同样存在着不安全的因素,许多正在想尽快升级到Oracle8的Oracle7.1、Oracle7.2、Oracle7.3用户不能不考虑到这个因素。当然,这个不安全因素并不是一下子就发现的,而是我们在对一个非常庞大的表进行管理时发现的,这种隐患在使用Oracle创建的小型或者中型数据库中可能不会出现或根本无法发现,因为Oracle8独有的特性已经将这种隐患降低到最低的程度,你大可放心你的数据库系统的安全。

—- 我们安装的Oracle8数据库是工作于主机-终端方式下的,系统主机采用的是四台HP-9000小型机、1.5G的内存。建库初期时设定的最大事务数是按Oracle8的默认取值[这也是Oracle7的默认取值]取的:块值为2K,事务数为32(对于一个要处理非常庞大的数据库时,一般我们设定的块值要大于2K,至少应为4K或者16K,当然这还与主机的CPU能力和I/0能力值有关),并在建库时没有进行分区建表,这也许就为以后数据库出问题留下了隐患。由于日访问数据库的用户非常多,而且对同一表操作的用户数量太大,致使那个表经常被锁住,不断有用户抱怨他们进不了系统,主机发送的数据包太慢,经常报ORA-600的错误。起初我们以为是系统网络问题,但这种可能性比较小,因为我们发现系统CPU峰值经常在90%多,空闲很小,数据库资源太忙,同时有十多个人锁住一个大表进行操作,自然一部分用户就无法进入系统,对此我们写了如下的SQL语句对锁表用户进行监控:

SELECT OBJECT_ID,SESSION_ID,SERIAL#,

ORACLE_USENAME,OS_USER_NAME,S_PROCESS

FROM V$LOCKED_OBJECT 1,

V$SESSION S WHERE 1.SESSION_ID=S.SID;

—- 也许有的人会问为什么不用如下的SQL语句进行查询:

SELECT a.username,a.sid,a.serial#,b.id1,

c.sql_text from v$session a,

V$lock b,v$sqltext c where a.lockwait=b.kaddr and

a. sql_address=c.address and a.sql_hash_value=c.hash_value;

—- 以上两个SQL语句都会查询返回当前被锁住的用户列表,但第二个SQL语句由于加入了sql_text从而使这个查询变得非常的慢长,特别是在有许多用户同时对数据库进行操作时,建议不用,第一个SQL 语句会在很短的时间内查询出是谁在锁表,从而有利于对数据库的管理,一但有用户进入不了,我们就马上杀死其锁进程[SID,SERIAL#],SQL语句如下:ALTER SYSTEM KILL SESSION ‘SID,SERIAL#’,但这并不是解决问题的根本方法,只能暂时缓解一下;另外我们还发现回滚段时常有“online”与“offline”的现象,于是我们又考虑是否是回滚段引起的问题:因为我们一但对大的回滚段进行操作,马上就会有用户反映无法进入。我们知道回退段的大小直接依赖于数据库的活动状态,而每一个EXTENTS都应具有相同的值(Oracle的推荐)[INITIAL EXTENTS的值可以从2K(32)、4K(69)、8K(142)、16K、32K等列表中选择],这将保证你删掉一个区的时候,你可以重新使用它的空间而不会造成浪费,另外MINEXTENTS应设为20,这将不会使回退段扩展另一个EXTENT时用到正在被活动的事务所使用的空间,因而我们就可以据此来确定回退段大小,查出数据库正常运行时所需回滚段的尺寸,为此我们重新设置了回退段的OPTIMAL参数[事实是OPTIMAL的值并不足引起数据库出错],增大了OPTIMAL的值,使用命令SET TRANSACTION USE ROLLBACK SEGMENT为系统指定了一个大的回退段[注意OPTIMAL参数要足够大以使ORACLE不需经常回缩和重新分配EXTENTS,如果设得小于最小覆盖值,性能将由于额外的段重设置而下降,对于一个要执行长查询的系统,OPTIMAL应设成足够大以避免ORA-1555,“Smapshot too old”的错误,而对于运行小的事务,OPTIMAL应设得小一些,使回退段足够小以便放于内存中,这将提高系统性能。],但我们发现这样做后,ORA-600的错误依然出现,而且锁表越来越严重;我们又考虑暂时锁住这个表,不让用户进入,先把用户的锁进程全部杀完再看,由于一开始就采用了主机-终端的工作方式,因而根本就无法清除得完,除非断掉外部的所有网络连接,但那样无疑是重启数据库,最终我们选择了重启数据库。

—- 重启数据库后系统资源一下子得以释放,用户明显感觉速度上来了,能够保证正常使用,就在我们认为系统可能是因为长期没有DOWN机,用户登录数过多造成数据库死锁的时候,一个非常严重的问题出现了,那个表中的一个数据无法进行UPDATE,一UPDATE就报ORACLE内部代码错误,当时我们并没在意,但是不久,我们又发现另一表中编号有重复的现象,根据ORACLE8的数据唯索引表性,这种现象应该根本不会存在,因为我们在这个表中只建立了唯一索引,于是我们电话询问ORACLE公司的技术工程师,也许ORACLE的技术工程师们也是第一次遇到这种问题,他们的回答是数据字典太老,数据索引坏掉,建议重建索引,并把问题向亚太反映。在ORACLE公司的技术工程师的指导下,我们重建了该表,并重新建立了索引,在重建索引过程中,开始几次都不成功,而且无法DROP掉先前的表,经过仔细的查找,我们发现ORACLE8中的确有索引重复的现象,一个表中有两条重复的索引,直接导致数据库HANG,不能访问,但查看系统状态、进程、LISTENER却都正常,从日志文件来看,文件过小(7MB),CHECK POINT频繁,影响到了系统的性能,通过以上调整后,数据库问题暂时缓解了,可以做UPDATE,但是ORACLE的内部代码错误却依然存在,只是暂时还不会影响到我们对数据库的使用,而回滚段开始出现“online rollback segment”的问题,更加令人不解的是数据库居然出现了自动DOWN机的现象,于是我们再次询问ORACLE公司的技术工程师,他们的答复是ORACLE已经注意到了ORACLE8.0.4版本的一些问题,他们将会给数据库打PATCH,希望能够解决到这些问题,但是考虑到给数据库打一个PATCH,将会把所有的数据都要EXPORT出来,这将是一个非常危险的操作,而且所有主机上的程序都要重新编译一到,没有一个星期的时间是无法做好的,而那是根本不可能的事情,因而我们现在还在等待ORACLE公司一个更好的解决办法。

说明

—- 以上问题可能是ORACLE的一个BUG,但任何软件都有它不完善的一面,否则又何必出什么补丁了,有了补丁肯定会比没有补丁强,但是我们在设计一个系统时也一定要考虑到以下的一些方面:

—- 1、 主机系统的CPU能力与I/0能力:HP偏重于I/0能力,CPU能力不强,你的数据库就应该尽量避免让CPU占用率太大;DEC偏重于CPU能力,I/0能力不强,你的数据库就可以考虑适当增大某些占用CPU参数的设置;SUN的CPU能力与I/0能力差不多,你的数据库就应该考虑平衡参数,过大过小都不好。

—- 2、 增大日志文件的SIZE,至少一会低于8MB,日志文件过小会导致CHECK POINT频繁,从而影响到系统的性能。

—- 3、 回滚段最好保持一个比较合理的值,对一些较大的回滚段可适当增加MINEXTENTS,并设置OPTIMAL,保证一般事物处理无需经常动态分配空间与及时回收空间。

—- 4、 要充分利用CPU系统资源及提高CPU的命中率,可适当增大log_simultaneous_copies,db_block_latches,db_writes的设置。

—- 5、 适当增加db_block_buffer与share_poll_size的SIZE,以提高BUFFER值,增加内存,尽快提高BUFF及SQL的命中率。

—- 6、 主机-终端方式尽管可以便于数据维持,但主机-终端方式却造成主机负荷太重,建议采用客户-服务端方式建系统。

爱分享 ? Oracle8的不安全因素及几点说明

http://www.ihref.com/read-11284.html

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

로컬 저장소가 안전하지 않은 이유는 무엇입니까? 로컬 저장소가 안전하지 않은 이유는 무엇입니까? Oct 10, 2023 pm 05:38 PM

로컬 저장소가 안전하지 않은 이유는 암호화되지 않은 데이터, XSS 공격, CERF 공격, 용량 제한 등입니다. 세부 소개: 1. 데이터는 암호화되지 않습니다. Localstorage는 사용자의 브라우저에 데이터를 일반 텍스트로 저장하므로 민감한 정보인 경우 누구나 쉽게 액세스하고 읽을 수 있습니다. 로컬 저장소에 저장되어 있으면 해커나 악의적인 사용자가 이 정보 등을 쉽게 얻을 수 있습니다.

컴퓨터 속도에 영향을 미치는 주요 요인은 무엇입니까? 컴퓨터 속도에 영향을 미치는 주요 요인은 무엇입니까? Dec 07, 2020 am 10:45 AM

컴퓨터의 실행 속도에 영향을 미치는 주요 요인은 중앙 프로세서의 주요 주파수와 메모리의 액세스 주기입니다. 주요 주파수는 CPU의 클럭 주파수입니다. 각 클록 신호 주기는 한 단계의 동작을 완료합니다. 주 주파수는 CPU 속도를 상당 부분 반영합니다.

Firefox에서 링크가 안전하지 않다고 표시되면 어떻게 해야 합니까? Firefox에서 링크가 안전하지 않다고 표시되면 어떻게 해야 합니까? Mar 14, 2024 pm 08:04 PM

Firefox는 또한 많은 친구들이 자주 사용하는 브라우저 중 하나이므로 자주 방문하는 페이지를 열 때 링크가 안전하지 않다는 메시지가 표시되며 사용자는 계속 방문하기 전에 위험을 감수해야 합니다. 이를 해결하는 방법에 대해 오늘 편집자는 모든 사람에게 구체적인 작업 단계를 살펴보도록 안내할 것입니다. 오늘의 소프트웨어 튜토리얼 내용이 대다수의 사용자에게 도움이 될 수 있기를 바랍니다. Firefox 브라우저에 링크가 안전하지 않다는 메시지가 표시됩니다. 해결 방법: 1. 소프트웨어에 들어가서 페이지 상단의 주소 표시줄에 "about:config"를 입력하고 Enter를 눌러 들어갑니다. 2. 이때 경고가 표시됩니다. '위험을 감수하고 계속' 버튼을 클릭하세요. 3. 입장하다

PHP 함수의 실행 순서에 영향을 미치는 요소는 무엇입니까? PHP 함수의 실행 순서에 영향을 미치는 요소는 무엇입니까? Apr 17, 2024 pm 02:09 PM

PHP 함수의 실행 순서는 다음 요소의 영향을 받습니다. 함수 정의: 나타나는 순서대로 함수 호출 실행: 트리거 코드 실행 함수 매개변수: 순서대로 값 전달 글로벌 변수: 함수 내 수정 후 변수 값 업데이트

C/C++의 strncpy가 안전하지 않다고 생각하는 이유는 무엇입니까? C/C++의 strncpy가 안전하지 않다고 생각하는 이유는 무엇입니까? Sep 13, 2023 am 09:17 AM

strncpy() 함수는 소스에서 대상으로 지정된 수의 문자를 복사하는 데 사용됩니다. 다음은 strncpy() char*strncpy(char*destination,char*source,size_tn)의 구문입니다. 여기서 Destination은 소스 문자열이 복사될 대상 배열에 대한 포인터이고 source는 복사할 문자입니다. Copyed String, n은 소스 문자열에서 복사할 최대 문자 수입니다. strncpy() 함수는 소스 문자열의 처음 n자에 NULL 문자가 없으면 대상 문자열이 NULL로 끝나지 않기 때문에 안전하지 않습니다. 다음은 C++의 strncpy() 함수를 보여주는 프로그램입니다.

go는 C언어에서 예약어인가요? go는 C언어에서 예약어인가요? Mar 15, 2024 pm 05:24 PM

심층 분석: go는 C 언어에서 예약어인가요? C 언어에는 예약어(ReservedKeywords)가 있습니다. 이러한 키워드는 프로그래밍에서 특별한 기능을 가지며 식별자 명명으로 사용할 수 없습니다. 이러한 예약어에는 다양한 데이터 유형, 제어문, 흐름 제어 등이 포함되며 C 언어에서 중요한 역할을 합니다. 예를 들어 int, char, if, else 등은 모두 C 언어의 예약어입니다. 그렇다면 "go"라는 단어는 C 언어의 예약어인가요?

PHP 함수 소개: shuffle() 함수 PHP 함수 소개: shuffle() 함수 Nov 04, 2023 am 08:01 AM

PHP 함수 소개: shuffle() 함수 PHP 프로그래밍에서 shuffle() 함수는 배열 요소의 순서를 방해하는 데 사용되는 매우 유용한 함수입니다. 이 기사에서는 독자에게 shuffle() 함수의 구체적인 사용법을 소개하고 독자가 이 함수를 더 잘 이해하고 적용하는 데 도움이 되는 몇 가지 코드 예제를 제공합니다. shuffle() 함수의 구문은 다음과 같습니다: shuffle(array&$array):bool 이 함수는 배열 매개변수 $array 및

끈끈한 포지셔닝의 요인은 무엇입니까? 끈끈한 포지셔닝의 요인은 무엇입니까? Nov 21, 2023 pm 05:07 PM

고정 위치 지정 요소에는 스크롤 위치, 상대 위치 지정 및 고정 위치 지정, 컨테이너 요소 및 고정 제약 조건 요소, 스크롤 중 요소 설정 등이 포함됩니다. 자세한 소개: 1. 스크롤 위치: 고정 포지셔닝은 사용자의 스크롤 위치를 기준으로 배치됩니다. 2. 상대 포지셔닝 및 고정 포지셔닝: 고정 포지셔닝은 특정 위치로 스크롤하기 전의 상대 포지셔닝입니다. 3. 컨테이너 요소와 고정 제약 요소: 컨테이너의 개념은 스크롤할 수 있는 조상 요소이고 고정 제약 요소는 고정 위치 지정의 상위 요소입니다. .

See all articles