国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

更改Oracle數據庫表的表空間

2024-08-29 13:31:31
字體:
來源:轉載
供稿:網友

在oracle數據庫管理系統中,創建庫表(table)時要分配一個表空間(tablespace),如果未指定表空間,則使用系統用戶確省的表空間。

在oracle實際應用中,我們可能會遇到這樣的問題。處于性能或者其他方面的考慮,需要改變某個表或者是某個用戶的所有表的表空間。通常的做法就是首先將表刪除,然后重新建表,在新建表時將表空間指定到我們需要改變的表空間。如果該用戶已經保存了大量數據,這種辦法就就顯得不是很方便,因為有大量數據需要提前備份出來。下面介紹一種利用數據庫的導出/導入功能來實現重新組織數據庫表空間的方法。

下面是一個簡單的例子,假定要將用戶oa下的全部表從表空間a轉換到表空間b,具體步驟(在oracle 9i for linux環境)如下:
1.1. 導出db_zgxt下的所有表(dos控制臺下) 導出db_zgxt下的所有表(dos控制臺下)1. 導出db_zgxt下的所有表(dos控制臺下)
exp oa/[email protected]_server file=d:/10_27_oa.dmp log=d:/10_27_oa.log


2. 刪除oa下的所有表(在sql/plus中)

可以采用批處理的方式刪除掉db_zgxt下的所有表,生成批處理的語句如下:
--其中set head off將表頭信息去掉
set head off
spool c:/drop_tables.sql
select 'drop table '||table_name||';' from user_tables;
spool off;
@c:/drop_tables.sql;
sql >@drop_tables.sql
3. 采用導入參數 indexfile導入oa用戶下的所有表(dos控制臺下)
把建表和索引的語句導出到文件,其中建表語句是加注釋的,并沒有實際導入

imp oa/[email protected]_server full=y file=d:/10_27_oa.dmp indexfile=d:/altertablespace_table_index.sql log=d:/altertablespace.log


其中,指定參數indexfile后,系統就將創建表和索引的語句寫到一個文件,這里是altertablespace_table_index.sql 中。該文件中包含了所有創建索引(create index)語句和創建表(createtable)語句,但是這里所有創建表的語句均加了注釋標志。在任何文本編輯器中打開并編輯該文件,去掉所有創建表語句的注釋標志,將所有的表空間名稱由a替換為b,同時對所有的創建索引語句加上注釋標志。這些工作作完以后,在sql/plus中運行該腳本文件,這些表就被創建,其表空間由a變為b。
采用導入參數indexes=n 和ignore=y將db_zgxt用戶的表數據導入庫中(dos控制臺下)
4. 采用導入參數indexes=n 和ignore=y將oa用戶的表數據導入庫中(dos控制臺下)

imp oa/[email protected]_server full=y indexes=n file=d:/10_27_oa.dmp  ignore=y log=d:/altertablespace.log

其中,參數indexes=n是指將數據導入數據庫中時不加索引。ignore=y是指在導入數據過程中,忽略表已經存在(table already exists)的錯誤。這樣oralce就將數據和一些約束條件導入到第3步創建的表中。


5. 創建索引

在文本編輯器中重新打開在第3步中創建的altertablespace_table_index.sql 腳本文件,這次,將所有創建表(create table)的語句加上注釋標志,然后將所有的創建索引(create index)語句去掉注釋標志。在sql/plus中再次運行該腳本文件。

至此,我們就成功完成了將oa用戶下的全部表從表空間a轉換到表空間b的工作。當然你可以只導入一部分表。

注:本文參考網上搜到的一篇文章,本人在更新的平臺(oracle 9i)上實際操作后修改成此文。如果侵犯到誰的版權,請與我聯系。
菜鳥學堂:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 尤溪县| 宝坻区| 夏河县| 迁安市| 石屏县| 凤城市| 静安区| 黄大仙区| 龙海市| 黑河市| 布尔津县| 株洲市| 衡阳市| 黑龙江省| 信阳市| 吴忠市| 屯门区| 遂溪县| 泉州市| 志丹县| 绥芬河市| 龙门县| 洛隆县| 金塔县| 文成县| 阳江市| 常山县| 丹东市| 库尔勒市| 长阳| 云安县| 运城市| 临洮县| 宁化县| 西城区| 乌拉特中旗| 巨野县| 自贡市| 宁武县| 开鲁县| 垣曲县|