ORACLE常用系统表及常用语句

前端之家收集整理的这篇文章主要介绍了ORACLE常用系统表及常用语句前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

转自:http://www.cnblogs.com/jiangxinnju/p/5840420.html

@H_301_3@

@H_301_3@--DBA/ALL/USER/V_$/GV_$/SESSION/INDEX开头的绝大部分都是视图

@H_301_3@-- DBA_TABLES意为@H_301_3@DBA拥有的或可以访问的所有的关系表。

@H_301_3@-- ALL_TABLES意为某一用户拥有的或可以访问的所有的关系表。

@H_301_3@-- USER_TABLES意为某一用户所拥有的所有的关系表。

@H_301_3@--当某一用户本身就为数据库@H_301_3@DBA时,@H_301_3@DBA_TABLES@H_301_3@ALL_TABLES等价。

@H_301_3@-- DBA_TABLES>= ALL_TABLES >= USER_TABLES

@H_301_3@-- 需要注意的是在@H_301_3@ORACLE数据库中大小写是敏感的,而此三表中数据默认都是大写的,所以在进行查询的时候注意小写的数据可能会造成数据无法查到。

SELECT * FROM dba_views WHERE view_name LIKE 'DBA%';

SELECT * FROM dba_views WHERE view_name LIKE 'ALL%';

SELECT * FROM dba_views WHERE view_name LIKE 'USER%';

SELECT * FROM dba_views WHERE view_name LIKE 'V_$%'; @H_301_3@-- 针对某个实例的视图

SELECT * FROM dba_views WHERE view_name LIKE 'GV_$%'; @H_301_3@-- 全局视图,针对多个实例环境

SELECT * FROM dba_views WHERE view_name LIKE 'SESSION%';

SELECT * FROM dba_views WHERE view_name LIKE 'INDEX%';

SELECT count(1)FROM dba_tables;

SELECTcount(1) FROM all_tables;

SELECT count(1)FROM user_tables; @H_301_3@-- V$/GV$开头的绝大部分都是@H_301_3@V_$/GV_$表的别名

SELECT * FROMdba_synonyms WHERE synonym_name LIKE 'V$%';

SELECT * FROM dba_synonyms WHERE synonym_nameLIKE 'GV$%'; @H_301_3@-- X$没有对应的@H_301_3@X_$

SELECT * FROM dba_synonyms WHERE synonym_nameLIKE 'X$%'; @H_301_3@-- 比较常用的@H_301_3@DBA开头的视图有

select * from dba_users; @H_301_3@--数据库用户信息

select * from dba_roles; @H_301_3@--角色信息

select * from dba_segments; @H_301_3@--表段信息

select * from dba_extents; @H_301_3@--数据区信息

select * from dba_objects; @H_301_3@--数据库对象信息

select * from dba_lobs; @H_301_3@--lob数据信息

select * from dba_tablespaces; @H_301_3@--数据库表空间信息

select * from dba_data_files; @H_301_3@--数据文件设置信息

select * from dba_temp_files; @H_301_3@--临时数据文件信息

select * from dba_rollback_segs; @H_301_3@--回滚段信息

select * from dba_ts_quotas; @H_301_3@--用户表空间配额信息

select * from dba_free_space; @H_301_3@--数据库空闲空间信息

select * from dba_profiles; @H_301_3@--数据库用户资源限制信息

select * from dba_sys_privs; @H_301_3@--用户的系统权限信息

select * from dba_tab_privs; @H_301_3@--用户具有的对象权限信息

select * from dba_col_privs; @H_301_3@--用户具有的列对象权限信息

select * from dba_role_privs; @H_301_3@--用户具有的角色信息

select * from dba_audit_trail; @H_301_3@--审计跟踪记录信息

select * from dba_stmt_audit_opts; @H_301_3@--审计设置信息

select * from dba_audit_object; @H_301_3@--对象审计结果信息

select * from dba_audit_session; @H_301_3@--会话审计结果信息

select * from dba_indexes; @H_301_3@--用户模式的索引信息@H_301_3@-- 比较常用的@H_301_3@ALL开头的视图有

select * from all_users; @H_301_3@--数据库所有用户的信息

