ORACLE表空間概念: 去過大型超市吧,一排排的貨架很多,看著很雜亂,但是也會分出生鮮區、食品區、日常用品區什么的, Oracle表空間就是這樣的邏輯概念,表空間只是包含一些堆在一起的表的集合,
相當于一個虛擬的劃定范圍的界限,方便管理的,
1、創建表空間:
格式: create tablespace 表空間名 datafile '資料檔案名' size 表空間大小 栗子:create tablespace data_test datafile 'd:\oracle\oradata\test\data_1.dbf' size 2000M; 解釋: 表空間名:自己定義,如果是遷庫的話,需與之前的表空間命名一樣 資料檔案名:這個是生成存盤資料的dbf檔案在服務器存盤的全路徑,包含檔案名稱,這個隨意命名 表空間大小:2000M 表是 2000兆
2、建好tablespace, 就可以建用戶了
格式: create user 用戶名 identified by 密碼 default tablespace 表空間表; 栗子:create user study identified by study default tablespace data_test;
4. 授權給新用戶
grant connect,resource to study; --表示把 connect,resource權限授予study用戶 grant dba to study; --表示把 dba權限授予給 study 解釋:其中connect是賦予連接資料庫的權限,resource是賦予用戶只可以創建物體但是沒有創建資料結構的權限,dba是賦予用戶所有權限,這個地方如果不賦dba權限,會導致某些操作權限級別不夠,報錯;
5. 創建資料表
在上面,我們已建好了用戶 study 我們現在進入該用戶 sqlplusw study/study@test 然后就可以在用戶study中創建資料表了 這里就不再列舉如何創建表資料的sql了,網上一搜一大堆,因為我是遷庫,直接匯入在之前資料虧服務器匯出的dmp檔案即可
6. 匯入dmp檔案
在cmd黑視窗下執行陳述句即可
格式:imp 用戶名/密碼@實體名 file=dmp檔案路徑 full=y; 栗子:imp study/study@orcl file="c:/data/temp.dmp" full=y; 可能會出現的錯誤:匯入的dmp檔案太大,資料過多,資料庫初始化2000M不夠用,原因是因為之前沒有賦予自動擴充的功能; 查詢當前資料庫中表空間SEC_D是否為自動擴展: sec@orcl> select tablespace_name,file_name,autoextensible from dba_data_files where tablespace_name = 'data_test'; TABLESPACE_NAME FILE_NAME AUT ----------------- ----------------------------------------- --- DATA_TEST /u01/app/oracle/oradata/orcl/data_1.dbf NO 你會發現:NO,未開啟自動擴充 sec@orcl> alter database datafile '/u01/app/oracle/oradata/orcl/data_1.dbf' autoextend on; Database altered. 確認是否已經修改成功 sec@orcl> select tablespace_name,file_name,autoextensible from dba_data_files where tablespace_name = 'data_test'; TABLESPACE_NAME FILE_NAME AUT ----------------- ----------------------------------------- --- data_test /u01/app/oracle/oradata/orcl/data_1.dbf YES
7. 后悔藥(洗掉表空間,清除創建用戶,清除所有的資料)
以system用戶登錄,查找需要洗掉的用戶: --查找用戶 select * from dba_users; --查找作業空間的路徑 select * from dba_data_files; --洗掉用戶 drop user 用戶名稱 cascade; --洗掉表空間 drop tablespace 表空間名稱 including contents and datafiles cascade constraint; 栗子:洗掉用戶名成為study,表空間名稱為data_test --洗掉用戶,及級聯關系也洗掉掉 drop user study cascade; --洗掉表空間,及對應的表空間檔案也洗掉掉 drop tablespace data_test including contents and datafiles cascade constraint;
當然洗掉用戶的時候可能報如下錯誤:
SQL> drop user study cascade; drop user study cascade * ERROR at line 1: ORA-01940: cannot drop a user that is currently connected
字面翻譯是該用戶有連接,不能洗掉,我把我自己連接的Oracle Develop客戶端斷開了連接,再次執行,還是報相同的錯誤,因為除了我們自己連接,還有其他遠程客戶端連接,該如何解決該問題,成功洗掉該用戶呢?
先查詢study用戶的連接狀況,
SQL> select username,sid,serial# from v$session where username='study'; USERNAME SID SERIAL# ------------------------------ ---------- ---------- study 429 7 study 499 9 2 rows selected.
然后把相關的session連接刪掉,
alter system kill session'429,7'; alter system kill session'499,9';
這樣再次執行洗掉study用戶就可以洗掉成功了!
SQL> drop user study cascade; User dropped.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/11259.html
標籤:Oracle
