Oracle資料庫建立資料表空間及使用者

來源:互聯網
上載者:User

摘要:
/* create tablespace systemv
datafile '/opt/oracle/oradata/ibm/systemv01.dbf' size 10m
autoextend on; */

/* drop tablespace systemv
including contents and datafiles; */

create user "SYSTEMV"
identified by "123456" default tablespace "SYSTEMV"
account unlock;

grant create any directory, unlimited tablespace, connect, resource to "SYSTEMV";

/* drop user systemv cascade; */

/* connect systemv/123456@192.168.254.99/ibm */

本文:
步驟一:刪除使用者及其所有對象 
drop user "aaaa" cascade

步驟二:建立資料表空間,並設定相關屬性,先查詢出一般的資料庫檔案都存放在哪裡。
SQL> select * from v$dbfile;

FILE#        NAME
--------------------------------------------------------------------------------
4                /mc/oracle/oradata/mc/users01.dbf


--建立資料表空間,並指定資料檔案的位置(必須去除多餘空格才能執行)

CREATE TABLESPACE AAAA 
DATAFILE '/mc/oracle/oradata/mc/AAAA.dbf' SIZE 50M
extent management local autoallocate

--更改資料檔案增長方式為自動成長
alter database 
DATAFILE '/mc/oracle/oradata/mc/AAAA.dbf'
autoextend on

注意:上面的粗體字部分必須全部為大寫;否則sqlplus將無法登陸,導資料也會出問題;如果這裡大寫了,將來登入使用者名稱小寫也是沒問題的!
$ sqlplus "aaaa/aaaa";$ sqlplus "AAAA/aaaa" 以上兩個都可以登入!


步驟四:授予使用者適當許可權 
GRANT CREATE ANY DIRECTORY TO "AAAA"
GRANT UNLIMITED TABLESPACE TO "AAAA"
GRANT "CONNECT" TO "AAAA"
GRANT "RESOURCE" TO "AAAA"

或者
GRANT CREATE ANY DIRECTORY, UNLIMITED TABLESPACE, CONNECT, RESOURCE TO "AAAA"

查看建立好的使用者
select * from dba_users
select * from dba_tablespaces


-------------------------------------------------------------------華麗的分割線----------------------------------------------------------------------

建立暫存資料表空間【tempfile參數必須有】
create temporary tablespace zfmi_temp 
tempfile 'D:\oracle\oradata\zfmi\zfmi_temp.dbf' 
size 32m 
autoextend on 
next 32m maxsize 2048m 
extent management local; 

//建立資料資料表空間【datafile參數必須有 】 
create tablespace zfmi 
logging 
datafile 'D:\oracle\oradata\zfmi\zfmi.dbf' 
size 100m 
autoextend on 
next 32m maxsize 2048m 
extent management local; 

//刪除使用者以及使用者所有的對象 
drop user zfmi cascade; 
//cascade參數是串聯刪除該使用者所有對象,經常遇到如使用者有對象而未加此參數則使用者刪不了的問題,所以習慣性的加此參數 

//刪除資料表空間 
前提:刪除資料表空間之前要確認該資料表空間沒有被其他使用者使用之後再做刪除 
drop tablespace zfmi including contents and datafiles cascade onstraints; 

//including contents 刪除資料表空間中的內容,如果刪除資料表空間之前資料表空間中有內容,而未加此參數,資料表空間刪不掉,所以習慣性的加此參數 
//including datafiles 刪除資料表空間中的資料檔案 
//cascade constraints 同時刪除tablespace中表的外鍵參照 

//如果在清除資料表空間之前,先刪除了資料表空間對應的資料檔案,會造成資料庫無法正常啟動和關閉。 可使用如下方法恢複(此方法已經在oracle9i中驗證通過): 
下面的過程中,filename是已經被刪除的資料檔案,如果有多個,則需要多次執行;tablespace_name是相應的資料表空間的名稱。 
$ sqlplus /nolog 
SQL> conn / as sysdba; 
如果資料庫已經啟動,則需要先執行下面這行: 
SQL> shutdown abort 
SQL> startup mount 
SQL> alter database datafile 'filename' offline drop; 
SQL> alter database open; 
SQL> drop tablespace tablespace_name including contents; 

//建立使用者並指定資料表空間【identified by 參數必須有】
create user zfmi identified by zfmi 
default tablespace zfmi temporary tablespace zfmi_temp;  

//授予message使用者DBA角色的所有許可權 
GRANT DBA TO zfmi; 

//給使用者授予許可權 
grant connect,resource to zfmi; (db2:指定所有許可權) 


-------------------------------------------------------------------華麗的分割線----------------------------------------------------------------------

--理解 recover datafile,資料表空間offline如果有immediate參數(此時將髒資料儲存在system的延遲回退段中),那麼下次online前必須recover。
alter tablespace zbb offline immediate
SQL> recover datafile 13;
alter tablespace zbb online
=========================================
--給資料表空間增加新的資料檔案
alter tablespace zbtbs
add datafile '/disk2/oracle/oradata/zbtbs02.dbf' size 10M reuse
=========================================
--重新指定資料檔案的大小
alter database
datafile '/disk2/oracle/oradata/zbtbs02.dbf'
resize 100M
=========================================
查看錶空間的online或offline情況
select * from v$datafile


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.