查看SQL执行总进度
/*OPNAME:指长时间执行的操作名.如:Table ScanTARGET:被操作的object_name. 如:tableATARGET_DESC:描述target的内容SOFAR:这个是需要着重去关注的,表示已要完成的工作数,如扫描了多少个块。TOTALWORK:指目标对象一共有多少数量(预计)。如块的数量。UNITS:START_TIME:进程的开始时间LAST_UPDATE_TIM:最后一次调用set_session_longops的时间TIME_REMAINING: 估计还需要多少时间完成,单位为秒ELAPSED_SECONDS:指从开始操作时间到最后更新时间CONTEXT:MESSAGE:对于操作的完整描述,包括进度和操作内容。USERNAME:与v$session中的一样。SQL_ADDRESS:关联v$sqlSQL_HASH_VALUE:关联v$sqlQCSID:主要是并行查询一起使用。*/SELECT V.SQL_ID,USERNAME,SID,OPNAME,ROUND(SOFAR * 100 / TOTALWORK, 0) || '%' AS "执行进度百分比",TIME_REMAINING "估计剩余时间(秒)",SQL_TEXT,A.ELAPSED_SECONDS "执行时间(秒)",A.START_TIME "执行开始时间",A.TOTALWORK "总数(块block)",A.SOFAR "已完成数(块block)",A.SOFAR / A.ELAPSED_SECONDS "每秒扫描数(块block)"FROM V$SESSION_LONGOPS A, V$SQL VWHERE 1 = 1--AND TIME_REMAINING <> 0AND SQL_ADDRESS = ADDRESSAND SQL_HASH_VALUE = HASH_VALUEORDER BY A.ELAPSED_SECONDS DESC;SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(SQL_ID => '85tpcyjsu9mx6',REPORT_LEVEL => 'ALL') AS REPORTFROM DUAL;
查看正在执行的sql
select distinct bb.STATUS,bb.USERNAME,bb.sid,bb.SERIAL#,bb.last_call_et runtime,bb.PROGRAM,aa.SQL_ID,aa.sql_textfrom v$sql aa, v$session bbwhere aa.sql_id = bb.SQL_IDand bb.status = 'ACTIVE'and bb.username is not nullorder by last_call_et desc;
查看当前的数据库连接数
select count(*) from v$process ;
数据库允许的最大连接数
select value from v$parameter where name =’processes’;
修改数据库最大连接数
alter system set processes = 300 scope = spfile;
关闭/重启数据库
shutdown immediate; —关闭数据库
startup; —重启数据库
当前的session连接数
select count(*) from v$session
当前并发连接数
select count(*) from v$session where status=’ACTIVE’;
v$process:
视图提供的信息,都是oracle服务进程的信息,没有客户端程序相关的信息
服务进程分两类,一是后台的,一是dedicate/shared server
pid, serial# 这是oracle分配的PID
spid 这才是操作系统的pid
program 这是服务进程对应的操作系统进程名
v$session:
主要提供的是一个数据库connect的信息,
主要是client端的信息,比如以下字段:
machine 在哪台机器上
terminal 使用什么终端
osuser 操作系统用户是谁
program 通过什么客户端程序,比如TOAD
process 操作系统分配给TOAD的进程号
logon_time 在什么时间
username 以什么oracle的帐号登录
command 执行了什么类型的SQL命令
sql_hash_value SQL语句信息
解锁
1、查询数据
SELECT *FROM TEST AS OF TIMESTAMP TO_TIMESTAMP(‘2018-03-07 15:33:00’, ‘YYYY-MM-DD HH24:MI:SS’);
2、恢复数据
FLASHBACK TABLE TEST TO TIMESTAMP TO_TIMESTAMP(‘2018-03-07 15:33:00’, ‘YYYY-MM-DD HH24:MI:SS’);
3、启动表的行移动
ALTER TABLE TEST ENABLE ROW MOVEMENT;
4、数据恢复
FLASHBACK TABLE TEST TO TIMESTAMP TO_TIMESTAMP(‘2018-03-07 15:33:00’, ‘YYYY-MM-DD HH24:MI:SS’);
方法二:
create table tmp asselect * from table_name as of timestamp trunc(sysdate)-10注:trunc(sysdate)-10 就是一个时间点
