免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
刪除表空間

一個(gè)用戶(hù)要?jiǎng)h除數(shù)據(jù)庫(kù)的表空間,首先該用戶(hù)要具備drop tablespace的權(quán)限

在當(dāng)前用戶(hù)下執(zhí)行以下語(yǔ)句來(lái)查詢(xún)確認(rèn)

select a2.username,a1.privilege from dba_sys_privs a1 , user_role_privs a2
where a1.privilege = 'DROP TABLESPACE'
and a1.grantee =a2.granted_role


SQL> conn xxx/xxx
已連接。
SQL> select a2.username,a1.privilege from dba_sys_privs a1 , user_role_privs a2
2 where a1.privilege = 'DROP TABLESPACE'
3 and a1.grantee =a2.granted_role;

USERNAME                       PRIVILEGE
------------------------------ ----------------------------------------
WULW                           DROP TABLESPACE

如果沒(méi)有 drop tablespace,請(qǐng)先用更高級(jí)的用戶(hù)(如sys)給予授權(quán)

SQL> conn sys/oracle@ibm as sysdba;
已連接。
SQL> grant drop tablespace to wulw   ;

授權(quán)成功。


以上前提條件確認(rèn)完,下面開(kāi)始實(shí)驗(yàn).

確認(rèn)已有的表空間

SQL> select a.TS# ,a.NAME , b.NAME from v$tablespace a,v$datafile b
2 where a.TS# = b.TS#;

TS# NAME NAME
0 SYSTEM L:\ORACLE\ORADATA\IBM\SYSTEM01.DBF
1 UNDOTBS1 L:\ORACLE\ORADATA\IBM\UNDOTBS01.DBF
3 CWMLITE L:\ORACLE\ORADATA\IBM\CWMLITE01.DBF
4 DRSYS L:\ORACLE\ORADATA\IBM\DRSYS01.DBF
5 EXAMPLE L:\ORACLE\ORADATA\IBM\EXAMPLE01.DBF
6 INDX L:\ORACLE\ORADATA\IBM\INDX01.DBF
7 ODM L:\ORACLE\ORADATA\IBM\ODM01.DBF
8 TOOLS L:\ORACLE\ORADATA\IBM\TOOLS01.DBF
9 USERS L:\ORACLE\ORADATA\IBM\USERS01.DBF
10 XDB L:\ORACLE\ORADATA\IBM\XDB01.DBF
12 TDATA_01 L:\ORACLE\ORADATA\IBM\TDATA_01.ORA
14 TINDEX_01 L:\ORACLE\ORADATA\IBM\TINDEX_01.ORA

已選擇12行。(為看起來(lái)直觀,上面的顯示作了手工格式化)

創(chuàng)建新的測(cè)試表空間:

SQL> create tablespace mytbs01
2 logging
3 datafile 'L:\ORACLE\ORADATA\IBM\mytbs01.dbf' size 10m REUSE ;

表空間已創(chuàng)建。

SQL> CREATE TABLESPACE "MYTBS02" 
2      LOGGING 
3      DATAFILE 'L:\ORACLE\ORADATA\IBM\MYTBS02.dbf' SIZE 10M REUSE ;

表空間已創(chuàng)建。

如果表空間里面沒(méi)有任何數(shù)據(jù)對(duì)象,可以直接刪除.


SQL> drop tablespace mytbs01;

表空間已丟棄。

這種刪除方式相關(guān)的數(shù)據(jù)文件仍然存在于磁盤(pán)上.

(可以進(jìn)入數(shù)據(jù)文件所在目錄L:\ORACLE\ORADATA\IBM 進(jìn)行查看 MYTBS01.DBF )


如果表空間里面含有數(shù)據(jù)對(duì)象,那么該表空間就不能像上面那樣做直接刪除了.


SQL> create tablespace mytbs01
2 logging
3 datafile 'L:\ORACLE\ORADATA\IBM\mytbs01.dbf' size 10m REUSE;

表空間已創(chuàng)建。

SQL> create table test(mobile number(13))
2 tablespace mytbs01;

表已創(chuàng)建。

SQL> drop tablespace mytbs01;
drop tablespace mytbs01
*
ERROR 位于第 1 行:
ORA-01549: 表空間非空,請(qǐng)使用 INCLUDING CONTENTS 選項(xiàng)

看到了吧,提示ora-01549錯(cuò)誤.

如果要?jiǎng)h除該表空間,可加上including contents子句.

如: drop tablespace mytbs01 including contents ;

如果想在刪除表空間的同事也刪除掉對(duì)應(yīng)的數(shù)據(jù)文件,那就在上面的語(yǔ)句最后加上 and datafiles

成為 drop tablespace mytbs01
including contents and datafiles;


SQL> drop tablespace mytbs01
2 including contents and datafiles;

表空間已丟棄。

要注意的一點(diǎn)是,如果drop tablespace語(yǔ)句中含有datafiles,那datafiles之前必須有contents關(guān)鍵字,不然會(huì)提示ora-01911錯(cuò)誤:


SQL> drop tablespace mytbs02
2 including datafiles; 
including datafiles
           *
ERROR 位于第 2 行:
ORA-01911: 需要 CONTENTS 關(guān)鍵字

