【对象信息】
查看表:user_tables、all_tables、dba_tables
查看表字段:user_tab_columns、all_ tab_columns、dba_tab_columns
查看表注释:user_ tab_comments 、all_tab_comments、dba_tab_comments
查看字段注释:user_col_comments、all_col_comments、dba_col_comments
查看索引信息:user_indexes、all_indexes、dba_indexes
查看索引所在字段:user_ind_columns、all_ind_columns、dba_ind_columns
查看约束信息:user_constraints、all_constraints、dba_constraints
查看约束所在字段:user_cons_columns、all_cons_columns、dba_cons_columns
查看触发器信息:user_triggers、all_triggers、all_triggers
查看序列信息:user_sequences、all_sequences、dba_sequences
查看视图信息:user_views、all_views、dba_views
查看同义词信息:user_synonyms、all_synonyms、dba_synonyms
查看DBLINK信息:user_db_links、all_db_links、dba_db_links
查看JOB信息:user_jobs、all_jobs、dba_jobs
查看所有对象信息(过程PROCEDURE、函数FUNCTION、包和包体、JOB和LOB大字段、表、视图、索引、序列、触发器):user_objects、all_objects、dba_objects
查看过程、函数、触发器、包和包体内容:user_source、all_source、dba_source
【举例】
--查看用户下所有的表
SELECT * FROM user_tables;
--查看某表的创建时间
SELECT object_name, created
FROM user_objects
WHERE object_name = upper('&table_name');
--看索引所在字段
SELECT * FROM user_ind_columns WHERE index_name = upper('&index_name');
--查看序列号,last_number是当前值
SELECT * FROM user_sequences;
--查看视图及其SELECT语句
SELECT * FROM user_views;
--查看某表的约束条件
SELECT * FROM user_constraints WHERE table_name = upper('&table_name');
--查看过程状态
SELECT * FROM user_objects WHERE object_type = 'PROCEDURE';
--查看过程源代码
SELECT * FROM user_source WHERE NAME = upper('&procedure_name');
--查看名称包含log字符的表
SELECT object_name, object_id
FROM user_objects
WHERE instr(object_name, 'LOG') > 0;
--查看建表语句
SELECT DBMS_METADATA.GET_DDL('PROCEDURE', 'PROCEDURE_NAME', 'USER_NAME') FROM dual;
--查看远程数据库对象的定义
SELECT DBMS_LOB.SUBSTR@dblinkname(DBMS_METADATA.GET_DDL@dblinkname('TABLE', 'TABLENAME', 'USERNAME')) FROM DUAL@dblinkname;
【表空间与数据文件信息】
查看用户默认表空间和临时表空间:user_users、all_users、dba_users
查看表空间信息:user_tablespaces、all_tablespaces、dba_tablespaces
查看表空间空余空间:dba_free_space
查看表空间数据文件及使用情况:dba_data_files
查看数据文件详细信息:v$datafile
查看数据段基本信息:user_segments、all_segments、dba_segments
查看数据区基本信息:user_extents、all_extents、dba_extents
查看临时表空间信息:dba_temp_files
回滚段信息:dba_rollback_segs
【举例】
--查看用户默认表空间和临时表空间
SELECT * FROM user_users;
--查看用户有权操作的表空间基本情况
SELECT * FROM user_tablespaces;
--查看表空间剩余空间
SELECT tablespace_name, SUM(bytes), SUM(blocks)
FROM dba_free_space
GROUP BY tablespace_name;
--查看表空间数据文件及其位置
select * from dba_data_files;
--查看数据文件详细信息
SELECT * FROM v$datafile
【用户、角色与权限信息】
查看所有角色:dba_roles
查看用户角色:user_role_privs、dba_role_privs
查看用户权限:user_sys_privs、dba_sys_privs
查看角色权限:role_sys_privs
查看用户操作表权限:user_tab_privs、all_tab_privs、dba_tab_privs
【数据库信息】
查看控制文件信息:v$controlfile
查看系统参数信息:v$parameter
数据库系统运行信息:v$datafile
查看当前实例基本信息:v$instance
实例当前有效的参数信息:v$system_parameter
查看日志文件位置:v$logfile
查看日志文件信息:v$log
查看日志线程信息:v$thread
查看归档日志位置:v$archived_dest
查看归档日志信息:v$archived_log
日志历史切换信息:v$loghist
查看数据允许的连接数:show parameter processes
【内存与进程信息】
SGA区的基本信息:v$sga
SGA区的详细信息:v$sgastat
共享SQL区SQL详细信息(SQL文本是CLOB,每条SQL仅记录一次):v$sql
共享SQL区SQL详细信息(SQL文本是CLOB,不同用户执行相同SQL多次记录):v$sqlarea
共享SQL区SQL的文本信息(仅记录文本且拆分成多行):v$sqltext
库缓存性能的统计数据:v$librarycache
联机的回滚段的名字:v$rollstat
后台进程信息:v$bgprocess
会话信息:v$session
【性能信息】
文件IO信息:v$filestat
锁存器的统计数据:v$latch
块竞争统计数据:v$waitstat
事件的总计等待时间:v$system_event
事件等待信息:v$session_wait
排序操作信息:v$sort_usage
被锁定对象信息:v$locked_object
会话的IO信息:v$sess_io
会话的等待信息:v$session_wait
【举例】
--查看当前会话的SID
select userenv('sid') from dual;
--查看当前被锁的对象信息
SELECT o.object_name,
s.sid,
s.serial#,
s.username,
s.osuser,
s.machine,
s.terminal
FROM v$locked_object l, dba_objects o, v$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;
--杀掉系统对象锁定的进程
ALTER system KILL session 'SID,serial#';
--如何监控事例的等待?
SELECT event,
SUM(decode(wait_Time, 0, 0, 1)) "Prev",
SUM(decode(wait_Time, 0, 1, 0)) "Curr",
COUNT(*) "Tot"
FROM v$session_wait
GROUP BY event
ORDER BY 4;
--如何查询做比较大的排序的进程?
SELECT b.tablespace,
b.segfile#,
b.segblk#,
b.blocks,
a.sid,
a.serial#,
a.username,
a.osuser,
a.status
FROM v$session a, v$sort_usage b
WHERE a.saddr = b.session_addr
ORDER BY b.tablespace, b.segfile#, b.segblk#, b.blocks;
--如何查看回滚段的争用情况?
SELECT NAME, waits, gets, waits / gets "Ratio"
FROM v$rollstat C, v$rollname D
WHERE C.usn = D.usn;
--如何监控表空间的 I/O 比例?
SELECT B.tablespace_name NAME,
B.file_name "file",
A.phyrds pyr,
A.phyblkrd pbr,
A.phywrts pyw,
A.phyblkwrt pbw
FROM v$filestat A, dba_data_files B
WHERE A.file# = B.file_id
ORDER BY B.tablespace_name;
--如何监控文件系统的 I/O 比例?
SELECT substr(C.file#, 1, 2) "#",
substr(C.name, 1, 30) "Name",
C.status,
C.bytes,
D.phyrds,
D.phywrts
FROM v$datafile C, v$filestat D
WHERE C.file# = D.file#;
--如何监控 SGA 的命中率?
SELECT a.value + b.value "logical_reads",
c.value "phys_reads",
round(100 * ((a.value + b.value) - c.value) / (a.value + b.value)) "BUFFER HIT RATIO"
FROM v$sysstat a, v$sysstat b, v$sysstat c
WHERE a.statistic# = 38
AND b.statistic# = 39
AND c.statistic# = 40;
--如何监控 SGA 中字典缓冲区的命中率?
SELECT parameter,
gets,
Getmisses,
getmisses / (gets + getmisses) * 100 "miss ratio",
(1 - (SUM(getmisses) / (SUM(gets) + SUM(getmisses)))) * 100 "Hit ratio"
FROM v$rowcache
WHERE gets + getmisses <> 0
GROUP BY parameter, gets, getmisses;
--如何监控 SGA 中共享缓存区的命中率,应该小于1%
SELECT SUM(pins) "Total Pins",
SUM(reloads) "Total Reloads",
SUM(reloads) / SUM(pins) * 100 libcache
FROM v$librarycache;
SELECT SUM(pinhits - reloads) / SUM(pins) "hit radio",
SUM(reloads) / SUM(pins) "reload percent"
FROM v$librarycache;
--如何知道使用CPU多的用户session?
SELECT 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 c
WHERE c.statistic# = 11
AND c.sid = a.sid
AND a.paddr = b.addr
ORDER BY VALUE DESC;
【常用系统包】
dbms_output用于输入和输出信息
put():在当前行输出
put_line():在当前行结尾处换行并在新行输出
newline:换行
getline:取得缓冲区的单行信息
getlines:取得缓冲区的多行信息
dbms_job用于安排和管理作业队列
submit():新建作业
remove():移除作业
change():修改作业
what()、next_date()、interval():更改作业任务、下次执行时间、时间间隔
broken()、run():暂停作业、运行作业
dbms_lob使用和维护LOB字段
write:向LOB中写入数据
read:从LOB中读取数据
instr:从LOB中查字符位置
substr:从LOB中取字符
getlength:返回LOB长度
dbms_metadata.get_ddl:生成数据库对象的ddl信息
dbms_random:快速生成随机数
initialize:初始化dbms_random包,必须提供随机数种子
seed:复位随机数种子
random:生产随机数
dbms_flashback:激活或禁止会话的flashback特征,普通用户使用需授权
enable_at_time:以时间方式激活会话的flashback
enable_at_system_change_number:以系统改变号(scn)方式激活会话的flashback
get_system_change_number:取得系统的当前scn值
disable:禁止会话的flashback模式
dbms_ddl:DDL信息管理
alter_compile:重新编译过程、函数和包
analyze_object:分析表、索引、簇并生成统计数据
dbms_stat:用于搜集,查看,修改数据库对象的优化统计信息
get_column_stats:取得列的统计信息
get_index_stats:取得索引的统计信息
get_system_stats:从统计表或数据字典中取得系统统计信息
get_table_stats:取得表的统计信息
dbms_session
dbms_rowid:取得行标识符(rowid)的信息并建立ROWID
dbms_shared_pool:操作共享池
sizes:显示在共享池中大于指定尺寸的对象
keep:用于将特定对象绑定到共享池中
unkeep:清除被绑定到共享池中的对象