查找数据库中所有字段 以对应的表 select C.column_name,C.TABLE_NAME from dba_tab_columns C where owner='' 查每个科目class 分数scro前三名 select id, name, class, scro from (select row_number() over(partition by class order by scro desc) cnt, id, name, class, scro from student) a where a.cnt <= 3; 查找排序后的前三行 select * from (select rw.*, rownum from (select * from student d where d.class = 'b' order by d.scro desc) rw where rw.id >= 1 order by rw.class desc) n where rownum <= 3 表复制 insert into table_a (id,name,age) select b.id,b.name,b.age from table_b; --删除表数据的触发器 CREATE OR REPLACE PROCEDURE delete_data IS BEGIN delete from test ; COMMIT; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; WHEN OTHERS THEN RAISE; END delete_data; --定时删除 每隔5分钟执行一次的计划 DECLARE X NUMBER; BEGIN SYS.DBMS_JOB.SUBMIT ( job => X ,what => 'delete_data;' ,next_date => to_date('25/08/2008 00:00:00','dd/mm/yyyy hh24:mi:ss') ,interval => 'sysdate+1/24/12' ,no_parse => FALSE ); SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x)); COMMIT; END; --查看当前oracle计划 select job,next_date,next_sec,failures,broken from user_jobs; --删除一个job begin dbms_job.remove(46);--46为job号 end; --给新表插入旧表对应字段的所有数据 insert into aaa(id,name) select b.id,b.name from bbb; 文章搜索: 【点击打包该文章】 【到本站论坛,与同行交流】 select * from all_users; ##查看所有用户 select name from v$database; ##查看当前数据库 database test; ##进入test数据库 select * from v$instance; ##查看所有的数据库实例 shutdown immediate ##关闭数据库 alter user sys identified by new_password; ##更改用户密码 select username,password from dba_users; ##查看当实例中的用户和密码 show parameter control_files; ## 查看控制文件; select member from v$logfile; ##查看日志文件 show parameter ; ## 查看数据库参数 select * from user_role_privs; ##查看当前用户的角色 select username,default_tablespace from user_users; ##查看当前用户的缺省表空间 alter user system identified by [password] ##修改用户的密码 ALTER USER "SCOTT" ACCOUNT UNLOCK ##解锁SCOTT用户 show parameter processes; ##查看最大会话数 查看当前库的所有数据表: SQL> select TABLE_NAME from all_tables; select * from all_tables; SQL> select table_name from all_tables where table_name like ‘u’; TABLE_NAME———————————————default_auditing_options 查看表结构:desc all_tables; 创建用户并赋予权限 ###----------------------------创建用户并赋予权限------------------------------------####- create user mpss identified by "mpss12" default tablespace TS_MPSS_DATA temporary tablespace TEMP; 给用户赋予权限 grant connect to mpss; grant resource,create session to mpss; 开发角色 grant create procedure to dbuser; #这些权限足够用于开发及生产环境 给用户授权 grant dba to spms;--授予DBA权限 grant unlimited tablespace to lxg;--授予不限制的表空间 grant select any table to lxg;--授予查询任何表 grant select any dictionary to lxg;--授予 查询 任何字典 删除用户 drop user mpss cascade; 建表空间 ###---------------------------------建表空间------------------------------------####- ================建立表空间============================ CREATE TABLESPACE "TS_MPSS_DATA" LOGGING DATAFILE '/mpss/data/ts_mpss_data.dbf' SIZE 1024M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ===================================================== =================建立临时表空间============================ CREATE TEMPORARY TABLESPACE "SWVIP" TEMPFILE '/app/oracle/oradata/ sworacle/SWVIP.dbf' SIZE 5M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M ===================================================== create tablespace TS_MPSS_DATA datafile '/mpss/data/ts_mpss_data.bdf ' size 1024m autoextend on ; ###autoextend on 自动扩展 ###------------------------------------------------------------------------------------####- 查看表空间 ###----------------------------查看表空间大小------------------------------------####- SELECT D.TABLESPACE_NAME "Name", TO_CHAR(((((A.BYTES - DECODE(F.BYTES, NULL, 0, F.BYTES)) / 1024 / 1024)) /(A.BYTES / 1024 / 1024))*100,'99,990.9') "used(%)", TO_CHAR((DECODE(F.BYTES, NULL, 0, F.BYTES) / 1024 / 1024),'999,990.9') "Free (M)" FROM SYS.DBA_TABLESPACES D, SYS.SM$TS_AVAIL A, SYS.SM$TS_FREE F WHERE D.TABLESPACE_NAME = A.TABLESPACE_NAME AND F.TABLESPACE_NAME (+) = D.TABLESPACE_NAME; ###--------------------------------------------------------------------------------------####- 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 (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) D, (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) FREE_SPACE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+) UNION ALL --if have tempfile SELECT 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 (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS FROM DBA_TEMP_FILES GROUP BY TABLESPACE_NAME) D, (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES_USED)/(1024*1024),2) USED_SPACE, ROUND(SUM(BYTES_FREE)/(1024*1024),2) FREE_SPACE FROM V$TEMP_SPACE_HEADER GROUP BY TABLESPACE_NAME) F WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+) ; 查看表空间物理文件的名称及大小; ###--------------------表空间物理文件的名称及大小------------------------####- select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name; ###------------------------------------------------------------------------------------####- 查看数据文件放置的路径 ###------------------------------------------------------------------------------------####- SQL> col file_name format a50 SQL> select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id; ###------------------------------------------------------------------------------------####- 查看数据库库对象 select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status; 用系统管理员,查看当前数据库有几个用户连接: SQL> select username,sid,serial# from v$session; 扩表空间 ###------------------------------------------------------------------------------------####- alter tablespace G000 add datafile '/dev/vgbilling/rg000_lv03' SIZE 7500m; 给表G000增加一个7500m的逻辑卷'/dev/vgbilling/rg000_lv03' ###------------------------------------------------------------------------------------####- 检查被长时间锁的对象 ###------------------------------------------------------------------------------------####- SQL>select a.session_id,a.process,a.locked_mode,b.object_name,b.object_type,b.status from v$locked_object a,dba_objects b where a.object_id=b.object_id; ###------------------------------------------------------------------------------------####- 文章出处:http://www.diybl.com/course/7_databases/oracle/Oracleshl/200899/141376.html sys用户登陆 创建表空间: SQL> create tablespace lmsstemp datafile 'F:\ORADATA\LMSS\LMSSTEMP01.DBF' SIZE 1 024M extent management local; 给表空间增加数据文件 alter tablespace lmsstemp add datafile 'F:\ORADATA\LMSS\LMSSTEMP02.DBF' SIZE 1 024M; 更改表空间为自动扩展 SQL> alter database datafile 'F:\ORADATA\LMSS\LMSSTEMP01.DBF' autoextend on; 查看表空间信息 SQL> select file_name,tablespace_name,autoextensible from dba_data_files; 授权: create any table to leon -- Create the user (用sys执行) create user xx identified by xx123 default tablespace lmss temporary tablespace TEMP profile DEFAULT; -- Grant/Revoke role privileges (用sys执行) grant connect to xx; --创建视图给hy用户(用leon用户) create or replace view view_tableName as select column。。。 from table; -- Grant/Revoke object privileges grant select, update on RES_XIM_CARD to hy; --创建同义词 create synonym RES_XIM_CARD for YY.RES_XIM_CARD ;
================================================================
在Oracle中查询表的大小和表空间的大小
有两种含义的表大小。 1. 一种是分配给一个 表的物理空间数量,而不管空间是否被使用。可以这样查询获得字节数: select segment_name, bytes from user_segments where segment_type = 'TABLE' order by bytes desc; 或者 Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name order by sum(bytes) desc; 另一种表 实际使用的空间。这样查询: analyze table T_TICKET compute statistics; select (num_rows * avg_row_len)/1024/1024 from user_tables where table_name = 'T_TICKET';1、查看表空间的名称及大小
select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d where t.tablespace_name = d.tablespace_name group by t.tablespace_name; 2、查看表空间物理文件的名称及大小 select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name; 3、查看回滚段名称及大小 select segment_name, tablespace_name, r.status, (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent, max_extents, v.curext CurExtent From dba_rollback_segs r, v$rollstat v Where r.segment_id = v.usn(+) 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_name from dba_free_space group 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 C WHERE 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_version Where SUBSTR(PRODUCT,1,6)='Oracle';
9、查看数据库的创建日期和归档方式 Select Created, Log_Mode, Log_Mode From V$Database; 10、捕捉运行很久的SQL column username format a12 column opname format a16 column progress format a8 select username,sid,opname, round(sofar*100 / totalwork,0) '%' as progress, time_remaining,sql_text from v$session_longops , v$sql where time_remaining <> 0 and sql_address = address and sql_hash_value = hash_value / 11、查看数据表的参数信息 SELECT partition_name, high_value, high_value_length, tablespace_name, pct_free, pct_used, ini_trans, max_trans, initial_extent, next_extent, min_extent, max_extent, pct_increase, FREELISTS, freelist_groups, LOGGING, BUFFER_POOL, num_rows, blocks, empty_blocks, avg_space, chain_cnt, avg_row_len, sample_size, last_analyzed FROM dba_tab_partitions --WHERE table_name = :tname AND table_owner = :towner ORDER BY partition_position 12、查看还没提交的事务 select * from v$locked_object; select * from v$transaction; 13、查找object为哪些进程所用 select p.spid, s.sid, s.serial# serial_num, s.username user_name, a.type object_type, s.osuser os_user_name, a.owner, a.object object_name, decode(sign(48 - command), 1, to_char(command), 'Action Code #' to_char(command) ) action, p.program oracle_process, s.terminal terminal, s.program program, s.status session_status from v$session s, v$access a, v$process p where s.paddr = p.addr and s.type = 'USER' and a.sid = s.sid and a.object='SUBSCRIBER_ATTR' order by s.username, s.osuser 14、回滚段查看 select rownum, sys.dba_rollback_segs.segment_name Name, v$rollstat.extents Extents, v$rollstat.rssize Size_in_Bytes, v$rollstat.xacts XActs, v$rollstat.gets Gets, v$rollstat.waits Waits, v$rollstat.writes Writes, sys.dba_rollback_segs.status status from v$rollstat, sys.dba_rollback_segs, v$rollname where v$rollname.name(+) = sys.dba_rollback_segs.segment_name and v$rollstat.usn (+) = v$rollname.usn order by rownum 15、耗资源的进程(top session) select s.schemaname schema_name, decode(sign(48 - command), 1, to_char(command), 'Action Code #' to_char(command) ) action, status session_status, s.osuser os_user_name, s.sid, p.spid , s.serial# serial_num, nvl(s.username, '[Oracle process]') user_name, s.terminal terminal, s.program program, st.value criteria_value from v$sesstat st, v$session s , v$processp where st.sid = s.sid and st.statistic# = to_number('38') and ('ALL' = 'ALL' or s.status = 'ALL') and p.addr = s.paddr order by st.value desc, p.spid asc, s.username asc, s.osuser asc
select se.username,se.machine,sq.cpu_time,sq.sql_text fromv$process p,v$session se,v$sqlarea sqwhere p.addr=se.paddr and se.sql_hashvalue=sq.hash_value and p.addr='&pid';
SELECT p.pid,p.spid,s.sid,p.username,s.TYPE, s.SERIAL#,s.SCHEMANAME,s.OSUSER,s.MACHINE, s.PROCESS,p.PROGRAM,s.MODULE,s.STATUS, s.terminal,logon_timeFROM v$process p, v$session sWHERE p.addr=s.paddrand spid ='1712258';
下面的句子列出cpu_time占用top 10的sql
select cpu_time,sql_textfrom (select sql_text,cpu_time, rank() over (order by cpu_time desc) exec_rank from v$sql )where exec_rank <=10;
执行次数最多的top 10
select sql_text,executionsfrom (select sql_text,executions, rank() over (order by executions desc) exec_rank from v$sql)where exec_rank <=10;