確定數據文件的存儲地址,有兩種情況,一個是明確存儲地址,一個是跟其他表空間存在一個地方,但是不知道地址,這時候可以根據如下SQL進行查找:
select t.* ?from sys.dba_data_files t where t.tablespace_name ='知道的表空間名稱'
如果不知道當前登錄用戶所屬的表空間,根據一下sql進行查詢,一個用戶有可能授權給了多個表空間。
創建新的表空間:
create tablespace NEW_TABLESPACENAME datafile 'E:/app/Administrator/oradata/orcl/NEW_TABLESPACENAME' size 1024M reuse;?
此處的datafile路徑可以根據第一步進行設置,文件大小可以自定義
新建表空間的時候同時會創建數據文件,表空間太小會在初始化sql的時候報錯(錯誤見圖片),可以將size設置為1M試驗一下。但是太多又會造成空間浪費,根據實際情況估算一下,然后再確定表空間大小,不要盲目的設大或設小。
還有一種方法是在創建表空間的設置自增加屬性,這樣在表空間不足的時候會自己增加,這是一種比較合理的策略
create tablespace NEW_TABLESPACENAME
? datafile 'E:/app/Administrator/oradata/orcl/NEW_TABLESPACENAME'?
? size 1M autoextend on next 50M maxsize unlimited;?
autoextend 自動增長 50M是自增的大小
創建新的用戶:
--新建用戶
create user NEW_USERNAME
? identified by "NEW_PASSWORD"
? default tablespace NEW_TABLESPACENAME?
? profile DEFAULT
? ACCOUNT UNLOCK;
給新建用戶授DBA權限
grant dba to NEW_USERNAME;
grant unlimited tablespace to NEW_USERNAME;
也可以給已經創建的用戶進行授權
8
至此,表空間和用戶都已經創建完畢,登錄后可以執行建表SQL。
//創建臨時表空間
create?temporary?tablespace?test_temp???tempfile?'E:\oracle\product\10.2.0\oradata\testserver\test_temp01.dbf'???size?32m???autoextend?on???next?32m?maxsize?2048m???extent?management?local;
//創建數據表空間
create?tablespace?test_data???logging???datafile?'E:\oracle\product\10.2.0\oradata\testserver\test_data01.dbf'???size?32m???autoextend?on???next?32m?maxsize?2048m???extent?management?local;
//創建用戶并指定表空間
create?user?username?identified?by?password???default?tablespace?test_data???temporary?tablespace?test_temp;
//給用戶授予權限
grant?connect,resource?to?username;
//以后以該用戶登錄,創建的任何數據庫對象都屬于test_temp 和test_data表空間,這就不用在每創建一個對象給其指定表空間了。
轉載于:https://blog.51cto.com/10264855/1856405