Linux 操作 oracle 數據庫


1、Oracle監聽啟動命令:lsnrctl start

2.   sqlplus 登錄數據庫

 

 

 

 

3.OS版本及Oracle版本

select banner from v$version;

4.查詢該數據庫的實例名

select name from v$database;

 

5.查詢該用戶下所有的表

select * from tab;

 

6.查詢當前用戶的缺省表空間

select username,default_tablespace from user_users;

 

7.查詢當前用戶的角色

select * from user_role_privs;

 

8.可以看到表內容

SQL> select * from dba_directories;

 

//用戶權限不夠,需要給enfo_ods 導出目錄的讀寫權限

SQL> conn sys/Oracle001@enfodw as sysdba;

Connected.

//由於目錄權限不清楚,下面就用dba的身份新建一個目錄

SQL> create directory wensm_dir as '/home/oracle/wensm';

Directory created.

SQL>  grant write,read on directory  wensm_dir  to sjcj;

Grant succeeded.

 

SQL> exit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

9.查詢所有表空間

select file_name,tablespace_name,bytes from dba_data_files;

 

查看表空間的名稱及大小:

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;

 

 

查看表空間物理文件的名稱及大小: 

SELECT TABLESPACE_NAME,FILE_ID,FILE_NAME,ROUND(BYTES / (1024 * 1024), 0) TOTAL_SPACE
FROM DBA_DATA_FILES
ORDER BY TABLESPACE_NAME;

 

查看所有表空間對應的數據文件名:

SQL>SELECT DISTINCT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM DBA_DATA_FILES;

 

查看表空間的使用情況:
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;

COLUMN TABLESPACE_NAME FORMAT A18; 
COLUMN SUM_M FORMAT A12; 
COLUMN USED_M FORMAT A12; 
COLUMN FREE_M FORMAT A12; 
COLUMN PTO_M FORMAT 9.99; 

SELECT S.TABLESPACE_NAME,CEIL(SUM(S.BYTES/1024/1024))||'M' SUM_M,CEIL(SUM(S.USEDSPACE/1024/1024))||'M' USED_M,CEIL(SUM(S.FREESPACE/1024/1024))||'M' FREE_M, SUM(S.USEDSPACE)/SUM(S.BYTES) PTUSED FROM (SELECT B.FILE_ID,B.TABLESPACE_NAME,B.BYTES, (B.BYTES-SUM(NVL(A.BYTES,0))) USEDSPACE, SUM(NVL(A.BYTES,0)) FREESPACE,(SUM(NVL(A.BYTES,0))/(B.BYTES)) * 100 FREEPERCENTRATIO FROM SYS.DBA_FREE_SPACE A,SYS.DBA_DATA_FILES B WHERE A.FILE_ID(+)=B.FILE_ID GROUP BY B.FILE_ID,B.TABLESPACE_NAME,B.BYTES ORDER BY B.TABLESPACE_NAME) S GROUP BY S.TABLESPACE_NAME ORDER BY SUM(S.FREESPACE)/SUM(S.BYTES) DESC;

 

查看數據文件的hwm(可以resize的最小空間)和文件頭大小:
SELECT V1.FILE_NAME,V1.FILE_ID,NUM1 TOTLE_SPACE,NUM3 FREE_SPACE,
NUM1-NUM3 "USED_SPACE(HWM)",NVL(NUM2,0) DATA_SPACE,NUM1-NUM3-NVL(NUM2,0) FILE_HEAD 
FROM 
(SELECT FILE_NAME,FILE_ID,SUM(BYTES) NUM1 FROM DBA_DATA_FILES GROUP BY FILE_NAME,FILE_ID) V1,
(SELECT FILE_ID,SUM(BYTES) NUM2 FROM DBA_EXTENTS GROUP BY FILE_ID) V2,
(SELECT FILE_ID,SUM(BYTES) NUM3 FROM DBA_FREE_SPACE GROUP BY FILE_ID) V3
WHERE V1.FILE_ID=V2.FILE_ID(+) AND V1.FILE_ID=V3.FILE_ID(+);
數據文件大小及頭大小:
SELECT V1.FILE_NAME,V1.FILE_ID, 
NUM1 TOTLE_SPACE, 
NUM3 FREE_SPACE, 
NUM1-NUM3 USED_SPACE, 
NVL(NUM2,0) DATA_SPACE, 
NUM1-NUM3-NVL(NUM2,0) FILE_HEAD 
FROM 
(SELECT FILE_NAME,FILE_ID,SUM(BYTES) NUM1 FROM DBA_DATA_FILES GROUP BY FILE_NAME,FILE_ID) V1, 
(SELECT FILE_ID,SUM(BYTES) NUM2 FROM DBA_EXTENTS GROUP BY FILE_ID) V2, 
(SELECT FILE_ID,SUM(BYTES) NUM3 FROM DBA_FREE_SPACE GROUP BY FILE_ID) V3 
WHERE V1.FILE_ID=V2.FILE_ID(+) 
AND V1.FILE_ID=V3.FILE_ID(+);

(運行以上查詢,我們可以如下信息: 
Totle_pace:該數據文件的總大小,字節為單位 
Free_space:該數據文件的剩於大小,字節為單位 
Used_space:該數據文件的已用空間,字節為單位 
Data_space:該數據文件中段數據占用空間,也就是數據空間,字節為單位 
File_Head:該數據文件頭部占用空間,字節為單位)

 

 

10. 查看日志文件:
SQL> COL MEMBER FORMAT A50
SQL>SELECT * FROM V$LOGFILE;

 11.如何查看當前數據庫的字符集