接下來(lái)的實(shí)驗(yàn)是:

如果表空間A中有一個(gè)表ta,表空間B中有一個(gè)表tb,而ta與tb有著某種關(guān)系,那么是否可以按上面的方法直接干掉表空間A和表空間B呢?

看試驗(yàn)過(guò)程:


SQL> create tablespace mytbs01
2 logging
3 datafile 'L:\ORACLE\ORADATA\IBM\mytbs01.dbf' size 10m REUSE;

表空間已創(chuàng)建。

SQL> CREATE TABLESPACE "MYTBS02" 
2      LOGGING 
3      DATAFILE 'L:\ORACLE\ORADATA\IBM\MYTBS02.dbf' SIZE 10M REUSE ;
CREATE TABLESPACE "MYTBS02"
*
ERROR 位于第 1 行:
ORA-01543: 表空間 'MYTBS02' 已經(jīng)存在


SQL> create table test(mobile number(13))
2 tablespace mytbs01;

表已創(chuàng)建。

SQL> create table test2(mobile number(13))
2 tablespace mytbs02;

表已創(chuàng)建。

SQL> alter table TEST2
2    add primary key (mobile);

表已更改。

SQL> ALTER   TABLE   test    
2   ADD   CONSTRAINT   FOREIGN con_mobile    REFERENCES   test2(mobile);

表已更改。

以上的意思是:在表空間mytbs01上創(chuàng)建表test,在表空間mytbs02上創(chuàng)建表test2,兩個(gè)表test和test2以外鍵相關(guān)聯(lián),test2為主表,test為從表.

現(xiàn)在嘗試能否用上面的語(yǔ)句直接干掉mytbs02:


SQL> drop tablespace mytbs02;
drop tablespace mytbs02
*
ERROR 位于第 1 行:
ORA-01549: 表空間非空,請(qǐng)使用 INCLUDING CONTENTS 選項(xiàng)


SQL> drop tablespace mytbs02
2 including contents;
drop tablespace mytbs02
*
ERROR 位于第 1 行:
ORA-02449: 表中的唯一/主鍵被外部關(guān)鍵字引用


SQL> drop tablespace mytbs02
2 including contents and datafiles;
drop tablespace mytbs02
*
ERROR 位于第 1 行:
ORA-02449: 表中的唯一/主鍵被外部關(guān)鍵字引用

可見(jiàn)主表所在表空間因?yàn)楸砼c其他空間上的表有聯(lián)系,所以沒(méi)辦法直接刪掉.


那mytbs01表空間能不能干掉?請(qǐng)看:

SQL> drop tablespace mytbs01
2 including contents and datafiles;

表空間已丟棄。

SQL> drop tablespace mytbs02
2 including contents and datafiles ;

表空間已丟棄。


嘿嘿,從表test所在的表空間mytbs01能直接干掉,而且從表的表空間干掉后,主表test2所在的表空間mytbs02也能干掉了!

那么,如果我只想干掉主表所在的表空間,又不想干掉從表所在的表空間那怎么辦?

很簡(jiǎn)單,最笨的一招就是想把兩個(gè)表的關(guān)聯(lián)關(guān)系給滅了,(在上面的兩個(gè)表中,就是把那個(gè)外鍵給刪了)再把主表表所在的表空間刪了.但這種方法可不太現(xiàn)實(shí),如果一個(gè)表空間里有成百上千個(gè)對(duì)象與別的表空間里的對(duì)象有聯(lián)系,總不能一個(gè)一個(gè)去"解鈴"吧? 即使你本人就是"系鈴"人,估計(jì)你也要"解"到郁悶死!

一個(gè)更簡(jiǎn)單的方法當(dāng)然是級(jí)聯(lián)刪除了!

drop tablespace mytbs02
including contents and datafiles cascade constraints

試驗(yàn)如下:


SQL> create tablespace mytbs01
2 logging
3 datafile 'L:\ORACLE\ORADATA\IBM\mytbs01.dbf' size 10m REUSE;

表空間已創(chuàng)建。

SQL> CREATE TABLESPACE "MYTBS02" 
2      LOGGING 
3      DATAFILE 'L:\ORACLE\ORADATA\IBM\MYTBS02.dbf' SIZE 10M REUSE ;

表空間已創(chuàng)建。

SQL> create table test(mobile number(13))
2 tablespace mytbs01;

表已創(chuàng)建。

SQL> create table test2(mobile number(13))
2 tablespace mytbs02;

表已創(chuàng)建。

SQL> alter table TEST2
2    add primary key (mobile);

表已更改。

SQL> ALTER   TABLE   test    
2   ADD   CONSTRAINT   FOREIGN con_mobile    REFERENCES   test2(mobile);

表已更改。

SQL> drop tablespace mytbs02
2 including contents and datafiles cascade constraints;

表空間已丟棄。


OK!正常搞定!

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
oracle UNDO表空間不足解決方法
Oracle學(xué)習(xí)筆記(8)管理回滾數(shù)據(jù)
手工oracle創(chuàng)建命名空間和新用戶(hù)
Oracle表空間(tablespaces)
windows linux 創(chuàng)建oracle用戶(hù)及表空間
Linux 下Oracle 手工create database 腳本和步驟
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服