下面是小编收集整理的狙击Oracle的方法及防范措施,本文共14篇,供大家参考借鉴,欢迎大家分享。
篇1: 狙击Oracle的方法及防范措施
Oracle的销售在向客户兜售其数据库系统一直把它吹捧为牢不可破的,耍嘴皮子容易,兑现起来可就不那么容易了,
狙击Oracle的方法及防范措施
,
不管什么计算机系统,人们总能够找到攻击它的方法,Oracle也不例外。本文将和大家从 的角度讨论 是用哪些方法把黑手伸向了你原以为他们不能
篇2:浅析黑客常用攻击方法与防范措施
浅析黑客常用攻击方法与防范措施
[摘 要]本文首先介绍了网络黑客的定义与起源,其次说明了网络上黑客攻击常用的九种方法,最后简要论述了防范黑客攻击应注意的一些问题。
[关键词]黑客 网络 攻击方法
一、什么是黑客
“黑客”一词有很多定义,大部分定义都涉及高超的编程技术,强烈的解决问题和克服限制的欲望。一般认为,黑客起源于50年代麻省理工学院的实验室中,他们精力充沛,热衷于解决难题。60、70年代,“黑客”一词极富褒义,用于指代那些独立思考、奉公守法的计算机迷,他们智力超群,对电脑全身心投入,从事黑客活动意味着对计算机的最大潜力进行智力上的自由探索,为电脑技术的发展做出了巨大贡献。直到后来,少数怀着不良的企图,利用非法手段获得的系统访问权去闯入远程机器系统、破坏重要数据,或为了自己的私利而制造麻烦的具有恶意行为特征的人慢慢玷污了“黑客”的名声,“黑客”才逐渐演变成入侵者、破坏者的`代名词。
目前黑客已成为一个特殊的社会群体。在欧美等国有不少完全合法的黑客组织,他们在因特网上利用自己的网站介绍黑客攻击手段、免费提供各种黑客工具软件、出版网上黑客杂志,甚至经常召开黑客技术交流会。这使得普通人也很容易下载并学会使用一些简单的黑客手段或工具对网络进行某种程度的攻击,进一步恶化了网络安全环境。
二、黑客常用的攻击方法
我们来研究一下那些黑客是如何找到你计算机中的安全漏洞的,只有了解了他们的常用攻击手段,我们才能采取准确的对策应对这些黑客。
1.获取口令。获取口令有三种方法:一是通过网络监听非法得到用户口令;二是在知道用户的账号后,利用一些专门软件强行破解用户口令;三是在获得一个服务器上的用户口令文件后,用暴力破解程序破解用户口令。
2.放置特洛伊木马程序。特洛伊木马程序可以直接侵入用户的电脑并进行破坏。它常被伪装成工具程序或者游戏等,一旦用户打开了这些程序,它们就会在计算机系统中隐藏一个可以在windows启动时悄悄执行的程序。当您连接到因特网上时,这个程序就会通知黑客,来报告您的IP地址以及预先设定的端口。黑客在收到这些信息后,再利用这个潜伏在其中的程序,就可以任意地修改您的计算机的参数设定、复制文件、窥视你整个硬盘中的内容等,从而达到控制你的计算机的目的。
3.WWW的欺骗技术。在网上用户可以利用各种浏览器访问WEB站点,如阅读新闻、咨询产品价格、订阅报纸、电子商务等等。然而如果黑客将用户要浏览的网页的URL改写为指向黑客自己的服务器,当用户浏览目标网页的时候,实际上是向黑客服务器发出请求,那么黑客就可以达到欺骗的目的了。
4.电子邮件攻击。电子邮件攻击主要表现为两种方式:一是电子邮件轰炸,它是指用伪造的IP地址和电子邮件地址向同一信箱发送数以千计、万计甚至无穷多次的内容相同的垃圾邮件,致使受害人邮箱被“炸”。二是电子邮件欺骗,攻击者佯称自己为系统管理员,给用户发送邮件要求用户修改口令或在貌似正常的附件中加载病毒或其他木马程序。
5.通过一个节点来攻击其他节点。黑客在突破一台主机后,往往以此主机作为根据地,攻击其他主机。他们可以使用网络监听方法,尝试攻破同一网络内的其他主机;也可以通过IP欺骗和主机信任关系,攻击其他主机。
6.网络监听。网络监听是主机的一种工作模式,在这种模式下,主机可以接受到本网段在同一条物理通道上传输的所有信息,而不管这些信息的发送方和接受方是谁。此时,如果两台主机进行通信的信息没有加密,只要使用某些网络监听工具就可以轻而易举地截取包括口令和帐号在内的信息资料。
7.寻找系统漏洞。许多系统都有这样那样的安全漏洞,其中某些是操作系统或应用软件本身具有的,在补丁未被开发出来之前一般很难防御黑客的破坏;还有一些漏洞是由于系统管理员配置错误引起的,这都会给黑客带来可乘之机,应及时加以修正。
8.利用帐号进行攻击。有的黑客会利用操作系统提供的缺省账户和密码进行攻击,例如许多UNIX主机都有FTP和Guest等缺省账户,有的甚至没有口令。黑客用Unix操作系统提供的命令如Finger和Ruser等收集信息,不断提高自己的攻击能力。
9.偷取特权。利用各种特洛伊木马程序、后门程序和黑客自己编写的导致缓冲区溢出的程序进行攻击,前者可使黑客非法获得对用户机器的完全控制权,后者可使黑客获得超级用户的权限,从而拥有对整个网络的绝对控制权。
三、防范措施
1.经常做telnet、ftp等需要传送口令的重要机密信息应用的主机应该单独设立一个网段,以避免某一台个人机被攻破,造成整个网段通信全部暴露。
2.专用主机只开专用功能。网管网段路由器中的访问控制应该限制在最小限度,关闭所有不必要的端口。网络配置原则是“用户权限最小化”,关闭不必要或者不了解的网络服务,不用电子邮件寄送密码。
3.对用户开放的各个主机的日志文件全部定向到一个系统日志服务器上,集中管理。该服务器可以由一台拥有大容量存贮设备主机承当。定期检查系统日志文件,在备份设备上及时备份。制定完整的系统备份计划,并严格实施。
4.设立专门机器使用ftp或WWW从互联网上下载工具和资料,提供电子邮件、WWW、DNS的主机不安装任何开发工具,避免攻击者编译攻击程序。
5.下载安装最新的操作系统及其它应用软件的安全和升级补丁,安装几种必要的安全加强工具,限制对主机的访问,加强日志记录,对系统进行完整性检查,定期检查用户的脆弱口令,并通知用户尽快修改。
6.制定详尽的入侵应急措施以及汇报制度。发现入侵迹象,立即打开进程记录功能,同时保存内存中的进程列表以及网络连接状态,保护当前的重要日志文件,有条件的话,立即打开网段上另外一台主机监听网络流量,尽力定位入侵者的位置。在服务主机不能继续服务的情况下,应该有能力从备份磁盘阵列中恢复服务到备份主机上。
篇3:Python导入oracle数据的方法
作者:Sephiroth 字体:[增加 减小] 类型:
import cx_Oracle dns_tns=cx_Oracle.makedsn(“192.168.0.288”,1521,“skynet”) print dns_tns con = cx_Oracle.connect(‘alibaba‘, ‘zhimakamen‘, dns_tns) cur=con.cursor for index,line in enumerate(file(“f2.csv”)): sql=“”“insert into iq_data_B011F8286A1BA (field1,field2,field3,field4) values (”“” for fields in (line.split(“,”)): sql=sql+“‘”+fields+“‘,” cur.execute(sql[:-1]+“)”) conmit() con.close()
希望本文所述对大家的Python程序设计有所帮助,
篇4:完全卸载Oracle数据库的方法
Oracle是一非常强大的企业级收费数据库,在安装的时候一般按照正常的引导便可以完成,但是较多的朋友并不知道如何删除,因为仅仅按照那个引导删除,是无法进行重装的,
下面就让我们一起来将Oracle删除干净,为重装做好准备。
1、删除服务命令
具体操作方法是:开始--运行--cmd,进入cmd命令行
然后输入: sc delete 服务名
例如: sc delete serv-u 服务器
查询服务输入命令:sc query 服务名
例如:sc query OracleServiceORCL
2、删除oracle注册表信息
cmd命令行输入:regedit
(1)选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口
(2)选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口
(3)选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,删除所有Oracle入口
(4)选择HKEY_LOCAL_MACHINE\SOFTWARE下,删除Oracle目录
(5)选择HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services下,删除所有Oracle项
(6)选择HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services下,删除所有Oracle项
(7)选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下,删除所有Oracle项
(8)选择HKEY_CLASSES_ROOT下,删除所有Oracle项
3、开始->设置->控制面板->系统->高级->环境变量,删除环境变量CLASSPATH和PATH中有关Oracle的设定
4、删除C:\Program Files (x86)\Oracle目录
5、重新启动计算机,重起后才能完全删除Oracle所在目录
篇5:python链接Oracle数据库的方法
作者:秋风秋雨 字体:[增加 减小] 类型:
这篇文章主要介绍了python链接Oracle数据库的方法,实例分析了Python使用cx_Oracle模块操作Oracle数据库的相关技巧,需要的朋友可以参考下
本文实例讲述了python链接Oracle数据库的方法,分享给大家供大家参考。具体如下:
这里使用python链接Oracle数据库需要引用cx_Oracle库
#coding=UTF-8 import cx_Oracle def hello: ‘‘‘Hello cx_Oracle示例: 1)打印数据库版本信息. 2)查询表数据.‘‘‘ conn = cx_Oracle.connect(“obs61”,“obs61”,“tx8i.hp”) cur = conn.cursor() try:print “Oracle Version:%s” % conn.versionprint “Table SUB_POLICY rows:”cur.execute(‘select * from wlan_future_event‘)for row in cur: print row finally:cur.close()conn.close() hello()
希望本文所述对大家的Python程序设计有所帮助,
篇6:完美卸载oracle数据库的方法
数据库每次只要装失败了,卸载都是非常麻烦的,经过多方面收集,现在总结oracle数据库的卸载方法。试过了,OK 。
一、Linux平台 Linux平台下卸载Oracle 非常简单,即:删除Oracle安装目录下的所有文件和文件夹即可。
二、Windows平台
其实这篇文章我主要想就在Windows平台上如何彻底的卸载Oracle进行说明。
因为Oracle在Windows下的卸载颇有一些麻烦,如果不能完全卸载有可能影响将来的再次安装!
常规卸载方法是运行Oracle的自带的卸载程序,可遗憾的是我在卸载时总不能完全卸载,当我再次安装Oracle时,就会出现莫名其妙的问题,
并且这种卸载方式比较麻烦,比较慢,下面我介绍一种比较快并且能够彻底卸载Oracle的方法。
1 .关闭oracle所有的服务。可以在windows的服务管理器中关闭;
2 .打开注册表:regedit 打开路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ 删除该路径下的所有以oracle 开始的服
务名称,这个键是标识Oracle在windows下注册的各种服务!
3 .打开注册表,找到路径: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 删除该oracle目录,该目录下注册着Oracle数据库的软件安装信息,
4 .删除注册的oracle事件日志,打开注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application 删除注册表的
以oracle开头的所有项目。
5 .删除环境变量path中关于oracle的内容。 鼠标右键右单击“我的电脑 -->属性 -->高级 -->环境变量-->PATH 变量。 删除Oracle在该值中的内容。
注意:path中记录着一堆操作系统的目录,在windows中各个目录之间使用分号(;)隔开的,删除时注意。
建议:删除PATH环境变量中关于Oracle的值时, 将该值全部拷贝到文本编辑器中, 找到对应的Oracle的值,删除后,再拷贝修改的串,粘贴到
PATH环境变量中, 这样相对而言比较安全。
6 .重新启动操作系统。 以上1~5个步骤操作完毕后,重新启动操作系统。
7 .重启操作系统后各种Oracle相关的进程都不会加载了。这时删除Oracle_Home下的所有数据。 (Oracle_Home指Oracle程序的安装目录)
8 .删除C:\Program Files下oracle目录。 (该目录视Oracle安装所在路径而定)
9 .删除开始菜单下oracle项,如: C:\Documents and Settings\All Users\「开始」菜单\程序\Oracle - Ora10g 不同的安装这个目录稍有不同。
如果不删除开始菜单下的Oracle相关菜单目录,没关系,这个不影响再次安装Oracle.当再次安装Oracle时,该菜单会被替换。 至此,Windows
平台下Oracle就彻底卸载了。
篇7:简单的Oracle存储过程的创建方法
连接到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
SQL>create or replace procedure get_news(
2 aid in varchar2,atitle in varchar2)
3 as
4 begin
5 select * from cf_news
6 end;
7 /
警告: 创建的过程带有编译错误,
SQL>create or replace procedure get_news(
2 aid in varchar2 ,atitle in varchar2)
3 as
4 beging
5 /
警告: 创建的过程带有编译错误。
SQL>create or replace procedure get_news(
2 aid in varchar2)
3 as
4 begin
5 select * from cf_news;
6 end;
7 /
警告: 创建的过程带有编译错误。
SQL>create or replace procedure get_news
2 as
3 begin
4 select * from cf_news;
5 end;
6 /
警告: 创建的过程带有编译错误。
SQL>show errors;
PROCEDURE GET_NEWS 出现错误:
LINE/COL ERROR
-------- -------------------------------------
4/1 PLS-00428: 在此 SELECT 语句中缺少 INTO 子句
SQL>create or replace procedure get_news
2 as
3 aa number;
4 begin
5 select count(*) into aa from cf_news;
6 end;
7 /
过程已创建,
SQL>create or replace procedure get_news
2 as
3 aa number;
4 begin
5 select count(*) into aa from cf_news;
6 dbms_outpub.put_line('aa='||aa);
7 end;
8 /
警告: 创建的过程带有编译错误。
SQL>show errors;
PROCEDURE GET_NEWS 出现错误:
LINE/COL ERROR
-------- -----------------------------------------
6/1 PLS-00201: 必须说明标识符 'DBMS_OUTPUB.PUT_LINE'
6/1 PL/SQL: Statement ignored
SQL>create or replace procedure get_news
2 as
3 aa number;
4 begin
5 select count(*) into aa from cf_news;
6 dbms_output.put_line('aa='||aa);
7 end;
8 /
过程已创建。
SQL>set serverout on;
SQL>execute get_news;
aa=3
PL/SQL 过程已成功完成。
篇8:误删Oracle数据文件的恢复方法
环境:数据库在Open的状态,然后rm -rf users.dbf (删除users表空间),最后找回users.dbf文件,
在回复的时候,回复的方法跟数据库的版本关系不大(因为是物理文件),只是跟操作系统有一定的关系,如:Red hat Linux , Solaris Linux 等等。
下面进行演示:
删除users表空间.
1、我们首先进入Sqlplus,然后执行SQL语句:
select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/prod/disk4/system01.dbf
/u01/app/oracle/oradata/prod/disk2/undotbs01.dbf
/u01/app/oracle/oradata/prod/disk5/sysaux01.dbf
/u01/app/oracle/oradata/prod/disk5/bigtbs01.dbf
/u01/app/oracle/oradata/prod/disk5/indx01.dbf
/u01/app/oracle/oradata/prod/disk2/users01.dbf
/u01/app/oracle/oradata/prod/disk3/oltp01.dbf
7 rows selected.
SQL>!rm /u01/app/oracle/oradata/prod/disk2/users01.dbf今天尝试了一下,在Linux下删除一个数据文件,然后进行回复。
2、此时,users表空间已经被删除了,我们已经无法在users表空间上建立表了。
尝试在users表空间上建立名字为abcd123的表,已经没法建立了。
SQL>create table abcd123 tablespace users as select * from v$instance;
create table abcd123 tablespace users as select * from v$instance
*
ERROR at line 1:
ORA-01116: error in opening database file 6
ORA-01110: data file 6: '/u01/app/oracle/oradata/prod/disk2/users01.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
3、确认dbwr进程PID
通过命令,我们可以看到当前数据库实例的dbwr的PID。因为我同一台主机上有两个实例,故有2个。
一个为prod,另一个为oms。
$ ps -ef|grep dbw0|grep -v grep
oracle 11872 1 0 21:46 ? 00:00:00 ora_dbw0_prod
oracle 11951 1 0 21:47 ? 00:00:01 ora_dbw0_oms
4、因为dbwr会打开所有数据文件的句柄。所以可以进入proc目录进行查找,格式为:
cd /prod/PID/fd
此处,fd为文件描述符。
[oracle@prod fd]$ cd /proc/11872/fd
[oracle@prod fd]$ ls -l
total 30
lr-x------ 1 oracle dba 64 May 14 22:47 0 ->/dev/null
lr-x------ 1 oracle dba 64 May 14 22:47 1 ->/dev/null
lrwx------ 1 oracle dba 64 May 14 22:47 10 ->/u01/app/oracle/product/10.2.0/db_1/rdbms/audit/ora_11859.aud
lr-x------ 1 oracle dba 64 May 14 22:47 11 ->/dev/zero
lr-x------ 1 oracle dba 64 May 14 22:47 12 ->/dev/zero
lr-x------ 1 oracle dba 64 May 14 22:47 13 ->/u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
lrwx------ 1 oracle dba 64 May 14 22:47 14 ->/u01/app/oracle/product/10.2.0/db_1/dbs/hc_prod.dat
lrwx------ 1 oracle dba 64 May 14 22:47 15 ->/u01/app/oracle/product/10.2.0/db_1/dbs/lkPROD
lrwx------ 1 oracle dba 64 May 14 22:47 16 ->/u01/app/oracle/oradata/prod/disk1/control01.ctl
lrwx------ 1 oracle dba 64 May 14 22:47 17 ->/u01/app/oracle/oradata/prod/disk2/control02.ctl
lrwx------ 1 oracle dba 64 May 14 22:47 18 ->/u01/app/oracle/oradata/prod/disk3/control03.ctl
lrwx------ 1 oracle dba 64 May 14 22:47 19 ->/u01/app/oracle/oradata/prod/disk4/system01.dbf
lr-x------ 1 oracle dba 64 May 14 22:47 2 ->/dev/null
lrwx------ 1 oracle dba 64 May 14 22:47 20 ->/u01/app/oracle/oradata/prod/disk2/undotbs01.dbf
lrwx------ 1 oracle dba 64 May 14 22:47 21 ->/u01/app/oracle/oradata/prod/disk5/sysaux01.dbf
lrwx------ 1 oracle dba 64 May 14 22:47 22 ->/u01/app/oracle/oradata/prod/disk5/bigtbs01.dbf
lrwx------ 1 oracle dba 64 May 14 22:47 23 ->/u01/app/oracle/oradata/prod/disk5/indx01.dbf
lrwx------ 1 oracle dba 64 May 14 22:47 24 ->/u01/app/oracle/oradata/prod/disk2/users01.dbf (deleted)
lrwx------ 1 oracle dba 64 May 14 22:47 25 ->/u01/app/oracle/oradata/prod/disk3/oltp01.dbf
lrwx------ 1 oracle dba 64 May 14 22:47 26 ->/u01/app/oracle/oradata/prod/disk1/temp01.dbf
lrwx------ 1 oracle dba 64 May 14 22:47 27 ->/u01/app/oracle/oradata/prod/disk3/lmtemp201.dbf
lrwx------ 1 oracle dba 64 May 14 22:47 28 ->/u01/app/oracle/oradata/prod/disk4/lmtemp201.dbf
lr-x------ 1 oracle dba 64 May 14 22:47 29 ->/u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
lr-x------ 1 oracle dba 64 May 14 22:47 3 ->/dev/null
lr-x------ 1 oracle dba 64 May 14 22:47 4 ->/dev/null
l-wx------ 1 oracle dba 64 May 14 22:47 5 ->/u01/app/oracle/admin/udump/prod_ora_11859.trc
l-wx------ 1 oracle dba 64 May 14 22:47 6 ->/u01/app/oracle/admin/bdump/alert_prod.log
lrwx------ 1 oracle dba 64 May 14 22:47 7 ->/u01/app/oracle/product/10.2.0/db_1/dbs/hc_prod.dat
l-wx------ 1 oracle dba 64 May 14 22:47 8 ->/u01/app/oracle/admin/bdump/alert_prod.log
lrwx------ 1 oracle dba 64 May 14 22:47 9 ->/u01/app/oracle/product/10.2.0/db_1/dbs/lkinstprod (deleted)
[oracle@prod fd]$
我们可以清楚的看到 /u01/app/oracle/oradata/prod/disk2/users01.dbf (deleted) 的字样,表示此文件已经被删掉了,
5、进行恢复
通过cp命令,把语句柄拷贝回原来的位置。
cp 24 /u01/app/oracle/oradata/prod/disk2/users01.dbf
此处的24为其给出的编号。
6、进入recovery
执行以下SQL命令:
SQL> alter database datafile 6 offline;
Database altered.
SQL>recover datafile 6;
Media recovery complete.
SQL>alter database datafile 6 online;
Database altered.
SQL>
至此,回复完成!
7、测试
我们重新尝试在users 表空间上建立一个table
SQL>create table abcd123 tablespace users as select * from v$instance;
Table created.
SQL>select * from abcd123;
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION STARTUP_T STATUS PAR THREAD# ARCHIVE LOG_SWITCH_WAIT
----------------- --------- ------------ --- ---------- ------- ---------------
LOGINS SHU DATABASE_STATUS INSTANCE_ROLE ACTIVE_ST BLO
---------- --- ----------------- ------------------ --------- ---
1 prod
prod
10.2.0.1.0 16-APR-12 OPEN NO 1 STARTED
ALLOWED NO ACTIVE PRIMARY_INSTANCE NORMAL NO
SQL>
我们可以发现,建立成功了,说明回复成功,
篇9:完全删除Oracle数据库的方法数据库
很多朋友只用了 oracle 的删除,但很多情况下,他会发现重新安装时,点了下一步安装界面就消失了,往往无奈下只好重装系统,其实只是你 数据库 没删干净,删干净就不会出现这种情况了, 实现方法: 1、开始->设置->控制面板->管理工具->服务 停止所有 Oracle
很多朋友只用了oracle的删除,但很多情况下,他会发现重新安装时,点了下一步安装界面就消失了,往往无奈下只好重装系统,其实只是你数据库没删干净,删干净就不会出现这种情况了。
实现方法:
1、开始->设置->控制面板->管理工具->服务
停止所有Oracle服务。
2、开始->程序->Oracle - OraHome81->Oracle Installation Products->
Universal Installer
卸装所有Oracle产品,但Universal Installer本身不能被删除
5、运行regedit,选择HKEY_LOCAL_MACHINESOFTWAREORACLE,按del键删除这个入口。
6、运行regedit,选择HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices,滚动
这个列表,删除所有Oracle入口。
7、运行refedit,
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication,
删除所有Oracle入口,
8、开始->设置->控制面板->系统->高级->环境变量
删除环境变量CLASSPATH和PATH中有关Oracle的设定
9、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标
10、删除Program FilesOracle目录
11、重新启动计算机,重起后才能完全删除Oracle所在目录
12、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:Oracle,删除这个入
口目录及所有子目录,并从Windows目录(一般为C:WINNT)下删除以下文
件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。
13、WIN.INI文件中若有[ORACLE]的标记段,删除该段
14、如有必要,删除所有Oracle相关的ODBC的DSN
15、到事件查看器中,删除Oracle相关的日志
说明:
如果有个别DLL文件无法删除的情况,则不用理会,重新启动,开始新的安装。安装时,选择一个新的目录,则,安装完毕并重新启动后,老的目录及文件就可以删除掉了
(责任编辑:铭铭 mingming_ky@126 TEL:(010)68476636)
原文转自:www.ltesting
篇10:Oracle大批量删除数据方法数据库
批量删除海量数据通常都是很复杂及缓慢的,方法也很多,但是通常的概念是:分批删除,逐次提交, 下面是删除过程,数据表可以通过主键删除, 测试 过Delete和For all两种方法,for all在这里并没有带来 性能 提高,所以仍然选择了批量直接删除。 首先创建一下
批量删除海量数据通常都是很复杂及缓慢的,方法也很多,但是通常的概念是:分批删除,逐次提交。
下面是删除过程,数据表可以通过主键删除,测试过Delete和For all两种方法,for all在这里并没有带来性能提高,所以仍然选择了批量直接删除。
首先创建一下过程,使用自制事务进行处理:
create or replace procedure delBigTab
(
p_TableName in varchar2,
p_Condition in varchar2,
p_Count in varchar2
)
as
pragma autonomous_transaction;
n_delete number:=0;
begin
while 1=1 loop
EXECUTE IMMEDIATE
'delete from '||p_TableName||' where '||p_Condition||' and rownum <= :rn'
USING p_Count;
if SQL%NOTFOUND then
exit;
else
n_delete:=n_delete + SQL%ROWCOUNT;
end if;
commit;
end loop;
commit;
DBMS_OUTPUT.PUT_LINE('Finished!');
DBMS_OUTPUT.PUT_LINE('Totally '||to_char(n_delete)||' records deleted!');
end;
以下是删除过程及时间:
SQL>create or replace procedure delBigTab
2 (
3 p_TableName in varchar2,
4 p_Condition in varchar2,
5 p_Count in varchar2
6 )
7 as
8 pragma autonomous_transaction;
9 n_delete number:=0;
10 begin
11 while 1=1 loop
12 EXECUTE IMMEDIATE
13 'delete from '||p_TableName||' where '||p_Condition||' and rownum <= :rn'
14 USING p_Count;
15 if SQL%NOTFOUND then
16 exit;
17 else
18 n_delete:=n_delete + SQL%ROWCOUNT;
19 end if;
20 commit;
21 end loop;
22 commit;
23 DBMS_OUTPUT.PUT_LINE('Finished!');
24 DBMS_OUTPUT.PUT_LINE('Totally '||to_char(n_delete)||' records deleted!');
25 end;
26 /
Procedure created.
SQL>set timing on
SQL>select min(NUMDLFLOGGUID) from HS_DLF_DOWNLOG_HISTORY;
MIN(NUMDLFLOGGUID)
------------------
11000000
Elapsed: 00:00:00.23
SQL>exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 11100000','10000');
PL/SQL procedure suclearcase/“ target=”_blank“ >ccessfully completed.
Elapsed: 00:00:18.54
SQL>select min(NUMDLFLOGGUID) from HS_DLF_DOWNLOG_HISTORY;
MIN(NUMDLFLOGGUID)
------------------
11100000
Elapsed: 00:00:00.18
SQL>set serveroutput on
SQL>exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 11200000','10000');
Finished!
Totally 96936 records deleted!
PL/SQL procedure successfully completed.
Elapsed: 00:00:18.61
10万记录大约19s
SQL>exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 11300000','10000');
Finished!
Totally 100000 records deleted!
PL/SQL procedure successfully completed.
Elapsed: 00:00:18.62
SQL>exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 11400000','10000');
Finished!
Totally 100000 records deleted!
PL/SQL procedure successfully completed.
Elapsed: 00:00:18.85
SQL>
SQL>exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 13000000','10000');
Finished!
Totally 1000000 records deleted!
PL/SQL procedure successfully completed.
Elapsed: 00:03:13.87
100万记录大约3分钟
SQL>exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 20000000','10000');
Finished!
Totally 6999977 records deleted!
PL/SQL procedure successfully completed.
Elapsed: 00:27:24.69
700万大约27分钟
以上过程仅供参考.
原文转自:www.ltesting
篇11:恢复Oracle表空间的方法
学习Oracle时,你可能会遇到oracle表空间恢复问题,这里将介绍Oracle表空间恢复问题的解决方法,在这里拿出来和大家分享一下,
Oracle表空间恢复方案
一。用户表空间
错误:
在启动数据库时出现ora-01157,ora-01110或操作系统级错误例如ora-07360, 在关闭数据库(使用shutdown normal或shutdown immediate) 时将导致错误ora -01116,ora-01110以及操作系统级错误ora-07368
以下有两种解决方案:
1.用户的表空间可以被轻易地重建 即最近导出的对象是可用的或表空间中的对象可以被轻易地重建等。在 这种情况下,最简单的方法是offline并删除该数据文件,删除表空间并 重建表空间以及所有的对象。
svrmgrl>startup mount
svrmgrl>alter database datafile filename offline drop;
svrmgrl>alter database open;
svrmgrl>drop tablespace tablespace_name including contents;
重建表空间及所有对象。
2.用户的表空间不能够被轻易地重建在大多数情况下,重建表空间是不可能及太辛苦的工作。方法是倒备份及做介质恢复。如果您的系统运行在noarchivelog模式下,则只有丢失的数据 在online redo log中方可被恢复。
步骤如下:
1)restore the lost datafile from a backup
2)svrmgrl>startup mount
3)svrmgrl>select v1.group#,member,sequence#,first_change# >from v$log v1,v$logfile v2 >where v1.group#=v2.group#;
4)如果数据库运行在noarchivelog模式下则: svrmgrl>select file#,change# from v$recover_file;
如果 change# 大于最小的first_change#则数据文件可以被恢复。 如果 change# 小于最小的first_change#则数据文件不可恢复。 恢复最近一次的全备份或采用方案一。
5)svrmgrl>recover datafile filename;
6)确认Oracle表空间恢复成功
7)svrmgrl>alter database open resetlogs;
3.只读表空间无需做介质恢复,只要将备份恢复即可。唯一的例外是:
表空间在最后一次备份后被改为read-write 模式
表空间在最后一次备份后被改为read-only 模式
在这种情况下,均需进行介质恢复
二。临时表空间
临时表空间并不包含真正的数据,恢复的方法是删除临时表空间并重建即可,
三。系统表空间
如果备份不可用,则只能采用重建数据库的方法
四。回滚表空间
有两种情况:
1、数据库已经完全关闭(使用shutdown immediate或shutdown命令)
1) 确认数据库完全关闭
2) 修改init.ora文件,注释”rollback-segment“
3) svrmgrl>startup restrict mount
4) svrmgrl>alter database datafile filename offline drop;
5) svrmgrl>alter database open;
基于出现的结果:
”statement processed“
”ora-00604,ora-00376,ora-01110“
6) svrmgrl>shutdown immediate 修改init.ora文件,增加如下一行: _corrupted_rollback_segments = (,…) svrmgrl>startup restrict
7) svrmgrl>drop tablespace tablespace_name including contents;
8) 重建表空间及回滚段
9) svrmgrl>alter system disable restricted session;
10) 修改init.ora文件
2、数据库未完全关闭(数据库崩溃或使用shutdown abort命令关闭数据库)
1) Oracle表空间恢复备份
2) svrmgrl>startup mount
3) svrmgrl>select file#,name,status from v$datafile; svrmgrl>alter database datafile filename online;
4) svrmgrl>select v1.group#,member,sequence#,first_change# >from v$log v1,v$logfile v2 >where v1.group#=v2.group#;
5) svrmgrl>select file#,change# from v$recover_file;
6) svrmgrl>recover datafile filename;
7) svrmgrl>alter database open;
3、数据库处于打开状态
1) 删除回滚段和表空间
2) 重建表空间和回滚段
五。控制文件恢复
1.所有的控制文件均被破坏
将备份的控制文件拷贝至原目录下 对于raw device,则:
dd if=con.bak f=/dev/rdrd/drd1 seek=128
2.并非所有的控制文件均被破坏
用其他的控制文件启动数据库
篇12:Windows7安装Oracle 10g 11g的方法
10g服务器短跟客户端都要下Vista版本的,XP版的不行 服务器需要修改2个refhost.xml,客户端需要修改1个refhost.xml
改动的地方都是一样的 否则安装时会提示不支持此系统.
以下是服务器需要修改的文件:
找到以下内容
在此内容以下 添加一段
保存之后 以管理员方式运行setup.exe
作者“lin301021”
篇13:ORACLE里取随机数的方法数据库
在你的工作中是否会为了某个活动要随机取出一些符合条件的EMAIL或者手机号码用户,来颁发获奖通知或其它消息? 如果是的话,可以用 oracle 里生成随机数的PL/SQL, 目录文件名在:/ORACLE_HOME/rdbms/admin/dbmsrand. sql , 用之前先要在sys用户下编译: SQL@
在你的工作中是否会为了某个活动要随机取出一些符合条件的EMAIL或者手机号码用户,来颁发获奖通知或其它消息?
如果是的话,可以用oracle里生成随机数的PL/SQL, 目录文件名在:/ORACLE_HOME/rdbms/admin/dbmsrand.sql。
用之前先要在sys用户下编译:
SQL>@/ORACLE_HOME/rdbms/admin/dbmsrand.sql
它实际是在sys用户下生成一个dbms_random程序包,同时生成公有同义词,并授权给所有数据库用户有执行的权限。
使用dbms_random程序包, 取出随机数据的方法:
1. 先创建一个唯一增长的序列号tmp_id
create sequence tmp_id increment by 1 start with 1 maxvalue 9999999 nocycle nocache;
2. 然后创建一个临时表tmp_1,把符合本次活动条件的记录全部取出来。
create table tmp_1 as select tmp_id.nextval as id,email,mobileno from 表名 where 条件;
找到最大的id号:
select max(id) from tmp_1;
假设为5000
3. 设定一个生成随机数的种子
execute dbms_random.seed(12345678);
或者
execute dbms_random.seed(TO_CHAR(SYSDATE,'MM-DD-YYYY HH24:MI:SS'));
4. 调用随机数生成函数dbms_random.value生成临时表tmp_2
假设随机取200个
create table tmp_2 as select trunc(dbms_random.value(1,5000)) as id from tmp_1 where rownum<201;
[ 说明:dbms_random.value(1,5000)是取1到5000间的随机数,会有小数,
trunc函数对随机数字取整,才能和临时表的整数ID字段相对应,
注意:如果tmp_1记录比较多(10万条以上),也可以找一个约大于两百行的表(假如是tmp_3)来生成tmp_2
create table tmp_2 as select trunc(dbms_random.value(1,5000)) as id from tmp_3 where rownum<201; ]
5. tmp_1和tmp_2相关联取得符合条件的200用户
select t1.mobileno,t1.email from tmp_1 t1,tmp_2 t2 where t1.id=t2.id;
[ 注意:如果tmp_1记录比较多(10万条以上),需要在id字段上建索引。]
也可以输出到文本文件:
set pagesize 300;
spool /tmp/200.txt;
select t1.mobileno,t1.email from tmp_1 t1,tmp_2 t2 where t1.id=t2.id order by t1.mobileno;
spool off;
6. 用完后,删除临时表tmp_1、tmp_2和序列号tmp_id。
原文转自:www.ltesting
篇14:简单介绍Oracle数据库去除别名的方法数据库
本人曾经用Personal Oracle +Developer2000 开发 了一些程序,当移植到ORACLE FOR NT的时候发现有些功能出现了出错提示,经研究发现原来是用户没有能正常连接。 由于在developer2000连接personal oracle时不需要别名(alias),直接写入用户名/密码则可。 而
本人曾经用PersonalOracle+Developer2000开发了一些程序,当移植到ORACLE FOR NT的时候发现有些功能出现了出错提示。经研究发现原来是用户没有能正常连接。由于在developer2000连接personal oracle时不需要别名(alias),直接写入用户名/密码则可。
而在ORACLE FOR NT中则必须在连接用户则必须设置别名,在程序中用user/password@alias来连接用户。所以以前写的user/password的形式无法正常连接用户。由于改程序的工作量太大,所以决定修改一些参数文件以实现不用别名也能直接以user/password的形式连接。具体实现步骤如下:
对于ORACLE7 FOR NT
1.先用ORACLE自带的NET EASY CONFIG来设置一个ALIAS。
具体步骤如下:
i. 在oracle for win95组中启easy config。
ii. 在new service name中填如自己所需要建立的alias(名字可以自己任意起)。
iii. 选择协议(TCP/IP、SPX等)
iv. 填写ORACLE FOR NT所在的DB SERVER的名称。
v. 填写ORACLE的SID (却省是ORCL)。
vi. 完成。
2.在操作系统路的安装径(如果是WIN98的却省安装则是c:\windows)下找到ORACLE.INI
3.用编辑器编辑oracle.ini文件
4.在其中加入以下一项:local=aliasname (aliasname是刚才设置的alias的名称)
5.重新进入程序运行,一切OK,
注:在SQL*PLUS中进入用于也可以不用敲ALIAS的名称了。
对于ORACLE8 FOR NT具体步骤如下:
1. ORACLE自带的NET EASY CONFIG来设置一个ALIAS。
具体步骤如下:
i. 在oracle for win95组中启动net easy config。
ii. 在new service name中填如自己所需要建立的alias(名字可以自己任意起)。
iii. 选择协议(TCP/IP、SPX等)
iv. 填写ORACLE FOR NT所在的DB SERVER的名称。
v. 填写ORACLE的SID (却省是ORCL)。
vi. 完成。
2.进入注册表(运行regedit)
3.在HKEY_LOCAL_MACHINE-$#@62;SOFTWARE-$#@62;ORACLE下新建一个字符串值。其值如下:
4.新进入程序运行,一切OK。
注:在SQL*PLUS中进入用于也可以不用敲ALIAS的名称了。
>以上操作在DEVELOPER2.1 ORACLE 7.3.4 FOR NT
>ORACLE 8.0.5 FOR NT上通过。
原文转自:www.ltesting
更多推荐
狙击Oracle的方法及防范措施
发布评论