【ORACLE】常用命令整理,專注於DOS命令的程序猿。(筆記)

1、登錄

-- 不用密碼登錄
sqlplus/nolog
-- 使用賬號密碼登錄,as sysdba 使用管理員權限登錄
sqlplus 【用戶名】/【密碼】 as sysdba

2、查看基本信息

2.0 查詢表中數據

-- 查詢前十條信息
 1) select * from tbname where rownum < 11;
 2) select * from (select * from tbname order by id desc ) where rownum<=10;

2.1 查看當前用戶

-- 查看自己的是哪個用戶
SHOW USER;
-- 查詢所有用戶
SELECT * FROM user_users;
-- 查看當前用戶詳細信息
select * from user_users;

2.2 查看角色

2.2.1 查看所有角色

-- 查看所有角色
SELECT * FROM dba_roles;

2.2.2 查看當前用戶所擁有的角色

SELECT * FROM user_role_prives

2.2.3 查詢當前會話所擁有的角色(一個會話以一個命令窗口爲準)

SELECT * FROM session_roles;

2.3 查看錶空間名稱及大小

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; 

2.4 查看錶結構

DESC 表名
DESC tableName;

2.5查看錶空間物理文件的名稱及大小

SELECT tablespace_name, file_id, file_name, round(bytes / (1024 * 1024), 0) total_space 
FROM dba_data_files 
ORDER BY tablespace_name; 

2.6 查詢某個用戶擁有的權限(只有dba能查)

2.7 查看當前數據庫的一些詳細參數(比如查詢字符編碼)

-- 查詢數據庫詳細信息
SELECT * FROM NLS_DATABASE_PARAMETERS; 
-- 查詢字符編碼
SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET'
-- 查詢數據庫版本及其他信息
SELECT * FROM v$version
SELECT * FROM PRODUCT_COMPONENT_VERSION;

2.8 通過rowid查詢某一行所在的數據文件

SELECT file_name, file_id 
FROM dba_data_files 
WHERE file_id IN (
	SELECT DISTINCT dbms_rowid.rowid_relative_fno(rowid) 
	FROM sofa.demovo
);

2.9 查看回滾段名稱及大小

SELECT segment_name, tablespace_name, r.status, (initial_extent / 1024) initialextent, 
(next_extent / 1024) nextextent, max_extents, v.curext curextent 
FROM dba_rollback_segs r, v$rollstat v 
WHERE r.segment_id = v.usn(+) 
ORDER BY segment_name; 

2.10 查看錶空間的使用情況

SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name 
FROM dba_free_space 
GROUP BY tablespace_name; 

SELECT a.tablespace_name, a.bytes total, b.bytes used, c.bytes free, 
	(b.bytes * 100) / a.bytes "% USED ", (c.bytes * 100) / a.bytes "% FREE " 
FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c 
WHERE a.tablespace_name = b.tablespace_name 
	AND a.tablespace_name = c.tablespace_name; 

2.11 查看數據庫的創建日期和歸檔方式

SELECT created, log_mode, log_mode FROM v$database; 
--1G=1024MB 
--1M=1024KB 
--1K=1024Bytes 
--1M=11048576Bytes 
--1G=1024*11048576Bytes=11313741824Bytes 
SELECT a.tablespace_name "表空間名", 
total "表空間大小", 
free "表空間剩餘大小", 
(total - free) "表空間使用大小", 
total / (1024 * 1024 * 1024) "表空間大小(G)", 
free / (1024 * 1024 * 1024) "表空間剩餘大小(G)", 
(total - free) / (1024 * 1024 * 1024) "表空間使用大小(G)", 
round((total - free) / total, 4) * 100 "使用率 %" 
FROM (
		SELECT tablespace_name, SUM(bytes) free 
		FROM dba_free_space 
		GROUP BY tablespace_name
	) a, (
		SELECT tablespace_name, SUM(bytes) total 
		FROM dba_data_files 
		GROUP BY tablespace_name
	) b 
