oracle恢复误删除数据解除锁定的等sql语句.docx
- 文档编号:5011224
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:15
- 大小:23.72KB
oracle恢复误删除数据解除锁定的等sql语句.docx
《oracle恢复误删除数据解除锁定的等sql语句.docx》由会员分享,可在线阅读,更多相关《oracle恢复误删除数据解除锁定的等sql语句.docx(15页珍藏版)》请在冰豆网上搜索。
oracle恢复误删除数据解除锁定的等sql语句
oracle恢复误删除数据sql语句
--转载请注明出处:
注意:
数据库版本是10g,不过大部分9i的也适用,闪回9i就没有.
1.曾经不小心把开发库的数据库表全部删除,当时吓的要死。
结果找到下面的语句恢复到了1个小时之前的数据!
很简单。
注意使用管理员登录系统:
select*from表名asoftimestampsysdate-1/12//查询两个小时前的某表数据!
既然两小时以前的数据都得到了,继续怎么做,知道了吧。
。
2.如果drop了表,怎么办?
?
见下面:
droptable表名;
数据库误删除表之后恢复:
(绝对ok,我就做过这样的事情,汗)不过要记得删除了哪些表名。
flashbacktable表名tobeforedrop;
2.查询得到当前数据库中锁,以及解锁:
查锁
SELECT/*+rule*/s.username,
decode(l.type,'TM','TABLELOCK',
'TX','ROWLOCK',
NULL)LOCK_LEVEL,
o.owner,o.object_name,o.object_type,
s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
FROMv$sessions,v$lockl,dba_objectso
WHEREl.sid=s.sid
ANDl.id1=o.object_id(+)
ANDs.usernameisNOTNULL;
解锁
altersystemkillsession'sid,serial';
如果解不了。
直接倒os下kill进程kill-9spid
3.ORA-28000:
账户被锁定
因为密码输入错误多次用户自动被锁定.
解决办法:
alteruseruser_nameaccountunlock;
4.关于查询数据库用户,权限的相关语句:
Sql代码
查看所有用户:
1.select*fromdba_user;
2.select*fromall_users;
3.select*fromuser_users;
查看用户系统权限:
4.select*fromdba_sys_privs;
5.select*fromall_sys_privs;
6.select*fromuser_sys_privs;
查看用户对象权限:
7.select*fromdba_tab_privs;
8.select*fromall_tab_privs;
9.select*fromuser_tab_privs;
查看所有角色:
10.select*fromdba_roles;
11.
12.
13.5.查看用户所拥有的角色:
14.select*fromdba_role_privs;
15.select*fromuser_role_privs;
4.几个经常用到的oracle视图:
注意表名使用大写....................
Sql代码
1.1.查询oracle中所有用户信息
2.select*fromdba_user;
3.2.只查询用户和密码
4.selectusername,passwordfromdba_users;
5.3.查询当前用户信息
6.select*fromdba_ustats;
7.4.查询用户可以访问的视图文本
8.select*fromdba_varrays;
9.5.查询数据库中所有视图的文本
10.select*fromdba_views;
11.6.查询全部索引
12.select*fromuser_indexes;
13.查询全部表格
14.select*fromuser_tables;
15.查询全部约束
16.select*fromuser_constraints;
17.查询全部对象
18.select*fromuser_objects;
5.查看当前数据库中正在执行的语句,然后可以继续做很多很多事情,例如查询执行计划等等
Sql代码
查看相关进程在数据库中的会话
Selecta.sid,a.serial#,a.program,a.status,
substr(a.machine,1,20),a.terminal,b.spid
fromv$sessiona,v$processb
wherea.paddr=b.addr
andb.spid=&spid;
查看数据库中被锁住的对象和相关会话
9.selecta.sid,a.serial#,a.username,a.program,
10.c.owner,c.object_name
11.fromv$sessiona,v$locked_objectb,all_objectsc
12.wherea.sid=b.session_idand
13.c.object_id=b.object_id;
14.
15.(3).查看相关会话正在执行的SQL
16.selectsql_textfromv$sqlareawhereaddress=
17.(selectsql_addressfromv$sessionwheresid=&sid);
6.查询表的结构:
表名大写!
!
selectt.COLUMN_NAME,
t.DATA_TYPE,
nvl(t.DATA_PRECISION,t.DATA_LENGTH),
nvl(T.DATA_SCALE,0),
ments
fromall_tab_columnst,user_col_commentsc
whEret.TABLE_NAME=c.table_name
andt.COLUMN_NAME=c.column_name
andt.TABLE_NAME=UPPER('OM_EMPLOYEE_T')
orderbyt.COLUMN_ID
7.行列互换:
sql代码
1.建立一个例子表:
2.CREATETABLEt_col_row(
3.IDINT,
4.c1VARCHAR2(10),
5.c2VARCHAR2(10),
6.c3VARCHAR2(10));
7.INSERTINTOt_col_rowVALUES(1,'v11','v21','v31');
8.INSERTINTOt_col_rowVALUES(2,'v12','v22',NULL);
9.INSERTINTOt_col_rowVALUES(3,'v13',NULL,'v33');
10.INSERTINTOt_col_rowVALUES(4,NULL,'v24','v34');
11.INSERTINTOt_col_rowVALUES(5,'v15',NULL,NULL);
12.INSERTINTOt_col_rowVALUES(6,NULL,NULL,'v35');
13.INSERTINTOt_col_rowVALUES(7,NULL,NULL,NULL);
14.COMMIT;
15.
16.下面的是列转行:
创建了一个视图
17.CREATEviewv_row_colAS
18.SELECTid,'c1'cn,c1cv
19.FROMt_col_row
20.UNIONALL
21.SELECTid,'c2'cn,c2cv
22.FROMt_col_row
23.UNIONALL
24.SELECTid,'c3'cn,c3cvFROMt_col_row;
25.
26.下面是创建了没有空值的一个竖表:
27.CREATEviewv_row_col_notnullAS
28.SELECTid,'c1'cn,c1cv
29.FROMt_col_row
30.wherec1isnotnull
31.UNIONALL
32.SELECTid,'c2'cn,c2cv
33.FROMt_col_row
34.wherec2isnotnull
35.UNIONALL
36.SELECTid,'c3'cn,c3cv
37.FROMt_col_row
38.wherec3isnotnull;
8.下面可能是dba经常使用的oracle视图吧。
呵呵
Sql代码
1.1.示例:
已知hash_value:
3111103299,查询sql语句:
2.select*fromv$sqltext
3.wherehashvalue='3111103299'
4.orderbypiece
5.2.查看消耗资源最多的SQL:
6.SELECThash_value,executions,buffer_gets,disk_reads,parse_calls
7.FROMV$SQLAREA
8.WHEREbuffer_gets>10000000ORdisk_reads>1000000
9.ORDERBYbuffer_gets+100*disk_readsDESC;
10.
11.3.查看某条SQL语句的资源消耗:
12.SELECThash_value,buffer_gets,disk_reads,executions,parse_calls
13.FROMV$SQLAREA
14.WHEREhash_Value=228801498ANDaddress=hextoraw('CBD8E4B0');
15.
16.4.查询sql语句的动态执行计划:
17.首先使用下面的语句找到语句的在执行计划中的address和hash_code
18.SELECTsql_text,address,hash_valueFROMv$sqlt
19.where(sql_textlike'%FUNCTION_T(表名大写!
)%')
20.然后:
21.SELECToperation,options,object_name,costFROMv$sql_plan
22.WHEREaddress='C00000016BD6D248'ANDhash_value=664376056;
23.
24.5.查询oracle的版本:
25.select*fromv$version;
26.
27.6.查询数据库的一些参数:
28.select*fromv$parameter
29.
30.7.查找你的session信息
31.SELECTSID,OSUSER,USERNAME,MACHINE,PROCESS
32.FROMV$SESSIONWHEREaudsid=userenv('SESSIONID');
33.
34.8.当machine已知的情况下查找session
35.SELECTSID,OSUSER,USERNAME,MACHINE,TERMINAL
36.FROMV$SESSION
37.WHEREterminal='pts/tl'ANDmachine='rgmdbs1';
38.
39.9.查找当前被某个指定session正在运行的sql语句。
假设sessionID为100
40.selectb.sql_text
41.fromv$sessiona,v$sqlareab
42.wherea.sql_hashvalue=b.hash_valueanda.sid=100
9.树形结构connectby排序:
Sql代码
1.查询树形的数据结构,同时对一层里面的数据进行排序
2.SELECTlast_name,employee_id,manager_id,LEVEL
3.FROMemployees
4.STARTWITHemployee_id=100
5.CONNECTBYPRIORemployee_id=manager_id
6. rgb(255,0,0);">ORDERSIBLINGSBYlast_name; 13.下面是查询结果 14.LAST_NAMEEMPLOYEE_IDMANAGER_IDLEVEL 15.-------------------------------------------------------- 16.King1001 17.Cambrault1481002 18.Bates1721483 19.Bloom1691483 20.Fox1701483 21.Kumar1731483 22.Ozer1681483 23.Smith1711483 24.DeHaan1021002 25.Hunold1031023 26.Austin1051034 27.Ernst1041034 28.Lorentz1071034 29.Pataballa1061034 30.Errazuriz1471002 31.Ande1661473 32.Banda1671473 33. 10.有时候写多了东西,居然还忘记最基本的sql语法,下面全部写出来,基本的oracle语句都在这里可以找到了。 是很基础的语句! Sql代码 1.1.在数据字典查询约束的相关信息: 2.SELECTconstraint_name,constraint_type,search_condition 3.FROMuser_constraintsWHEREtable_name='EMPLOYEES'; 4.//这里的表名都是大写! 5.2对表结构进行说明: 6.descTablename 7.3查看用户下面有哪些表 8.selecttable_namefromuser_tables; 9.4查看约束在那个列上建立: 10.SELECTconstraint_name,column_name 11.FROMuser_cons_columns 12.WHEREtable_name='EMPLOYEES'; 13.10结合变量查找相关某个表中约束的相关列名: 14.selectconstraint_name,column_namefromuser_cons_columnswheretable_name='&tablename' 15.12查询数据字典看中间的元素: 16.SELECTobject_name,object_type 17.FROMuser_objects 18.WHEREobject_nameLIKE'EMP%' 19.ORobject_nameLIKE'DEPT%' 20.14查询对象类型: 21.SELECTDISTINCTobject_typeFROMuser_objects; 22.17改变对象名: (表名,视图,序列) 23.renameemptoemp_newTable 24.18添加表的注释: 25.COMMENTONTABLEemployeesIS'EmployeeInformation'; 26.20查看视图结构: 27.describeview_name 28.23在数据字典中查看视图信息: 29.selectviewe_name,textfromuser_views 30.25查看数据字典中的序列: 31.select*fromuser_sequences 32.33得到所有的时区名字信息: 33.select*fromv$timezone_names 34.34显示对时区‘US/Eastern’的时区偏移量 35.selectTZ_OFFSET('US/Eastern')fromDUAL--dual英文意思是‘双重的’ 36.显示当前会话时区中的当前日期和时间: 37.ALTERSESSIONSETNLS_DATE_FORMAT='DD-MON-YYYYHH24: MI: SS';--修改显示时间的方式的设置 38.ALTERSESSIONSETTIME_ZONE='-5: 0';--修改时区 39.SELECTSESSIONTIMEZONE,CURRENT_DATEFROMDUAL;--真正有用的语句! 40.SELECTCURRENT_TIMESTAMPFROMDUAL;--返回的时间是当前日期和时间,含有时区 41.SELECTCURRENT_TIMESTAMPFROMDUAL;--返回的时间是当前日期和时间,不含有时区! ! ! 42.35显示数据库时区和会话时区的值: 43.selectdatimezone,sessiontimezonefromdual; 44. 45.13普通的建表语句: 46.CREATETABLEdept 47.(deptnoNUMBER (2), 48.dnameVARCHAR2(14), 49.locVARCHAR2(13)); 50.15使用子查询建立表: 51.CREATETABLEdept80 52.ASSELECTemployee_id,last_name, 53.salary*12ANNSAL, 54.hire_dateFROMemployeesWHEREdepartment_id=80; 55.6添加列: //altertableEMPaddcolumn(dept_idnumber(7));错误! ! 56.altertableEMPadd(dept_idnumber(7)); 57.7删除一列: 58.altertableempdropcolumndept_id; 59.8添加列名同时和约束: 60.altertableEMPadd(dept_idnumber(7) 61.constraintmy_emp_dept_id_fkreferencesdept(ID)); 62.9改变列: //注意约束不能够修改的! ! 63.altertabledept80modify(last_namevarchar2(30));//这里使用的是modify而不是alter! 64.24增加一行: 65.insertintotable_namevalues(); 66. 67.5添加主键: 68.alterTableEMPaddconstraintmy_emp_id_pkprimarykey(ID); 69.11添加一个有check约束的新列: 70.altertableEMP 71.add(COMMISSIONnumber (2)constraintemp_commission_ckcheck(commission>0)) 72.16删除表: 73.droptableemp; 74.19创建视图: 75.CREATEVIEWempvu80 76.ASSELECTemployee_id,last_name,salary 77.FROMemployeesWHEREdepartment_id=80; 78.21删除视图: 79.dropviewview_name 80.22找到工资最高的5个人。 (top-n分析)(行内视图) 81.selectrownum,employee_idfrom(selectemployee_id,salaryfrom 82.employeesorderbysalarydesc) 83.whererownum<5; 84.26建立同义词: 85.createsynonym同义词名for原来的名字 86.或者createpublicsynonym同义词名for原来的名字 87.27建立序列: (注意,这里并没有出现说是哪个表里面的序列! ! ) 88.CREATESEQUENCEdept_deptid_seq 89.INCREMENTBY10 90.STARTWITH120 91.MAXVALUE9999 92.NOCACHE 93.NOCYCLE 94.28使用序列: 95.insertintodept(ID,NAME)values(DEPT_ID_SEQ.nextval,'Administration'); 96.29建立索引: //默认就是nonunique索引,除非使用了关键字: unique 97.CREATEINDEXemp_last_name_idxONemployees(last_name); 98.30建立用户: (可能有错,详细查看帮助) 99.createuserusername(用户名) 100.identifiedbyoracle(密码) 101.defaulttablespacedata01(表空间名//默认存在system表空间里面) 102.quota10M(设置大小,最大为unlimited)on表空间名//必须分配配额!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 恢复 删除 数据 解除 锁定 sql 语句