oracle_dba常用sql脚本
OracleDBA常用SQL语句
sql>select decode(nvl(position,-1),-1,rbo,1,cbo) from plan_table where id=0;
如何查看系统当前最新的scn号:
sql>select max(ktuxescnw * power(2,32) + ktuxescnb) from x$ktuxe;
from v$session where audsid = userenv(sessionid);
end;
查询当前日期:
sql> select to_char(sysdate,yyyy-mm-dd,hh24:mi:ss) from dual;
查看所有表空间对应的数据文件名:
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;
column tablespace_name format a18;
from (select p.spid from sys.v_$mystat m,sys.v_$session s,
sys.v_$process p where m.statistic# = 1 and
s.sid = m.sid and p.addr = s.paddr) p,(select value from sys.v_$parameter where name =user_dump_dest) d;
查看表空间物理文件的名称及大小:
sql>select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;
oracle dba 日常维护操作手册命令总结
oracle dba 日常维护操作手册命令总结Oracle DBA日常维护操作手册命令总结:Oracle数据库管理员(DBA)在日常维护数据库时,需要掌握一些常用的命令和操作。
以下是一些重要的Oracle DBA维护命令的总结:1. 数据库连接和认证命令:- sqlplus:用于连接Oracle数据库的命令行工具。
可以使用该命令连接到数据库并执行SQL语句。
- sqlldr:用于将数据从外部文件加载到Oracle数据库表中。
- exp和imp:用于导出和导入数据库对象和数据。
2. 数据库启动和关闭命令:- startup:启动Oracle数据库实例。
- shutdown:关闭Oracle数据库实例。
3. 数据库备份和恢复命令:- RMAN(Recovery Manager):用于备份和恢复Oracle数据库。
- backup:用于创建数据库备份。
- restore:用于从备份文件中恢复数据库。
4. 数据库性能和监控命令:- tkprof:用于分析和优化SQL查询语句的性能。
- awrreport和ashreport:用于生成数据库性能报告和分析。
- v$表名:用于查看数据库的不同性能指标。
5. 数据库对象管理命令:- create:用于创建数据库对象,如表、索引、视图等。
- alter:用于修改数据库对象的结构,例如修改表结构、添加索引等。
- drop:用于删除数据库对象。
6. 用户和权限管理命令:- create user:用于创建数据库用户。
- alter user:用于修改数据库用户的属性。
- grant和revoke:用于授予和收回用户的权限。
7. 数据库存储管理命令:- create tablespace:用于创建数据库表空间,用于存储数据库对象。
- alter tablespace:用于修改表空间的属性。
- alter database:用于修改数据库的参数和属性。
以上仅是一些常用的Oracle DBA日常维护操作命令的总结,实际使用中还有更多的命令和技术需要掌握。
ORACLE深入第一章ORACLEDBA常用语句和脚本
ORACLE深入第一章ORACLEDBA常用语句和脚本ORACLE深入系列,翻译自Thomas Kyte 的 Expert Oracle Database Architecture我的BLOG一, 常用到的设置环境参数的语句设置SCOTT/TIGER的DEMO运行@ORACLE_HOME/sqlplus/demo/demobld.sql (响应的demodrop.sql.是DROP SCOTT的脚本)做一个登陆用的login.sqldefine _editor=viset serveroutput on size 1000000 使DBMS_OUTPUT有效.set trimspool on SPOOL不会以定长来控制,而是以空格来控制set long 5000 LONG或CLOG 显示的长度set linesize 100set pagesize 9999 每9999行后打印HEADcolumn plan_plus_exp format a80 autotrace后explain plan output的格式column global_name new_value gnameset termout offdefine gname=idlecolumn global_name new_value gnameselect lower(user) || ’@’ || substr( global_name, 1,decode( dot, 0, length(global_name), dot-1) ) global_name from (select global_name, instr(global_name,’.’) dot from global_name );set sqlprompt ’&gname>’set termout onset trimspool on; 去除重定向(spool)输出每行的拖尾空格,缺省为off得到username@dbname的提示符. scott@WWMDB>二, 常用到的DBA脚本Runstats 比较两个作相同事情的方法的优劣点。
oracledba常用sql脚本分类文档
Oracle 正常SQL监控SQL1.监控事例的等待:select event,sum(decode(wait_time,0,0,1)) prev, sum(decode(wait_time,0,1,0)) curr,count(*) from v$session_waitgroup by event order by 4;2.回滚段的争用情况:select name,waits,gets,waits/gets ratio from v$rollstat a,v$rollname b where n=n; 3.监控表空间的I/O比例:select df.tablespace_name name,df.file_name "file",f.phyrds pyr,f.phyblkrd pbr,f.phywrts pyw, f.phyblkwrt pbwfrom v$filestat f,dba_data_files dfwhere f.file#=df.file_id4.监空文件系统的I/O比例:select substr(a.file#,1,2) "#”,substr(,1,30) "name”,a.status,a.bytes,b.phyrds,b.phywrtsfrom v$datafile a,v$filestat bwhere a.file#=b.file#5.在某个用户下找所有的索引:select user_indexes.table_name, user_indexes.index_name,uniqueness, column_namefrom user_ind_columns, user_indexeswhere user_ind_columns.index_name = user_indexes.index_nameand user_ind_columns.table_name = user_indexes.table_nameorder by user_indexes.table_type, user_indexes.table_name,user_indexes.index_name, column_position;6.进程监控:select distinct p.spid unix_process,s.terminal,to_char(s.logon_time,'YYYY/MON/DD HH24:MI') Logon_Time, ernamefrom v$process p, v$session swhere p.addr=s.paddr order by 27.监控SGA中字典缓冲区的命中率select parameter, gets,Getmisses , getmisses/(gets+getmisses)*100 "miss ratio", (1-(sum(getmisses)/(sum(gets)+sum(getmisses))))*100 "Hit ratio"from v$rowcachewhere gets+getmisses <>0group by parameter, gets, getmisses;8.监控SGA中共享缓存区的命中率,应该小于1%select sum(pins) "Total Pins", sum(reloads) "Total Reloads",sum(reloads)/sum(pins) *100 libcachefrom v$librarycache;select sum(pinhits-reloads)/sum(pins) "hit radio",sum(reloads)/sum(pins) "reload percent" from v$librarycache;9.显示所有数据库对象的类别和大小select count(name) num_instances ,type ,sum(source_size) source_size , sum(parsed_size)parsed_size ,sum(code_size) code_size ,sum(error_size) error_size, sum(source_size) +sum(parsed_size)+sum(code_size) +sum(error_size) size_required from dba_object_sizegroup by type order by 2;10.监控SGA中重做日志缓存区的命中率,应该小于1%SELECT name, gets, misses, immediate_gets, immediate_misses,Decode(gets,0,0,misses/gets*100) ratio1,Decode(immediate_gets+immediate_misses,0,0,immediate_misses/(immediate_gets+immediate_misses)*100) ratio2FROM v$latch WHERE name IN ('redo allocation', 'redo copy');11.监控内存和硬盘的排序比率,最好使它小于.10,增加sort_area_sizeSELECT name, value FROM v$sysstat WHERE name IN ('sorts (memory)', 'sorts (disk)');12.监控当前数据库谁在运行什么SQL语句SELECT osuser, username, sql_text from v$session a, v$sqltext bwhere a.sql_address =b.address order by address, piece;13.监控字典缓冲区SELECT (SUM(PINS - RELOADS)) / SUM(PINS) "LIB CACHE" FROM V$LIBRARYCACHE;SELECT (SUM(GETS - GETMISSES - USAGE - FIXED)) / SUM(GETS) "ROW CACHE" FROM V$ROWCACHE;SELECT SUM(PINS) "EXECUTIONS", SUM(RELOADS) "CACHE MISSES WHILE EXECUTING" FROM V$LIBRARYCACHE;后者除以前者,此比率小于1%,接近0%为好。
oracle 维护管理常用sql
oracle 维护管理常用sql 1、查询数据库表空间select * from dba_tablespaces;2、查询数据库用户select * from dba_users;3、查询数据库控制文件select * from v$controlfile;4、查询数据库日志文件select * from v$logfile;5、查询数据库数据文件select *from v$datafile;6、查看数据库字符集;select * from nls_database_parameters7、查看数据库所有的表select * from all_tables;8、查看数据库select * from v$database9、查询系统时间select sysdate from dual;10、查询用户的权限select * from dba_role_privs11、查询数据库的性能视图select * from v$parameter12、查询用户的所可以访问的表select * from user_tables;13、查看数据库实例信息select * from v$instance;14、查看某表的索引select * from user_indexes where table_name='表名' 15、查看sql语句执行信息select * from v$sqlstats;hostname //查看主机名hostid //查看主机IDifconfig -a //ip地址netstat -nruname -m/usr/platform/sun4u/sbin/prtdiag -v/usr/platform/sun4u/sbin/eepromdf -kswap -sswap -lformat(ctrl+d退出)iostat -c 1 5vmstat 2 5/usr/ucb/ps -auxps -efacat /var/adm/messages vxdisk listvxdg listvxinfo -g scpdgvxprint -g scpdg -htvxstat -g scpdguname -Xuname -iprstat -a (按q键退出)cat /etc/inet/inetd.conf cat /etc/inet/ipnodescat /etc/inet/netmaskscat /etc/inet/networkscat /etc/inet/servicesls -l /etc/hostname.*|wc -l cat /etc/path_to_instcat /etc/inet/ntp.confcat /etc/inet/ntp*cluster* cat /etc/vfstabcat /etc/syslog.conf prtconf -vcat /etc/passwd cat /etc/rmtabcat /etc/dfs/dfstabscstatscstat -pscstat -pvscstat -pvvscconf -pscconf -pvscconf -pvvscrgadm -p scrgadm -pv scrgadm -pvv。
DBA常用脚本
oracle用户权限检查1. 系统权限记录在dba_sys_privs 视图中:select grantee, privilege, admin_optionfrom dba_sys_privswhere grantee = 'USERNAME' ;2. 角色权限记录在dba_role_privs 视图中:select grantee, granted_role, admin_optionfrom dba_role_privswhere grantee = 'USERNAME' ;3. 对象权限记录在dba_tab_privs 视图中,虽然视图名看起来像是表权限,但是实际包含了包,存储过程等等对象级的权限:select grantee, owner || '.' || table_name obj_name, privilege, grantablefrom dba_tab_privswhere grantee = 'USERNAME';4. 其他还有部分权限,如表空间的quota权限,记录在dba_ts_quota中:select username,tablespace_name,bytes / 1024 / 1024 "used space (m)",decode(decode(max_bytes, -1, 0, max_bytes) / 1024 / 1024,0,'unlimited',max_bytes / 1024 / 1024) "max space(m)",blocks used_blocks,max_blocksfrom dba_ts_quotaswhere username = 'USERNAME';select * from session_privs; 当前用户拥有的权限SELECT * FROM DBA_SYS_PRIVS; 查询每个用户的权限锁的检查select b.owner,b.object_name,l.SESSION_ID,DECODE(L.LOCKED_MODE,0,'None',1,'Null',2,'Row-S (SS)',3,'Row-X (SX)',4,'Share',5,'S/Row-X (SSX)',6,'Exclusive',TO_CHAR(L.LOCKED_MODE)) MODE_HELD,ERNAMEfrom dba_objects b, v$locked_object l, V$SESSION Swhere b.object_id = l.object_idand l.SESSION_ID = s.SID查看一个长查询的进度SELECT *FROM ( select username,opname,sid,serial#,context,b.sql_text,sofar,totalwork,round(sofar/totalwork*100,2) "% Complete",elapsed_secondsfrom v$session_longops , v$sql bwhere sql_hash_value=b.hash_valueand sql_address = addressand totalwork <> 0)WHERE "% Complete" <> 100 ;查看ACTIVE SESSION的等待事件select a.event,,sum(decode(wait_Time, 0, 0, 1)) "Prev",sum(decode(wait_Time, 0, 1, 0)) "Curr",count(*) "Tot"from v$session_wait a, v$session bwhere a.sid = b.sidand b.status = 'ACTIVE'group by a.event-- having count(*) > 10order by 4;在某个用户下找所有的索引select user_indexes.table_name, user_indexes.index_name,uniqueness, column_namefrom user_ind_columns, user_indexeswhere user_ind_columns.index_name = user_indexes.index_nameand user_ind_columns.table_name = user_indexes.table_nameorder by user_indexes.table_type, user_indexes.table_name,user_indexes.index_name, column_position;通过DBMS_METADATA包得到对象的DLL语句a.获取单个的建表和建索引的语法,其他对象类似:select dbms_metadata.get_ddl('TABLE','TABLE_NAME','TABLE_OWNER') from dual;select dbms_metadata.get_ddl('INDEX','INDEX_NAME','INDEX_OWNER') from dual;b.获取一个SCHEMA下的所有建表的语法,以scott为例,其他对象类似:SELECT DBMS_METADATA.GET_DDL('TABLE', u.table_name, u.owner) || ';'FROM DBA_TABLES uwhere owner = 'SCOTT' ;查看回滚段名称及大小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;查看表空间的名称及大小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;查看数据库的版本Select versionFROM Product_component_versionWhere SUBSTR(PRODUCT, 1, 6) = 'Oracle';查看数据库的创建日期和归档方式Select Created, Log_Mode From V$Database;查看还没提交的事务select * from v$locked_object;select * from v$transaction;查找object为哪些进程select p.spid,s.sid,s.serial# serial_num,ername 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_statusfrom v$session s, v$access a, v$process pwhere s.paddr = p.addrand s.type = 'USER'and a.sid = s.sidand a.object = 'EMP'order by ername, s.osuser怎样计算一个表占用的空间的大小?select owner,table_name,NUM_ROWS,BLOCKS * AAA / 1024 / 1024 "Size M",EMPTY_BLOCKS,LAST_ANALYZEDfrom dba_tableswhere table_name = 'XXX';注意:执行以上语句前要先对表做统计分析select sum(a.bytes) / 1024 * 1024 "size"from dba_extents awhere a.segment_name = 'GOV_FDDBR'select a.bytes / 1024 * 1024 "size", (a.blocks * 8192) / 1024 * 1024 "da"from dba_segments awhere a.segment_name = 'GOV_FDDBR'如何查看最大会话数SELECT * FROM V$PARAMETER WHERE NAME LIKE 'proc%';SQL>SQL> show parameter processesNAME TYPE VALUE------------------------------------ ------- ------------------------------aq_tm_processes integer 1db_writer_processes integer 1job_queue_processes integer 4log_archive_max_processes integer 1processes integer 200这里为200个用户。
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 DBA 常用技巧、脚本、操作命令
I一些小技巧A)dba常用工具TOAD 功能之一:获取重建表的脚本putty:连接ssh的服务器的工具Xmanager:这个恐怕不用说了,不过使用的机会并不多,主要是做数据库安装和升级的时候Ultraedit:ultraedit的最大优点是打开的文件变化时能够捕捉到变化,并重新更新。
因此经常使用ultraedit来读取netterm的session log文件Cygwin:一个可以在WINDOWS下模拟LIUNX的软件,在这个软件里可以在WINDOWS下使用LINUX的命令,比如dd,awk,gc++等等,直接在windows下用awk调用ass分析systemstate dump是十分有用的,有时候需要写个简单的c程序,也可以用cygwin来调试Wincvs,可能听说的朋友比较少,cvs是著名的文档版本管理软件,用来管理文档的Firefox+scrapboo:知识库收集工具,在网上看到喝什么好的文档,立即拉到知识库里B)制作sql脚本的注意事项01复制脚本时可能会出现全角空格,全角空格会导致脚本执行失败解决方法:用word查找全角空格并替换为半角,全角空格的代码是^u1228802用vi作为sqlplus编辑器,最后不能以“;”分号结尾。
应该以“/”作为结束符号C)表重建的方法首先通过工具取出建表的相关脚本(使用TOAD或者类似的工具)然后将表RENAME(包含所有索引)然后重建表再将数据用INSERT /*+ APPEND */ SELECT...的方法从原表中导入数据。
D)控制文件和数据文件头中的SCN相关信息以及在数据库启动检查中的作用控制文件中存在4种与SCN有关的信息:●system checkpoint SCN●datafile CNT●datafile checkpoint SCN (在数据库启动过程的一系列检查中不起作用)●datafile stop SCN数据文件头中保存了:●datafile CNT●datafile checkpoint SCN (区别于控制文件,被称为start SCN,实际上跟控制文件中的datafile checkpoint SCN始终保持一致)各类SCN信息的作用:system checkpoint SCN:系统检查点SCN,表示整个数据库位于逻辑时钟的哪个时间点上。
oracle管理常用的sql
--查看表空间大小select * from dba_free_space;--查看回滚段信息select * from dba_free_space;--取走索引未用的空间alter index index_name deallocate unused;--给索引分配空间alter index index_name allocate extent( size 11n K datafile ' .dbf'); --整理索引碎片alter index index_name coalesce;--查看索引的有效性analyze index index_name validate structure;--监视索引是不是使用alter index index_name monitoring usage;--停止监控alter index index nomonitoring;--sga 总大小show parameter sga_max_size;show parameter sga_target;--查看当前sga去分配和使用情况select * from v$sgastat;---显示sga区的信息select * from v$sga;--或者show parameter sga;--显示表空间中所有的数据表select * from all_tables where tablespace_name='USERS';--查看数据表所在的表空间select * from user_tables where table_name='scott.emp';show parameter cache_size;alter system set db_keep_size =4M;--共享池大小show parameter shared_pool_size;--日志缓冲区show parameter log_buffer;--高速缓冲区建议select * from v$db_cache_advice;alter system set db_cache_advice=on|off|ready;--当前进程信息select * from v$process;--各动态组件调整的时间和调整类型信息select * from v$sga_dynamic_components;--分页查询select * from (select a1.* ,rownum rn from (select * from scott.emp ) a1 where rownum <=3) where rn>=1;--判断是否使用了spfile--方法一select name ,value from v$parameter where name='spfile';--方法二show parameter spfile;--方法三如果返回值是0则使用的是pfile 否则是spfileselect count(*) from v$spparameter where value is not null;--控制j警报文件位置的初始化参数是background_dump_destshow parameter background_dump_dest;--改变oracle默认的时间格式alter session set nls_date_format ='yyyy-mm-dd';--现实当前数据库名称select * from global_name;select * from v$instance;--获取scn号:system commit number 系统该编号select dbms_flashback.get_system_change_number from dual;show user;--查看用户的状态select username ,account_status from dba_users;--用户解锁alter user xdb account unlock;。
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推荐的表,使用很方便,人为控制少。
DBA常用脚本
DBA常用脚本DBA常用的脚本很多。
每个人使用的可能不尽相同。
下面提供一些供大家使用DBA常用SQL语句系列,欢迎补充,在不断更新中一、数据库构架体系1、表空间的监控是一个重要的任务,我们必须时刻关心表空间的设置,是否满足现在应用的需求,以下的语句可以查询到表空间的详细信息SELECTTABLESPACE_NAME,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENT S,MAX_EXTENTS,PCT_INCREASE,MIN_EXTLEN,STATUS,CONTENTS,LOGGING,EXTENT_MANAGEMENT, -- Columns not available in v8.0.x ALLOCATION_TYPE, -- Remove these columns if running PLUGGED_IN, -- against a v8.0.x databaseSEGMENT_SPACE_MANAGEMENT --use only in v9.2.x or later FROM DBA_TABLESPACESORDER BY TABLESPACE_NAME;2、对于某些数据文件没有设置为自动扩展的表空间来说,如果表空间满了,就将意味着数据库可能会因为没有空间而停止下来。
监控表空间,最主要的就是监控剩余空间的大小或者是使用率。
以下是监控表空间使用率与剩余空间大小的语句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_SPACEFROM V$TEMP_SPACE_HEADERGROUP BY TABLESPACE_NAME) FWHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)3、除了监控表空间的剩余空间,有时候我们也有必要了解一下该表空间是否具有自动扩展空间的能力,虽然我们建议在生产系统中预先分配空间。
Oracle数据库常用的脚本命令(一)
Oracle数据库常⽤的脚本命令(⼀)--连接数据库的命令connect,⽤于切换连接⽤户,简写形式conn--语法格式:conn ⽤户名/密码conn yanln/yanln--显⽰当前登录的⽤户show user--执⾏操作系统的命令host mkdir d:\testOracle--导出记录到⽂本spool d:\testOracle\test.txtselect * from book;spool off--清屏clear screen--执⾏⽂件系统中的sql语句start d:\test.sql--显⽰表结构,命令describe,简写形式descdesc student--显⽰错误信息show error--退出exitcmd-->sqlplus-->提⽰输⼊⽤户名、密码的登录⽅式sqlplus /nolog : 进⼊sqlplus界⾯但不登录--sys⽤户以sysdba的⾝份连接数据库,连接时指定数据库连接标识符@orclconn sys/oracle @orcl as sysdba--sys⽤户以sysdba的⾝份连接数据库,连接时没有指定数据库连接标识符,此时将连接默认的数据库conn sys/oracle as sysdbashow user--system⽤户直接登录数据库conn system/oracleshow user--system⽤户以sysdba的⾝份登录数据库conn system/oracle as sysdbashow user--创建默认表空间create tablespace test1_tablespace datafile 'test1file.dbf' size 10m;--创建临时表空间create temporary tablespace temptest1_tablespace tempfile 'tempfile1.dbf' size 10m;--查看表空间数据⽂件的位置select file_name from dba_data_files where tablespace_name = 'TEST1_TABLESPACE';--查看临时表空间数据⽂件的位置select file_name from dba_temp_files where tablespace_name = 'TEMPTEST1_TABLESPACE';--创建⽤户create user yan identified by test default tablespace test1_tablespace temporary tablespace temptest1_tablespace; --查看创建的⽤户select username from dba_users;--给刚创建的⽤户授权grant connect to yan;--如果想更改⽤户的密码,我们可以通过alter user yan identified by t123;--如果管理员不希望某⽤户登录,但⼜不打算删除某⽤户,可以将此⽤户锁定alter user yan account lock;--如果这个⽤户不⽤了,想删除这个⽤户,可以⽤dropdrop user yan cascade;--创建⽤户user02create user user02 identified by pass02;--创建⾓⾊create role manager;--给⾓⾊赋予创建表、创建视图的权限grant create table, create view to manager;--给⾓⾊manager授权给⽤户grant manager to user02;--回收权限revoke manager from user02;--删除权限drop role manager;--查看所有系统权限select * from system_privilege_map;--创建⽤户create user user02 identified by pass02;--给⽤户赋予⼀个创建会话的权限grant create session to user01;--通过⾓⾊给⽤户赋予⼀个系统权限create role manager;grant create table, create sequence to manager;grant manager to user01;--查看所有对象权限select * from table_privilege_map;--通过⾓⾊给⽤户赋予⼀个对象权限create role manager01;grant select,update,insert on scott.emp to manager01;grant manager01 to user01;--测试对象权限conn user01/pass01select * from scott.emp;(成功)select * from scott.dept;(失败)--回收对象权限revoke select,update,insert on scott.emp from manager01;--查看管理员级别的表空间描述信息select tablespace_name from dba_tablespaces;--查看普通⽤户级别的表空间描述信息select tablespace_name from user_tablespaces;--dba_users针对管理员级别的数据字典,⽤于查看数据库所有⽤户的⽤户信息select username,default_tablespace,temporary_tablespace from dba_users;--user_users针对普通⽤户级别的数据字典,⽤于查看当前登录⽤户的⽤户信息select username,default_tablespace,temporary_tablespace from user_users;--设置⽤户默认和临时表空间alter user user01default tablespace TEST1_TABLESPACEtemporary tablespace TEMPTEST1_TABLESPACE;-更改表空间的状态为脱机状态alter tablespace test1_tablespace offline;--更改表空间的状态为联机状态alter tablespace test1_tablespace online;--更改表空间的状态为只读状态alter tablespace test1_tablespace read only;--更改表空间的状态为可读写状态alter tablespace test1_tablespace read write;--查看表空间的状态select status from dba_tablespaces where tablespace_name = 'TEST1_TABLESPACE'; --增加数据⽂件alter tablespace test1_tablespace add datafile 'test2_file.dbf' size 10m;--查看表空间的数据⽂件select file_name from dba_data_files where tablespace_name='TEST1_TABLESPACE'; --删除数据⽂件alter tablespace test1_tablespace drop datafile 'test2_file.dbf';--删除表空间drop tablespace test1_tablespace including contents;。
oracle常用脚本(自己总结的)
日常工作中常用的脚本总结2009-07在做数据库维护过程中,需要使用大量的脚本反馈数据库的相关信息。
在日常工作中,可以使用下列脚本查询数据库中相关的等待事件。
查找数据库中具体的事件信息。
具体脚本内容如下:查询数据库信息数据库安装选项检查SHARED_POOL判断SHARED_POOL中的对象将大对象缓存在SHARED_POOL中SHARED_POOL中的剩余内存SGA区中各个对象的大小检查PGA判断workarea的使用情况判断用户消耗pga空间比例检查DB_CACHE_SIZE 估算DB_CACHE_SIZE大小查询DB_CACHE_SIZE中的对象日志切换处理两阶段事务检查大事务查看运行时间长的事务:检查SESSION引发的I/O变化检查消耗回滚段的事务查看回滚段正在处理的事务杀掉对应PENDING OFFLINE状态回滚段上事务检查磁盘I/O检查latch检查Session获取那些Latch检查Latch的命中率查看当前SESSION等待Latch类型等待latch语句执行语句的Hash值热块的处理检查lock,enqueue 查看是否有锁定对象查看锁以及对应的会话信息:检查对应SESSION持有锁SESSION阻塞RAC环境下的锁当前系统等待的enqueue类型查看enqueue等待的语句及类型检查由于未加索引的外键引起的全表锁的表:查出当前会话中的tm,tx锁:查看锁定某些对象的session信息:SESSION INFOsid => pidActiove spidActive Session Info当前SESSION在等待什么操作当前某个进程在做什么操作跟踪某个SESSION查看访问特定表的进程查看僵尸进程Current Session R/W Ratio查看当前session正在运行的什么程序Wait infoAll Session Wait InfoCurrent Session Wait Info系统统计信息长时间运行的应用等待事件对应业务RAC环境下的一些等待表空间信息表空间分配信息表空间剩余信息排序信息临时段的使用当前活动的排续library cachelibrary cache performance引发library cache pin的业务应用查看SQL版本过多的语句查询消耗系统资源的SQL语句了解v$sql_shared_cursor操作系统命令:检查系统日志:杀进程:查看运行情况命令转储内存的命令:回滚段使用回滚段多的会话用户使用哪个回滚段。
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-sql脚本
oracle-sql脚本select * from dba_users;create tablespace kyc_coo;create user kyc_coo identified by "123456" default tablespace kyc_coo;create temporary tablespace kyc_temp;alter user kyc_coo temporary tablespace kyc_temp;select * from dba_directories;create directory dmp as '/ceph/fileserver/backup/oracle';grant create session,create view,create job to resource;grant read,write on directory dmp to resource;grant resource to kyc_coo;--授权,创建,修改(只修改服务名中的ip),查询,删除dblinkgrant create public database link,create database link to test;--两种⽅式create public database link accbakconnect to kyc_acc identified by "Lcpsys_kyc_1130"using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.161)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME =kyc_w)))';或者create public database link accbakconnect to kyc_acc identified by "Lcpsys_kyc_1130" using 'tdb';select * from dba_db_links;drop public database link accbak;select * from acct_account@accbak;--最后修改job中的表名。
oracle_DBA语句总结
1.查看表空间使用情况2.增加表空间大小的四种方法----查看表空间路径:Select * from dba_data_files----Meathod1:给表空间增加数据文件ALTER TABLESPACE app_data ADD DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF'SIZE50M;----Meathod2:新增数据文件,并且允许数据文件自动增长ALTER TABLESPACE app_data ADD DATAFILE--数据文件路径'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP04.DBF'--数据文件大小SIZE50M--自动扩展,大小为5MAUTOEXTEND ON NEXT5M--自动扩展最大值MAXSIZE100M;---- Meathod3:允许已存在的数据文件自动增长ALTER DATABASE DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF' AUTOEXTEND ON NEXT5M MAXSIZE100M;---- Meathod4:手工改变已存在数据文件的大小ALTER DATABASE DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP02.DBF'RESIZE100M;--同德使用ALTER TABLESPACE TS_EMR ADD DATAFILE'+ASM_DATA/orcl/datafile/ts_emr12.ora'SIZE4096MAUTOEXTEND ON NEXT2M;3.sp_lock杀进程--查询被锁进程数connect system/sysn1i5y1s2@oracle;select b.sid,b.serial#,a.sql_text,b.sid,b.MACHINE,b.PROGRAM from v$sqlarea a,v$session b,v$locked_object cwhere a.address = b.sql_address and b.sid = c.SESSION_ID;--杀死锁进程connect system/sysn1i5y1s2@oracle;alter system kill session'session.id,serial#';--杀死锁进程成功,但还是被锁select * from v$lock where block=1;--执行以下语句,如果有记录,而且一直存在,杀掉进程.select * from v$locked_object;--如果有记录,根据检索出来的sidselect * from v$session where sid=??;--再根据杀进程语句alter system kill session'session.id,serial#';--select 'alter system kill session '||b.sid||','||b.serial#||';' from v$sqlarea a,v$session b,v$locked_object c--where a.address = b.sql_address and b.sid = c.SESSION_ID;(2).再杀操作系统进程:KILL -9刚才查出的SPID或者用ORAKILL(刚才查出的SID和SPID)。
Oracle常用操作表空间sql脚本
Oracle常⽤操作表空间sql脚本--删除⽤户(如果⽤户下⾯有对象,需要加cascade参数)drop user zxasrs cascade;--修改表空间为离线alter tablespace zxasrs offline;--删除表空间和数据⽂件drop tablespace zxasrs including contents and datafiles;--创建表空间create tablespace zxasrs datafile 'E:\项⽬⼯程\昆⼭\db\zxasrs.ora' size 204800;--启动表空间⾃增ALTER DATABASE DATAFILE 'E:\项⽬⼯程\昆⼭\db\zxasrs.ora' AUTOEXTEND ON;--设置每次⾃增200MALTER DATABASE DATAFILE 'E:\项⽬⼯程\昆⼭\db\zxasrs.ora' AUTOEXTEND ON NEXT 200M ;--设置每次⾃增200M,最⼤限制2000MALTER DATABASE DATAFILE 'E:\项⽬⼯程\昆⼭\db\zxasrs.ora' AUTOEXTEND ON NEXT 200M MAXSIZE 2000M;--为表空间增加⼤⼩alter tablespace zxasrs add size 204800;--重新配置表空间⼤⼩alter tablespace zxasrs resize 204800;--查询表空间使⽤率SELECT a.tablespace_name 表空间名,total 表空间⼤⼩,free 表空间剩余⼤⼩,(total-free) 表空间使⽤⼤⼩,ROUND((total-free)/total,4)*100 "使⽤率%"FROM (SELECT tablespace_name,SUM(bytes) free FROM DBA_FREE_SPACEGROUP BY tablespace_name ) a,(SELECT tablespace_name,SUM(bytes) total FROM DBA_DATA_FILESGROUP BY tablespace_name) bWHERE a.tablespace_name=b.tablespace_name;--查询表空间select name from v$tablespace;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle SQL脚本命令监控SQL1.监控事例的等待:select event,sum(decode(wait_time,0,0,1)) prev, sum(decode(wait_time,0,1,0)) curr,count(*) from v$session_waitgroup by event order by 4;2.回滚段的争用情况:select name,waits,gets,waits/gets ratio from v$rollstat a,v$rollname b where n=n; 3.监控表空间的I/O 比例:select df.tablespace_name name,df.file_name "file",f.phyrds pyr,f.phyblkrd pbr,f.phywrts pyw, f.phyblkwrt pbwfrom v$filestat f,dba_data_files dfwhere f.file#=df.file_id4.监空文件系统的I/O 比例:select substr(a.file#,1,2) "#",substr(,1,30) "name",a.status,a.bytes,b.phyrds,b.phywrtsfrom v$datafile a,v$filestat bwhere a.file#=b.file#5.在某个用户下找所有的索引:select user_indexes.table_name, user_indexes.index_name,uniqueness, column_name from user_ind_columns, user_indexeswhere user_ind_columns.index_name = user_indexes.index_nameand user_ind_columns.table_name = user_indexes.table_nameorder by user_indexes.table_type, user_indexes.table_name,user_indexes.index_name, column_position;6.进程监控:select distinct p.spid unix_process,s.terminal,to_char(s.logon_time,'YYYY/MON/DD HH24:MI') Logon_Time,ernamefrom v$process p, v$session swhere p.addr=s.paddr order by 27. 监控SGA 中字典缓冲区的命中率select parameter, gets,Getmisses , getmisses/(gets+getmisses)*100 "miss ratio",(1-(sum(getmisses)/ (sum(gets)+sum(getmisses))))*100 "Hit ratio"from v$rowcachewhere gets+getmisses <>0group by parameter, gets, getmisses;8. 监控SGA 中共享缓存区的命中率,应该小于1%select sum(pins) "Total Pins", sum(reloads) "Total Reloads",sum(reloads)/sum(pins) *100 libcachefrom v$librarycache;select sum(pinhits-reloads)/sum(pins) "hit radio",sum(reloads)/sum(pins) "reload percent" from v$librarycache;9. 显示所有数据库对象的类别和大小select count(name) num_instances ,type ,sum(source_size) source_size ,sum(parsed_size) parsed_size ,sum(code_size) code_size ,sum(error_size) error_size, sum(source_size) +sum(parsed_size) +sum(code_size) +sum(error_size) size_required from dba_object_sizegroup by type order by 2;10. 监控SGA 中重做日志缓存区的命中率,应该小于1%SELECT name, gets, misses, immediate_gets, immediate_misses,Decode(gets,0,0,misses/gets*100) ratio1,Decode(immediate_gets+immediate_misses,0,0,immediate_misses/(immediate_gets+immediate_misses)*100) ratio2FROM v$latch WHERE name IN ('redo allocation', 'redo copy');11. 监控内存和硬盘的排序比率,最好使它小于.10,增加sort_area_sizeSELECT name, value FROM v$sysstat WHERE name IN ('sorts (memory)', 'sorts (disk)'); 12. 监控当前数据库谁在运行什么SQL语句SELECT osuser, username, sql_text from v$session a, v$sqltext bwhere a.sql_address =b.address order by address, piece;13. 监控字典缓冲区SELECT (SUM(PINS - RELOADS)) / SUM(PINS) "LIB CACHE" FROM V$LIBRARYCACHE; SELECT (SUM(GETS - GETMISSES - USAGE - FIXED)) / SUM(GETS) "ROW CACHE" FROM V$ROWCACHE;SELECT SUM(PINS) "EXECUTIONS", SUM(RELOADS) "CACHE MISSES WHILE EXECUTING" FROM V$LIBRARYCACHE;后者除以前者,此比率小于1%,接近0%为好。
SELECT SUM(GETS) "DICTIONARY GETS",SUM(GETMISSES) "DICTIONARY CACHE GET MISSES"FROM V$ROWCACHE14. 找ORACLE 字符集select * from sys.props$ where name='NLS_CHARACTERSET';15. 监控MTSselect busy/(busy+idle) "shared servers busy" from v$dispatcher;此值大于0.5 时,参数需加大select sum(wait)/sum(totalq) "dispatcher waits" from v$queue where type='dispatcher'; select count(*) from v$dispatcher;select servers_highwater from v$mts;servers_highwater 接近mts_max_servers 时,参数需加大16. 碎片程度select tablespace_name,count(tablespace_name) from dba_free_space group by tablespace_namehaving count(tablespace_name)>10;alter tablespace name coalesce;alter table name deallocate unused;create or replace view ts_blocks_v asselect tablespace_name,block_id,bytes,blocks,'free space' segment_name fromdba_free_spaceunion allselect tablespace_name,block_id,bytes,blocks,segment_name from dba_extents;select * from ts_blocks_v;select tablespace_name,sum(bytes),max(bytes),count(block_id) from dba_free_space group by tablespace_name;查看碎片程度高的表SELECT segment_name table_name , COUNT(*) extentsFROM dba_segments WHERE owner NOT IN ('SYS', 'SYSTEM') GROUP BYsegment_nameHAVING COUNT(*) = (SELECT MAX( COUNT(*) ) FROM dba_segments GROUP BY segment_name);17. 表、索引的存储情况检查select segment_name,sum(bytes),count(*) ext_quan from dba_extents where tablespace_name='&tablespace_name' and segment_type='TABLE' group by tablespace_name,segment_name;select segment_name,count(*) from dba_extents where segment_type='INDEX' and owner='&owner'group by segment_name;18、找使用CPU 多的用户session12 是cpu used by this sessionselect a.sid,spid,status,substr(a.program,1,40) prog,a.terminal,osuser,value/60/100 value from v$session a,v$process b,v$sesstat cwhere c.statistic#=12 and c.sid=a.sid and a.paddr=b.addr order by value desc;20.监控log_buffer 的使用情况:(值最好小于1%,否则增加log_buffer 的大小)select ,rbar.value,,re.value,(rbar.value*100)/re.value||'%' "radio"from v$sysstat rbar,v$sysstat rewhere ='redo buffer allocation retries'and ='redo entries';19、查看运行过的SQL 语句:SELECT SQL_TEXTFROM V$SQL常用用户SQL表:select * from cat;select * from tab;select table_name from user_tables;视图:select text from user_views where view_name=upper('&view_name');索引:select index_name,table_owner,table_name,tablespace_name,status from user_indexes order bytable_name;触发器:select trigger_name,trigger_type,table_owner,table_name,status from user_triggers;快照:select owner,name,master,table_name,last_refresh,next from user_snapshots order by owner,next;同义词:select * from syn;序列:select * from seq;数据库链路:select * from user_db_links;约束限制:select TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUSfrom user_constraints WHERE TABLE_name=upper('&TABLE_Name');本用户读取其他用户对象的权限:select * from user_tab_privs;本用户所拥有的系统权限:select * from user_sys_privs;用户:select * from all_users order by user_id;表空间剩余自由空间情况:select tablespace_name,sum(bytes) 总字节数,max(bytes),count(*) from dba_free_space groupby tablespace_name;数据字典:select table_name from dict order by table_name;锁及资源信息:select * from v$lock;不包括DDL 锁数据库字符集:select name,value$ from props$ where name='NLS_CHARACTERSET';inin.ora 参数:select name,value from v$parameter order by name;SQL 共享池:select sql_text from v$sqlarea;数据库:select * from v$database控制文件:select * from V$controlfile;重做日志文件信息:select * from V$logfile;来自控制文件中的日志文件信息:select * from V$log;来自控制文件中的数据文件信息:select * from V$datafile;NLS 参数当前值:select * from V$nls_parameters;ORACLE 版本信息:select * from v$version;描述后台进程:select * from v$bgprocess;查看版本信息:select * from product_component_version;查询表结构select substr(table_name,1,20) tabname,substr(column_name,1,20)column_name,rtrim(data_type)||'('||data_length||')' from system.dba_tab_columns where owner='username'表空间使用状态select a.file_id "FileNo",a.tablespace_name "Tablespace_name", round(a.bytes/1024/1024,4) "Total MB",round((a.bytes-sum(nvl(b.bytes,0)))/1024/1024,4) "Used MB", round(sum(nvl(b.bytes,0))/1024/1024,4) "Free MB",round(sum(nvl(b.bytes,0))/a.bytes*100,4) "%Free"from dba_data_files a, dba_free_space bwhere a.file_id=b.file_id(+)group by a.tablespace_name,a.file_id,a.bytes order by a.tablespace_name查询某个模式下面数据不为空的表declareCursor c is select TNAME from tab;vCount Number;table_nm Varchar2(100);sq varchar2(300);beginfor r in c looptable_nm:=r.TNAME;sq:='select count(*) from '|| table_nm;execute immediate sq into vCount;if vCount>0 thendbms_output.put_line(r.tname);end if;end loop;end;客户端主机信息SELECTSYS_CONTEXT('USERENV','TERMINAL') TERMINAL,SYS_CONTEXT('USERENV','HOST') HOST,SYS_CONTEXT('USERENV','OS_USER') OS_USER,SYS_CONTEXT('USERENV','IP_ADDRESS') IP_ADDRESSFROM DUAL安装Oracle 后,经常使用的修改表空间的SQL 代码配置:Windows NT 4.0 中文版5 块10.2GB SCSI 硬盘分:C:盘、D:盘、E:盘、F:盘、G:盘Oracle 8.0.4 for Windows NTNT 安装在C:\WINNT,Oracle 安装在C:\ORANT目标:因系统的回滚段太小,现打算生成新的回滚段,建立大的、新的表空间(数据表空间、索引表空间、回滚表空间、临时表空间、)建两个数据表空间、两个索引表空间,这样建的目的是根据实际应用,如:现有10 个应用用户,每个用户是一个独立子系统(如:商业进销存MIS系统中的财务、收款、库存、人事、总经理等)尤其大型商场中收款机众多,同时访问进程很多,经常达到50-100 个进程同时访问,这样,通过建立多个用户表空间、索引表空间,把各个用户分别建在不同的表空间里(多个用户表空间放在不同的物理磁盘上),减少了用户之间的I/O 竞争、读写数据与写读索引的竞争(用户表空间、索引表空间也分别放在不同的物理磁盘上)规划:C:盘、NT 系统,Oracle 系统D:盘、数据表空间1(3GB、自动扩展)、回滚表空间1(1GB、自动扩展)E:盘、数据表空间2(3GB、自动扩展)、回滚表空间2(1GB、自动扩展)F:盘、索引表空间1(2GB、自动扩展)、临时表空间1(0.5GB、不自动扩展)G:盘、索引表空间2(2GB、自动扩展)、临时表空间2(0.5GB、不自动扩展)注:这只是一个简单的规划,实际规划要依系统需求来定,尽量减少I/O 竞争实现:1、首先查看系统有哪些回滚段及其状态。