Oracle 数据库常用的闪回sql 语句及其它操作语句:

--Oracle 数据库dml sql

-- 查看当前用户所拥有的表
select * from tab; --表空间,auto: 自动管理, manual: 手动管理
create tablespace tsp1 datafile 'D:\ORACLE\ORADATA\O10\tsp1.dbf'
size 2M segment space management auto; -- 查看表空间
select tablespace_name,segment_space_management from dba_tablespaces; -- 回退段管理
--系统回退段,存放于 system 表空间,只有system 表空间内的对象才可以使用 -- 查看回退段
select * from v$rollname;
show parameter undo ; -- 数据回退 -- 当前系统的scn 号, delete 数据后, commit 获取scn
select dbms_flashback.get_system_change_number() from dual; -- 闪回
execute dbms_flashback.enable_at_system_change_number(#####); -- 结束闪回
execute dbms_flashback.disable(); -- ORA-08182: operation not supported while in Flashback mode, 这时要结束闪回
execute dbms_flashback.disable(); -- 闪回到指定的时间点,物理时间和数据库时间的SCN 的对照表,每5分钟采样 , purge 表后,无法再恢复
select to_char(time_dp,'yyyy/mm/dd:hh24:mi:ss'),SCN from sys.smon_scn_time; execute dbms_flashback.enable_at_time(to_date('2017/9/2/24:12:22','yyyy/mm/dd:hh24:mi:ss')); --闪回---取值到游标----停止闪回----将游标中的值插入原表
declare
cursor c1 is select * from scott.e2 where empno=7369;
v_sal c1%rowtype;
begin
DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_number (13346413);
open c1;
fetch c1 into v_sal;
dbms_flashback.disable();
update scott.e2 set sal=v_sal.sal where empno=v_sal.empno;
close c1;
end;
/ -- Flashback Transaction Query, 通过整条来闪回,利用此功能进行诊断问题、性能分析和审计事务 select xid from v$transaction; select * from flashback_transaction_query where xid='050025002F020000' -- 管理回收站
-- 清空回收站
purge recyclebin; -- 恢复回收站中指定的表
flashback table 表名 to before drop ; -- 彻底删除表,不放在回收站中, SYS用户删除的表、视图是不进入回收站的,因此不支持闪回删除
drop table 表名 purge; -- 查看表的更改痕迹 select versions_starttime,versions_endtime,versions_xid,versions_operation, sal
from t1
versions between timestamp minvalue and maxvalue
order by versions_starttime select versions_starttime, versions_endtime , versions_xid, versions_operation,id
from t2 versions between timestamp
to_timestamp('2017-10-17 14:53:00','yyyy-mm-dd hh24:mi:ss')
and to_timestamp('2017-10-17 14:54:30','yyyy-mm-dd hh24:mi:ss'); -- 查看 一个时间段内的更改痕迹
select versions_starttime,versions_endtime,versions_xid,versions_operation, sal
from t1
versions between timestamp to_date('2017/9/2/24:12:22','yyyy/mm/dd:hh24:mi:ss')
and maxvalue
order by versions_starttime -- 查看原sql 语句
select undo_sql from flashback_transaction_query where xid='08001100C7010000' -- 多次drop 后,建立同名表, 必须9i或10g以上版本支持,flashback无法恢复全文索引
flashback table t1 to before drop rename to t2; -- 构造rowid
select dbms_rowid.rowid_create(1,5413,4,32,7) from dual;
--参数1: 新版本的rowid 格式,64进制,18位, 0:旧版本的rowid 格式,16进制,16位
-- 上面的rowid 代表 4号文件的,第32个块,第7行,将8位16进制转换成10进制,正好是4M,
-- 所以一个数据块的上限为 4M 个oracle 块。 -- 查看每个块中的行数,行的长度不同,块内存放的行数也不同
select dbms_rowid,rowid_block_number(rowid), block#,count(*)
from t1
group by dbms_rowid,rowid_block_number(rowid); -- 删除指定的列
alter table t1 drop column 列名 checkpoint 1000;
--drop 过程中表的状态为 invalid,如果过程中停电,启动数据库后
alter table t1 drop columns 列名 continue -- 查看索引在哪个表哪个列上
select index_name,table_name,column_name from user_ind_columns order by 2,32 -- 查看索引的属性
select index_name,index_type,table_name,uniqueness from user_indexes; -- 查看索引的内部信息
select height,blocks,br_blks,lf_blks,lf_rows,del_lf_rows from index_stats
-- height: 高度, blocks:索引总块数, br_blks: 枝干块数, lf_rows:叶子内行数
-- del_lf_rows: 叶子中被删除的行数 -- 索引的合并
alter index 索引名 coalesce; -- 重新索引
alter index 索引名 rebuild; -- 查看索引的引用状态
select * from v$objcet_usage; -- 授权
grant create session to u1 -- 回收权限
revoke create session from u1; -- 查看字符编码集
select * from v$nls_valid_values where PARAMETER='CHARACTERSET' order by 2; -- 提取元数据
select dbms_metadata.get_ddl('TABLE','EMP') FROM DUAL; -- 数据库连接(连接到远程的数据库)
CREATE PUBLIC DATABASE LINK dh connect to system identified by manager using '111';
--一个共有的数据库连接,名称是 dh,连接到 111 所描述的数据库中的 system 用户,
-- 密码为manager -- 查看数据库连接
select * from dba_db_links -- 关闭数据库连接
ALTER SESSION CLOSE DATABASE LINK dh; -- 强制使用 hash 连接
-- 适用于大量数据的连接,将两个表中较小的表连接列建立一个hash表,
--放入到内存中,必须有等值条件
select /*+ use_hash(t1 t2) */ t1.* from t1 ,t2 where t1.id=t2.id -- 强制使用 merge 连接
-- 排序融合连接,hash 连接大部分时候都比排序融合连接性能好
-- 如果不是等值条件,即 > < >= <= ,不能使用hash 连接,使用排序连接和嵌套循环连接
select /*+ use_merge(t1 t2) */ t1.* from t1 ,t2 where t1.id=t2.id -- 强制使用 nest_loop 连接, 嵌套循环连接,外部表的每一个行都要和内部表的所有行连接
-- 当表的行数较少的时候,数据库会选择这种连接方式
select /*+ use_nl(t1 t2) */ t1.* from t1 ,t2 where t1.id=t2.id -- 强制使用 全表扫描而不使用主键
select /*+ full(t1) */ * from t1 -- 强制使用主键而不使用全表扫描
select /*+ index(index_name) */ * from t1 -- 强制使用并行查询,提高全表扫描效率
select /*+ full(t1) parallel(t1,4) */ * from t1; -- flashback database sys 用户不支持闪回,sys 为dba 账号
--先关闭数据库
shutdown immediate;
-- 启动数据库到 mount
startup mount;
-- 闪回数据库
flashback database to timestamp to_date('2017-10-17 16:13:00','yyyy-mm-dd hh24:mi:ss');
-- 打开数据库到 read only
alter database open read only;
alter database 数据库名 open; -- 查询删除的数据 delete , commit 后
select * from t3 as of timestamp to_timestamp('2017-10-18 11:25:00','yyyy-mm-dd hh24:mi:ss');
select * from t3 as of scn 2323267; -- 向删除的表中插入数据
insert into t3 select * from t3 as of timestamp to_timestamp('2017-10-18 11:25:00','yyyy-mm-dd hh24:mi:ss'); -- 修改闪回恢复区 flashback database 时需要配置 flash_recovery_area
alter system set db_recovery_file_dest_size=3g scope=both;
alter system set db_recovery_file_dest='D:\oracle\product\10.2.0\flash_recovery_area'
show parameter db_recovery_file_dest;
show parameter db_flashback -- 查看闪回恢复区
show parameter db_recovery -- 查看闪回恢复区的使用情况,在11.2以后,v$flash_recovery_area_usage已经被v$recovery_area_usage取代
select * from v$flash_recovery_area_usage; -- 查看 flashback 状态
select flashback_on from v$database; --查询当前的scn 号,
select current_scn from v$database; -- 恢复数据库到特定的scn
flashback database to scn 2323267; -- 查看事务对应的scn
select xid,commit_scn,commit_timestamp,operation,undo_sql
from flashback_transaction_query q
where q.xid in(select versions_xid
from B versions between scn 413946 and 413959); -- 闪回时,需要启用表 row movement
alter table t3 enable row movement;
alter table t3 disable row movement; -- 查看表结构
desc 表名 -- 以dba连接数据库
connect 用户名/密码 as sysdba; -- 与rowid 一样, ora_rowscn 也是伪列
select ora_rowscn from 表名 -- 显示当前用户
show user; -- 修改oracle 的时间格式
alter session set nls_date_formate='yyyy-mm-dd hh24:mi:ss' --设置sqlplus 窗口的SQL> 提示
set sqlprompt"_user'@'_connect_identifier _date>"
-- oracle 查询列名合并
select distinct b.s_stuffid, b.s_stuffname ||'(' || u.s_username || ')' s_stuffname
from US_B_STUFF_DICT b

  

  

Oracle 学习笔记(六)的更多相关文章

  1. Oracle学习笔记六 SQL常用函数

    函数的分类 Oracle 提供一系列用于执行特定操作的函数 SQL 函数带有一个或多个参数并返回一个值 以下是SQL函数的分类:

  2. Oracle学习笔记(六)

    八.函数 1.函数的作用 (1)方便数据的统计 (2)处理查询结果,让数据显示更清楚 2.函数分类(提供很多内置函数,也可自定义函数) (1)数值函数 平均值,四舍五入 a.四舍五入 表达式 roun ...

  3. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  4. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  5. Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  6. oracle学习笔记第一天

    oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字   1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...

  7. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  8. python3.4学习笔记(六) 常用快捷键使用技巧,持续更新

    python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...

  9. Go语言学习笔记六: 循环语句

    Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...

  10. Oracle学习笔记——点滴汇总

    Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster

随机推荐

  1. 用python写一个定时提醒程序

    身体是革命的本钱,身体健康了我们才有更多精力做自己想做的事情,追求女神,追求梦想.然而程序员是一个苦比的职业,大部分时间都对着电脑,我现在颈椎就不好了,有时候眼睛还疼,我还没20阿,伤心...于是乎写 ...

  2. java课堂笔记2

  3. window service 2008 解决80端口占用

    1.进入cmd使用netstat 命令查看指定端口netstat -ano | findstr :802.如下所示:本地的80端口被进程为4的占用 TCP    0.0.0.0:80          ...

  4. leetcode python 010

    #实现正则表达式匹配并支持'.'和'*'.#''匹配任何单个字符.#'*'匹配前面元素的零个或多个.#匹配应覆盖整个输入字符串(非部分).##Some examples:##isMatch(" ...

  5. 网络爬虫之网站图片爬取-python实现

    版本1.5 本次简单添加了四路多线程(由于我电脑CPU是四核的),速度飙升.本想试试xPath,但发现反倒是多此一举,故暂不使用 #-*- coding:utf-8 -*- import re,url ...

  6. 剑指Offer 54. 字符流中第一个不重复的字符 (其他)

    题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出 ...

  7. 2.常用adb命令的使用

    使用电脑连接手机,查看手机的唯一编号,如果是模拟器,就是显示地址和端口号: adb devices 使用adb安装app应用: adb install apk路径和包名 -r 允许覆盖安装 -s 将a ...

  8. web(七)css的语法规则、注释

    css的语法规则:特殊的css语法标识. !important:当使用多种方式设定标签样式时,设定样式渲染的应用优先权,声明在取值之后. .important { color: red !import ...

  9. python学习之路08——元组、集合

    一. 元组 1.概念 列表:是一种有序的集合 元组和列表的区别: ​ a.列表:[] 元组:() ​ b.列表中的元素可以进行增加和删除操作,但是,元组中的元素不能进行修改 ​ c.相同点:都是一种容 ...

  10. alpha冲刺(2/10)

    前言 队名:旅法师 作业链接 队长博客 燃尽图 会议 会议照片 会议内容 陈晓彬(组长) 今日进展: 召开会议 安排任务 博客撰写 构建之法的阅读 问题困扰: 分配任务,还是不熟练,对后台不熟悉,不知 ...