select * from all_objects; @H_301_3@--数据库所有的对象的信息

select * from all_def_audit_opts; @H_301_3@--所有默认的审计设置信息

select * from all_tables; @H_301_3@--所有的表对象信息

select * from all_indexes; @H_301_3@--所有的数据库对象索引的信息

select * from all_tab_comments; @H_301_3@--查询所有用户的表@H_301_3@,视图等

select * from all_col_comments; @H_301_3@--查询所有用户的表的列名和注释@H_301_3@.

select * from all_tab_columns; @H_301_3@--查询所有用户的表的列名等信息@H_301_3@(详细但是没有备注@H_301_3@)

@H_301_3@-- 比较常用的@H_301_3@ALL开头的视图有

select * from user_objects; @H_301_3@--用户对象信息

select * from user_source; @H_301_3@--数据库用户的所有资源对象信息

select * from user_segments; @H_301_3@--用户的表段信息

select * from user_tables; @H_301_3@--用户的表对象信息

select * from user_tab_columns; @H_301_3@--用户的表列信息

select * from user_constraints; @H_301_3@--用户的对象约束信息

select * from user_sys_privs; @H_301_3@--当前用户的系统权限信息

select * from user_tab_privs; @H_301_3@--当前用户的对象权限信息

select * from user_col_privs; @H_301_3@--当前用户的表列权限信息

select * from user_col_comments; @H_301_3@-- 查询用户的表的列名和注释

select * from user_role_privs; @H_301_3@--当前用户的角色权限信息

select * from user_indexes; @H_301_3@--用户的索引信息

select * from user_ind_columns; @H_301_3@--用户的索引对应的表列信息

select * from user_cons_columns; @H_301_3@--用户的约束对应的表列信息

select * from user_clusters; @H_301_3@--用户的所有簇信息

select * from user_clu_columns; @H_301_3@--用户的簇所包含的内容信息

select * from user_cluster_hash_expressions; @H_301_3@--散列簇的信息

@H_301_3@-@H_301_3@- 比较常用的@H_301_3@V$开头的别名有

select * from v$database; @H_301_3@--数据库信息

select * from v$datafile; @H_301_3@--数据文件信息

select * from v$controlfile; @H_301_3@--控制文件信息

select * from v$logfile; @H_301_3@--重做日志信息

select * from v$instance; @H_301_3@--数据库实例信息

select * from v$log; @H_301_3@--日志组信息

select * from v$loghist; @H_301_3@--日志历史信息

select * from v$sga; @H_301_3@--数据库@H_301_3@SGA信息

select * from v$parameter; @H_301_3@--初始化参数信息

select * from v$process; @H_301_3@--数据库服务器进程信息

select * from v$bgprocess; @H_301_3@--数据库后台进程信息

select * from v$controlfile_record_section; @H_301_3@--控制文件记载的各部分信息

select * from v$thread; @H_301_3@--线程信息

select * from v$datafile_header; @H_301_3@--数据文件头所记载的信息

select * from v$archived_log; @H_301_3@--归档日志信息

select * from v$archive_dest; @H_301_3@--归档日志的设置信息

select * from v$logmnr_contents; @H_301_3@--归档日志分析的@H_301_3@DML DDL结果信息

select * from v$logmnr_dictionary; @H_301_3@--日志分析的字典文件信息

select * from v$logmnr_logs; @H_301_3@--日志分析的日志列表信息

select * from v$tablespace; @H_301_3@--表空间信息

select * from v$tempfile; @H_301_3@--临时文件信息

select * from v$filestat; @H_301_3@--数据文件@H_301_3@I/O统计信息

select * from v$undostat; @H_301_3@--Undo数据信息

select * from v$rollname; @H_301_3@--在线回滚段信息

select * from v$session; @H_301_3@--会话信息

select * from v$transaction; @H_301_3@--事务信息

select * from v$rollstat; @H_301_3@--回滚段统计信息

select * from v$pwfile_users; @H_301_3@--特权用户信息

select * from v$sqlarea; @H_301_3@--当前查询过的@H_301_3@sql语句访问过的资源及相关的信息

select * from v$sql; @H_301_3@--@H_301_3@v$sqlarea基本相同的相关信息

