oracle中的常用系统相关命令及系统表

如果你是管理员帐户,那么可以列出当前DB中所有表: 
select TABLE_NAME from all_tables;
列出某个字段所属的表; 
SELECT table_name from all_tab_columns where column_name='要查的字段'; 


----------------------------------------------------------------------------


系统表dual:

dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。我们可以用它来做很多事情,如下:

  1、查看当前用户,可以在 SQL Plus中执行下面语句 select user from dual;

  2、用来调用系统函数

  select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--获得当前系统时间

  select SYS_CONTEXT('USERENV','TERMINAL') from dual;--获得主机名

  select SYS_CONTEXT('USERENV','language') from dual;--获得当前 locale

  select dbms_random.random from dual;--获得一个随机数

  3、得到序列的下一个值或当前值,用下面语句

  select your_sequence.nextval from dual;--获得序列your_sequence的下一个值

  select your_sequence.currval from dual;--获得序列your_sequence的当前值

  4、可以用做计算器 select 7*9 from dual;

  ------

  Oracle系统中dual表是一个“神秘”的表,网上有很多网友都对该表进行了测试,该表只有一行一列,其实该表和系统中的其他表一样,一样可以执行插入、更新、删除操作,还可以执行drop操作。但是不要去执行drop表的操作,否则会使系统不能用,数据库起不了,会报Database startup crashes with ORA-1092错误。此时也不要慌乱,可以通过执行以下步骤来进行恢复。可以用sys用户登陆。

  SQL> create pfile=’d:pfile.bak’ from spfile

  SQL> shutdown immediate

  在d:pfile.bak文件中最后加入一条:

  replication_dependency_tracking = FALSE

  重新启动数据库:

  SQL> startup pfile=’d:pfile.bak’

  SQL> create table “sys”.”DUAL”

  [an error occurred while processing this directive]

  =====

  DUAL ? 有什么神秘的? 当你想得到ORACLE系统时间, 简简单单敲一行SQL 不就得了吗? 故弄玄虚….

  SQL> select sysdate from dual;

  SYSDATE

  ---------

  28-SEP-03

  哈哈, 确实DUAL的使用很方便. 但是大家知道DUAL倒底是什么OBJECT, 它有什么特殊的行为吗? 来,我们一起看一看. 首先搞清楚DUAL是什么OBJECT :

  SQL> connect system/manager

  Connected.

  SQL> select owner, object_name , object_type from dba_objects where object_name like '%DUAL%'; OWNER OBJECT_NAME OBJECT_TYPE

  --------------- --------------- -------------

  SYS DUAL TABLE PUBLIC DUAL SYNONYM

  原来DUAL是属于SYS schema的一个表,然后以PUBLIC SYNONYM的方式供其他数据库USER使用.

  再看看它的结构:

  SQL> desc dual Name Null? Type

  ----------------------------------------- -------- ----------------------------

  DUMMY VARCHAR2(1)

  SQL>

  只有一个名字叫DUMMY的字符型COLUMN .


-----------------------------------------------------------------------------

Oracle基本的数据字典:

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 
构成数据字典的所有表的信息;

-----------------------------------------------------------------------------------

常用系统相关查询

查看用户下所有的表
  SQL>select * from user_tables;

  1、用户

  查看当前用户的缺省表空间
  SQL>select username,default_tablespace from user_users;

  查看当前用户的角色
  SQL>select * from user_role_privs;

  查看当前用户的系统权限和表级权限
  SQL>select * from user_sys_privs;
  SQL>select * from user_tab_privs;

  显示当前会话所具有的权限
  SQL>select * from session_privs;

  显示指定用户所具有的系统权限
  SQL>select * from dba_sys_privs where grantee='GAME';

  2、表

  查看用户下所有的表
  SQL>select * from user_tables;

  查看名称包含log字符的表
  SQL>select object_name,object_id from user_objects where instr(object_name,'LOG')>0;

  查看某表的创建时间
  SQL>select object_name,created from user_objects where object_name=upper('&table_name');

  查看某表的大小
  SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments

  where segment_name=upper('&table_name');

  查看放在ORACLE的内存区里的表
  SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;

  3、索引

  查看索引个数和类别
  SQL>select index_name,index_type,table_name from user_indexes order by table_name;

  查看索引被索引的字段
  SQL>select * from user_ind_columns where index_name=upper('&index_name');

  查看索引的大小
  SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
  where segment_name=upper('&index_name');

  4、序列号

  查看序列号,last_number是当前值
  SQL>select * from user_sequences;

  5、视图

  查看视图的名称
  SQL>select view_name from user_views;

  查看创建视图的select语句
  SQL>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');

  6、同义词
  查看同义词的名称
  SQL>select * from user_synonyms;

  7、约束条件
  查看某表的约束条件
  SQL>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;

  8、存储函数和过程

  查看函数和过程的状态
  SQL>select object_name,status from user_objects where object_type='FUNCTION';
  SQL>select object_name,status from user_objects where object_type='PROCEDURE';

  查看函数和过程的源代码
  SQL>select text from all_source where owner=user and name=upper('&plsql_name');


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值