其实 ALTER DATABASE RENAME FILE 'old_filename' TO 'new_filename'; 语句修改的是数据文件在控制文件和数据字典中的记录,并不会在文件系统上处理数据文件。
你这个移走是在shutdown的情况下吧? 如果是关闭状态下移走的,是不会有影响的 在mount状况下 startup mount; alter database rename file 'old file location' to 'new file location'; alter database open ; 这样应该是没问题的
首先,你需要知道oracle现在把文件放在哪里.用下面的语句可以看到. 数据文件位置: select name from v$datafile; 日志文件位置: select * from v$logfile; 控制文件位置: select name from v$controlfile; 临时文件位置: select name from v$tempfile; 全库移动的话,就是移动上面的所有内容.当然,只移动数据文件的话,就datafile那一行. 移动方法:关闭oracle数据库,然后将文件拷贝到新地方.原地方的文件现在要留一份.然后 startup mount; 数据文件这样移动(有多少个数据文件就有多少条这个语句,下同): alter database rename file 'E:\ORACLE\ORADATA\DBSERVER\SYSTEM01.DBF' to 'H:\oradata\dbserver\system01.dbf'; 日志文件这样移动: alter database rename file 'E:\ORACLE\ORADATA\DBSERVER\REDO01.LOG' to 'H:\oradata\dbserver\redo01.log'; 控制文件直接在pfile里改路径.改完以后执行下面的语句重建一下spfile. create spfile from pfile='E:\oracle\admin\dbserver\pfile\init.ora'; 以后控制文件应该就是按照init.ora里规定的路径了走了. 临时文件没法用上面的方法移动,只能通过重建的方法.首先,需要知道目前用的临时表空间名.(比如是temp) select username ,temporary_tablespace from dba_users; 然后在新位置重新建立一个临时表空间的文件. create temporary tablespace temp2 tempfile 'h:\ORADATA\dbserver\TEMP01.DBF' size 10M ; 然后指定使用新的临时表空间 alter database default temporary tablespace temp2; 原来的表空间如果想删除的话: drop tablespace temp including contents and datafiles; 然后关闭oracle,老位置的文件夹可以改个名,然后startup.如果没有报什么错误,而且用最开始的语句看的所有文件都到了新的地方.OK,移植成功.老位置的文件可以del了. 我就是这样将工业机数据库移植到个人本本上的=.=(本本E盘可用空间太小了).楼主可以试下.
将数据库置于安装状态(STARTUP MOUNT)或将文件脱机(ALTER DATABASE DATAFILE 'filename' OFFLINE);
在操作系统上移动文件;
执行 ALTER DATABASE RENAME FILE 'old_filename' TO 'new_filename'; 语句重定位文件。
文件是剪切走的,这样他找不到old_filename也可以么
USER 为 "SYS"
sys@SZTYORA> select file#,ts#,name from v$datafile; FILE# TS# NAME
---------- ---------- ------------------------------------------------------------------------------
1 0 D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\SYSTEM01.DBF
2 1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\UNDOTBS01.DBF
3 2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\SYSAUX01.DBF
4 4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\USERS01.DBF
5 6 D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\SM_DATA.DBF
6 7 D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\UBLOCK01.DBF
7 10 D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\EYGLE_01.DBF
9 13 D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\BOOKTBS_01.DBF已选择8行。sys@SZTYORA> select ts#, name from v$tablespace; TS# NAME
---------- ------------------------------------------------------------------------------
0 SYSTEM
1 UNDOTBS1
2 SYSAUX
4 USERS
10 EYGLE
6 SM_DATA
7 UBLOCK
9 TEMP_SWITCH
13 BOOKTBS已选择9行。sys@SZTYORA> alter tablespace eygle offline;表空间已更改。sys@SZTYORA> host
Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.C:\Documents and Settings\Administrator>e:E:\>md oracle_dbE:\>dir
驱动器 E 中的卷是 wzs
卷的序列号是 A04B-203A E:\ 的目录2011-01-18 09:40 <DIR> 2010年年会照片
2010-10-11 17:09 <DIR> 42755551ca76dd5a669fb1
2010-09-27 13:17 <DIR> 783206d2cc7e051abd
2010-10-22 13:43 <DIR> Apress
2010-10-13 09:22 <DIR> luoyoumou_245
2010-12-14 14:37 <DIR> mysql_mv
2011-02-11 16:55 <DIR> oracle_db
0 个文件 0 字节
7 个目录 181,440,536,576 可用字节E:\>copy D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\EYGLE_01.DBF E:\oracle_db\
已复制 1 个文件。E:\>cd E:\oracle_dbE:\oracle_db>dir
驱动器 E 中的卷是 wzs
卷的序列号是 A04B-203A E:\oracle_db 的目录2011-02-11 16:56 <DIR> .
2011-02-11 16:56 <DIR> ..
2011-02-11 16:52 1,073,750,016 EYGLE_01.DBF
1 个文件 1,073,750,016 字节
2 个目录 180,366,786,560 可用字节E:\oracle_db>exitsys@SZTYORA> alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\EYGLE_01.DBF' to 'E:\oracle_db\EYGLE_01.DBF';数据库已更改。sys@SZTYORA> ALTER tablespace eygle online;表空间已更改。sys@SZTYORA> select file#,ts#,name from v$datafile; FILE# TS# NAME
---------- ---------- ------------------------------------------------------------------------------
1 0 D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\SYSTEM01.DBF
2 1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\UNDOTBS01.DBF
3 2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\SYSAUX01.DBF
4 4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\USERS01.DBF
5 6 D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\SM_DATA.DBF
6 7 D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\UBLOCK01.DBF
7 10 E:\ORACLE_DB\EYGLE_01.DBF
9 13 D:\ORACLE\PRODUCT\10.2.0\ORADATA\SZTYORA\BOOKTBS_01.DBF已选择8行。sys@SZTYORA>
old_filename 指的是原来的路径和文件名
如果是关闭状态下移走的,是不会有影响的 在mount状况下
startup mount;
alter database rename file 'old file location' to 'new file location';
alter database open ;
这样应该是没问题的
数据文件位置:
select name from v$datafile;
日志文件位置:
select * from v$logfile;
控制文件位置:
select name from v$controlfile;
临时文件位置:
select name from v$tempfile;
全库移动的话,就是移动上面的所有内容.当然,只移动数据文件的话,就datafile那一行.
移动方法:关闭oracle数据库,然后将文件拷贝到新地方.原地方的文件现在要留一份.然后
startup mount;
数据文件这样移动(有多少个数据文件就有多少条这个语句,下同):
alter database rename file 'E:\ORACLE\ORADATA\DBSERVER\SYSTEM01.DBF' to 'H:\oradata\dbserver\system01.dbf';
日志文件这样移动:
alter database rename file 'E:\ORACLE\ORADATA\DBSERVER\REDO01.LOG' to 'H:\oradata\dbserver\redo01.log';
控制文件直接在pfile里改路径.改完以后执行下面的语句重建一下spfile.
create spfile from pfile='E:\oracle\admin\dbserver\pfile\init.ora';
以后控制文件应该就是按照init.ora里规定的路径了走了.
临时文件没法用上面的方法移动,只能通过重建的方法.首先,需要知道目前用的临时表空间名.(比如是temp)
select username ,temporary_tablespace from dba_users;
然后在新位置重新建立一个临时表空间的文件.
create temporary tablespace temp2 tempfile 'h:\ORADATA\dbserver\TEMP01.DBF' size 10M ;
然后指定使用新的临时表空间
alter database default temporary tablespace temp2;
原来的表空间如果想删除的话:
drop tablespace temp including contents and datafiles;
然后关闭oracle,老位置的文件夹可以改个名,然后startup.如果没有报什么错误,而且用最开始的语句看的所有文件都到了新的地方.OK,移植成功.老位置的文件可以del了.
我就是这样将工业机数据库移植到个人本本上的=.=(本本E盘可用空间太小了).楼主可以试下.