Decode360's Blog

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

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評(píng)論 :: 0 Trackbacks
          Oracle修改TableSpace的Name
          ?
          ??? 在Oracle10g以前,tablespace的name是不可以隨意修改的,只能drop掉之后重建,但是在10g之后,oracle加入了修改的功能,除了system和sysaux兩個(gè)表空間外,其他的表空間都可以改名。今天專門(mén)來(lái)記錄一下這個(gè)特性:
          ?
          ??? 為T(mén)ableSpace改名的舉例如下:
          ?
          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
          ?
          ?
          ??? 此時(shí),datafile的名字沒(méi)有改過(guò)來(lái),與tablespace不一致,所以需要再改一下,這個(gè)過(guò)程相對(duì)來(lái)說(shuō)比較復(fù)雜,要以下面的順序來(lái)修改:
          ?
          ??? 1、把相應(yīng)的tablespace改成read only;
          ??? 2、把需要修改的datafile置為offline;
          ??? 3、在操作系統(tǒng)中改名
          ??? 4、alter database rename file .. to ..;
          ??? 5、把相應(yīng)的datafile置為online;
          ??? 6、把相應(yīng)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.
          ?
          ??? 至此,就全部修改完成了。再?gòu)?qiáng)調(diào)一下,只有在10g中才能夠修改,10g以前是不可以的。
          ?
          ?
          posted on 2009-07-25 22:03 decode360 閱讀(1819) 評(píng)論(0)  編輯  收藏 所屬分類: 07.Oracle
          主站蜘蛛池模板: 大余县| 福海县| 南城县| 玛纳斯县| 宝兴县| 祁门县| 泰安市| 永寿县| 蒙阴县| 阳高县| 罗田县| 沙雅县| 阜新市| 西林县| 兴宁市| 云龙县| 奇台县| 阜平县| 华池县| 乾安县| 阿瓦提县| 漠河县| 松江区| 宁武县| 涿鹿县| 西乡县| 兴国县| 梨树县| 类乌齐县| 永靖县| 从化市| 融水| 基隆市| 山东省| 溆浦县| 拜城县| 法库县| 扶沟县| 凭祥市| 定襄县| 金乡县|