select * from v$sysstat; @H_301_3@--数据库系统状态信息

@H_301_3@-- 比较常用的@H_301_3@SESSION开头的视图有

select * from session_roles; @H_301_3@--会话的角色信息

select * from session_privs; @H_301_3@--会话的权限信息

@H_301_3@-- 比较常用的@H_301_3@INDEX开头的视图有

select * from index_stats; @H_301_3@--索引的设置和存储信息

@H_301_3@-- 伪表,参考@H_301_3@oracle @H_301_3@ dual 详解:http://blog.csdn.net/ozhouhui/article/details/7935196

select * from dual; @H_301_3@--系统伪列表信息

select sysdate from dual; @H_301_3@--可将@H_301_3@Sysdate视为一个其结果为当前日期和时间的函数,在任何可以使用@H_301_3@Oracle函数的地方都可以使用@H_301_3@Sysdate。也可以将它视为每个表的一个隐藏的列或伪列。

select current_date from dual; @H_301_3@--报告会话的时区中的系统日期。注:可以设置自己的时区,以区别于数据库的时区。

select SYSTIMESTAMP from dual; @H_301_3@--报告@H_301_3@TIMESTAMP数据类型格式的系统日期。

@H_301_3@-- 系统权限

@H_301_3@-- GRANTEE 接受该权限的用户名

@H_301_3@-- OWNER 对象的拥有者

@H_301_3@-- GRANTOR 赋予权限的用户

SELECT * FROM dba_sys_privs WHERE grantee = 'SYS';

SELECT * FROM dba_sys_privs WHERE grantee = 'CONNECT';

SELECT * FROM dba_sys_privs WHERE grantee = 'RESOURCE';

@H_301_3@-- 角色权限

@H_301_3@-- 查看某个用户有哪些角色

select * from dba_role_privs where grantee='SYS'; @H_301_3@-- 查看某个角色被赋予了哪些用户

SELECT * FROMdba_role_privs WHERE granted_role = 'DBA'; @H_301_3@-- 对象权限

SELECT* FROM dba_tab_privs; @H_301_3@-- 授予某个用户某些角色

GRANT connect,resource TO 'USER';

GRANT dba to 'USER'; @H_301_3@--给普通用户授予@H_301_3@dba角色时,要重新连接才能生效

REVOKE dba to 'USER'; @H_301_3@-- 直接授予某个用户某些权限

GRANT CREATE VIEW TO 'USER'; @H_301_3@-- 查看某个系统用户是否有@H_301_3@SYSDBA或者@H_301_3@SYSOPER权限

@H_301_3@-- oracle:DBA,SYSDBA,SYSOPER三者的区别:http://blog.chinaunix.net/uid-22457844-id-3045741.html

select * from V$PWFILE_USERS; @H_301_3@-- 锁定、解锁用户

SELECT * FROM dba_users WHERE username = 'SCOTT';

ALTER USER SCOTT account LOCK; @H_301_3@--锁定用户

ALTER USER SCOTT account UNLOCK; @H_301_3@--解锁用户

COMMIT;

@H_301_3@-- oracle10g 修改用户密码@H_301_3@: http://blog.163.com/benbenfafa_88/blog/static/64930162200972594612972/

@H_301_3@-- UserDefault Password Check in Oracle 11g: http://www.dbform.com/html/2009/673.html

SELECT password FROM dba_users WHEREusername = 'SCOTT';

alter user SCOTT identified by new_password;

@H_301_3@--修改用户密码

@H_301_3@--SERVICE_NAMES: http://docs.oracle.com/database/121/REFRN/GUID-AC956707-D568-4F8A-BF2E-99BA41E0A64F.htm#REFRN10194

SELECT * FROM global_name; @H_301_3@-- 查看@H_301_3@oracle的全局数据库

SELECT * FROM v$database; @H_301_3@-- 查看数据库@H_301_3@ showparameter db_name;

@H_301_3@-- 数据库实例名对应着@H_301_3@SID

@H_301_3@-- SID: http://docs.oracle.com/database/121/LADBI/glossary.htm#LADBI8021

