1. 確定數據文件的存儲地址,有兩種情況,一個是明確存儲地址,一個是跟其他表空間存在一個地方,但是不知道地址,這時候可以根據如下SQL進行查找:

    select t.* ?from sys.dba_data_files t where t.tablespace_name ='知道的表空間名稱'

    ORACLE通過SQL語句創建表空間和用戶并授權

  2. 如果不知道當前登錄用戶所屬的表空間,根據一下sql進行查詢,一個用戶有可能授權給了多個表空間。

    ORACLE通過SQL語句創建表空間和用戶并授權

  3. 創建新的表空間:

    create tablespace NEW_TABLESPACENAME datafile 'E:/app/Administrator/oradata/orcl/NEW_TABLESPACENAME' size 1024M reuse;?

    此處的datafile路徑可以根據第一步進行設置,文件大小可以自定義

    ORACLE通過SQL語句創建表空間和用戶并授權

  4. 新建表空間的時候同時會創建數據文件,表空間太小會在初始化sql的時候報錯(錯誤見圖片),可以將size設置為1M試驗一下。但是太多又會造成空間浪費,根據實際情況估算一下,然后再確定表空間大小,不要盲目的設大或設小。

    ORACLE通過SQL語句創建表空間和用戶并授權

  5. 還有一種方法是在創建表空間的設置自增加屬性,這樣在表空間不足的時候會自己增加,這是一種比較合理的策略

    create tablespace NEW_TABLESPACENAME

    ? datafile 'E:/app/Administrator/oradata/orcl/NEW_TABLESPACENAME'?

    ? size 1M autoextend on next 50M maxsize unlimited;?

    autoextend 自動增長 50M是自增的大小

    ORACLE通過SQL語句創建表空間和用戶并授權

  6. 創建新的用戶:

    --新建用戶

    create user NEW_USERNAME

    ? identified by "NEW_PASSWORD"

    ? default tablespace NEW_TABLESPACENAME?

    ? profile DEFAULT

    ? ACCOUNT UNLOCK;

    ORACLE通過SQL語句創建表空間和用戶并授權

  7. 給新建用戶授DBA權限

    grant dba to NEW_USERNAME;

    grant unlimited tablespace to NEW_USERNAME;

    也可以給已經創建的用戶進行授權

    ORACLE通過SQL語句創建表空間和用戶并授權

  8. 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表空間,這就不用在每創建一個對象給其指定表空間了。