• oracle的系统表


    -- DBA/ALL/USER/V_$/GV_$/SESSION/INDEX开头的绝大部分都是视图
    -- DBA_TABLES意为DBA拥有的或可以访问的所有的关系表。
    -- ALL_TABLES意为某一用户拥有的或可以访问的所有的关系表。
    -- USER_TABLES意为某一用户所拥有的所有的关系表。
    -- 当某一用户本身就为数据库DBA时,DBA_TABLES与ALL_TABLES等价。
    -- DBA_TABLES >= ALL_TABLES >= USER_TABLES
    -- 需要注意的是在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_$%'; -- 针对某个实例的视图
    SELECT * FROM dba_views WHERE view_name LIKE 'GV_$%'; -- 全局视图,针对多个实例环境
    SELECT * FROM dba_views WHERE view_name LIKE 'SESSION%';
    SELECT * FROM dba_views WHERE view_name LIKE 'INDEX%';
    
    SELECT count(1) FROM dba_tables;
    SELECT count(1) FROM all_tables;
    SELECT count(1) FROM user_tables;
    -- V$/GV$开头的绝大部分都是V_$/GV_$表的别名
    SELECT * FROM dba_synonyms WHERE synonym_name LIKE 'V$%';
    SELECT * FROM dba_synonyms WHERE synonym_name LIKE 'GV$%';
    -- X$没有对应的X_$
    SELECT * FROM dba_synonyms WHERE synonym_name LIKE 'X$%';
    -- 比较常用的DBA开头的视图有
    select * from dba_users; --数据库用户信息
    select * from dba_roles; --角色信息
    select * from dba_segments; --表段信息
    select * from dba_extents; --数据区信息
    select * from dba_objects; --数据库对象信息
    select * from dba_lobs; --lob数据信息
    select * from dba_tablespaces; --数据库表空间信息
    select * from dba_data_files; --数据文件设置信息
    select * from dba_temp_files; --临时数据文件信息
    select * from dba_rollback_segs; --回滚段信息
    select * from dba_ts_quotas; --用户表空间配额信息
    select * from dba_free_space; --数据库空闲空间信息
    select * from dba_profiles; --数据库用户资源限制信息
    select * from dba_sys_privs; --用户的系统权限信息
    select * from dba_tab_privs; --用户具有的对象权限信息
    select * from dba_col_privs; --用户具有的列对象权限信息
    select * from dba_role_privs; --用户具有的角色信息
    select * from dba_audit_trail; --审计跟踪记录信息
    select * from dba_stmt_audit_opts; --审计设置信息
    select * from dba_audit_object; --对象审计结果信息
    select * from dba_audit_session; --会话审计结果信息
    select * from dba_indexes; --用户模式的索引信息
    -- 比较常用的ALL开头的视图有
    select * from all_users; --数据库所有用户的信息
    select * from all_objects; --数据库所有的对象的信息
    select * from all_def_audit_opts; --所有默认的审计设置信息
    select * from all_tables; --所有的表对象信息
    select * from all_indexes; --所有的数据库对象索引的信息
    select * from all_tab_comments; --查询所有用户的表,视图等
    select * from all_col_comments; --查询所有用户的表的列名和注释.
    select * from all_tab_columns; --查询所有用户的表的列名等信息(详细但是没有备注)
    -- 比较常用的user开头的视图有
    select * from user_objects; --用户对象信息
    select * from user_source; --数据库用户的所有资源对象信息
    select * from user_segments; --用户的表段信息
    select * from user_tables; --用户的表对象信息
    select * from user_tab_columns; --用户的表列信息
    select * from user_constraints; --用户的对象约束信息
    select * from user_sys_privs; --当前用户的系统权限信息
    select * from user_tab_privs; --当前用户的对象权限信息
    select * from user_col_privs; --当前用户的表列权限信息
    select * from user_col_comments; -- 查询本用户的表的列名和注释
    select * from user_role_privs; --当前用户的角色权限信息
    select * from user_indexes; --用户的索引信息
    select * from user_ind_columns; --用户的索引对应的表列信息
    select * from user_cons_columns; --用户的约束对应的表列信息
    select * from user_clusters; --用户的所有簇信息
    select * from user_clu_columns; --用户的簇所包含的内容信息
    select * from user_cluster_hash_expressions; --散列簇的信息
    -- 比较常用的V$开头的别名有
    select * from v$database; --数据库信息
    select * from v$datafile; --数据文件信息
    select * from v$controlfile; --控制文件信息
    select * from v$logfile; --重做日志信息
    select * from v$instance; --数据库实例信息
    select * from v$log; --日志组信息
    select * from v$loghist; --日志历史信息
    select * from v$sga; --数据库SGA信息
    select * from v$parameter; --初始化参数信息
    select * from v$process; --数据库服务器进程信息
    select * from v$bgprocess; --数据库后台进程信息
    select * from v$controlfile_record_section; --控制文件记载的各部分信息
    select * from v$thread; --线程信息
    select * from v$datafile_header; --数据文件头所记载的信息
    select * from v$archived_log; --归档日志信息
    select * from v$archive_dest; --归档日志的设置信息
    select * from v$logmnr_contents; --归档日志分析的DML DDL结果信息
    select * from v$logmnr_dictionary; --日志分析的字典文件信息
    select * from v$logmnr_logs; --日志分析的日志列表信息
    select * from v$tablespace; --表空间信息
    select * from v$tempfile; --临时文件信息
    select * from v$filestat; --数据文件的I/O统计信息
    select * from v$undostat; --Undo数据信息
    select * from v$rollname; --在线回滚段信息
    select * from v$session; --会话信息
    select * from v$transaction; --事务信息
    select * from v$rollstat; --回滚段统计信息
    select * from v$pwfile_users; --特权用户信息
    select * from v$sqlarea; --当前查询过的sql语句访问过的资源及相关的信息
    select * from v$sql; --与v$sqlarea基本相同的相关信息
    select * from v$sysstat; --数据库系统状态信息
    -- 比较常用的SESSION开头的视图有
    select * from session_roles; --会话的角色信息
    select * from session_privs; --会话的权限信息
    
    -- 比较常用的INDEX开头的视图有
    select * from index_stats; --索引的设置和存储信息
    
    -- 伪表,参考oracle 中 dual 详解:http://blog.csdn.net/ozhouhui/article/details/7935196
    select * from dual; --系统伪列表信息
    select sysdate from dual; --可将Sysdate视为一个其结果为当前日期和时间的函数,在任何可以使用Oracle函数的地方都可以使用Sysdate。也可以将它视为每个表的一个隐藏的列或伪列。
    select current_date from dual; --报告会话的时区中的系统日期。注:可以设置自己的时区,以区别于数据库的时区。
    select SYSTIMESTAMP from dual; --报告TIMESTAMP数据类型格式的系统日期。
    -- 系统权限
    -- GRANTEE 接受该权限的用户名 
    -- OWNER 对象的拥有者 
    -- 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';
    
    -- 角色权限
    -- 查看某个用户有哪些角色
    select * from dba_role_privs where grantee='SYS';
    -- 查看某个角色被赋予了哪些用户
    SELECT * FROM dba_role_privs WHERE granted_role = 'DBA';
    
    -- 对象权限
    SELECT * FROM dba_tab_privs;
    
    -- 授予某个用户某些角色
    GRANT connect,resource TO 'USER';
    GRANT dba to 'USER'; --给普通用户授予dba角色时,要重新连接才能生效
    REVOKE dba to 'USER';
    -- 直接授予某个用户某些权限
    GRANT CREATE VIEW TO 'USER';
    
    -- 查看某个系统用户是否有SYSDBA或者SYSOPER权限
    -- oracle:DBA,SYSDBA,SYSOPER三者的区别:http://blog.chinaunix.net/uid-22457844-id-3045741.html
    select * from V$PWFILE_USERS;
    -- 锁定、解锁用户
    SELECT * FROM dba_users WHERE username = 'SCOTT';
    ALTER USER SCOTT account LOCK; --锁定用户
    ALTER USER SCOTT account UNLOCK; --解锁用户
    COMMIT;
    
    -- oracle10g 修改用户密码: http://blog.163.com/benbenfafa_88/blog/static/64930162200972594612972/
    -- User Default Password Check in Oracle 11g: http://www.dbform.com/html/2009/673.html
    SELECT password FROM dba_users WHERE username = 'SCOTT';
    alter user SCOTT identified by new_password; --修改用户密码
    
    
    -- SERVICE_NAMES: http://docs.oracle.com/database/121/REFRN/GUID-AC956707-D568-4F8A-BF2E-99BA41E0A64F.htm#REFRN10194
    SELECT * FROM global_name; -- 查看oracle的全局数据库名
    SELECT * FROM v$database; -- 查看数据库名 show parameter db_name;
    
    -- 数据库实例名对应着SID
    -- SID: http://docs.oracle.com/database/121/LADBI/glossary.htm#LADBI8021
    -- linux下在配置oracle环境变量的情况可以使用 echo $ORACLE_SID,如果没有可以使用ps -ef |grep oracle 来查询,结果中的xxxx就是对应的SID。
    -- oracle    2548     1  0 Aug17 ?        00:00:00 ora_pmon_xxxx
    -- 在windows环境下,oracle是以后台服务的方式被管理的,所以看"控制面板->管理工具->服务 里面的名称:"OracleServiceORCL",则ORCL就是sid;
    SELECT * FROM v$instance; --查看数据库实例名 show parameter instance_name;
    select instance from v$thread;
    
    -- show parameter是oracle的命令,不是标准SQL语句
    -- 可以在sqlplus或者pl/sql dev的命令窗口执行
    -- show parameter aaaa;等价于SELECT * FROM v$parameter WHERE name like '%aaaa%';
    SELECT * FROM v$parameter WHERE name like '%name%'; --等价于show parameter name;
    select * from v$parameter where name like '%db_domain%'; --查询数据库域名
    
    
    select username from all_users where username like '%SCOTT%';
    drop user SCOTT cascade;
    commit;
    
    -- ERROR at line 1:
    -- ORA-01940: cannot drop a user that is currently connected
    
    select 'ALTER SYSTEM KILL SESSION '||''''||SID||','||SERIAL#||''''||';' as KILLER from v$session where username='SCOTT';
    -- KILLER
    -- ALTER SYSTEM KILL SESSION '363,35';
    -- ALTER SYSTEM KILL SESSION '364,51';
    commit;
    
    select * from dba_roles where role like '%CONNECT%';
    drop role CONNECT;
    commit;
    
    select * from dba_tablespaces where tablespace_name like 'EXAMPLE';
    drop tablespace EXAMPLE including contents and datafiles cascade constraints ;
    -- including contents 删除表空间中的内容,如果删除表空间之前表空间中有内容,而未加此参数,表空间删不掉,所以习惯性的加此参数。
    -- including datafiles 删除表空间中的数据文件。
    -- cascade constraints 同时删除 tablespace 中表的外键参照。
    -- 如何创建dblink和视图
    -- http://docs.oracle.com/database/121/SQLRF/statements_5006.htm#i2061505
    -- 如果需要创建全局 DBLink,则需要先确定用户有创建 dblink 的权限:
    select * from user_sys_privs where privilege like upper('%DATABASE LINK%');
    
    -- 如果没有,则需要使用 sysdba 角色给用户赋权:
    grant create public database link to dbusername;
    
    -- 如果创建全局 dblink,必须使用 systm 或 sys 用户,在 database 前加 public。
    create /* public */ database link dblink1
    connect to dbusername identified by dbpassword
    using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))';
    
    -- 创建dblink后,就可以直接在dblink上创建视图
    create or replace view cptp as (select SJDH from dbusername.cptp@dblink1); drop view cptp;
    
    
    -- 锁表查询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;
    
    -- 解除锁表
    alter system kill session 'sid, serial#';
    
    
    -- 查看数据库是否在rac环境的集群中的
    show parameter cluster_database;
    select * from v$parameter where name = 'cluster_database';
    -- Windows下以管理员身份启动数据库
    net start oracleserviceorcl -- 后面的orcl是你安装的数据库实例名
    net start oracleoradb11g_home1tnslistener --非必须
    
    -- linux下以sysdba用户登录,然后启动数据库
    sqlplus / as sysdba
    startup
    
    -- sqlplus登陆方式
    sqlplus / as sysdba --以操作系统权限认证的oracle sys管理员登陆
    
    sqlplus /nolog
    conn / as sysdba --以操作系统权限认证的oracle sys管理员登陆
    
    
    sqlplus sys/password@orcl as sysdba --以sys用户登陆必须使用as sysdba
    
    sqlplus /nolog --不在cmd或者teminal当中暴露密码的登陆方式
    conn sys/password as sysdba
    
    
    sqlplus --不显露密码的方式登陆
    Enter user-name:sys
    Enter password:password as sysdba --以sys用户登陆的话 必须要加上as sysdba子句
    
    sqlplus scott/tiger@orcl --非管理员用户登陆
    
    
    desc v$database; --查询v$database数据库的表结构
  • 相关阅读:
    CF1137FMatches Are Not a Child‘s Play【LCT】
    P4491[HAOI2018]染色【多项式,二项式反演】
    P3170[CQOI2015]标识设计【插头dp】
    log4j 使用教程说明
    log4j中Logger.getLogger()加载一个类提示错误
    编程基础 0x00008 的0x代表什么?
    编程基础 快速的进行 2进制,10进制,16进制 的 相互转换
    Java 基础 equals,hashcode和==的区别
    位运算 左移右移运算符 >>, <<, >>>
    Java 虚拟机 2.2 运行时数据区 Runtime Data Area
  • 原文地址:https://www.cnblogs.com/yrjns/p/10870927.html
Copyright © 2020-2023  润新知