@H_301_3@-- linux下在配置@H_301_3@oracle环境变量的情况可以使用@H_301_3@ echo$ORACLE_SID,如果没有可以使用@H_301_3@ps -ef |grep oracle 查询,结果中的@H_301_3@xxxx就是对应的@H_301_3@SID

@H_301_3@-- oracle 25481 0 Aug17 ? 00:00:00 ora_pmon_xxxx

@H_301_3@-- @H_301_3@windows环境下@H_301_3@,oracle是以后台服务的方式被管理的@H_301_3@,所以看@H_301_3@"控制面板@H_301_3@->管理工具@H_301_3@->服务里面的名称@H_301_3@:"OracleServiceORCL",@H_301_3@ORCL就是@H_301_3@sid;

SELECT * FROM v$instance; @H_301_3@--查看数据库实例名

@H_301_3@ showparameter instance_name;

select instance from v$thread; @H_301_3@-- show parameter@H_301_3@oracle的命令,不是标准@H_301_3@sql语句

@H_301_3@-- 可以在@H_301_3@sqlplus或者@H_301_3@pl/sql dev的命令窗口执行

@H_301_3@-- show parameter aaaa;等价于

@H_301_3@SELECT * FROMv$parameter WHERE name like '%aaaa%';

SELECT * FROM v$parameter WHERE name like '%name%'; @H_301_3@--等价于@H_301_3@show parametername;

select * from v$parameter where name like '%db_domain%'; @H_301_3@--查询数据库域名

select username from all_userswhere username like '%SCOTT%'; drop user SCOTT cascade; commit;

@H_301_3@-- ERROR atline 1:

@H_301_3@-- ORA-01940:cannot drop a user that is currently connected

select'ALTERSYSTEM KILL SESSION '||''''||SID||','||SERIAL#||''''||';' as KILLER from v$session where username='SCOTT';

@H_301_3@-- KILLER

@H_301_3@-- ALTERSYSTEM KILL SESSION '363,35';

@H_301_3@-- ALTER SYSTEM KILL SESSION '364,51';

commit;

select * from dba_roles where role like '%CONNECT%';

droprole CONNECT;

commit;

select * from dba_tablespaces where tablespace_name like 'EXAMPLE';

drop tablespace EXAMPLE including contents and datafiles cascade constraints ; @H_301_3@-- including contents 删除表空间中的内容,如果删除表空间之前表空间中有内容,而未加此参数,表空间删不掉,所以习惯性的加此参数。

@H_301_3@-- including datafiles 删除表空间中的数据文件

@H_301_3@-- cascadeconstraints 同时删除@H_301_3@ tablespace 中表的外键参照。

@H_301_3@-- 如何创建@H_301_3@dblink和视图

@H_301_3@-- http://docs.oracle.com/database/121/SQLRF/statements_5006.htm#i2061505

@H_301_3@-- 如果需要创建全局@H_301_3@ DBLink,则需要先确定用户有创建@H_301_3@ dblink 的权限:

select * from user_sys_privs where privilege like upper('%DATABASE LINK%');

@H_301_3@-- 如果没有,则需要使用@H_301_3@ sysdba 角色给用户赋权:

grant create public database link todbusername;

@H_301_3@-- 如果创建全局@H_301_3@ dblink,必须使用@H_301_3@ systm @H_301_3@ sys 用户,在@H_301_3@ database 前加@H_301_3@ public

create /* public */ database link dblink1connect to dbusername identified by dbpassword using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS=(PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521)))(CONNECT_DATA=(SERVICE_NAME = orcl)))';

@H_301_3@-- 创建@H_301_3@dblink后,就可以直接在@H_301_3@dblink上创建视图

create or replace view cptp as (select SJDH from dbusername.cptp@dblink1); drop view cptp;

@H_301_3@-- 锁表查询@H_301_3@sql

SELECT object_name,machine,s.sid,s.serial#FROM gv$locked_object l,dba_objects o,gv$session s WHERE l.object_id= o.object_id AND l.session_id = s.sid;

@H_301_3@-- 解除锁表

alter system kill session 'sid,serial#';

@H_301_3@-- 备份某个表

create table new_table as select * from old_table;

@H_301_3@-- 查看数据库是否在@H_301_3@rac环境的集群中的

