参考文章:oracle 查看用户所在的表空间
Oracle 查询语句
用户相关查询
查看当前用户的缺省表空间
1
SQL> select username,default_tablespace from user_users;
查看当前用户的角色
1
SQL> select * from user_role_privs;
查看当前用户的系统权限
1
SQL> select * from user_sys_privs;
查看当前用户的表级权限
1
SQL> select * from user_tab_privs;
查看当前用户下所有的表
1
SQL> select TABLE_NAME,TABLESPACE_NAME from user_tables;
查看当前会话所具有的权限
1
SQL> select * from session_privs;
查看指定用户所具有的系统权限
1
SQL> select * from dba_sys_privs where grantee='GAME';
表相关的查询
查看名称包含log字符的表
1
SQL> select object_name,object_id from user_objects where instr(object_name,'LOG')>0;
查询某表的大小
1
SQL> select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('test');
查询某表的创建时间
1
SQL> select object_name,created from user_objects where object_name=upper('test');
查看放在 ORACLE 的内存区里的表
1
SQL> select table_name,cache from user_tables where instr(cache,'Y')>0;
索引相关的查询
查看索引个数和类别
1
SQL> select index_name,index_type,table_name from user_indexes order by table_name;
查看索引被索引的字段
1
SQL> select * from user_ind_columns where index_name=upper('&index_name');
查看索引的大小
1
SQL> select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&index_name');
序列相关查询
查看序列号,last_number是当前值
1
SQL> select * from user_sequences;
视图相关查询
查看视图的名称
1
SQL> select view_name from user_views;
查看创建视图的select语句
1
2
3SQL> select view_name,text_length from user_views;
SQL> set long 2000; 说明:可以根据视图的text_length值设定set long 的大小
SQL> select text from user_views where view_name=upper('&view_name');
同义词
查看同义词的名称
1
SQL> select * from user_synonyms;
约束条件
查看某表的约束条件
1
2
3SQL> select constraint_name,constraint_type,search_condition,r_constraint_name from user_constraints where table_name = upper('&table_name');
SQL> select c.constraint_name,c.constraint_type,cc.column_name from user_constraints c,user_cons_columns cc where c.owner = upper('&table_owner') and c.table_name = upper('&table_name') and c.owner = cc.owner and c.constraint_name = cc.constraint_name order by cc.position;
存储函数和过程
查看函数和过程的状态
1
2SQL> select object_name,status from user_objects where object_type='FUNCTION';
SQL> select object_name,status from user_objects where object_type='PROCEDURE';查看函数和过程的源代码
1
SQL> select text from all_source where owner=user and name=upper('&plsql_name');
Oracle 常用数据字典
- USER_: 记录用户对象的信息,如 user_tables 包含用户创建的所有表;user_views, user_constraints 等;
- ALL_: 记录用户对象的信息及被授权访问的对象信息;
- DBA_: 记录数据库实例的所有对象的信息,如 DBA_USERS 包含数据库实例中所有用户的信息。DBA 的信息包含 user 和 all 的信息;
- V$: 当前实例的动态视图,包含系统管理和优化使用的视图;
- GV_: 分布环境下所有实例的动态视图,包含系统管理和优化使用的视图,这里的 GV 表示 Global v$ 的意思;
如当前分布环境下启动多个实例:
1 | set line 160 # 每行显示 160 个字符 |
oracle常用数据字典,oracle10 增加了不少数据字典,10g R1 有 1713 个,R2 有 1870 个
基本的数据字典
- DBA_TABLES: 所有用户的所有表的信息;
- DBA_TAB_COLUMNS: 所有用户的表的列(字段)信息;
- DBA_VIEWS: 所有用户的所有视图信息;
- DBA_SYNONYMS: 所有用户的同义词信息;
- DBA_SEQUENCES: 所有用户的序列信息;
- DBA_CONSTRAINTS: 所有用户的表约束信息;
- DBA_INDEXES: 所有用户索引的简要;
- DBA_IND_COLUMNS: 所有用户索引的列信息;
- DBA_TRIGGERS: 所有用户的触发器信息;
- DBA_SOURCE: 所有用户存储过程源代码的信息;
- DBA_PROCEDUS: 所有用户存储过程信息;
- DBA_SEGMENTS: 所有用户段(表,索引,Cluster)使用空间信息;
- DBA_EXTENTS: 所有用户段的扩展段信息;
- DBA_OBJECTS: 所有用户对象的基本信息(包括索引,表,视图,序列等);
- CAT: 当前用户可以访问的所有的基表;
- TAB: 当前用户创建的所有基表,视图,同义词等;
- DICT: 构成数据字典的所有表的信息;
与数据库组件相关的数据字典
- 数据库:
- V$DATABASE 同义词 V_$DATABASE, 记录系统的运行情况;
- 表空间:
- DBA_TABLESPACES: 记录系统表空间的基本信息;
- DBA_DATA_FILES: 记录系统数据文件及表空间的基本信息;
- DBA_FREE_SPACE: 记录系统表空间的剩余空间的信息;
- 控制文件:
- V$CONTROLFILE: 记录系统控制文件的路径信息;
- V$PARAMETER: 记录系统各参数的基本信息;
- V$CONTROLFILE_RECORD_SECTION: 记录系统控制运行的基本信息;
- 数据文件:
- DBA_DATA_FILES: 记录系统数据文件及表空间的基本信息;
- V$DATAFILE: 记录来自控制文件的数据文件信息;
- V$FILESTAT: 记录数据文件读写的基本信息;
查看 VGA 信息
1 | SQL> show sga; |
可以通过以下几个动态性能视图查看信息
- v$sysstat: 系统统计信息;
- v$sesstat: 用户会话统计信息;
- v$pgastat: 显示内存使用统计信息;
- v$sql_workarea: SQL 游标所用工作区的信息;
- v$sql_workarea_active: 当前系统工作区的信息;
常用的动态视图查询方法
v$process
可以查询到每个 Oracle 进程的 PGA 分配的内存和已使用的内存情况,其中pga_used_mem
表示已使用的,pga_alloc_mem
表示已分配的,pga_max_mem
表示 PGA 的最大值;1
SQL> select pid,pga_used_mem,pga_alloc_mem,pga_max_mem from v$process;
查看后台进程
1
SQL> select * from v$bgprocess where paddr <> '00';
查看所有的表空间
1
SQL> select tablespace_name from dba_data_files order by tablespace_name;
查看表空间的名字和大小
1
SQL> 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;