WHERE a.tablespace_name = b.tablespace_name 

3、切換用戶

conn useName/password 
conn useName/password as sysdba

4、創建表空間、創建用戶並授權

       想知道怎麼創建表空間、創建用戶並授權,嘗試點一下這裏

5、修改信息

5.0 修改一條信息

語法:UPDATE 表名 SET 列名1=值,列名2=值…… WHERE 條件
UPDATE INFOS SET CLASSNO='1002',STUADDRESS='山東萊蕪' WHERE STUNAME='阮小二';

5.1 修改表空間狀態

表空間的狀態屬性主要有在線(online),離線(offline),只讀(read only)和讀寫(read write)四種,
其中只讀與讀寫狀態屬於在線狀態的特殊情況
-- 當表空間的狀態爲online時,才允許訪問該表空間中的數據。
ALTER TABLESPACE tablespace_name online;
當表空間的狀態爲offline時,不允許訪問該表空間中的數據。此時向表空間中創建表或者讀取表空間的表數據操作
都將無法進行,這時可以對錶空間進行脫機備份,也可以對應用程序進行升級和維護等
--parameter表示將表空間切換爲offline狀態時可以使用的參數。
alter tablespace tablespace_name offline parameter; 
--其中parameter參數主要有:
-- normal
-- temporary
-- immediate
-- for recover
	當表空間的狀態爲read only時,雖然可以訪問表空間的數據,但範文僅僅僅限於閱讀,而不能進行任何的
更新和刪除操作,目的是爲了保證表空間的數據安全。
    如果表空間不是read only狀態的,可以使用ater tablespace語句將其狀態修改爲read only
不過,將表空間的狀態修改爲read only之前,需要注意如下的事項:
1.表空間必須處於online狀態
2.表空間不能包含任何事務的回退段
3.表空間不能正處於在線的數據庫備份期間
alter tablespace tablespace_name read only;
當表空間的狀態爲read write時,可以對錶空間進行正常訪問,包括對錶空間中的數據進行查詢,更新和操作。
如果表空間不是read write狀態的,可以使用alter tablespace語句將其狀態修改爲read write
修改表空間的狀態爲read write,也需要保證表空間處於online狀態。
alter tablespace tablespace_name read write;

5.2 修改表狀態

Oracle 11g推出了一個新特性,用戶可以將表置於READ_ONLY(只讀)狀態,處於該狀態下的表不能執行DML和DDL操作。
在Oracle 11g之前爲了使某張表處於READ_ONLY狀態,只能通過將整個表空間或者數據庫置於READ_ONLY狀態。
ALTER TABLE TABLENAME READ ONLY; 

5.3 修改表中列名和列類型

6、刪除信息

語法: DELETE FROM 表名 WHERE 條件
DELETE命令是DML命令,刪除後的數據可以通過日誌文件恢復

7、導入、導出

7.1 導出

exp 用戶名/密碼@網絡服務名 file=xxx.dmp tables=(表名);

7.1.1 實例數據完全導出

導出指定實例下的所有數據

--  將數據庫TEST完全導出,用戶名system 密碼manager 導出到D:\test.dmp中
exp username/password@127.0.0.1/orcl file=d:\test.dmp full=y

7.1.2、用戶數據導出

導出指定實例下指定用戶的數據,如下爲導出用戶myoracle1和用戶myoracle2的數據

-- 將數據庫中myoracle1用戶與myoracle2用戶的表導出
exp username/password@127.0.0.1/orcl file=d:\test.dmp owner=(myoracle1,myoracle2);

7.1.3、具體表數據導出

導出指定實例下指定用戶下的具體表的數據,如下即爲導出實例orcl,用戶username下的t_user表和t_role表的數據

-- 將數據庫中的表t_user、t_role導出
exp username/password@127.0.0.1/orcl file=d:\data\test.dmp tables=(t_user,t_role)

7.2 導入

