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. Scrum Meeting博客汇总

    葫芦娃不想写代码团队 Scrum Meeting博客汇总 一.Alpha阶段 [Alpha]Scrum Meeting 1 [Alpha]Scrum Meeting 2 [Alpha]Scrum Me ...

  2. 指导手册05:MapReduce编程入门

    指导手册05:MapReduce编程入门   Part 1:使用Eclipse创建MapReduce工程 操作系统: Centos 6.8, hadoop 2.6.4 情景描述: 因为Hadoop本身 ...

  3. JavaScript原型与闭包相关

    1什么是对象 js中的值分为引用值和原始值 原始值:undefined  null  Boolean  string  number  原始值无法更改 存放在栈中 引用值:Array  Object  ...

  4. JavaScript 之 BOM

    BOM BOM(Bowser Object Model)   浏览器对象模型 提供了独立于页面内容而与浏览器就行交互的对象,核心对象是window. (BOM 无标准支持) Navigator 浏览器 ...

  5. Delphi xe8 FMX StringGrid根据内容自适应列宽。

    Delphi xe8 FMX StringGrid根据内容自适应列宽. 网上的资料比较复杂,而且不是根据字体字号等设置列宽.故自己写了个function来用. function GetColMaxDa ...

  6. 【原创】MIPS相关

    MIPS是单字长定点指令平均执行速度 Million Instructions Per Second的缩写. 路由器等嵌入式系统多采用MIPS和ARM两种指令架构,最近在研究路由器,借机总结一下基于M ...

  7. ubuntu 升级 python3.5到 python3.6

    首先是在Ubuntu中安装python3.6 sudo apt-get install software-properties-common sudo add-apt-repository ppa:j ...

  8. 一十九条优雅Python编程技巧

    1.交换赋值 #不推荐 temp = a a = b b = a #推荐 a , b = b , a #先生成一个元组(tuple)对象,然后在unpack 2.Unpacking #不推荐 l = ...

  9. SignalTap导致PCIe Read/Write卡死

    /********************************************************************** * SignalTap导致PCIe Read/Write ...

  10. Angular4.0引入第三方框架,eg: bootstrap、jquery

    最近学习angular4.0,在练习是需要使用jquery和bootstrap.但是查阅了,大多数都是angular2的方法,或者是angular4.0的方法但是不准确.花了一些时间终于捣腾出来了,把 ...