常用Oracle数据库脚本
Oracle DBA 数据库日常维护手册 常用SQL 脚本
Oracle数据库日常维护【版本整理日期:2011/02/26 】版本整理人:1634068400@本文档包含以下内容:1.Oracle数据库日常维护2.Oracle DBA 常用管理脚本3.Oracle DB 常用SQL 语句/******************************************************** (若跳转不成功,请复制到浏览器或联系Q) /item.htm?id=7437120468Metalink Sharing ********************************************************/在Oracle数据库运行期间,DBA应该对数据库的运行日志及表空间的使用情况进行监控,及早发现数据库中存在的问题。
一、Oracle警告日志文件监控Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况:l数据库的启动、关闭,启动时的非缺省参数;l数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成造成不能切换,会记录不能切换的原因;l对数据库进行的某些操作,如创建或删除表空间、增加数据文件;l数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA -600)DBA 应该定期检查日志文件,根据日志中发现的问题及时进行处理问题处理 启动参数不对 检查初始化参数文件因为检查点操作或归档操作没有完成造成重做日志不能切换 如果经常发生这样的情况,可以考虑增加重做日志文件组;想办法提高检查点或归档操作的效率;有人未经授权删除了表空间 检查数据库的安全问题,是否密码太简单;如有必要,撤消某些用户的系统权限出现坏块 检查是否是硬件问题(如磁盘本生有坏块),如果不是,检查是那个数据库对象出现了坏块,对这个对象进行重建表空间不够增加数据文件到相应的表空间 出现ORA-600 根据日志文件的内容查看相应的TRC文件,如果是Oracle 的bug ,要及时打上相应的补丁二、数据库表空间使用情况监控(字典管理表空间)数据库运行了一段时间后,由于不断的在表空间上创建和删除对象,会在表空间上产生大量的碎片,DBA 应该及时了解表空间的碎片和可用空间情况,以决定是否要对碎片进行整理或为表空间增加数据文件。
Oracle DBA 管理脚本
Oracle DBA 管理脚本海量数据库资料下载/forum-160286-1.htmlOracle DBA 管理脚本--监控索引是否使用alter index &index_name monitoring usage;alter index &index_name nomonitoring usage;select * from v$object_usage where index_name = &index_name;--求数据文件的I/O分布select ,phyrds,phywrts,phyblkrd,phyblkwrt,singleblkrds,readtim,writetimfrom v$filestat fs,v$dbfile dfwhere fs.file#=df.file# order by ;--求某个隐藏参数的值col ksppinm format a54col ksppstvl format a54select ksppinm, ksppstvlfrom x$ksppi pi, x$ksppcv cvwhere cv.indx=pi.indx and pi.ksppinm like '\_%' escape '\' and pi.ksppinm like '%meer%';--求系统中较大的latchselect name,sum(gets),sum(misses),sum(sleeps),sum(wait_time)from v$latch_childrengroup by name having sum(gets) > 50 order by 2;--求归档日志的切换频率(生产系统可能时间会很长)select start_recid,start_time,end_recid,end_time,minutes from (select test.*, rownum as rnfrom (select b.recid start_recid,to_char(b.first_time,'yyyy-mm-dd hh24:mi:ss') start_time,a.recid end_recid,to_char(a.first_time,'yyyy-mm-dd hh24:mi:ss')end_time,round(((a.first_time-b.first_time)*24)*60,2) minutesfrom v$log_history a,v$log_history b where a.recid=b.recid+1 and b.first_time > sysdate - 1order by a.first_time desc) test) y where y.rn < 30--求回滚段正在处理的事务select ,b.xacts,c.sid,c.serial#,d.sql_textfrom v$rollname a,v$rollstat b,v$session c,v$sqltext d,v$transaction ewhere n=n and n=e.xidusn and c.taddr=e.addrand c.sql_address=d.address and c.sql_hashvalue=d.hash_value order by,c.sid,d.piece;--求出无效的对象select 'alter procedure '||object_name||' compile;'from dba_objectswhere status='INVALID' and wner='&' and object_type in ('PACKAGE','PACKAGE BODY');/select owner,object_name,object_type,status from dba_objects wherestatus='INVALID';--求process/session的状态select p.pid,p.spid,s.program,s.sid,s.serial#from v$process p,v$session s where s.paddr=p.addr;--求当前session的状态select ,ms.valuefrom v$mystat ms,v$statname snwhere ms.statistic#=sn.statistic# and ms.value > 0;--求表的索引信息select ui.table_name,ui.index_namefrom user_indexes ui,user_ind_columns uicwhere ui.table_name=uic.table_name and ui.index_name=uic.index_nameand ui.table_name like '&table_name%' and uic.column_name='&column_name';--显示表的外键信息col search_condition format a54select table_name,constraint_namefrom user_constraintswhere constraint_type ='R' and constraint_name in (select constraint_name from user_cons_columns where column_name='&1');select rpad(child.table_name,25,' ') child_tablename,rpad(cp.column_name,17,' ') referring_column,rpad(parent.table_name,25,' ') parent_tablename,rpad(pc.column_name,15,' ') referred_column,rpad(child.constraint_name,25,' ') constraint_namefrom user_constraints child,user_constraints parent,user_cons_columns cp,user_cons_columns pcwhere child.constraint_type = 'R' and child.r_constraint_name =parent.constraint_name andchild.constraint_name = cp.constraint_name and parent.constraint_name =pc.constraint_name andcp.position = pc.position and child.table_name ='&table_name'order by child.owner,child.table_name,child.constraint_name,cp.position;--显示表的分区及子分区(user_tab_subpartitions)col table_name format a16col partition_name format a16col high_value format a81select table_name,partition_name,HIGH_VALUE from user_tab_partitions where table_name='&table_name'--使用dbms_xplan生成一个执行计划explain plan set statement_id = '&sql_id' for &sql;select * from table(dbms_xplan.display);--求某个事务的重做信息(bytes)select ,m.valuefrom v$mystat m,v$statname swhere m.statistic#=s.statistic# and like '%redo size%';--求cache中缓存超过其5%的对象select o.owner,o.object_type,o.object_name,count(b.objd)from v$bh b,dba_objects owhere b.objd = o.object_idgroup by o.owner,o.object_type,o.object_namehaving count(b.objd) > (select to_number(value)*0.05 from v$parameter where name = 'db_block_buffers');--求谁阻塞了某个session(10g)select sid, username, event, blocking_session,seconds_in_wait, wait_timefrom v$session where state in ('WAITING') and wait_class != 'Idle';--求session的OS进程IDcol program format a54select p.spid "OS Thread", "Name-User", s.programfrom v$process p, v$session s, v$bgprocess bwhere p.addr = s.paddr and p.addr = b.paddrUNION ALLselect p.spid "OS Thread", ername "Name-User", s.programfrom v$process p, v$session s where p.addr = s.paddr and ername is not null;--查会话的阻塞col user_name format a32select /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username user_name, o.owner,o.object_name,s.sid,s.serial#from v$locked_object l,dba_objects o,v$session swhere l.object_id=o.object_id and l.session_id=s.sid order by o.object_id,xidusn desc ;col username format a15col lock_level format a8col owner format a18col object_name format a32select /*+ rule */ ername, decode(l.type,'tm','table lock', 'tx','row lock', null) lock_level, o.owner,o.object_name,s.sid,s.serial#from v$session s,v$lock l,dba_objects owhere l.sid = s.sid and l.id1 = o.object_id(+) and ername is not null ;--求等待的事件及会话信息/求会话的等待及会话信息select se.sid,ername,se.event,se.total_waits,se.time_waited,se.average_waitfrom v$session s,v$session_event sewhere ername is not null and se.sid=s.sid and s.status='ACTIVE' and se.event not like '%SQL*Net%' order by ername;select s.sid,ername,sw.event,sw.wait_time,sw.state,sw.seconds_in_waitfrom v$session s,v$session_wait swwhere ername is not null and sw.sid=s.sid and sw.event not like '%SQL*Net%' order by ername;--求会话等待的file_id/block_idcol event format a24col p1text format a12col p2text format a12col p3text format a12select sid,event,p1text, p1, p2text, p2, p3text, p3from v$session_waitwhere event not like '%SQL%' and event not like '%rdbms%' and event not like '%mon%' order by event;select name,wait_time from v$latch l where exists (select 1 from (selectsid,event,p1text, p1, p2text, p2, p3text, p3from v$session_waitwhere event not like '%SQL%' and event not like '%rdbms%' and event not like '%mon%') x where x.p1= tch#);--求会话等待的对象col owner format a18col segment_name format a32col segment_type format a32select owner,segment_name,segment_typefrom dba_extentswhere file_id = &file_id and &block_id between block_id and block_id + blocks - 1;--求buffer cache中的块信息select o.OBJECT_TYPE, substr(o.OBJECT_NAME,1,10) objname , b.objd , b.status, count(b.objd)from v$bh b, dba_objects owhere b.objd = o.data_object_id and o.owner = '&1' group by o.object_type,o.object_name,b.objd, b.status ;--求日志文件的空间使用select le.leseq current_log_sequence#, 100*cp.cpodr_bno/le.lesiz percentage_fullfrom x$kcccp cp,x$kccle lewhere le.leseq =cp.cpodr_seq;--求等待中的对象select /*+rule */ s.sid, ername, w.event, o.owner, o.segment_name,o.segment_type,o.partition_name, w.seconds_in_wait seconds, w.statefrom v$session_wait w, v$session s, dba_extents owhere w.event in (select name from v$event_name where parameter1 = 'file#'and parameter2 = 'block#' and name not like 'control%')and o.owner <> 'sys' and w.sid = s.sid and w.p1 = o.file_id and w.p2 >= o.block_id and w.p2 < o.block_id + o.blocks--求当前事务的重做尺寸select valuefrom v$mystat, v$statnamewhere v$mystat.statistic# = v$statname.statistic# and v$ = 'redo size';--唤醒smon去清除临时段column pid new_value Smonset termout offselect p.pid from sys.v_$bgprocess b,sys.v_$process p where = 'SMON' and p.addr = b.paddr/set termout onoradebug wakeup &Smonundefine Smon--求回退率select b.value/(a.value + b.value),a.value,b.value from v$sysstat a,v$sysstat bwhere a.statistic#=4 and b.statistic#=5;--求DISK READ较多的SQLselect st.sql_text from v$sql s,v$sqltext stwhere s.address=st.address and s.hashvalue=st.hash_value and s.disk_reads > 300;--求DISK SORT严重的SQLselect ername, sql.sql_text, sort1.blocksfrom v$session sess, v$sqlarea sql, v$sort_usage sort1where sess.serial# = sort1.session_numand sort1.sqladdr = sql.addressand sort1.sqlhash = sql.hash_value and sort1.blocks > 200;--求对象的创建代码column column_name format a36column sql_text format a99select dbms_metadata.get_ddl('TABLE','&1') from dual;select dbms_metadata.get_ddl('INDEX','&1') from dual;--求表的索引set linesize 131select a.index_name,a.column_name,b.status, b.index_typefrom user_ind_columns a,user_indexes bwhere a.index_name=b.index_name and a.table_name='&1';求索引中行数较多的select index_name,blevel,num_rows,CLUSTERING_FACTOR,status from user_indexes where num_rows > 10000 and blevel > 0select table_name,index_name,blevel,num_rows,CLUSTERING_FACTOR,status from user_indexes where status <> 'VALID'--求当前会话的SID,SERIAL#select sid, serial# from v$session where audsid =SYS_CONTEXT('USERENV','SESSIONID');--求表空间的未用空间col mbytes format 9999.9999select tablespace_name,sum(bytes)/1024/1024 mbytes from dba_free_space group by tablespace_name;--求表中定义的触发器select table_name,index_type,index_name,uniqueness from user_indexes wheretable_name='&1';select trigger_name from user_triggers where table_name='&1';--求未定义索引的表select table_name from user_tables where table_name not in (select table_name from user_ind_columns);--执行常用的过程exec print_sql('select count(*) from tab');exec show_space2('table_name');--求free memoryselect * from v$sgastat where name='free memory';select ,sum(b.value) from v$statname a,v$sesstat b where a.statistic# = b.statistic# group by ;查看一下谁在使用那个可以得回滚段,或者查看一下某个可以得用户在使用回滚段,找出领回滚段不断增长的事务,再看看如何处理它,是否可以将它commit,再不行就看看能否kill它,等等,查看当前正在使用的回滚段的用户信息和回滚段信息:set linesize 121SELECT "ROLLBACK SEGMENT NAME ",l.sid "ORACLEPID",p.spid "SYSTEM PID ",ername "ORACLE USERNAME"FROM v$lock l, v$process p, v$rollname r, v$session sWHERE l.sid = p.pid(+) AND s.sid=l.sid AND TRUNC(l.id1(+)/65536) = n AND l.type(+) = 'TX' AND l.lmode(+) = 6 ORDER BY ;--查看用户的回滚段的信息select ername, from v$session s, v$transaction t, v$rollstat r,v$rollname rnwhere s.saddr = t.ses_addr and t.xidusn = n and n = n--生成执行计划explain plan set statement_id='a1' for &1;--查看执行计划select lpad(' ',2*(level-1))||operation operation,options,OBJECT_NAME,position from plan_tablestart with id=0 and statement_id='a1' connect by prior id=parent_id and statement_id='a1'执行计划1)根据SID,从v$sql中找到相应SQL的HASH_VALUE和ADDRESS ;SELECT a.sql_text , a.address , a.hash_valueFROM v$sql a , v$session bwhere a.hash_value = b.sql_hash_valueand b.sid = &sid ;Alan Lee(160921) 22:58:072)根据hash_value和address的值,从v$sql_plan中找到真实的执行计划。
连接oracle数据库的语句
连接oracle数据库的语句连接Oracle数据库是开发人员常常遇到的一个任务,下面我将列举一些连接Oracle数据库的语句,希望能够帮助你。
1. 使用SQL*Plus连接Oracle数据库:```sqlplus username/password@host:port/service_name```其中,`username`是Oracle数据库的用户名,`password`是密码,`host`是主机名,`port`是端口号,`service_name`是服务名。
2. 使用JDBC连接Oracle数据库:```import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class OracleJdbcExample {public static void main(String[] args) {String url = "jdbc:oracle:thin:@host:port:service_name";String username = "username";String password = "password";try {Connection connection = DriverManager.getConnection(url, username, password);System.out.println("Successfully connected to Oracle database!");// 执行其他操作...connection.close();} catch (SQLException e) {System.out.println("Failed to connect to Oracle database!");e.printStackTrace();}}}```其中,`url`是连接Oracle数据库的URL,`username`是用户名,`password`是密码,`host`是主机名,`port`是端口号,`service_name`是服务名。
Oracle数据库执行批处理脚本
Oracle数据库执⾏批处理脚本1、执⾏批量赋值脚本/*** DML ***/declarev_sql varchar2(500) :='';v_condition VARCHAR2(200) :='';v_relationyear number :=0;v_relationmonth number :=0;v_relationweek number :=0;v_relationdays number :=0;v_relationhours number :=0;v_relationminute number :=0;v_relationseconds number :=0;v_relationworkorder number :=0;v_relationwarehose number :=0;v_relationworkgroup number :=0;beginv_sql :='selectt.relationyear,t.relationmonth,t.relationweek,t.relationdays,t.relationhours,t.relationminute,t.relationseconds,t.relationworkorder,t.relationwarehose,t.relationworkgroupfrom materialbatch t where 1=1'|| v_condition;execute immediate v_sqlintov_relationyear,v_relationmonth,v_relationweek,v_relationdays,v_relationhours,v_relationminute,v_relationseconds,v_relationworkorder,v_relationwarehose,v_relationworkgroup;DBMS_OUTPUT.put_line('v_relationyear--'|| v_relationyear ||',---v_relationworkgroup---'||v_relationworkgroup);commit;end;2、执⾏删除表和创建表脚本/*** DDL ***/beginEXECUTE IMMEDIATE 'drop table table_001';EXECUTE IMMEDIATE 'create table table_001(name varchar2(8),address varchar2(200))'; end;3、执⾏插⼊脚本/*** DML ***/declarev_1 varchar2(8);v_2 varchar2(10);str varchar2(50);beginv_1:='张三';v_2:='中国';str :='INSERT INTO table_001(name ,address) VALUES (:1, :2)';EXECUTE IMMEDIATE str USING v_1, v_2;commit;end;4、返回结果集过程CREATE OR REPLACE package pkg_test as/* 定义ref cursor类型不加return类型,为弱类型,允许动态sql查询,否则为强类型,⽆法使⽤动态sql查询;*/type myrctype is ref cursor;--函数申明function get(intID number) return myrctype;end pkg_test;/CREATE OR REPLACE package body pkg_test as--函数体function get(intID number) return myrctype isrc myrctype; --定义ref cursor变量sqlstr varchar2(500);beginif intID=0then--静态测试,直接⽤select语句直接返回结果open rc for select id,name,sex,address,postcode,birthday fromstudent;else--动态sql赋值,⽤:w_id来申明该变量从外部获得sqlstr :='select id,name,sex,address,postcode,birthday from studentwhere id=:w_id';--动态测试,⽤sqlstr字符串返回结果,⽤using关键词传递参数open rc for sqlstr using intid;end if;return rc;end get;end pkg_test;/5、返回单⾏结果declarestr varchar2(500);c_1 varchar2(10);r_1 test%rowtype;beginc_1:='张三';str:='select * from test where name=:c WHERE ROWNUM=1'; execute immediate str into r_1 using c_1;DBMS_OUTPUT.PUT_LINE(R_||R_1.ADDRESS); end ;。
oracle数据库巡检sql脚本
如何查询sga内各组件信息和pga大小SQL> conn / as sysdbaSQL> show parameter sga_max–查看sga的大小NAMETYPEVALUE------------------------------------ ----------- ------------------------------sga_max_sizebig integer 60SQL> show parameter sga_target–查看sga_target大小(只限10g以上版本) NAMETYPEVALUE------------------------------------ ----------- ------------------------------sga_targetbig integer 584MSQL> show parameter db_cache_size–-查看db_cache大小NAMETYPEVALUE------------------------------------ ----------- --------------------db_cache_sizebig integer 00SQL> show parameter shared_pool_size–查看share_pool大小NAMETYPEVALUE------------------------------------ ----------- ---------------------------shared_pool_sizebig integer 4SQL> show parameter pga—查看pga_aggregate_target NAMETYPEVALUE------------------------------------ ----------- ---------------pga_aggregate_targetbig integer 0查询数据库版本的sqlSQL> select VERSION from v$instance;VERSION-----------------9.2.0.1.0SQL>select name, log_mode from v$database; --查看数据库名,归档模式NAMELOG_MODE--------- ------------SKYOTAARCHIVELOG–NOARCHIVELOG为非归档模式查看数据库字符集SQL>selectvalueFROMnls_database_parameters'NLS_CHARACTERSET';VALUE-----------------------------------------------------ZHS16GBKWHEREparameter=查看redo log信息查看日至组及成员SELECTgroup#,member FROMV$LOGFILE查看xx如成员大小SQL> select group# ,bytes ,members from v$log;GROUP# BYTES MEMBERS---------- ---------- ----------1 0 12 0 13 0 1近一个月内每天xx切换次数selectto_char(first_time,'yy-mm-dd')day,count(*)timesfromv$log_history where first_time> sysdate-30group byto_char(first_time,'yy-mm-dd') ;查看监控当天高峰期日志切换情况–具体高峰时段根据项目特性修改sqlselectcount(*)timesfromv$log_historywherefirst_timebetweento_date('2009-04-11 10:00:00','yy-mm-dd hh24:mi:ss')andto_date('2009-04-11 16:00:00','yy-mm-dd hh24:mi:ss');在oracle告警日志中(alertsid.log),也可以查看最近日志切换的情况表空间使用率:SELECT UPPER (f.tablespace_name) "表空间名",d.tot_grootte_mb "表空间大小(M)",d.tot_grootte_mb - f.total_bytes "已使用空间(M)",TO_CHAR(ROUND ( (d.tot_grootte_mb - f.total_bytes)/ d.tot_grootte_mb* 100,2),'990.99') "以使用占当前表空间大小比例",f.total_bytes "空闲空间(M)", f.max_bytes "最大块(M)",d.max_autobytes "表空间扩展的最大尺寸(M)",TO_CHAR (ROUND ( (d.tot_grootte_mb - f.total_bytes)/ d.max_autobytes* 100,2),'990.99') "以使用占最大扩展比例"FROM (SELECT tablespace_name,ROUND (SUM (BYTES) / (1024 * 1024), 2) total_bytes,ROUND (MAX (BYTES) / (1024 * 1024), 2) max_bytesFROM SYS.dba_free_spaceGROUP BY tablespace_name) f,(SELECT dd.tablespace_name,ROUND (SUM (dd.BYTES) / (1024 * 1024),2) tot_grootte_mb,TRUNC ( SUM (DECODE (dd.maxbytes,0, dd.BYTES,dd.maxbytes))/ (1024 * 1024)) max_autobytesFROM SYS.dba_data_files ddGROUP BY dd.tablespace_name) dWHERE d.tablespace_name = f.tablespace_name;任务或job的运行情况selectschema_user,last_date,next_date,total_time,interval,failures,whatfromdba_job swhereschema_user='SKY'–以实际的业务用户为准查看系统当前的等待事件SELECTs.SID,w.event,ername,w.p1,w.p2,w.p3,s.logon_time,s.program,SYSDATEFROMv$session s,v$session_wait wWHEREs.SID=w.SIDANDw.eventNOT LIKE'%SQL*Net%'ANDw.eventNOT LIKE'%rdbms%'ANDw.eventNOT LIKE'%timer%'ANDw.eventNOT LIKE'%jobq%'ANDw.eventNOT LIKE'%wakeup%';当前等待事件对应的sqlSELECT/*+ RULE*/s.SID,w.event,ername,t.hash_value,t.piece,t.sql_text,SYSDATEFROMv$session s,v$session_wait w,v$sqltext tWHEREs.SID=w.SIDANDs.sql_hash_value=t.hash_valueANDw.eventIN('db file scattered read','db file sequential read','free buffer waits','enque','latch free','log file parallel write','log file sync','buffer busy waits','db file parallel write','db file single write','direct path read','direct path write','free buffer inspected','free buffer waits','library cache load lock','library cache lock','library cache pin','log buffer space','log file single write','log file switch (archiving need)', 'log file switch (clearing log file)','undo segment extension')ORDER BYs.SID,t.piece;当前主要全表扫描语句SELECTb.sql_text,b.executions,b.sorts,b.disk_reads,b.buffer_gets,a.hash_value,a.object_owner,a.object_name,SYSDATE FROMv$sql_plan a,v$sql bWHEREa.address=b.addressANDa.hash_value=b.hash_valueANDa.child_number=b.child_numberANDa.operation='TABLE ACCESS'ANDa.options='FULL'ANDa.object_ownerNOT IN('ODM','QS','QS_CBADM','QS_CS','QS_ES','QS_OS','QS_WS','SYS','SYSTEM');单次执行物理读多前20个语句SELECT*FROM(SELECTround(disk_reads/decode(EXECUTIONS,0,1,executions),2)bit,PARSING_USER_ID, EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,sql_textFROMv$sqlareaORDER BYbitDESC)WHERE ROWNUM<21;物理多总数多前10个sqlSELECT*FROM(SELECTPARSING_USER_ID,EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,sql_textFROMv$sqlareaORDER BYdisk_readsDESC)WHERE ROWNUM<11;单次逻辑读多的前10个sqlSELECT*b.spid,s.sql_hash_value,q.sql_text,q.executions,q.buffer_gets,ROUND(q.buffer_gets/q.executions)ASbuffer_per_exec,ROUND(q.elapsed_time /q.executions)AScpu_time_per_exec,q.cpu_time,q.elapsed_time,q.disk_reads,q.rows_processedFROMv$session s,v$process b,v$sql qWHEREs.sql_hash_value=q.hash_valueANDs.paddr=b.addr-- AND s.status = 'ACTIVE'ANDs.TYPE='USER'ANDq.buffer_gets>0ANDq.executions>0ORDER BYbuffer_per_execDESC)WHERE ROWNUM<=10;逻辑读多的前10个sqlSELECT*b.spid,s.sql_hash_value,q.sql_text,q.executions,q.buffer_gets,q.cpu_time,q.elapsed_time,q.disk_reads,q.rows_processedFROMv$session s,v$process b,v$sql q WHEREs.sql_hash_value=q.hash_value ANDs.paddr=b.addr-- AND s.status = 'ACTIVE'ANDs.TYPE='USER'ANDq.buffer_gets>0ANDq.executions>0ORDER BYbuffer_getsDESC)WHERE ROWNUM<=10;用户对象在非自定义表空间中存储的情况(owner='SKY'以实际业务用户为准)selectsegment_name,segment_type,tablespace_name,bytesfrom dba_segmentswhereowner='SKY'ANDTABLESPACE_NAMEIN('SYSTEM','USERS','SYSAUX')系统中最大的二十个表大小及高水位selectsegment_name,"SIZE(M)",TABLESPACE_NAMEfrom(select fromsegment_name,bytes/1024/1024"SIZE(M)",TABLESPACE_NAME user_segmentsORDERBYTESDESC)wherownum<=2011/ 11。
oracle+mybatisx常用语句
oracle+mybatisx常用语句1.插入数据:使用INSERT INTO语句来插入数据到表中。
拓展:可以使用INSERT INTO ... SELECT语句将一张表的数据插入到另一张表中。
2.更新数据:使用UPDATE语句来更新表中的数据。
拓展:可以使用UPDATE ... JOIN语句来更新两张表之间的关联数据。
3.删除数据:使用DELETE语句来删除表中的数据。
拓展:可以使用DELETE ... JOIN语句来删除两张表之间的关联数据。
4.查询数据:使用SELECT语句来查询表中的数据。
拓展:可以使用SELECT ... FROM多个表来进行多表查询,并使用JOIN关键字来连接表。
5.条件查询:使用WHERE子句来筛选查询结果。
拓展:可以使用AND、OR、IN、BETWEEN等逻辑运算符来组合条件查询。
6.排序查询:使用ORDER BY子句来按照指定的字段排序查询结果。
拓展:可以使用DESC关键字来进行降序排序。
7.分页查询:使用LIMIT子句来限制查询结果的数量。
拓展:可以使用OFFSET关键字来指定查询结果的偏移量,实现分页功能。
8.聚合查询:使用GROUP BY子句来按照指定的字段进行分组,并使用聚合函数如COUNT、SUM、AVG等来计算分组数据。
拓展:可以使用HAVING子句来筛选聚合结果。
9.连接查询:使用JOIN关键字来连接多个表。
拓展:可以使用INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN等不同类型的连接来满足不同的需求。
10.子查询:在SELECT语句中嵌套另一个SELECT语句进行查询。
拓展:可以使用子查询来解决复杂查询问题,如在WHERE子句中使用子查询进行条件筛选。
这些是Oracle和MyBatisX中常用的语句,它们可以用来进行数据操作,灵活运用这些语句可以满足各种复杂的数据查询和更新需求。
oracle数据库语句汇总
oracle数据库语句汇总在Oracle数据库中,有许多常用的SQL语句可以用于查询、插入、更新和删除数据。
下面列举了一些常见的Oracle数据库语句,以供参考。
1. 查询表中的所有数据:```SELECT * FROM 表名;```2. 查询表中的特定字段数据:```SELECT 字段1, 字段2, ... FROM 表名;```3. 查询表中满足特定条件的数据:```SELECT * FROM 表名 WHERE 条件;```4. 对查询结果进行排序:```SELECT * FROM 表名 ORDER BY 字段 ASC/DESC;```5. 对查询结果进行分组:```SELECT 字段1, 字段2, ... FROM 表名 GROUP BY 字段;```6. 对查询结果进行统计:```SELECT COUNT(*) FROM 表名;```7. 插入数据到表中:```INSERT INTO 表名(字段1, 字段2, ...) VALUES (值1, 值2, ...);```8. 更新表中的数据:```UPDATE 表名 SET 字段1 = 值1, 字段2 = 值2 WHERE 条件;9. 删除表中的数据:```DELETE FROM 表名 WHERE 条件;```10. 创建新表:```CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型,...);```11. 修改表结构:```ALTER TABLE 表名 ADD (字段数据类型); ```12. 删除表:DROP TABLE 表名;```13. 创建索引:```CREATE INDEX 索引名 ON 表名 (字段);```14. 删除索引:```DROP INDEX 索引名;```15. 创建视图:```CREATE VIEW 视图名 AS SELECT * FROM 表名 WHERE 条件; ```16. 删除视图:```DROP VIEW 视图名;17. 创建存储过程:```CREATE PROCEDURE 存储过程名ISBEGIN-- 存储过程的具体逻辑END;```18. 调用存储过程:```EXEC 存储过程名;```以上是一些常见的Oracle数据库语句,可以满足大部分基本的数据操作需求。
oracle数据库管理常用语句
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。/459544/224544
查询结果命中率=1-physical reads/(dbblock gets+consistent gets)
查看Shared_pool_size命中率
SELECT (1-(SUM(getmisses)/(SUM(gets)+SUM(getmisses))))*100
Fgrant dba,resource,connect to test;
11.用户解锁
ALTER USER username ACCOUNT UNLOCK;
11.1按cantonname分组后,把一个cantonname对应的多个villagestowns放到一行里(一列中的多行数据合并到一行)
execute immediate 'drop table '||droptable.dt;
end loop;
end;
实现列值自动增长触发器:
create sequence tb_gos_dzsw_order_pk
create or replace trigger dzsw_trigger
where id in (2,3,1)
order by decode(id,2,1,4) asc,name desc;
取上月第一天与最后一天
SELECT last_day(add_months(trunc(SYSDATE), -2)) + 1, last_day(add_months(trunc(SYSDATE),-1)) FROM dual;
oracle执行带参数sql脚本Oracle带参数的sql语句脚本转Oracle存储过程
oracle执行带参数sql脚本Oracle带参数的sql语句脚本转Oracle存储过程要在Oracle中执行带参数的SQL脚本,可以使用PL/SQL块或存储过程来实现。
首先,创建一个PL/SQL块,其中包含需要执行的SQL语句和参数。
例如:```DECLAREmy_param VARCHAR2(10) := 'param_value';BEGIN--执行SQL语句EXECUTE IMMEDIATE 'SELECT * FROM my_table WHERE column= :param' USING my_param;--可以在这里添加其他SQL语句或逻辑COMMIT;END;```在上面的例子中,我们声明了一个变量`my_param`并赋予了一个值。
然后,我们使用`EXECUTE IMMEDIATE`语句执行了一条SELECT语句,并使用`USING`子句将参数传递给SQL语句。
如果你想将带参数的SQL脚本转换为Oracle存储过程,你可以将以上代码封装在一个存储过程中。
例如:```CREATE OR REPLACE PROCEDURE my_procedure (my_param IN VARCHAR2)ISBEGIN--执行SQL语句EXECUTE IMMEDIATE 'SELECT * FROM my_table WHERE column= :param' USING my_param;--可以在这里添加其他SQL语句或逻辑COMMIT;END;```在上述存储过程中,我们定义了一个接受一个输入参数`my_param`的存储过程。
然后,我们使用`EXECUTE IMMEDIATE`语句执行SQL语句,并使用`USING`子句将参数传递给SQL语句。
你可以根据实际需求修改以上示例代码,并根据需要传递不同的参数来执行带参数的SQL脚本。
数据库(Oracle)运维工作内容及常用脚本命令
数据库(Oracle)运维⼯作内容及常⽤脚本命令1、系统资源状况:--内存及CPU资源--linux,solaris,aixvmstat 5--说明:1)观察空闲内存的数量多少,以及空闲内存量是否稳定,如果不稳定就得想办法来解决,怎么解决还得看具体情况,⼀般可以通过调整相关内存参数来解决,各种操作系统输出指标、解释及内存调整参数及⽅法不完全⼀样;2)观察CPU资源利⽤情况,⾸先,需要观察CPU上运⾏的任务数,也就是vmstat输出中位于第⼀列上的指标,如果该指标持续⼤于CPU 核⼼数,应该引起注意;如果该指标持续⼤于CPU核⼼数的两倍,那么应该引起重视;如果持续为CPU核⼼数的多倍,系统⼀般会出现应⽤可感知的现象,必须⽴刻想办法解决。
当然,在观察该指标的同时,还要结合CPU利⽤率的指标情况,如:⽤户使⽤百分⽐,系统使⽤百分⽐,空闲百分⽐等指标,如果空闲百分⽐持续低于20%,应该引起注意;如果持续低于10%,应该引起重视;如果持续为0,系统⼀般会出现应⽤可感知的现象,应该⽴刻想办法解决问题;3)CPU⽤户使⽤百分⽐和系统使⽤百分⽐的⽐例,也是应该注意的。
⼀般来说,在⼀个状态正常的系统上,⽤户使⽤百分⽐应该⽐系统使⽤百分⽐⼤很多,⼏倍到⼗⼏倍甚⾄更⾼,如果系统使⽤百分⽐持续接近⽤户使⽤百分⽐,甚⾄⼤于⽤户使⽤百分⽐,说明系统的状态是不正常的,可能是硬件或者操作系统问题,也可能是应⽤问题。
有关vmstat输出中各指标及解释等,可以参照本⼈博客中相关⽂章:。
--IO状况--linux,solarisiostat -dx 5--aixiostat 5--说明:1)该命令主要⽤来观察系统存储设备的负载和性能状况,⾸先,需要观察系统各存储设备的繁忙程度,如果该繁忙程度指标持续超过80%,那么应该引起注意;如果持续超过90%,应该引起重视;如果持续100%,⼀般会出现应⽤感知的现象,应该⽴刻想办法解决问题; 2)其次,需要注意的是系统上各存储设备的IO能⼒,就是每秒钟各存储设备的输⼊、输出的数据量,这个和具体设备的硬件及配置有关,没有⼀个严格的标准,性能好点的能达到每秒上G,甚⾄⼏个G,差的只能到每秒⼏⼗兆甚⾄⼗⼏兆;3)最后,需要观察存储设备完成每次读写操作耗费的时间,这个也是和具体设备硬件和配置相关的,好的设备可能不到1毫秒,差的能到⼏⼗毫秒甚⾄上百毫秒;iostat的输出,在各种操作系统上的输出和解释也不尽相同,具体可以参照本⼈博客的相关⽂章:。
Oracle监视表空间,并自动增加数据文件脚本
Oracle监视表空间,并自动增加数据文件脚本Oracle监视表空间,并自动增加数据文件脚本Sql代码--- 创建view--- 百分比create view tablespace_used_percent asselect useage from(selecta.tablespace_name,a.file_name,a.total "Total(MB)",round(a.total-b.Free_Space) "Used(MB)",round(((a.total-b.Free_Space)/a.total)*100,2) as useage, a.auto_extendfrom(selectFILE_ID,tablespace_name,file_name,bytes/(1024*1024) Total,AUTOEXTENSIBLE auto_extendfromdba_data_files ddf) a,(selectfile_id,sum(bytes)/(1024*1024) Free_Spacefromdba_free_spacegroup by file_id) bwherea.file_id=b.file_id)where tablespace_name = 'YOUR TABLESPACE NAME';--- deailscreate view TABLESPACE_USAGE asselecta.tablespace_name,a.file_name,a.total "Total(MB)",round(a.total-b.Free_Space) "Used(MB)",round(((a.total-b.Free_Space)/a.total)*100,2) "Used(%)", a.auto_extendfrom(selectFILE_ID,tablespace_name,file_name,bytes/(1024*1024) Total,AUTOEXTENSIBLE auto_extendfromdba_data_files ddf) a,(selectfile_id,sum(bytes)/(1024*1024) Free_Spacefromdba_free_spacegroup by file_id) bwherea.file_id=b.file_id;Linux 脚本Java代码############################################## ######################### checkTabsp.sh #### This Script will add the new datafile if Tablespace's data## file, which is greater than the 80% of one datafiles size############################################## ########################!/bin/bashusedPercentNO=(`sqlplus -s '/as sysdba' <<\EOF SET heading OFF;SET verify OFF;SELECT * FROM tablespace_used_percent;EOF`)#get the length of arraylen=${#usedPercentNO[*]}echo "The array has $len members."i=0while [ $i -lt $len ]; doecho "$i: ${usedPercentNO[$i]}"arrNo=`echo "${usedPercentNO[$i]}" | awk -F. '{print $1}'`if [ -z $arrNo ]thenarrNo=1fi# if usedPercentNo >= 80 then we add new datafile,which will have 8G sizeif [ $arrNo -gt 80 ]thenlet sigNo=$i+1sqlplus -s "/ as sysdba" <<EOFALTER TABLESPACE DB_TABLESPACE ADD DATAFILE '/opt/oracle/oradata/DB/DB_DATA$sigNo.dbf' SIZE 2G AUTOEXTEND ON MAXSIZE 8G;EOF# we need send email to report the tablespace stats infosqlplus -s "/as sysdba" <<\EOFcol tablespace_name for a30col file_name for a60col auto_extend for a12col tablespace_name justify centercol file_name justify centercol autoextend justify rightset linesize 200set pagesize 500SPOOL tablespace.alertSELECT * FROM TABLESPACE_USAGE;SPOOL OFF;EXITEOFfilet i++done#we needn't send email from there the crontab will doif [ `cat tablespace.alert|wc -l` -gt 0 ]thencat tablespace.alert >tablespace.tmpmailx -s "TABLESPACE ALERT for DB"EMAIL-ADDRESS < tablespace.alertfi上面这个脚本会导致如果有一个文件超过80%的话,脚本会不停添加数据文件....更新修改后的,而且把sql直接用文本文件来代替了以前使用的viewJava代码#!/bin/bash# Managed by Puppet############################################## ######################### checkTabsp.sh #### This Script will add the new datafile if BOCC Tablespace's data## file, which is greater than the 80% of one datafiles size############################################## ######################## Avoid have the script run if already runningsource /opt/app/inc/some_functions.shpgrpfile=/tmp/checkTabsp.pgrpcheck_if_running# endsource /home/oracle/.profileusedDatafileNO=(`sqlplus -s '/as sysdba' <<\EOF SET heading OFF;SET verify OFF;@/opt/app/sql/chktabspused.sqlEOF`)# check whether it needs add data fileif [ $usedDatafileNO -eq 0 ]thenusedDatNO=(`sqlplus -s '/as sysdba' <<\EOFSET heading OFF;SET verify OFF;@/opt/app/sql/chkdatno.sqlEOF`)let sigNO=$usedDatNO+1sigNO=`printf "%03d" $sigNO`sqlplus -s "/ as sysdba" <<EOFALTER TABLESPACE DB_TABLESPACE ADD DATAFILE '/opt/oracle/oradata/DB/DB_DATA$sigNO.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M;EOF# we need send email to report the tablespace stats info to check whether add data file successfulsqlplus -s "/as sysdba" <<\EOFcol tablespace_name for a30col file_name for a60col auto_extend for a12col tablespace_name justify centercol file_name justify centercol autoextend justify rightset linesize 200set pagesize 500@/opt/bocc/sql/chktabspstats.sqlEXITEOF# out put the disk space useagedf -hfi#we will don't send email from there the crontab will do # if [ `cat tablespace.alert|wc -l` -gt 0 ]# then# cat tablespace.alert >tablespace.tmp# mailx -s "TABLESPACE ALERT for DB"YOUR_EMAIL_ADDRESS t < tablespace.alert。
ORACLE 数据库巡检报告脚本
**************************************************************** # made by brain zhang# products made by brain zhang is competitive products**************************************************************** SET MARKUP HTML ON SPOOL ON pre off entmap offSET ECHO OFFSET TERMOUT OFFSET TRIMOUT OFFset feedback offset heading onset linesize 200set pagesize 10000col tablespace_name format a15col total_space format a10col free_space format a10col used_space format a10col used_rate format 99.99column dbid new_value spool_dbidcolumn inst_num new_value spool_inst_numselect dbid from v$database where rownum = 1;select instance_number as inst_num from v$instance where rownum = 1;column spoolfile_name new_value spoolfileselect 'spool_'||(select name from v$database where rownum=1) ||'_'|| (select instance_name from v$instance where rownum=1) ||'_'||to_char(sysdate,'yy-mm-dd_hh24.mi')||'_static' as spoolfile_name from dual;spool &&spoolfile..htmlset line 140 pages 9000;col action_time for a30;col action for a10;col namespace for a15;col version for a20;col comments for a30;prompt system info check!/sbin/ip addr!hostname!df -h!tail -10000 $ORACLE_BASE/admin/$ORACLE_SID/bdump/al*|grep ora-!tail -10000 $ORACLE_BASE/admin/$ORACLE_SID/bdump/al*|grep err!tail -10000 $ORACLE_BASE/admin/$ORACLE_SID/bdump/al*|grep failprompt 1.database version and patch checkselect action_time,action, namespace,version,comments from dba_registry_history;prompt 2.database id checkselect dbid from v$database;prompt 3. database force logging、SUPPLEMENTAL_LOG_DATA_MIN、FLASHBACK_ON checkcol FORCE_LOGGING for a3;col SUPPLEMENTAL_LOG_DATA_MIN for a10;col SUPPLEMENTAL_LOG_DATA_PK for a3;col SUPPLEMENTAL_LOG_DATA_UI for a3;col SUPPLEMENTAL_LOG_DATA_FK for a3col SUPPLEMENTAL_LOG_DATA_ALL for a3;col FLASHBACK_ON for a15;selectFORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN,SUPPLEME NTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI,SUPPLEMENTAL_LOG_DATA_F K,SUPPLEMENTAL_LOG_DATA_ALL,FLASHBACK_ONfrom v$database;prompt 4. database SESSIONS_CURRENT、SESSIONS_HIGHWATERselect INST_ID,SESSIONS_CURRENT,SESSIONS_HIGHWATER from gv$license;prompt 5. database profilescol limit for a30;select * from dba_profiles order by 1;prompt 6. database languageselect userenv('language') from dual;prompt 7. database instance statuscol INSTANCE_NAME for a20;col host_name for a20;selectinst_id,instance_number,instance_name,host_name,statusfrom gv$instance;prompt 8. database sum sizeselect sum(bytes)/1024/1024/1024 as GB from dba_segments;prompt 9. database controlfileCOL NAME FOR A50;select * from v$controlfile;prompt 10. database logfileselect THREAD#,GROUP#,SEQUENCE#, BYTES/1024/1024,status,FIRST_TIME from v$log;col member for a50;select * from v$logfile;prompt 11. database archivearchive log list;prompt 12. database tablespace checkcol file_name for a50;col tablespace_name for a20;selectfile_id,tablespace_name,file_name,bytes/1024/1024,status,AUT OEXTENSIBLE,MAXBYTES/1024/1024from dba_data_files;SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS,SPACE-NVL(FREE_SPACE,0) "USED_SPACE(M)", ROUND((1-NVL(FREE_SPACE,0)/SPACE)*100,2)"USED_RATE(%)",FREE_SPACE "FREE_SPACE(M)"FROM(SELECTTABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKSFROM DBA_DATA_FILESGROUP BY TABLESPACE_NAME) D,(SELECTTABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) FREE_SPACEFROM DBA_FREE_SPACEGROUP BY TABLESPACE_NAME) FWHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+) UNION ALL --if have tempfileSELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS,USED_SPACE"USED_SPACE(M)",ROUND(NVL(USED_SPACE,0)/SPACE*100,2) "USED_RATE(%)",NVL(FREE_SPACE,0) "FREE_SPACE(M)"FROM(SELECTTABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKSFROM DBA_TEMP_FILESGROUP BY TABLESPACE_NAME) D,(SELECTTABLESPACE_NAME,ROUND(SUM(BYTES_USED)/(1024*1024),2) USED_SPACE,ROUND(SUM(BYTES_FREE)/(1024*1024),2) FREE_SPACE FROM V$TEMP_SPACE_HEADERGROUP BY TABLESPACE_NAME) FWHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+);prompt 13. database backup!sh rman_back.shspool offexit;#check rman back scriptscat >rman_back.sh<<EOFrman target / <<EOFlist backup of database summary; quitEOF。
oracle用脚本创建数据库等过程参考
一、数据库创建过程STEP1、编写初始化文件1、将%ORACLE_HOME%\admin\sample\pfile文件复制到%ORACLE_HOME%\database下更改命名为spfile.ora2、修改初始化参数文件新增参数instance_name=orcldb_domain=修改参数db_name=orcldb_block_size=8192remote_login_passwordfile=exclusiveSTEP2、设置操作系统环境变量在系统环境变量中修改oracle_sid为orclSTEP3、1、创建实例oradim -new -sid orcl -intpwd sys123 -startmode suto2、以管理员身份登录数据库sqlplus /nologconn / as sysdbacreate spfile from pfile;启动实例到nomount状态startup nomountSTEP4、执行创建数据库脚本create database orcldatafile 'C:\database\orcl\system_01.dbf' size 256m autoextend on next 10m maxsize unlimitedsysaux datafile 'C:\database\orcl\systemaux_01.dbf' size 100m autoextend on next 10m maxsize unlimitedlogfilegroup 1('C:\database\orcl\log_1_01.rdo') size 10m,group 2('C:\database\orcl\log_2_01.rdo') size 10m character set zhs16gbk;STEP5、运行数据字典脚本1、conn / as sysdba@C:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\catalog.sql @C:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\catproc.sql 2、conn system/manager@C:\oracle\product\10.2.0\db_1\sqlplus\admin\pupbld.sql 二、控制文件和重做日志文件多录化多路控制文件(利用spfile文件)1、超级用户sys登录2、查询数据字典v$controlfile得到控制文件的信息select name from v$controlfile; --执行得到控制文件名称和位置3、更改spfile中控制文件信息SQL> alter system set cntrolfiles='c:\oracle\product\10.2.0\db_1\database\CTL1ORCL.ora','d:\oradata\CTL2ORCL.ora','e:\oradata\CTL3ORCL.ora'scope=spfile;4、关闭数据库shutdown immediate5、将c:\oracle\product\10.2.0\db_1\database目录下的CTL1ORCL.ora拷贝到指定的位置,并更改为对应的名称。
ORACLE DBA常用脚本
ORACLE DBA常用脚本及命令(一)1、查看表空间的名称及大小select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom dba_tablespaces t, dba_data_files dwhere t.tablespace_name = d.tablespace_namegroup by t.tablespace_name;2、查看表空间物理文件的名称及大小select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_spacefrom dba_data_filesorder by tablespace_name;3、查看回滚段名称及大小select segment_name, tablespace_name, r.status,(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,max_extents, v.curext CurExtentFrom dba_rollback_segs r, v$rollstat vWhere r.segment_id = n(+)order by segment_name ;4、查看控制文件select name from v$controlfile;5、查看日志文件select member from v$logfile;6、查看表空间的使用情况select sum(bytes)/(1024*1024) as free_space,tablespace_namefrom dba_free_spacegroup by tablespace_name;SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE CWHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;7、查看数据库库对象select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status;8、查看数据库的版本Select version FROM Product_component_versionWhere SUBSTR(PRODUCT,1,6)='Oracle';9、查看数据库的创建日期和归档方式Select Created, Log_Mode, Log_Mode From V$Database;10、查看当前所有对象SQL> select * from tab;11、建一个和a表结构一样的空表SQL> create table b as select * from a where 1=2;SQL> create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2;12、察看数据库的大小,和空间使用情况SQL> col tablespace format a20SQL> select b.file_id 文件ID,b.tablespace_name 表空间,b.file_name 物理文件名,b.bytes 总字节数,(b.bytes-sum(nvl(a.bytes,0))) 已使用,sum(nvl(a.bytes,0)) 剩余,sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比from dba_free_space a,dba_data_files bwhere a.file_id=b.file_idgroup by b.tablespace_name,b.file_name,b.file_id,b.bytesorder by b.tablespace_name/dba_free_space --表空间剩余空间状况dba_data_files --数据文件空间占用情况13、查看现有回滚段及其状态SQL> col segment format a30SQL> SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS;14、查看数据文件放置的路径SQL> col file_name format a50SQL> select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id; 15、显示当前连接用户SQL> show user16、把SQL*Plus当计算器SQL> select 100*20 from dual;17、连接字符串SQL> select 列1||列2 from 表1;SQL> select concat(列1,列2) from 表1;18、查询当前日期SQL> select to_char(sysdate,'yyyy-mm-dd,hh24:mi:ss') from dual;19、用户间复制数据SQL> copy from user1 to user2 create table2 using select * from table1;20、视图中不能使用order by,但可用group by代替来达到排序目的SQL> create view a as select b1,b2 from b group by b1,b2;21、通过授权的方式来创建用户SQL> grant connect,resource to test identified by test;SQL> conn test/test一、ORACLE的表的分类:1、REGULAR TABLE:普通表,ORACLE推荐的表,使用很方便,人为控制少。
oracle数据库备份和过期自动删除windows脚本
color 0bmode con cols=80 lines=25echo 正在备份数据库,请稍后……echo oracle10导出数据时在exporting cluster definitions挂起echo 设置LD_LIBRARY_PATH 和LIBPATH环境变量为D:\oracle\product\10.1.0\db_3\LIB echo 重启服务echo --------------------------------------echo 指定数据库用户(在“=”后面写入你需要备份的数据库登录用户名)set dbuser=oralceuserecho 指定数据库密码(在“=”后面写入你需要备份的数据库登录密码)set dbpass=\"oralcepassword\"echo 指定数据库服务名(在“=”后面写入你需要备份的数据库服务名)set dburl=ip:1521/orclecho 指定备份目录(指定备份的文件夹,以“\”结束)set file=E:\data_backup\dbback\echo ----------------------------------------------echo 开始计算日期和时间,用于备份文件的名称(由于是自动备份,备份的文件名我们定义为数据库登录名+系统时间—精确到秒)set hh=%time:~0,2%echo 如果小时是一位的,那么在前面补零if /i %hh% LSS 10 (set hh=0%time:~1,1%)set rq=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%set sj=%hh%%TIME:~3,2%%TIME:~6,2%set wjm=%file%%rq%\%dbuser%%sj%echo ----------------------------------------------echo 请核对以下数据是否正确echo 用户名:%dbuser%echo 密码:%dbpass%echo 服务名:%dburl%echo 备份目录:%file%%rq%IF NOT EXIST %file%%rq% MD %file%%rq%echo 备份文件名:%wjm%echo ----------------------------------------------echo 开始备份数据库echo ---------------------------------------------exp %dbuser%/%dbpass%@%dburl% file=%wjm%.dmp log=%wjm%.log owner=%dbuser%echo 数据库备份完成echo ----------------------------------------------rem 使用绝对路径set SrcDir= E:\data_backup\dbback\rem 指定天数set DaysAgo=90>"%temp%/DstDate.vbs" echo LastDate=date()-%DaysAgo%>>"%temp%/DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)>>"%temp%/DstDate.vbs" echo wscript.echo FmtDatefor /f %%a in ('cscript /nologo "%temp%/DstDate.vbs"') do (set "DstDate=%%a")set DstDate=%DstDate:~0,4%%DstDate:~4,2%%DstDate:~6,2%setlocal enabledelayedexpansionfor /d %%a in ("%SrcDir%/*.*") do (set "FolderDate=%%~a"set "FolderDate=!FolderDate:~-8!"if "!FolderDate!" leq "%DstDate%" (echo "%%a"if exist "%%a" (rd /s /q "%%a")))endlocal。
oracle19c之导入、导出及脚本
oracle19c之导⼊、导出及脚本 记录⼀下oracle两种常⽤的导⼊导出⽅式:exp、imp;spool、SQL*Loader及其脚本。
⼀、exp与imp导⼊导出 1、exp导出操作exp c##sl/123456 buffer=64000 file=./full.sql full=y --导出整个数据库exp c##sl/123456 buffer=64000 file=./sl.sql owner=c##sl --导出⽤户c##sl下的对象exp c##sl/123456 buffer=64000 file=./book.sql tables=book --导出book表exp c##sl/123456 buffer=64000 file=./book.sql tables=book,book2; --导出book、book2表 2、imp导⼊操作exp c##sl/123456 buffer=64000 file=./book.sql tables=bookdrop table book;imp c##sl/123456 buffer=64000 file=./book.sql tables=book --需要先删除表,再导⼊,否则报错exp c##sl/123456 buffer=64000 file=./book.sql tables=bookimp c##sl/123456 buffer=64000 ignore=y file=./book.sql tables=book --只会导⼊主键不冲突的数据,冲突的忽略exp c##sl/123456 buffer=64000 file=./sl.sql owner=c##slimp c##sl/123456 buffer=64000 ignore=y file=./sl.sql full=y --导⼊sl.sql中的全部⽂件imp c##sl/123456 buffer=64000 ignore=y file=./sl.sql tables=book,book2 --导⼊sl.sql中的表book、与book2 说明:tables指定导⼊或导出的表;full=y表⽰导⼊或导出全部;ignore=y表⽰跳过主键冲突执⾏ ⼆、spool、SQL*Loader导⼊导出 准备表与数据CREATE TABLE book(id varchar2(10) NOT NULL,name varchar2(50) DEFAULT NULL,author varchar2(20) DEFAULT NULL,price decimal(10,0) DEFAULT NULL,update_time date DEFAULT NULL,create_time date DEFAULT NULL,is_deleted varchar2(1) DEFAULT NULL,PRIMARY KEY (id));insert into book values ('1','c##','sl',23.4,to_date('2011-11-11 11:11:11','YYYY-MM-DD HH24:MI:SS'),to_date('2011-11-11 11:11:14','YYYY-MM-DD HH24:MI:SS'),1);insert into book values ('2','c##','sl',23.4,to_date('2011-11-11 11:11:11','YYYY-MM-DD HH24:MI:SS'),to_date('2011-11-11 11:11:14','YYYY-MM-DD HH24:MI:SS'),1);insert into book values ('3','c##','sl',23.4,to_date('2011-11-11 11:11:11','YYYY-MM-DD HH24:MI:SS'),to_date('2011-11-11 11:11:14','YYYY-MM-DD HH24:MI:SS'),1); 1、spool导出操作 创建sql⽂件book_spoolout.sqlset echo offset heading offset feedback offset pagesize 0set linesize 1000spool book.datselect id||','||name||','||author||','||price||','||to_char(update_time,'YYYY-MM-DD hh24:mi:ss')||','||to_char(create_time,'YYYY-MM-DD hh24:mi:ss')||','||is_deleted from book;spool off 登录sqlplus,执⾏@导出⽂件[root@localhost tmp]# sqlplus c##sl/123456SQL> @book_spoolout.sql; 导出数据⽂件book.dat如下:1,c##,sl,23,2011-11-11 11:11:11,2011-11-11 11:11:14,12,c##,sl,23,2011-11-11 11:11:11,2011-11-11 11:11:14,13,c##,sl,23,2011-11-11 11:11:11,2011-11-11 11:11:14,1 说明: b、这⾥登录数据库⽬录与sql⽂件、导出⽂件⽬录⼀致; c、如果导出⽬录没有写权限,会报错“⽆法创建 SPOOL ⽂件 "book.dat"当前未假脱机”,注意赋权; d、要把控制⽂件写⼊⽂件中保存,如果直接复制到sqlplus中执⾏,导出的⽂件中⾸尾⾏含有其他命令或sql语句; 2、SQL*Loader导⼊操作 创建控制⽂件book.ctlload datainfile book.datinto table booktruncatefields terminated by ","(ID,NAME,AUTHOR,PRICE,UPDATE_TIME DATE "YYYY-MM-DD HH24:MI:SS",CREATE_TIME DATE "YYYY-MM-DD HH24:MI:SS",IS_DELETED) 执⾏导⼊命令,将上⾯的book.dat导⼊数据库sqlldr userid=c##sl/123456 control=book.ctl data=book.dat 注意: a、这⾥的控制⽂件与数据⽂件在同⼀⽬录下 b、truncate是删除原表数据,还有insert、append、replace等 c、fields terminated by是字段分隔符 三、脚本 可以看到spool、sql loader的导⼊导出还是挺复杂的,下⾯整理出通⽤性更强的脚本 1、导出 准备表与数据CREATE TABLE music(id varchar2(10) NOT NULL,name varchar2(50) DEFAULT NULL,author varchar2(20) DEFAULT NULL,price decimal(10,2) DEFAULT NULL,update_time varchar2(19) DEFAULT NULL,create_time varchar2(19) DEFAULT NULL,is_deleted varchar2(1) DEFAULT NULL,PRIMARY KEY (id));insert into music values ('1','你好你好','sl',23.4,'2011-11-11 11:11:11','2011-11-11 11:11:14','1');insert into music values ('2','你好你好','sl',23.4,'2011-11-11 11:11:11','2011-11-11 11:11:14','1');insert into music values ('3','你好你好','sl',23.4,'2011-11-11 11:11:11','2011-11-11 11:11:14','1'); 创建脚本oddpe#!/bin/shif [ $# -lt 5 ];thenecho "param error: please reference example:"echo "oddp music ./music.dat c##sl/123456 -f'|!?|' -r'@#$'"exit 1fiTABLE=${1}DATAFILE=${2}USERPASS=${3}shiftshiftshiftwhile getopts "f:r:" argdof) FIELD=${OPTARG};;r) ROW=${OPTARG};;?) ROW=1;;esacdoneDATAPATH=`dirname ${DATAFILE}`DATANAME=`basename ${DATAFILE}`SPOOLOUTSQL=${DATAPATH}/${TABLE}_spoolout.sqlTODAY=`date '+%Y%m%d'`LOGFILE=${DATAPATH}/${TABLE}_unload_${TODAY}.logsqlplus -S ${USERPASS} <<eof >>${LOGFILE}set serveroutput on verify off trimspool on timing off feedback offset numwidth 50 pagesize 0 linesize 1000spool ${SPOOLOUTSQL}declarev_colcount number :=0;begindbms_output.put_line('select');for col in (select column_namefrom user_tab_columnswhere table_name = upper('${TABLE}')order by column_id)loopif v_colcount = 0thendbms_output.put(chr(9) || col.column_name);elsedbms_output.put_line(chr(9) || '||' || '''${FIELD}''' || '||' );dbms_output.put(chr(9) || col.column_name);end if;v_colcount :=v_colcount + 1;end loop;dbms_output.put('||' || '''${ROW}''');dbms_output.new_line;dbms_output.put_line('from ' || '${TABLE};');end;/spool offexiteofecho "`date +%T`: 开始导出数据!" 2>&1|tee -a ${LOGFILE}sqlplus -S ${USERPASS} <<eofset echo off heading on feedback off pagesize 0 linesize 1000set termout off trimspool on numwidth 24 arraysize 1000 verify off newpage 0 space 0spool ${DATAFILE}.tmp@${SPOOLOUTSQL}spool offexiteofif [ $? -ne 0 ];thenecho "`date +%T`: 导出${TABLE}失败!" 2>&1|tee -a ${LOGFILE}exit -1else#去除中间空⾏grep . ${DATAFILE}.tmp>${DATAFILE}rm -f ${DATAFILE}.tmpecho "`date +%T`: 导出${TABLE}完毕!" 2>&1|tee -a ${LOGFILE}exit 0fi 执⾏⽰例,导出music表的数据到music.dat⽂件,以|!?|分隔字段,以@#$结束⼀⾏./oddpe music /usr/local/myroom/script/tmp/music.dat c##sl/123456 -f'|!?|' -r'@#$' 2、导⼊ 创建脚本oddpi#!/bin/shif [ $# -lt 5 ];thenecho "param error: please reference example:"echo "oddpi music ./music.dat c##sl/123456 -f'|!?|' -r'@#$'"exit 1fiTABLE=${1}USERPASS=${3}shiftshiftshiftwhile getopts "f:r:" argdocase ${arg} inf) FIELD=${OPTARG};;r) ROW=${OPTARG};;?) ROW=1;;esacdoneDATAPATH=`dirname ${DATAFILE}`DATANAME=`basename ${DATAFILE}`CTLFILE=${DATAPATH}/${TABLE}.ctlTODAY=`date '+%Y%m%d'`LOGFILE=${DATAPATH}/${TABLE}_load_${TODAY}.logecho "`date +%T`: 创建控制⽂件" 2>&1|tee -a ${LOGFILE}sqlplus -S ${USERPASS} <<eof >>${LOGFILE}set serveroutput on verify off trimspool on timing off feedback offset numwidth 50spool ${CTLFILE}declarev_colcount number :=0;begindbms_output.put_line('load data');dbms_output.put_line('infile ${DATANAME} '|| '"str ''${ROW}\n''" ');dbms_output.put_line('into table '||'${TABLE}');dbms_output.put_line('truncate');dbms_output.put_line('fields terminated by '|| '''${FIELD}''');dbms_output.put_line('trailing nullcols');dbms_output.put_line('(');for col in (select column_name,casewhen data_type = 'NUMBER' then column_name || ' "nvl(rtrim(:' || column_name || '),' || '0.00' || ')"' else column_name || ' "nvl(rtrim(:' || column_name || '),' || ''' ''' || ')"'end xfrom user_tab_columnswhere table_name = upper('${TABLE}')order by column_id)loopif v_colcount = 0thendbms_output.put(chr(9) || col.x);elsedbms_output.put_line(',');dbms_output.put(chr(9) || col.x);end if;v_colcount :=v_colcount + 1;end loop;dbms_output.new_line;dbms_output.put_line(')');end;/spool offset feedback oneofecho "`date +%T`: 开始导⼊数据!" 2>&1|tee -a ${LOGFILE}sqlldr userid=${USERPASS} control=${CTLFILE} log=${LOGFILE} data=${DATAFILE} direct=trueif [ $? -ne 0 ];thenecho "`date +%T`: 导⼊${TABLE}失败!" 2>&1|tee -a ${LOGFILE}exit -1elseecho "`date +%T`: 导⼊${TABLE}完毕!" 2>&1|tee -a ${LOGFILE}exit 0fi 执⾏脚本,导⼊数据./oddpi music /usr/local/myroom/script/tmp/music.dat c##sl/123456 -f'|!?|' -r'@#$' 说明:对导⼊脚本中dbms_output.put_line('infile ${DATANAME} '|| '"str ''${ROW}\n''" ');的解析 load data的str属性表⽰数据的换⾏符,⽐如3^^你好你好^^sl^^23.4^^2011-11-11 11:11:11^^2011-11-11 11:11:14^^1!!2^^你好你好^^sl^^23.4^^2011-11-11 11:11:11^^2011-11-11 11:11:14^^1!!1^^你好你好^^sl^^23.4^^2011-11-11 11:11:11^^2011-11-11 11:11:14^^1!! a、"\n"是⾃带的换⾏符,因为数据⼿动换⾏了,所以str后⾯除了指定的换⾏符"!!"还有"\n" b、有些⽂件中⼿动的换⾏符不是"\n"⽽是"\r\n",这时对应语句改为......"str '!!\r\n'"...... c、str后⾯还可以跟X+转成raw类型的字符,下⾯的语句执⾏效果相同。
Oracle11g常用基本操作命令
Oracle11g常⽤基本操作命令 这⾥是单实例数据库情况下:1、启动监听 启动监听,即启动1521监听端⼝号:lsnrctl start #启动监听lsnrctl stop #停⽌监听lsnrctl status #查看监听状态 监听端⼝1521修改:# su - oracle$ lsnrctl stop$ echo $ORACLE_HOME$ cd $ORACLE_HOME/network/admin$ vim listener.ora# listener.ora Network Configuration File: /home/data/oracle/product/11.2.0/db_1/network/admin/listener.ora# Generated by Oracle configuration tools.LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC6666))(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 6666))))ADR_BASE_LISTENER = /home/data/oracle直接在此处修改是不⽣效的,我们还需要修改local_listener参数$ sqlplus / as sysdbaSQL> show parameter local_listener #登录并查看local_listener参数//由于开始的时候使⽤的是默认值,这个时候VALUE这个值应该是空的,这⾥修改local_listener参数SQL> alter system set local_listener="(address = (protocol = tcp)(host = 10.10.16.245)(port = 6666))";SQL> show parameter local_listener #查看local_listener参数$ lsnrctl start #重新启动监听$ netstat -an|grep 6666 #查看状态$ lsnrctl status$ su - root #防⽕墙端⼝开放# /sbin/iptables -I INPUT -p tcp --dport 6666 -j ACCEPT# /etc/rc.d/init.d/iptables save#到此oracle的监听端⼝号就已经由原来的1521变成6666View Code2、启动数据库 启动数据库有两种⽅式,⼀种是登录sqlplus执⾏startup;另⼀种是使⽤dbstart //启动数据库脚本⽤oracle⽤户进⼊# su - oracle$ sqlplus /nolog #运⾏sqlplus命令,进⼊sqlplus环境,nolog参数表⽰不登录;SQL> conn /as sysdba #以管理员模式进⼊SQL > startup; #启动数据库SQL > SHUTDOWN IMMEDIATE #停⽌数据库远程连接数据库sqlplus /nologconn sys/sys@IP:1521/orainstance as sysdba也可以直接运⾏:dbstart //启动数据库脚本dbshut //停⽌数据库脚本3、⽤户管理 创建普通⽤户,权限相关:创建⽤户:SQL> create user "username" identified by "userpasswd" ; #注:后⾯可带表空间删除⽤户:SQL> drop user “username” cascade; #注:cascade 参数是级联删除该⽤户所有对象,经常遇到如⽤户有对象⽽未加此参数则⽤户删不了的问题,所以习惯性的加此参数授权⽤户:SQL> grant connect,resource,dba to "username" ;查看当前⽤户的⾓⾊SQL> select * from user_role_privs;SQL> select * from session_privs;查看当前⽤户的系统权限和表级权限SQL> select * from user_sys_privs;SQL> select * from user_tab_privs;查询⽤户表SQL> select username from dba_users;修改⽤户⼝令SQL> alter user "username" identified by "password";显⽰当前⽤户SQL> show user;4、表和表空间创建表空间SQL> CREATE TABLESPACE data01 DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M;删除表空间SQL> DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;修改表空间⼤⼩SQL> alter database datafile '/path/NADDate05.dbf' resize 100M;增加表空间SQL> ALTER TABLESPACE NEWCCS ADD DATAFILE '/u03/oradata/newccs/newccs04.dbf' SIZE 4896M;查询数据库⽂件SQL> select * from dba_data_files;查询当前存在的表空间SQL> select * from v$tablespace;表空间情况SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;查询表空间剩余空间SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;查看表结构SQL> desc table;修改连接数:要重启数据库SQL> alter system set processes=1000 scope=spfile;SQL> shutdown immediate;SQL> startup;查看⽤户当前连接数SQL> select count(*) from sys.v_$session;5、修改字符集相关 将数据库启动到RESTRICTED模式下做字符集更改:$ sqlplus / as sysdbaSQL> select * from v$nls_parameters; #查看当前系统使⽤的各种字符集SQL> select * from nls_database_parameters where parameter ='NLS_CHARACTERSET'; #精确查询NLS_CHARACTERSET值SQL> shutdown immediate; #关闭数据库SQL> startup mount #启动实例,可以加载数据库,不运⾏数据库DBA在做⼀些操作的时候不希望有⼈登⼊数据库可以使⽤restrict模式:SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; #开启限制会话模式Oracle job进程,包含协调进程(主进程)以及奴⾪进程(⼦进程),job_queue_processes取值范围为0到1000,总共可创建多少个job进程由job_queue_processes参数来决定。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
--脚本位置${oracle_home}/rdbms/admin/utlxplan.sql 创建执行计划表
--授权访问
create public synonym plan_table for plan_table;
grant select,update,insert,delete on plan_table to public;
--重建索引
alter index 索引名称 rebuild nologging;
--查看事务回滚率
select name,value from v$sysstat where name in('user commits','transaction rollbacks');
--查询当前系统表空间存储信息
select a.file_id,a.file_name, a.TABLESPACE_NAME,a.bytes/1024/1024||'M' as totalspace,
nvl(b.freespace,0)||'M' as freespace,a.autoextensible from dba_data_files a,
order by a.tablespace_name,file_name;
--统计已占用的表空间
select sum(a.bytes/1024/1024-nvl(b.freespace,0))||'M' from dba_data_files a,
(select sum(bytes)/1024/1024 as freespace,file_id,tablespace_name from dba_free_space
--spfile,pfile创建默认位置为$ORACLE_HOME/dbs/,$ORACLE_HOME/database/(windows)
--启动时公司搜索默认位置下spfile.ora,spfile$ORACLE_SID.ora,init$ORACLE_SID.ora
--采用指定的方式启动
最常用的
执行 sqlplus "/as sysdba" 以系统管理员进入数据库
关闭数据库: shutdown immediate
启动数据库 startup
--<em>oracle</em> 常用sql
--查询数据库信息
select * from v$database;
--查询当前实例信息
select * from v$instance;
--查询数据库版本信息
select * from v$version;
--查询所有用户(dba权限)
select * from dba_users;
--查询共享内存中的sql信息,执行较慢
这个计算结果不包含LOB, 和VARRAY, 亦不含分区表数据
--设置归档模式
startup mount;
alter database archivelog;
alter database open;
alter system set log_archive_start=true scope=spfile;
--判断是采用spfile还是pfile启动数据库的,可以下面sql根据是那种方式<P>###NextPage###</P>
select decode(count(*),0,'pfile',1,'spfile') from V$spparameter where isspecified='TRUE' and rownum=1;
--脚本位置${oracle_home}/sqlplus/admin/plustrce.sql 执行授权角色
--spfile
--数据库建库完成后,第一次手工启动手工创建spfile文件,命令格式为
create spfile[='filename'] from pfile[='filename'];
where a.group#=b.group#;
v$rollstat三个字段说明
rssize 回滚段大小
optsize optimal大小
hwmsize 你的回滚段曾经最高大小
--统计当前回滚段大小、最高峰大小
select sum(rssize)/1024/1024||'M',sum(hwmsize/1024/1024)||'M'
SQLNET.AUTHENTICATION_SERVICES=(none) --用正确的用户和密码验证
--设置密码级别 remote_login_passwordfile
--设置为exclusive,表示口令文件由一个数据库使用,远程客户端可以用sБайду номын сангаасs登陆(如果密码文件删除后,远程无法登陆)
orapwd file=<fname> password=<password> entries=<users>
entries --sysdba链接最大数
--密码文件没有锁定,只是启动时的引导作用
V$SYSTEM_EVENT 数据库实例整个运行期间所有进程事件的等待时间、次数视图,作为系统优化的依据
shutdown immediate
startup;
数据库已经误删除数据文件,如何启动
startup mount
alter database datafile 'filepos' offline drop;(noarchivelog)
alter database datafile 'filepos' offline;(archivelog)
--设置为shared,表示多个数据库可以共享一个口令文件,但是只可以识别一个用户SYS,不能将sysdba权限授权给其他用户
--设置为none,表示没有口令文件 远程无法用sys登陆,只能通过操作系统验证方式
--密码文件如果丢失或损坏,系统无法启动
--可以手工创建<em>oracle</em>系统密码
select PREV_HASH_VALUE from v$session where status='ACTIVE' and username is not null ) order by piece
--查询相关用户的索引情况
select a.*,b.column_name,b.column_length from
)a,(select * from dba_ind_columns b where index_owner='用户名') b
where a.index_name=b.index_name
order by a.owner,a.table_name,a.index_name
startup pfile='filename';
--创建spfile,pfile可以在数据库关闭后仍然可以创建
--如果pfile内有spfile文件参数的设定,采用pfile方式启动后还可以修改初始参数到spfile中
--<em>oracle</em>9.2.0.1版本后创建数据库时系统会自动创建spfile,默认的启动方式就是采用spfile
--常见的非等闲事件:
buffer busy waits、
db file scattered read、
db file sequential read、
enqueue、
free buffer waits、
latch free、
log file sync、
等待事件分为三种类型 空闲等待、例行等待、资源等待
注意很多时候进程是空闲等待处理的,所以在该视图主要查看资源等待时间,
如果是进程在例行操作中等待,可以查看该事件的平均等待时间
--v$session_wait
--常见的空闲等待事件:client message、null event、pipe get、pmon/smon timer、rdbms rpc message及sql*net等;
from v$rollstat;
--查看事务占用的回滚段大小(事务尚未提交)
select ed_ublk,b.xidusn,a.sid from v$session a,v$transaction b
log file paralle write
导入导出建议一定要同版本的导入导出工具
常见错误 exp-00003
估算导出dmp文件大小
select sum(bytes) from user_segments where segment_type='TABLE';
alter database open;
drop tablespace 'spacename' including contents;