All_tables, all_tab_columns
uj5u.com熱心網友回復:
給你補充一下:-- 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; --查詢所有用戶的表的列名等資訊(詳細但是沒有備注)
-- 比較常用的ALL開頭的視圖有
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#';
-- 備份某個表
create table new_table as select * from old_table;
-- 查看資料庫是否在rac環境的集群中的
show parameter cluster_database;
select * from v$parameter where name = 'cluster_database';
-- 列操作
-- 增加和修改列不需要加關鍵字COLUMN
-- 洗掉單列的話,一定要加COLUMN,洗掉多列的時候,不能加COLUMN關鍵字
-- 增加一列
alter table emp4 add test varchar2(10);
-- 修改一列
alter table emp4 modify test varchar2(20);
-- 洗掉一列
alter table emp4 drop column test;
-- 增加多列
alter table emp4 add (test varchar2(10),test2 number);
-- 修改多列
alter table emp4 modify (test varchar2(20),test2 varchar2(20));
-- 洗掉多列
alter table emp4 drop (test,test2);
-- 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資料庫的表結構
--在sqlplus中執行sql腳本,下面兩種方式都可以
START file_name
@file_name
--判斷表是否存在,如果存在則洗掉
declare
num number;
begin
se
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/34709.html
標籤:開發
上一篇:pl/sql導表
