您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > DBA必须掌握的知识基础(经典大全)
猎头职位:北京:ITeye网站诚聘Ruby工程师相关文章:oracle恢复误删除数据,解除锁定的等sql语句oracle恢复误删除数据oracle相关知识推荐群组:Database圈子更多相关推荐转载请注明出处:注意:数据库版本是10g,不过大部分9i的也适用,闪回9i就没有.1.曾经不小心把开发库的数据库表全部删除,当时吓的要死。结果找到下面的语句恢复到了1个小时之前的数据!很简单。注意使用管理员登录系统:select*from表名asoftimestampsysdate-1/12//查询两个小时前的某表数据!既然两小时以前的数据都得到了,继续怎么做,知道了吧。。如果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.osuserFROMv$sessions,v$lockl,dba_objectsoWHEREl.sid=s.sidANDl.id1=o.object_id(+)ANDs.usernameisNOTNULL;解锁altersystemkillsession'sid,serial';如果解不了。直接倒os下kill进程kill-9spidORA-28000:账户被锁定因为密码输入错误多次用户自动被锁定.解决办法:alteruseruser_nameaccountunlock;3.关于查询数据库用户,权限的相关语句:Sql代码1.1.查看所有用户:2.select*fromdba_user;3.select*fromall_users;4.select*fromuser_users;5.6.7.2.查看用户系统权限:8.select*fromdba_sys_privs;9.select*fromall_sys_privs;10.select*fromuser_sys_privs;11.12.13.3.查看用户对象权限:14.select*fromdba_tab_privs;15.select*fromall_tab_privs;16.select*fromuser_tab_privs;17.18.19.4.查看所有角色:20.select*fromdba_roles;21.22.23.5.查看用户所拥有的角色:24.select*fromdba_role_privs;25.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代码1.(1).查看相关进程在数据库中的会话2.Selecta.sid,a.serial#,a.program,a.status,3.substr(a.machine,1,20),a.terminal,b.spid4.fromv$sessiona,v$processb5.wherea.paddr=b.addr6.andb.spid=&spid;7.8.(2).查看数据库中被锁住的对象和相关会话9.selecta.sid,a.serial#,a.username,a.program,10.c.owner,c.object_name11.fromv$sessiona,v$locked_objectb,all_objectsc12.wherea.sid=b.session_idand13.c.object_id=b.object_id;14.15.(3).查看相关会话正在执行的SQL16.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),c.commentsfromall_tab_columnst,user_col_commentscwhEret.TABLE_NAME=c.table_nameandt.COLUMN_NAME=c.column_nameandt.TABLE_NAME=UPPER('OM_EMPLOYEE_T')orderbyt.COLUMN_ID7.行列互换: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_colAS18.SELECTid,'c1'cn,c1cv19.FROMt_col_row20.UNIONALL21.SELECTid,'c2'cn,c2cv22.FROMt_col_row23.UNIONALL24.SELECTid,'c3'cn,c3cvFROMt_col_row;25.26.下面是创建了没有空值的一个竖表:27.CREATEviewv_row_col_notnullAS28.SELECTid,'c1'cn,c1cv29.FROMt_col_row30.wherec1isnotnull31.UNIONALL32.SELECTid,'c2'cn,c2cv33.FROMt_col_row34.wherec2isnotnull35.UNIONALL36.SELECTid,'c3'cn,c3cv37.FROMt_col_row38.wherec3isnotnull;8.下面可能是dba经常使用的oracle视图吧。呵呵Sql代码1.1.示例:已知hash_value:3111103299,查询sql语句:2.select*fromv$sqltext3.wherehashvalue='3111103299'4.orderbypiece5.2.查看消耗资源最多的SQL:6.SELECThash_value,executions,buffer_gets,disk_reads,parse_calls7.FROMV$SQLAREA8.WHEREbuffer_gets10000000ORdisk_reads10000009.ORDERBYbuffer_gets+100*disk_readsDESC;10.11.3.查看某条SQL语句的资源消耗:12.SELECThash_value,buffer_gets,disk_reads,executions,parse_calls13.FROMV$SQLAREA14.WHEREhash_Value=228801498ANDaddress=hextoraw('CBD8E4B0');15.16.4.查询sql语句的动态执行计划:17.首先使用下面的语句找到语句的在执行计划中的address和hash_code18.SELECTsql_text,address,hash_valueFROMv$sqlt19.where(sql_textlike'%FUNCTION_T(表名大写!)%')20.然后:21.SELECToperation,options,object_name,costFROMv$sql_plan22.WHEREaddress='C00000016BD6D248'ANDhash_value=664376056;23.24.5.查询oracle的版本:25.select*fromv$version;26.27.6.查询数据库的一些参数:28.select*fromv$parameter29.30.7.查找你的session信息31.SELECTSID,OSUSER,USERNAME,MACHINE,PROCESS32.FROMV$SESSIONWHEREaudsid=userenv('SESSIONID');33.34.8.当machine已知的情况下查找session35.SELECTSID,OSUSER,USERNAME,MACHINE,TERMINAL36.FROMV$SESSION37.WHEREterminal='pts/tl'ANDmachine='rgmdbs1';38.39.9.查找当前被某个指定session正在运行的sql语句。假设sessionID为10040.selectb.sql_text41.fromv$sessiona,v$sqlareab42.wherea.sql_hashvalue=b.hash_valueanda.sid=1009.树形结构connectby排序:Sql代码1.查询树形的数据结构,同时对一层里面的数据进行排序2.SELECTlast_name,employee_id,manager_id,LEVEL3.FROMemployees4.STARTWITHemployee_id=1005.CONNECTBYPRIORemployee_id=manager_id6.SPANstyle=BACKGROUND-COLOR:#ff0000ORDERSIBLINGSBYlast_name;/SPAN7.8.9.10.11.12.13.下面是查询结果14.LAST_NAMEEMPLOYEE_IDMANAGER_IDLEVEL15.--------------------------------------------------------16.King10011
本文标题:DBA必须掌握的知识基础(经典大全)
链接地址:https://www.777doc.com/doc-6345884 .html