showparameter cluster_database; select * from v$parameter where name = 'cluster_database';

@H_301_3@-- 列操作

@H_301_3@-- 增加修改列不需要加关键字@H_301_3@COLUMN

@H_301_3@-- 删除单列的话,一定要加@H_301_3@COLUMN删除多列的时候,不能加@H_301_3@COLUMN关键字

@H_301_3@-- 增加一列

alter table emp4 add test varchar2(10); @H_301_3@-- 修改一列

alter table emp4 modify testvarchar2(20); @H_301_3@-- 删除一列

alter table emp4 drop column test; @H_301_3@-- 增加多列

alter table emp4 add (test varchar2(10),test2 number); @H_301_3@-- 修改多列

alter table emp4 modify (testvarchar2(20),test2 varchar2(20)); @H_301_3@-- 删除多列

alter table emp4 drop (test,test2); @H_301_3@-- Windows下以管理员身份启动数据库

net start oracleserviceorcl @H_301_3@-- 后面的@H_301_3@orcl是你安装的数据库实例名

netstart oracleoradb11g_home1tnslistener @H_301_3@--非必须

@H_301_3@-- linux下以@H_301_3@sysdba用户登录,然后启动数据库

sqlplus / as sysdba startup

@H_301_3@-- sqlplus登陆方式

sqlplus / as sysdba

@H_301_3@--以操作系统权限认证的@H_301_3@oracle sys管理员登陆

sqlplus /nolog conn / as sysdba

@H_301_3@--以操作系统权限认证的@H_301_3@oracle sys管理员登陆

sqlplus sys/password@orcl as sysdba

@H_301_3@--@H_301_3@sys用户登陆必须使用@H_301_3@as sysdba

sqlplus /nolog @H_301_3@--不在@H_301_3@cmd或者@H_301_3@teminal当中暴露密码的登陆方式

conn sys/password as sysdba sqlplus @H_301_3@--不显露密码的方式登陆

Enter user-namesys Enter passwordpassword assysdba

@H_301_3@--@H_301_3@sys用户登陆的话必须要加上@H_301_3@as sysdba子句

sqlplus scott/tiger@orcl @H_301_3@--管理员用户登陆

descv$database; @H_301_3@--查询@H_301_3@v$database数据库的表结构

@H_301_3@--@H_301_3@sqlplus中执行@H_301_3@sql脚本,下面两种方式都可以

START file_name @file_name

@H_301_3@--判断表是否存在,如果存在则删除

declare num number;

begin select count(1) into num from all_tables where TABLE_NAME = 'EMP'and OWNER='SCOTT';

if num=1 then execute immediate 'drop tableEMP';

endif; end; /

@H_301_3@--创建表

CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,ENAME VARCHAR2(10),JOB VARCHAR2(9),MGR NUMBER(4),HIREDATE DATE,SAL NUMBER(7,2),COMM NUMBER(7,DEPTNO NUMBER(2));

可以将上述存储过程加载到每一个create table前面。

@H_301_3@--ORACLE 判断序列是否存在@H_301_3@,如果存在就删除

declare V_NUM number;

BEGIN @H_301_3@�C--多次删除时,每次都将@H_301_3@v_num设置成为@H_301_3@0

V_NUM := 0; @H_301_3@----判断序列@H_301_3@ seq_name_1 是否存在(区分大小写)

select count(0) into V_NUM fromuser_sequences where sequence_name = 'SEQ_BUSINESS_PROCESS_INDEX_ID';

@H_301_3@---如果存在立即删除

if V_NUM > 0 then execute immediate 'DROPSEQUENCE SEQ_BUSINESS_PROCESS_INDEX_ID';

endif; END;

@H_301_3@-- 设置@H_301_3@sqlplus模式显示总行数

showpagesize;

@H_301_3@--查看当前的@H_301_3@pagesize

setpagesize 300;

@H_301_3@-- 设置@H_301_3@sqlplus模式显示行宽度

show linesize; @H_301_3@--查看当前的@H_301_3@linesize

setlinesize 300;

@H_301_3@-- 修改安装目录@H_301_3@glogin.sql文件才能保证之前的设置永久生效

