更改
oracle
資料庫表的
表空間(石驍騑 2023年07月20日 17:56)
在oracle%2ecom%2fglobal%2fcn&ajbid=167&pool=homebutton&ajpage=/">oracle資料庫管理系統中,建立庫表(table)時要分配乙個表空間(tablespace),如果未指定表空間,則使用系統使用者確省的表空間。
在oracle%2ecom%2fglobal%2fcn&ajbid=167&pool=homebutton&ajpage=/">oracle實際應用中,我們可能會遇到這樣的問題。處於效能或者其他方面的考慮,需要改變某個表或者是某個使用者的所有表的表空間。通常的做法就是首先將表刪除,然後重新建表,在新建表時將表空間指定到我們需要改變的表空間。如果該使用者已經儲存了大量資料,這種辦法就就顯得不是很方便,因為有大量資料需要提前備份出來。下面介紹一種利用資料庫的匯出/匯入功能來實現重新組織資料庫表空間的方法。
下面是乙個簡單的例子,假定要將使用者db_zgxt下的全部表從表空間a轉換到表空間b,具體步驟(在oracle%2ecom%2fglobal%2fcn&ajbid=167&pool=homebutton&ajpage=/">oracle 8.0.5 for nt環境)如下:
1. 匯出db_zgxt下的所有表(dos控制台下)
exp80 owner=db_zgxt file=exp0326.dmp log=exp0326.log
系統提示輸入使用者名稱和口令,回答完畢,系統就開始將db_zgxt下的所有表都匯出到乙個叫exp0316.dmp的檔案中。
2. 刪除db_zgxt下的所有表(在sql/plus中)
可以採用批處理的方式刪除掉db_zgxt下的所有表,生成批處理的語句如下:
select 'drop table '||user_tables||』;' from user_tables;
3. 採用匯入引數 indexfile匯入db_zgxt使用者下的所有表(dos控制台下)
imp80 full=y file=exp0326.dmp indexfile=db_zgxt.sql log=imp0326_1.log
系統提示輸入使用者名稱和口令,回答完畢,系統就開始將檔案exp0326.dmp匯入到db_zgxt使用者下。
其中,指定引數indexfile後,系統就將建立表和索引的語句寫到乙個檔案,這裡是db_zgxt.sql中。該檔案中包含了所有建立索引(create index)語句和建立表(createtable)語句,但是這裡所有建立表的語句均加了注釋標誌。在任何文字編輯器中開啟並編輯該檔案,去掉所有建立表語句的注釋標誌,將所有的表空間名稱由a替換為b,同時對所有的建立索引語句加上注釋標誌。這些工作作完以後,在sql/plus中執行該指令碼檔案,這些表就被建立,其表空間由a變為b。
4. 採用匯入引數indexes=n 和ignore=y將db_zgxt使用者的表資料導入庫中(dos控制台下)
imp80 full=y indexes=n file=exp0326.dmp ignore=y log=imp0326_2.log
其中,引數indexes=n是指將資料匯入資料庫中時不加索引。ignore=y是指在匯入資料過程中,忽略表已經存在(table already exists)的錯誤。這樣oralce就將資料和一些約束條件匯入到第3步建立的表中。
5. 建立索引
在文字編輯器中重新開啟在第3步中建立的db_zgxt.sql指令碼檔案,這次,將所有建立表(create table)的語句加上注釋標誌,然後將所有的建立索引(create index)語句去掉注釋標誌。在sql/plus中再次執行該指令碼檔案。
至此,我們就成功完成了將db_zgxt使用者下的全部表從表空間a轉換到表空間b的工作。在實際工作中,可能不是將整個乙個使用者的所有表都轉換,也可能只需要轉換其中的一部分表,這種情況只需要在匯出和匯入時加上表的限制條件就可以了,關於如何加上匯出/匯入表限制條件詳細步驟請參看oralce幫助,這裡不在詳述。
Oracle匯出空表資料庫
經常我們在匯出資料庫進行備份的時候,會發現有些空表沒有匯出,如何匯出包含空表的完整資料庫呢?那麼請按照下面的方法進行即可。1.使用plsql工具,連線oracle資料庫 2.開啟乙個sql視窗,用以下這句查詢空表並生成執行命令 1select alter table table name alloc...
更改Oracle資料庫表的表空間 方法1
在oracle資料庫管理系統中,建立庫表 table 時要分配乙個表空間 tablespace 如果未指定表空間,則使用系統使用者確省的表空間。在oracle實際應用中,我們可能會遇到這樣的問題。處於效能或者其他方面的考慮,需要改變某個表或者是某個使用者的所有表的表空間。通常的做法就是首先將表刪除,...
更改Oracle資料庫表的表空間 方法2
1 建立表空間 create tablespace databk logging datafile f oracle product 10.1.0 oradata ffk databk.ora size 300m 2 修改使用者的預設表空間 alter user fly default tables...