ORACLE数据库误操作执行了DELETE,该如何恢复数据? 原创 2016年08月11日 17:23:04 10517 作为一个程序员,数据库操作是必须的,但是如果操作失误,一般都会造成比较严重的后果. 今天一不小心,干了一件揪心的事情,将正在使用的组织机构误操作执行了delete,顿时大脑有点缺氧,感觉蒙圈了(相信对于没有数据备份和回滚经验的小伙伴来说都是这样的感受),但是一想,数据库一般都是支持数据回滚的,然后查找了一下解决方案. 由于用的是Oracle数据库,这一点非常好,因为Oracl…
一:表的恢复 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的.一般步骤有:1.从flash back里查询被删除的表 select * from recyclebin2.执行表的恢复 flashback table tb to before drop,这里的tb代表你要恢复的表的名称.二:表数据恢复 对误删的表记录,只要没有truncate语句,就可以根据事务的提交时间进行选择恢复,一般步骤有:1.先从flashback_transaction_…
SELECT MAX(Scn) FROM Sys.Smon_Scn_Time WHERE Time_Dp < TO_DATE('2015-09-18', 'YYYY/MM/DD') select b.file_name 物理文件名, b.tablespace_name 表空间, b.bytes/1024/1024 大小M, (b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用M, substr((b.bytes-sum(nvl(a.bytes,0)))/(b.b…
一:根据时间来恢复: 1.查询数据库当前时间() select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; 2.查询删除数据时间点之前的数据 select * from 表名 as of timestamp to_timestamp('2020-08-06 10:12:11','yyyy-mm-dd hh24:mi:ss'): (若没有数据 ,将时间继续提前) 3.恢复数据 flashback table 表名 to timestamp…
利用binlog日志恢复数据库误操作数据 在人工手动进行一些数据库写操作的时候(比方说数据修改),尤其是一些不可控的批量更新或删除,通常都建议备份后操作.不过不怕万一,就怕一万,有备无患总是好的.在线上或者测试环境误操作导致数据被删除或者更新后,想要恢复,一般有两种方法. 方法一.利用最近的全量备份+增量binlog备份,恢复到误操作之前的状态,但是随着数据量的增大,binlog的增多,恢复起来很费时.方法二.如果binlog的格式为row,那么就可以将binlog解析出来生成反向的原始SQL…
1.set autotrace traceonly命令 2.explain plan for命令 1)explain plan for select * from dual; 2)select * from table(dbms_xplan.display); 3.10046查看Oracle数据库中的执行计划 能够得到SQL执行计划中每一个执行步骤所消耗的逻辑读,物理读,和花费的时间.实际上,也可以通过gather_plan_sstatistics Hint 配合dbms_xplan 包一起使用…
.Oracle数据库Where条件执行顺序: 由于SQL优化起来比较复杂,并且还会受环境限制,在开发过程中,写SQL必须必须要遵循以下几点的原则: 1.ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 例如: (低效) SELECT … FROM EMP E WHERE SAL > 50000 AND JOB = ‘MANAGER’ AND 25 < (SELECT CO…
参考: 找回Git中丢失的Commit Git误操作 git reset强制回滚 恢复commit方法 使用Git时,常有误操作,在Commit之后又执行了git reset --hard HEAD强制回滚本地记录以及文件到服务器版本,导致本地做的修改全部恢复到Git当前分支的服务器版本,同时Commmit记录也消失了. 此时解决方法是通过git reflog来查看先前记录并恢复: git reflog会记录所有HEAD的历史,也就是说当你做 reset,checkout等操作的时候,这些操作会…
一 ADO.Net简介 访问数据库的技术有许多,常见的有一下几种:开放数据库互联(ODBC).数据访问对象(DAO).远程数据对象 (RDO). ActiveX数据对象(ADO).我们今天主要要学习ADO.NET中OracleClient命名空间中的几个常用对象,用这作为对ADO.NET认 识学习的开始. ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使 用.高速度.低内存支出和占用磁盘空间较少,支持用于建立基于客户端/服务器和 W…
一.Oracle数据库操作 1.创建数据库      create database databasename 2.删除数据库      drop database dbname 3.备份数据库 完全备份      exp demo/demo@orcl buffer=1024 file=d:\back.dmp full=y      demo:用户名.密码      buffer: 缓存大小      file: 具体的备份文件地址      full: 是否导出全部文件      ignore…
一 ADO.Net简介 [转自网络,收藏学习] 访问数据库的技术有许多,常见的有一下几种:开放数据库互联(ODBC). 数据访问对象(DAO).远程数据对象(RDO). ActiveX数据对象(ADO).我们今天主要要学习ADO.NET中OracleClient命名空间中的几个常用对象,用这作为对ADO.NET认识学习的开始. ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使用.高速度.低内存支出和占用磁盘空间较少,支持用于建立基于…
避免混淆开发环境的DB和生产环境的DB这在小公司小团队尤其常见.一个人即负责开发,又管DB.桌面上开了一坨终端,有的是开发的DB,有的是生产的DB.一不留神,就写串了,或者粘贴串了.更郁闷的是,有时候粘贴会顺便粘贴SQL最后的回车,这样一贴就执行了.稍有不慎就有大祸.这里最重要的就是用很显眼的方式让开发环境的客户端和生产环境的客户端看起来不一样.有这么几种做法:启动mysql时设定一个特定的prompt.使用--prompt=<string>来给生产环境设置一个特别的提示符.$ mysql -…
对Oracle数据库执行操作的sql语句中表名和列名都需用英文双引号("")括起来. 注(\为转义符) 1.插入数据 sql = "insert into \"table_name\"(\"row_name1\",\"row_name2\")" values(?,?)"; 2.删除数据 sql = "delete from \"table_name\" where \…
转载自:https://www.cnblogs.com/fallen-seraph/p/10685997.html 一.登录Oracle数据库 首先运行Oracle数据库: 默认的有两个账号: 管理员账号: 用户名:system 密码:manager 普通账号:用户名:scott 密码:tiger 这两个账号的连接都为Normal. 还有另一种连接SYSDBA:sysdba,操作系统认证,不需要账号密码,但pl/sql登录窗口有非空校验,所以账号密码随便输,连接为sysdba就可以登录. 二.O…
1          Oracle数据库 1.1       Oracle环境配置&客户端连接 1.1.1          下载安装Oracle绿色版客户端instantclient: 到oracle官网下载instantclient basic包,解压缩到E:\ProgramFile\instantclient: 1.1.2          设置环境变量: NLS_lANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK(注意中间有空格,这个如果不设,toad查询中文会…
导入某用户所有表和数据:imp sgp/sgp@192.168.0.99:1521/orcl file=sgp20161025.dmp full=y 导出指定表及数据:exp sgp/sgp@192.168.0.107:1521/orcl file=20160921sgp_table_sysmodule_sysdict.dmp tables=(sgp_sysmodule, sgp_sysdict) 导入指定表及数据:imp sgp/sgp@192.168.0.99:1521/orcl file=…
Oracle数据库如何查看当前用户角色权限及默认表空间查看当前用户的一些信息,包括用户拥有的角色权限信息.用户表空间以及用户和默认表空间的关系等--查看用户的角色权限1.查看当前用户拥有的角色权限信息:select * from role_sys_privs; 2.查看所有用户:                  select * from all_users;  3.查看当前用户的详细信息:        select * from user_users; 4.查看所有角色:         …
现在大型企业一般都用Oracle数据库,Oracle数据库在一般采用expdp,impdp 导出导入数据,但是在操作中经常会遇到一些问题.下面来浅析这些问题. 1. 导出数据 一般导出数据的时候需要建立一个目录地址 select * from dba_directories; --查询所有目录地址create or replace directory winqt_dump as '/home/front/dmpfile'; --创建目录地址grant read,write on director…
首先讲一下,truncate命令: 语法:TRUNCATE  TABLE  table; 表格里的数据被清空,存储空间被释放. 运行后会自动提交,包括之前其它未提交的会话,因而一旦清空无法回退. 只有表格的创建者或者其他拥有删除任意表格权限的用户(如DBA)才能清空表格. TRUNCATE  TABLE  dept30; Table truncated.   下面讲一下truncate命令和delete的区别: 1.TRUNCATE在各种表上无论是大的还是小的都非常快.如果有ROLLBACK命令…
实现目的 有时候,根据业务需要,可能需要直接对数据库进行性能测试,此时可利用jmeter对Oracle.MySQL等数据库进行相关测试. 脚本实现 添加JDBC Connection Configuration,连接Oracle数据库 添加JDBC Request取样器,对数据库进行相关业务操作…
使用sqluldr2进行oracle数据库表数据抽取时遇到执行后无反应,也不报错,也无日志输出的情况. 经过排查之后发现时由于oracle账户密码快要过期导致的(这也能出问题,我服,类似的plsql连接oracle数据库时也会因为这个原因出现连接不上的问题),把账户密码的期限修改一下即可.注意的是,就算账户密码修改过后,被提示的账户还是要做一次密码修改才能生效.…
环境: Python版本:3.6.6 win系统:64位 Linux系统:64位 首先安装配置时,版本必须一致!包括:系统版本,python版本,oracle客户端的版本,cx_Oracle的版本! 需要的安装包: Oracle Instant Client 客户端下载 https://www.oracle.com/cn/database/technologies/instant-client/downloads.html instantclient-basic-windows.x64-11.2…
由于最近有oracle的项目,需要把数据库在另外一台电脑里面配置一个一样的数据库用来测试开发用,之前是一直使用mssql,只需要附加或者还原就行,但是在oracle里面,就没有这么简单,但是也不难,操作如下: 1.在服务器电脑里面: 开始-运行-cmd 然后进到一个相对空间比较大的盘符及目录,执行以下: exp 数据库用户名/密码 file=生成的文件名.dmp log=日志.dmp full=y这样会在你进的那个目录下生成一个dmp文件,将数据库文件跟数据库日记文件拷过去就需要附加oracle…
如果数据库中用了drop删除表,后面没有加上purge的话,会出现在oracle的回收机制中 dba_recyclebin可以查看当前删除的都是哪些 这个只是部分截图,可以看到删除的对象是什么,删除的内容时间等等 如果想要看到里面的数据的话,可以这样做 select * from 删除的owner."删除的表" select * from wlj."BIN$ZiY9LQyip7PgUKjA3gFApA==$0";   删除的表中两侧是双引号 就可以查看到表中的相关数…
## 连接数据库: sqlplus test/test##@localhost:/ORCL ## 查询数据库所有的表: select table_name from user_tables; ## 查询数据库表的字段名: desc 表名; ## 设置oracle 客户端的字符集: Unix操作: ## 中文字符集 export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"; ## unicode字符集 export NLS_LANG=amer…
一.oracle基本常用的数据类型 varchar(长度) 字符串 char(长度) 字符 number(x,y) x表示总位数 y表示保留小数点后几位数 eg面试题:number(5,3)最大的数是99.999 decimal() 数字 long int integer 整数 date 日期 timestamp 日期 clob blob 特殊文本 二进制 二.DLL操作 create 创建表的前提是:1.具备创建表的条件 2.有可用的存储空间 创建表的语法是: create table 表名…
1. vnc启动之后,进入数据库安装包所在目录,此处是/home/DB/backup/database 2. 输入命令 ./runInstaller 3. 弹出linux图形化界面,同时弹出Oracle Databse 11g R2的安装界面,如下: 4. 去掉“I wish...”选项,点击“Next”: 5. 弹窗提示“你没有提供邮箱地址",忽略该警告,选择”No“,点击“Next”: 6. 选择”skip software updates“,点击”Next“: 7. 选择”Create …
01. 在Model中写数据库操作语句,代码如下: <?php namespace App\Models\System; use CodeIgniter\Model; class User_model extends Model { var $Db; function __construct() { parent::__construct(); //创建数据库连接 $this->Db = \Config\Database::connect(); } function deletedata()…
1.查看总消耗时间最多的前10条SQL语句 select *  from (select v.sql_id,  v.child_number,  v.sql_text,  v.elapsed_time,  v.cpu_time,  v.disk_reads,  rank() over(order by v.elapsed_time desc) elapsed_rank  from v$sql v) a  where elapsed_rank <= 10; 2.查看CPU消耗时间最多的前10条SQ…
新增字段:alter table 表名 add (NAME VARCHAR(12), NAME NUMBER(10) );--如果添加单个字段可以不用括号包起来,例如 alter table custinfo add sex char(1) 添加注释:comment on column 表名.name is '姓名'; 删除表字段:alter table 表名 drop column 字段名(列名); 修改字段名:alter table 表名 rename column 现列名 to 新列名;…