SQL>SELECT USERENV('LANGUAGE') FROM DUAL; 
SQL>SELECT USERENV('LANG') FROM DUAL;

 12.如何查看客戶端登陸的IP地址:
SQL>SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') FROM DUAL;

 如何在生產數據庫中創建一個追蹤客戶端IP地址的觸發器:
CREATE OR REPLACE TRIGGER ON_LOGON_TRIGGER AFTER LOGON ON DATABASE
BEGIN
DBMS_APPLICATION_INFO.SET_CLIENT_INFO(SYS_CONTEXT('USERENV', 'IP_ADDRESS'));
END;

REM 記錄登陸信息的觸發器
CREATE OR REPLACE TRIGGER LOGON_HISTORY 
AFTER LOGON ON DATABASE --WHEN (USER='WACOS') --ONLY FOR USER 'WACOS' 
BEGIN 
INSERT INTO SESSION_HISTORY SELECT USERNAME,SID,SERIAL#,AUDSID,OSUSER,ACTION,SYSDATE,NULL,SYS_CONTEXT('USERENV','IP_ADDRESS'),TERMINAL,MACHINE,PROGRAM FROM V$SESSION WHERE AUDSID = USERENV('SESSIONID'); 
END;

13.查詢當前日期: 
SQL> SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD,HH24:MI:SS') FROM DUAL;

 

14.修改用戶密碼

查看所有用戶名、密碼

select username,password from dba_users;

修改用戶密碼

 

//修改用戶口令 格式 alter user 用戶名 identified by 新密碼;

 

SQL> alter user system identified by manager;

 

 

 

若切換另外一個用戶就要斷掉當前的登錄
discon 回車鍵
若再連接其他用戶
conn 回車鍵再錄入其他登錄用戶信息即可

 

select * from dba_users; 查看數據庫里面所有用戶,前提是你是有dba權限的帳號,如sys,system
select * from all_users;  查看你能管理的所有用戶!
select * from user_users; 查看當前用戶信息 !

 

-- 查詢你 當前用戶下,有哪些表
SELECT * FROM user_tables

-- 查詢你 當前用戶下, 可以訪問哪些表 [也就是訪問自己 和 其他用戶的]
SELECT * FROM all_tables

-- 查詢當前數據庫所有的表, 需要你有 DBA 的權限
SELECT * FROM dba_tables

使用例子:

1、創建新用戶:jkw

--查詢數據庫表空間
select distinct TABLESPACE_NAME from tabs;

create tablespace SJCJ_DAT DATAFILE 'D:\app\oukf\virtual\oradata\orcl\SJCJ_DAT.DBF' SIZE 2048M AUTOEXTEND ON NEXT 5M MAXSIZE 3072M;

--修改表空間大小

ALTER TABLESPACE SYSTEM ADD DATAFILE '/u01/app/oracle/oradata/test/system02.dbf' SIZE 20480M AUTOEXTEND OFF;

--查看你能管理的所有用戶
select * from all_users;

--刪除用戶
--drop user JKW cascade;


/*第3步:創建用戶並指定表空間 */
create user jkw identified by jkw123
default tablespace RMDB
--temporary tablespace rmdb_temp;

CREATE USER SJCJ IDENTIFIED BY sjcj DEFAULT TABLESPACE SJCJ_DAT;

create user hc_notify identified by hc_password default tablespace NOTIFYDB temporary tablespace NOTIFYDB_TEMP;

/*第4步:給用戶授予權限 */

grant connect,resource,dba to jkw;

grant dba to hc_notify; grant connect,resource to hc_notify; grant select any table to hc_notify; grant delete any table to hc_notify; grant update any table to hc_notify; grant insert any table to hc_notify;


2、導入數據:

imp jkw/jkw123@112.230.253.54/rmdb file=C:\Users\Administrator\Desktop\mhc.dmp full=y

 

 

--查看臨時表空間文件 select name from v$tempfile; --查看用戶和表空間的關系 select USERNAME,TEMPORARY_TABLESPACE from DBA_USERS; --如果有用戶的默認臨時表空間是NOTIFYDB_TEMP的話,建議進行更改 alter user xxx temporary tablespace tempdefault; ---設置tempdefault為默認臨時表空間 alter database default temporary tablespace tempdefault; --刪除表空間NOTIFYDB_TEMP及其包含數據對象以及數據文件 drop tablespace NOTIFYDB_TEMP including contents and datafiles; 

 

 

--查看表空間文件 select name from v$datafile; --停止表空間的在線使用 alter tablespace 表空間名稱 offline; --刪除表空間NOTIFYDB_TEMP及其包含數據對象以及數據文件 drop tablespace NOTIFYDB_TEMP including contents and datafiles; 

 

--查看所有的用戶 select * from all_users; --查看當前用戶信息 select * from user_users; --查看當前用戶的角色 select * from user_role_privs; --查看當前用戶的權限 select * from user_sys_privs; --查看當前用戶的表可操作權限 select * from user_tab_privs; --查看某一個表的約束,注意表名要 大寫 select * from user_constraints where table_name='TBL_XXX'; --查看某一個表的所有索引,注意表名要 大寫 select index_name,index_type,status,blevel from user_indexes where table_name = 'TBL_XXX'; --查看索引的構成,注意表名要 大寫 select table_name,index_name,column_name, column_position FROM user_ind_columns WHERE table_name='TBL_XXX'; --系統數據字典 DBA_TABLESPACES 中記錄了關於表空間的詳細信息 select * from sys.dba_tablespaces; --查看用戶序列 select * from user_sequences; --查看數據庫序列 select * from dba_sequences;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM