1. 程式人生 > >oracle刪除表空間和修改索引表空間

oracle刪除表空間和修改索引表空間

由於lob物件引起的表空間無法刪除。本來是要刪除DMS表空間,但是上面有LOB物件,而且表卻是在別的表空間DMS4上。解決的辦法就是將這些lob移動到DMS4表空間。
下面是解決過程


刪除使用者時報錯:



drop tablespace dms


第 1 行出現錯誤:
ORA-01549: 表空間非空, 請使用 INCLUDING CONTENTS 選項


SQL> drop tablespace dms including contents and datafiles;
drop tablespace dms including contents and datafiles
*
第 1 行出現錯誤:
ORA-22868: 具有 LOB 的表包含有位於不同表空間的段


檢查過程

檢查這個表空間上的Lob物件
SQL> select owner, table_name, column_name, tablespace_name
    from dba_lobs
    where tablespace_name = 'DMS';


已選擇6行。


另外再檢查下約束有沒有問題(因為這個問題常見,所以一併檢查了下)。


SQL> select 'alter table '||owner||'.'||table_name||' drop constraint '||constraint_name||' ;'
   from dba_constraints
    where constraint_type in ('U', 'P')
       and (index_owner, index_name) in
          (select owner, segment_name
             from dba_segments
             where tablespace_name = 'DMS');


未選定行

這是查表空間相關的索引語句:
SELECT 'ALTER INDEX PMS.' || INDEX_NAME || ' REBUILD TABLESPACE PMS_TB;' mysql 
  FROM DBA_INDEXES
 WHERE TABLE_OWNER = 'PMS'
   AND TABLESPACE_NAME = 'SCFCEB_TB';

SQL>




解決過程:



下面是我寫的指令碼,這個指令碼可以生成要用的語句。


       
select 'alter table ' || xtable || ' move tablespace DMS4 lob' || '(' ||
       column_name || ') store as ( tablespace DMS4);'
  from (select xtable, wmsys.wm_concat(column_name) column_name
          from (select owner || '.' || table_name xtable,
                       column_name,
                       tablespace_name
                  from dba_lobs
                 where tablespace_name = 'DMS')
         group by xtable)


結果如下:


alter table DMS4.xxxx move tablespace DMS4 lob(ERROR_TEXT) store as ( tablespace DMS4);

^………………


取消dms4在dms表空間上的限額,防止再出類似問題。


alter user dms4 quota 0 on dms;

原文地址:http://blog.csdn.net/bamuta/article/details/12492783

如果遇到不能alter 或 drop Lob型別索引的錯誤,這是因為你的表中BLOB或CLOB型別欄位,它會自動給這類資料增加所以,並且無法直接修改。可以用以下語句解決。
//先建立一個臨時表
CREATE TABLE T_TABLE1 AS SELECT* FROMTABLE1 ;
//刪除有LOB欄位的表
DROP TABLE TABLE1;
//重新建立剛剛的表
CREATE TABLETABLE1 AS SELECT* FROMT_TABLE1;
//刪除臨時表
DROP TABLET_TABLE1;

相關推薦

oracle刪除空間修改索引空間

由於lob物件引起的表空間無法刪除。本來是要刪除DMS表空間,但是上面有LOB物件,而且表卻是在別的表空間DMS4上。解決的辦法就是將這些lob移動到DMS4表空間。 下面是解決過程 刪除使用者時報錯: drop tablespace dms 第 1 行出現錯誤:

DML -- 數據操縱預言: insert/delete/update --多連接修改/.多連接刪除/多連接查詢-- truncate delete的區別

color _id friend 增長 code 方法 spa 全部 join /* DML -- 數據操縱預言: insert/delete/update */ #一: 插入語句 /* 語法1: insert into 表名(列名,..,列名....)

Oracle三種table: 堆Heap Table、索引組織IOT聚簇Cluster

常用資料庫支援情況: Oracle支援堆表,索引組織表,聚簇表Cluster; PostgreSQL只支援堆表,不支援索引組織表; Innodb只支援索引組織表; MyISAM只支援堆表。 Oracle使用rowid資料型別儲存行地址,rowid可以分成兩種,分別適於不同的

Oracle建立資料庫與空間資料字典的概念

(一)Oracle建立資料庫不同於MySQL Oracle建立資料庫主要有一下幾種方法: 第一種方法:使用Oracle的Database Configuration Assistant(資料庫配置助手

oracle刪除表字段oracle增加欄位

新增欄位的語法:alter table tablename add (column datatype [default value][null/not null],….); 修改欄位的語法:alter table tablename modify (column

oracle回滾段回滾空間

昨晚因為做了一個大批量的刪除,用的delete。大約用了6個小時,導致了回滾段自動擴充套件到將近30個G。(以後記著,做大批量刪除的時候,一定要用指令碼實現,分批量提交事務。那樣就不會佔用太多的UNDO表空間了!) 從網上搜了一個普遍的方法,更換新的UNDO表空間,然後刪

Oracle刪除當前使用者下的所有、檢視、序列、函式、儲存過程、包(轉)

最近在用oracle,發現了一個批量刪除資料庫中的各種結構的好方法。 --delete tables  select 'drop table ' ||&

本地管理空間字典管理空間的特點,ASSM有什麼特點

字典管理表空間(Dictionary-Managed Tablespace簡稱DMT),8i以前包括以後都還可以使用的一種表空間管理模式,通過資料字典管理表空間的空間使用。 Oracle使用兩個字典來記錄Extents的使用情況:SYS.FET$記錄空閒的Extents

java poi操作word模版檔案生成修改

使用java poi進行模版檔案的上傳,生成表單,重新生成檔案。同時包括表單中含有下拉框等選項的處理。 XWPFDocument物件POI是apache提供的可以操作word文件的第三方jar。POI能操作word是使用XWPFDocument物件。XWPFDocumen

mysql約束修改資料

FOREIGN KEY(外來鍵約束)要求: 1.父表子表必須使用相同的儲存引擎,而且禁止使用臨時表。 2.資料表的儲存引擎只能為INNODB. 3.外來鍵列於參照列必須具有相似的資料型別。數字長度和是否有符號位必須相同; 字元的長度可以不同。 4.外來鍵列和參照列必須建立索

MySQL 約束修改資料

1.     FOREIGN KEY(外來鍵約束):保持資料的一致性,完整性。實現資料表的一對一,一對多的關係。 a)     父表(子表所參照的表)和子表(具有外來鍵列的表)必須使用相同的儲存引擎,

Oracle 刪除一個使用者下的所有、觸發器、約束

select 'drop table '||table_name||' cascade constraints;' from user_tables;   select 'drop trigger ' || trigger_name || ';'  from user_

MySQL 復制結構復制結構,數據

只需要 復制 索引 語句 reat 完整 sql 需求 滿足 有時候有這樣的需求,只需要復制表的結構,有時候復制表的數據和結構,那麽怎麽同時滿足這樣的要求呢,這樣的代碼怎麽寫呢? 使用 SHOW CREATE TABLE 命令獲取創建數據表(CREAT

[轉帖]Oracle字符集的檢視與修改 --- 還未嘗試 找個週六 試試. Oracle 字符集的檢視修改

Oracle 字符集的檢視和修改 感謝原作者 改天試試 https://www.cnblogs.com/rootq/articles/2049324.html   一、什麼是Oracle字符集        Or

Oracle 字符集的檢視修改

       Oracle字符集是一個位元組資料的解釋的符號集合,有大小之分,有相互的包容關係。ORACLE 支援國家語言的體系結構允許你使用本地化語言來儲存,處理,檢索資料。它使資料庫工具,錯誤訊息,排序次序,日期,時間,貨幣,數字,和日曆自動適應本地化語言和平臺。

檢視oracle資料庫是否歸檔修改歸檔模式

分為非歸檔模式(NOARCHIVELOG) 和歸檔模式(ARCHIVELOG)。非歸檔模式不產生歸檔日誌,雖然節省了硬碟空間,但是備份方案選擇很有限,通常只能選擇冷備份。還原也只能還原到備份那一時刻的資料,通常也僅在開發時使用(據說在資料倉庫中也使用),Oracle安裝預設

mybatis批量新增、刪除、查詢修改

 每次寫批量的時候,都要在網上搜索一下,雖然都做過多次了,但具體的自己還是記不住(汗顏),所以索性今天就記錄下來。  前期說明:          foreach的主要用在構建in條件中,它可以在SQL語句中進行迭代一個集合。foreach元素的屬性主要有 item,inde

sql 複製結構複製整個資料

1. 複製表結構及其資料: create table table_name_new as select * from table_name_old 2. 只複製表結構: create table table_name_new as select * from ta

Oracle資料庫檢視編碼修改編碼

首先檢視oracle資料庫的編碼 SQL> select * from nls_database_parameters where parameter ='NLS_CHARACTERSET'; PARAMETER -------------------- VALUE

oracle中游標的屬性修改預設遊標的大小

/* 1、游標的屬性 %found %notfound %isopen 判斷游標是否開啟 %rowcount 影響的行數 2、游標數的限制:預設情況下,oracle資料庫只有300個游標 */ --set serveroutput on declare --定義游標 cu