Decode360's Blog

          業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
          Oracle修改TableSpace的Name
          ?
          ??? 在Oracle10g以前,tablespace的name是不可以隨意修改的,只能drop掉之后重建,但是在10g之后,oracle加入了修改的功能,除了system和sysaux兩個表空間外,其他的表空間都可以改名。今天專門來記錄一下這個特性:
          ?
          ??? 為TableSpace改名的舉例如下:
          ?
          SQL> create tablespace wxq_tbs datafile '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs.dbf' size 1M;
          ?
          Tablespace created.
          SQL> alter tablespace wxq_tbs rename to wxq_tbs2;
          ?
          Tablespace altered.
          SQL> select tablespace_name,status from dba_tablespaces;
          ?
          TABLESPACE_NAME????????????????????????????????????????????? STATUS
          ------------------------------------------------------------ -------------
          SYSTEM?????????????????????????????????????????????????????? ONLINE
          UNDOTBS1???????????????????????????????????????????????????? ONLINE
          SYSAUX?????????????????????????????????????????????????????? ONLINE
          TEMP???????????????????????????????????????????????????????? ONLINE
          USERS??????????????????????????????????????????????????????? ONLINE
          OWB_TBS????????????????????????????????????????????????????? ONLINE
          RECOVERY_TBS???????????????????????????????????????????????? ONLINE
          STREAM_TBS?????????????????????????????????????????????????? ONLINE
          WXQ_TBS2???????????????????????????????????????????????????? ONLINE

          SQL> select tablespace_name,file_name,status from dba_data_files;
          ?
          TABLESPACE_N FILE_NAME?????????????????????????????????????????????????????? ? STATUS
          ------------ ------------------------------------------------------------------ -------------
          USERS??????? /opt/oracle/product/10.2.0/oradata/wangxiaoqi/users01.dbf????????? AVAILABLE
          SYSAUX?????? /opt/oracle/product/10.2.0/oradata/wangxiaoqi/sysaux01.dbf???????? AVAILABLE
          UNDOTBS1???? /opt/oracle/product/10.2.0/oradata/wangxiaoqi/undotbs01.dbf??????? AVAILABLE
          SYSTEM?????? /opt/oracle/product/10.2.0/oradata/wangxiaoqi/system01.dbf???????? AVAILABLE
          OWB_TBS????? /opt/oracle/product/10.2.0/oradata/wangxiaoqi/owb_tbs01.dbf??????? AVAILABLE
          RECOVERY_TBS /opt/oracle/product/10.2.0/oradata/wangxiaoqi/recover_tbs.dbf????? AVAILABLE
          STREAM_TBS?? /opt/oracle/product/10.2.0/oradata/wangxiaoqi/stream_tbs01.dbf???? AVAILABLE
          WXQ_TBS2???? /opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs.dbf????????? AVAILABLE
          ?
          ?
          ??? 此時,datafile的名字沒有改過來,與tablespace不一致,所以需要再改一下,這個過程相對來說比較復雜,要以下面的順序來修改:
          ?
          ??? 1、把相應的tablespace改成read only;
          ??? 2、把需要修改的datafile置為offline;
          ??? 3、在操作系統中改名
          ??? 4、alter database rename file .. to ..;
          ??? 5、把相應的datafile置為online;
          ??? 6、把相應tablespace改成read write;
          ?
          ??? 具體操作如下:
          ?
          SQL> alter database rename file '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs.dbf' to '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs2.dbf';
          alter database rename file '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs.dbf' to '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs2.dbf'
          *
          ERROR at line 1:
          ORA-01511: error in renaming log/data files
          ORA-01121: cannot rename database file 11 - file is in use or recovery
          ORA-01110: data file 11: '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs.dbf'
          ?

          SQL> alter tablespace wxq_tbs2 read only;
          ?
          Tablespace altered.
          ?
          SQL> alter database datafile '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs.dbf' offline;
          ?
          Database altered.
          ?
          SQL> host mv /opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs.dbf /opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs2.dbf;
          ?
          SQL> host ls -l /opt/oracle/product/10.2.0/oradata/wangxiaoqi/
          total 6115528
          -rw-r----- 1 oracle oinstall 1073750016 Jul 28 01:35 owb_tbs01.dbf
          -rw-r----- 1 oracle oinstall?? 26222592 Jul 28 01:35 recover_tbs.dbf
          -rw-r----- 1 oracle oinstall? 209723392 Jul 28 01:35 stream_tbs01.dbf
          -rw-r----- 1 oracle oinstall? 471867392 Jul 28 16:05 sysaux01.dbf
          -rw-r----- 1 oracle oinstall? 566239232 Jul 28 16:08 system01.dbf
          -rw-r----- 1 oracle oinstall?? 31465472 Jul 27 22:00 temp01.dbf
          -rw-r----- 1 oracle oinstall? 513810432 Jul 28 16:10 undotbs01.dbf
          -rw-r----- 1 oracle oinstall??? 5251072 Jul 28 10:14 users01.dbf
          -rw-r----- 1 oracle oinstall??? 1056768 Jul 28 16:08 wxq_tbs2.dbf
          ?
          SQL> alter database rename file '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs.dbf' to '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs2.dbf';
          ?
          Database altered.
          ?
          SQL> alter database datafile '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs2.dbf' online;
          ?
          Database altered.
          ?
          SQL> alter tablespace wxq_tbs2 read write;
          ?
          Tablespace altered.
          ?
          SQL> select tablespace_name,file_name,status from dba_data_files;
          ?
          TABLESPACE_N FILE_NAME???????????????????????????????????????????????????????? STATUS
          ------------ ------------------------------------------------------------------ ------------------
          USERS??????? /opt/oracle/product/10.2.0/oradata/wangxiaoqi/users01.dbf????????? AVAILABLE
          SYSAUX?????? /opt/oracle/product/10.2.0/oradata/wangxiaoqi/sysaux01.dbf???????? AVAILABLE
          UNDOTBS1???? /opt/oracle/product/10.2.0/oradata/wangxiaoqi/undotbs01.dbf??????? AVAILABLE
          SYSTEM?????? /opt/oracle/product/10.2.0/oradata/wangxiaoqi/system01.dbf???????? AVAILABLE
          OWB_TBS????? /opt/oracle/product/10.2.0/oradata/wangxiaoqi/owb_tbs01.dbf??????? AVAILABLE
          RECOVERY_TBS /opt/oracle/product/10.2.0/oradata/wangxiaoqi/recover_tbs.dbf????? AVAILABLE
          STREAM_TBS?? /opt/oracle/product/10.2.0/oradata/wangxiaoqi/stream_tbs01.dbf???? AVAILABLE
          WXQ_TBS2???? /opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs2.dbf???????? AVAILABLE
          ?
          8 rows selected.
          ?
          ??? 至此,就全部修改完成了。再強調一下,只有在10g中才能夠修改,10g以前是不可以的。
          ?
          ?
          posted on 2009-07-25 22:03 decode360 閱讀(1818) 評論(0)  編輯  收藏 所屬分類: 07.Oracle
          主站蜘蛛池模板: 武定县| 广德县| 万全县| 铅山县| 兴国县| 电白县| 亳州市| 梁平县| 温宿县| 肥西县| 广灵县| 绩溪县| 祁阳县| 华容县| 水城县| 多伦县| 淮安市| 阿城市| 湖口县| 栾川县| 宜阳县| 资溪县| 凤台县| 抚松县| 鄂伦春自治旗| 磴口县| 榆林市| 建始县| 松溪县| 广丰县| 北京市| 阿勒泰市| 赤峰市| 龙里县| 绍兴县| 奉节县| 秦皇岛市| 三亚市| 台北县| 兴化市| 正安县|