setpagesize 300; set linesize 300;

@H_301_3@-- 删除表对象select'drop table '||segment_name from dba_segments where owner='VPMUSER'and segment_type='TABLE';

@H_301_3@-- 创建表对象

select'createtable '||segment_name || ' as select * from '||segment_name ||'@DBLINK' from dba_segments where owner='VPMUSER'and segment_type='TABLE'; @H_301_3@-- 检查表是否完整导入

select segment_name from dba_segments@aaa where owner='VPMUSER'and segment_type='TABLE'and (segment_name not like 'BIN$%'and segment_name not like '%201%') minus select segment_name from dba_segments where owner='VPMUSER'and segment_type='TABLE'and segment_name not like 'BIN$%'

@H_301_3@--查询用户所有表的语句@H_301_3@1

select t.table_name,t.comments from user_tab_comments t

@H_301_3@--查询用户所有表的语句@H_301_3@2:

select r1,r2,r3,r5 from (select a.table_name r1,a.column_name r2,a.comments r3 from user_col_comments a),(select t.table_name r4,t.comments r5 from user_tab_comments t) where r4= r1

@H_301_3@-- 查找表的所有索引(包括索引名,类型,构成列):

select t.*,i.index_type from user_ind_columns t,user_indexes i wheret.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 查询的表

@H_301_3@-- 查找表的主键(包括名称,构成列):

select cu.* from user_cons_columns cu,user_constraints au wherecu.constraint_name = au.constraint_name and au.constraint_type = 'P'and au.table_name = 查询的表

@H_301_3@-- 查找表的唯一性约束(包括名称,构成列):

select column_name from user_cons_columns cu,user_constraints au wherecu.constraint_name = au.constraint_name and au.constraint_type = 'U'and au.table_name = 查询的表

@H_301_3@-- 查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):

select * from user_constraints c where c.constraint_type = 'R'and c.table_name = 查询的表

@H_301_3@-- 查询外键约束的列名:

select * from user_cons_columns cl where cl.constraint_name = 外键名称

@H_301_3@-- 查询引用表的键的列名:

select * from user_cons_columns cl where cl.constraint_name = 外键引用表的键名@H_301_3@-- 查询表的所有列及其属性

select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c wheret.table_name = c.table_nameand t.column_name = c.column_name and t.table_name = 查询的表

@H_301_3@--备份表数据

create table emp as select * from scott.emp

@H_301_3@--还原表数据

insert into emp select * from scott.emp

@H_301_3@--查看已经执行过的@H_301_3@sql这些是存在共享池中的,用户名需要大写,必须具有@H_301_3@DBA 的权限

select * from v$sqlarea t where t.PARSING_SCHEMA_NAME in ('用户名') order by t.LAST_ACTIVE_TIME desc

@H_301_3@--ORACLE11G 字符集更改(这里更改为@H_301_3@AL32UTF8

sqlplus sys as sysdba

@H_301_3@--执行下面命令,有可能造成数据库中已有数据混乱的情况,所以在进行操作前,要进行数据库的备份操作

shutdown immediate;

STARTUP MOUNT;

ALTER SESSION SET sql_TRACE=TRUE;

ALTER SYSTEM ENABLE RESTRICTED SESSION;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

ALTER DATABASE OPEN;

ALTER DATABASE character set INTERNAL_USEAL32UTF8;

ALTER SESSION SET sql_TRACE=FALSE;

shutdown immediate; startup;

@H_301_3@--察看@H_301_3@ NLS_LANG 信息:

SELECT parameter,value FROM v$nls_parametersWHERE parameter LIKE '%CHARACTERSET'; UPDATE STAFF SET MODIFY_TIME = TO_DATE('2016/04/22 00:01:00','yyyy/MM/ddhh24:mi:ss') WHERE MODIFY_TIME <TO_DATE('2016/04/2200:01:00','yyyy/MM/dd hh24:mi:ss'); UPDATE STAFF SET MODIFY_TIME = TO_TIMESTAMP('19-03-2008 02:36:00.360000','dd-MM-yyyyhh24:mi:ss.ff') WHERE STAFF_ID = '01';

猜你在找的Oracle相关文章