imp 用戶名/密碼@網絡服務名 file=xxx.dmp full=y;
-- 將D:\daochu.dmp 中的數據導入 TEST數據庫中。
imp username/password@127.0.0.1/orcl file=d:\test.dmp full=y;
-- 將d:\daochu.dmp中的表table1 導入
imp username/password@127.0.0.1/orcl file=d:\test.dmp tables=(table1)

附錄:

8、導入數據庫步驟:

第一步:創建表空間

create tablespace farmdoab datafile 'D:\dzzwpt.dbf' size 100M autoextend on next 50m;

第二步:創建目錄

create or replace directory acs_dir as 'D:\DMP';

    PS:把要導入的DMP文件放入目錄下。

第三步:創建用戶,並指定默認的表空間

create user cxdb identified by root default tablespace farmdoab;

--》》(刪除用戶:drop user iteye cascade;)

第四步:授權

4.1:授權dba權限:grant connect, dba to cxdb;

4.2:授權用戶cxdb讀寫目錄文件: grant read, write on directory dp_dir to cxdb;

第五步:導入DMP文件

impdp acs/acs@ORCL directory=acs_dir dumpfile=PAACS.dmp  full=y;
    PS:lodfile可以不加,不加系統自動創建。
expdp acs/acs@orcl 
dumpfile=paacs.dmp 
logfile=full.log 
directory=data_pump_dir 
tablespaces=ACS,ACS_IDX;

9、Oracle常用數據字典

9.1、Oracle數據字典的名稱由前綴和後綴組成,使用_連接,含義說明如下:

dba_:包含數據庫實例的所有對象信息
v$_:當前實例的動態視圖,包含系統管理和系統優化等所使用的視圖
user_:記錄用戶的對象信息
gv_:分佈式環境下所有實例的動態視圖,包括系統管理和系統優化使用的視圖
all_:記錄用戶的對象信息機被授權訪問的對象信息  

9.2、基本數組字典

描述邏輯存儲結構和物理存儲結構的數據表,還包括描述其他數據對象信息的表:

數據字典名稱 說明
dba_tablespaces 關於表空間的信息
dba_ts_quotas 所有用戶表空間限額
dba_free_space 所有表空間中的自由分區
dba_segments 描述數據庫中所有段的存儲空間
dba_extents 數據庫中所有分區的信息
dba_tables 數據庫中所有數據表的描述
dba_tab_columns 所有表、視圖以及簇的列
dba_views 數據庫中所有視圖的信息
dba_synonyms 關於同義詞的信息
dba_sequences 所有用戶序列信息
dba_constraints 所有用戶表的約束信息
dba_indexs 數據表中所有索引的描述
dba_ind_columns 所有表及簇上壓縮索引的列
dba_triggers 所有用戶的觸發器信息
dba_source 所有用戶存儲過程信息
dba_data_files 查詢關於數據庫文件的信息
dba_tab_grants/privs 查詢關於對象授權的信息
dba_objects 數據庫所有對象
dba_users 關於數據庫中所有用戶的信息

9.3、常用動態性能視圖

提供了關於內存和磁盤的運行情況,用戶只能進行只讀而不能修改它們
數據字典名稱 說明
v$database 描述關於數據庫的相關信息
v$datafile 數據庫使用的數據文件信息
v$log 從控制文件中提取有關重做日誌組的信息
v$logfile 有關實例重置日誌組文件名及其位置的信息
v$archived_log 記錄歸檔日誌文件的基本信息
v$archived_dest 記錄歸檔日誌文件的路徑信息
v$controlfile 描述控制文件的相關信息
v$instance 記錄實例的基本信息
v$system_parameter 顯示實例當前有效的參數信息
v$sga 顯示實例的SGA區大小
v$sgastat 統計SGA使用情況的信息
v$parameter 記錄初始化參數文件中所有項的值
v$lock 通過訪問數據庫會話,設置對象鎖的所有信息
v$session 有個會話的信息
v$sql 記錄SQL語句的詳細信息
v$sqltext 記錄SQL語句的語句信息
v$bgprocess 顯示後臺進程信息
v$process 當前進程的信息
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章