大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、首先新建一张测试表TEST,里面输入记录。由于删除/更新/插入恢复步骤相同,这里仅演示删除数据的情况。
成都创新互联主要从事成都网站建设、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务隆尧,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
2、删除其中1条记录,查看表中记录情况,由下图可见,记录2被删除了。
3、恢复之前先确定要恢复到的时间点,下图可以看出2018-03-07 15:33:00数据是正确的。
SELECT *
FROM TEST AS OF TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS');
4、下面进行表数据恢复。
FLASHBACK TABLE TEST TO TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS');
可以看到报错了,原因是没有开启行移动。
5、开启该表的行移动。
ALTER TABLE TEST ENABLE ROW MOVEMENT;
6、再次执行数据恢复。
FLASHBACK TABLE TEST TO TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS');
然后查看数据情况,可以看到已经恢复了。
一:表的恢复
对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的。一般步骤有:
1、从flash back里查询被删除的表
select * from recyclebin
2.执行表的恢复
flashback table tb to before drop,这里的tb代表你要恢复的表的名称。
二:表数据恢复
对误删的表记录,只要没有truncate语句,就可以根据事务的提交时间进行选择恢复,一般步骤有:
1、先从flashback_transaction_query视图里查询,视图提供了供查询用的表名称、事务提交时间、UNDO_SQL等字段。
如:select * from flashback_transaction_query where
table_name='TEST';
2、执行表记录恢复
一般先根据时间进行查询,查询语句模式为select * from tb as of timestamp
to_timestamp(time,'yyyy-mm-dd hh24:mi:ss'); tb指表名称,time指某个时间点
如select * from scott.test as of timestamp to_timestamp('2009-12-11
20:53:57','yyyy-mm-dd hh24:mi:ss');
若有数据,恢复极为简单了,语句为flashback table tb to timestamp
to_timestamp(time,'yyyy-mm-dd hh24:mi:ss');
如flashback table scott.test to timestamp to_timestamp('2009-12-11
20:47:30','yyyy-mm-dd hh24:mi:ss');
注意:alter table testvarchar enable row movement;
这个命令的作用是,允许Oracle 修改分配给行的rowid。在Oracle
中,插入一行时就会为它分配一个rowid,而且这一行永远拥有这个rowid。闪回表处理会对EMP
完成DELETE,并且重新插入行,这样就会为这些行分配一个新的rowid。要支持闪回就必须允许Oracle 执行这个操作
可以定义一个触发器,来把删除的记录写到一个日志表中,方法如下。
测试方法:
创建原始表,插入数据:
create table test
(id int,
name varchar2(10));
insert into test values (1,'张三');
insert into test values (2,'李四');
commit;
创建日志表:
create table test_log
(id int,
name varchar2(10),
deletedate date);
创建触发器:
create or replace trigger t_delete_test
before delete on test
for each row
begin
insert into test_log(id,name,deletedate)
values( :old.id, :old.name, sysdate);
end;
执行删除操作:
delete from test where id=2;
commit;
检测test表,及test_log表:
所以,可以证明,删除成功,并且将删除的数据写入到了日志表中。
如果是ddl语句删除的数据,比如truncate,drop什么的,你就去找找alertlog日志,这里会有记录。
如果是dml语句,delete那么就真的没办法了。毕竟dml不记录日志,除非你有相关触发器做记录。
哦,是这样的,oracle就是多了一个用户的概念,一个链接的概念,他们的之间的关系好像是m:n
不过你们说的oracle 11以前的版本,11g 有个racle 11g sqldeveloper 这个可视 的 sql软件
配置
打开sqldeveloper——》Connections——》右键Connections——》弹出New / Select Database Connection
Connection Name
Username
Password
Hostname 默认localhost
Port 默认1521
SID 默认xe
这个和你安装的时候添的东西有关
然后弄个用户,这个用户和你安装的那个不一样
create 用户名 identified by 密码 ----创建用户
grant select to 用户名 ----授权 查找
grant resources to 用户名 ----授权 资源
上面这段是在那个类似CMD里面打的--PL/SQL
总之PL/SQL是一个写代码的,我也是先学的SQLSERVER,MYSQL什么的,后来才用Oracle 对那种代码也烦,后来就用了11g 可视的编辑,快捷好用,就和你们SQLSERVER一样
最后,你要是链接数据库什么的,可以使用odbc,不过,hibernate更好多,写hql比sql简单的多,而其无论什么数据库都是一样hql 至于备份,记得是有那个按钮选项的,至少11g是有导入,导出的,我那个时候做毕业设计的时候老师就要我导出的。
图片找不到了,不过网上应该有~~
备份数据库:mysql\bin\mysqldump -h(ip) -uroot -p(password) databasename database.sql
恢复数据库:mysql\bin\mysql -h(ip) -uroot -p(password) databasename database.sql
复制数据库:mysql\bin\mysqldump --all-databases all-databases.sql
修复数据库:mysqlcheck -A -o -uroot -p54safer
文本数据导入: load data local infile \"文件名\" into table 表名;
数据导入导出:mysql\bin\mysqlimport database tables.txt
mysql 的数据导入,导出
1)停止所有oracle相关的服务
2)卸载oracle
10g数据库服务器组件
3)手动删除注册表中与oracle相关的内容
4)删除temp目录下oracle相关的文件夹
5)检查“开始”菜单中是否还有oracle程序组,如果有,则将其删除
6)重新启动计算机
7)删除windows系统安装磁盘中的program
files\oracle
目录
8)删除oracle安装目录
壹佰网欢迎你的加入交流