Oracle更改数据文件位置
创新互联公司长期为千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为阿拉尔企业提供专业的成都做网站、成都网站制作、成都外贸网站建设,阿拉尔网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。
方法一:offline表空间
1、offline表空间:alter tablespace tablespace_name offline;
2、复制数据文件到新的目录;
3、rename修改表空间,并修改控制文件;
4、online表空间;
1、offline表空间zerone
SQL select name from v$datafile;
NAME
--------------------------------------------------------------------------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ZERONE01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\RMANTS.DBF
已选择7行。
SQL alter tablespace zerone offline;
表空间已更改。
2、复制数据文件到新的目录
复制数据文件C:\ORACLE\PRODUCT\10.2.0\ORADATA\ZERONE01.DBF到C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ZERONE01.DBF。
3、rename修改表空间数据文件为新的位置,并修改控制文件
SQL alter tablespace zerone rename datafile 'c:\oracle\product\10.2.0\oradata\zerone01.dbf' to 'c:\oracle\product\10.2.0\oradata\orcl\zerone01.dbf';
表空间已更改。
4、online表空间
SQL alter tablespace zerone online;
表空间已更改。
SQL select name from v$datafile;
NAME
--------------------------------------------------------------------------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ZERONE01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\RMANTS.DBF
已选择7行。
SQL select file_name,tablespace_name from dba_data_files where tablespace_name='ZERONE';
FILE_NAME TABLESPACE_NAME
------------------------------------------------------------------------------------------------
ZERONE C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ZERONE01.DBF
方法二:SQL修改数据文件位置
1、关闭数据库;
2、复制数据文件到新的位置;
3、启动数据库到mount状态;
4、通过SQL修改数据文件位置;
5、打开数据库;
1、关闭数据库
SQL select name from v$datafile;
NAME
--------------------------------------------------------------------------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ZERONE01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\RMANTS.DBF
已选择7行。
SQL shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
2、复制数据文件到新的位置;
将数据文件C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ZERONE01.DBF复制到C:\ORACLE\PRODUCT\10.2.0\ORADATA\ZERONE01.DBF。
3、启动数据库到mount状态;
SQL startup mount
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 96470372 bytes
Database Buffers 67108864 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
4、通过SQL修改数据文件位置;
SQL alter database rename file 'c:\oracle\product\10.2.0\oradata\orcl\zerone01.dbf' to 'c:\oracle\product\10.2.0\oradata\zerone01.dbf';
数据库已更改。
5、打开数据库;
SQL alter database open;
数据库已更改。
SQL select name from v$datafile;
NAME
--------------------------------------------------------------------------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ZERONE01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\RMANTS.DBF
已选择7行。
SQL select file_name,tablespace_name from dba_data_files where tablespace_name='ZERONE';
FILE_NAME TABLESPACE_NAME
-------------------------------------------------------------------------------------------------
ZERONE C:\ORACLE\PRODUCT\10.2.0\ORADATA\ZERONE01.DBF
可以用操作系统命令移动··
------------
sql host copy 文件A to 文件B
说白了,就是复制粘贴。
你只要把数据文件移植就可以了
采用offline的方式
第一步,将表空间offline
第二步,cp文件到新的目录并rename修改控制文件
第三步,将相应表空间online
当然这种方式同样会影响期间的表空间使用。
以下是简单的示范步骤:
1.将表空间offline
[oracle@jumper oracle]$ sqlplus "/ as sysdba"
SQL archive log list;
Database log mode No Archive Mode
Automatic archival Enabled
Archive destination /opt/oracle/oradata/conner/archive
Oldest online log sequence 6
Current log sequence 9
SQL select name from v$datafile;
NAME
---------------------------------------------------------
/opt/oracle/oradata/conner/system01.dbf
/opt/oracle/oradata/conner/undotbs01.dbf
/opt/oracle/oradata/conner/users01.dbf
SQL alter tablespace users offline;
Tablespace altered.
2.拷贝相应的数据文件
SQL ! cp /opt/oracle/oradata/conner/users01.dbf /opt/oracle/oradata/users01.dbf
SQL alter tablespace users rename datafile '/opt/oracle/oradata/conner/users01.dbf'
to '/opt/oracle/oradata/users01.dbf';
Tablespace altered.
3.将表空间online
SQL alter tablespace users online;
Tablespace altered.
SQL select name from v$datafile;
NAME
------------------------------------------------------------------------
/opt/oracle/oradata/conner/system01.dbf
/opt/oracle/oradata/conner/undotbs01.dbf
/opt/oracle/oradata/users01.dbf
这是linux下的数据文件移植,windows步骤一样,只是路径不同
先理解下你的意思
你是想知道自定义安装时如何设置数据文件(.dbf)的路径,
原因是找不到默认的数据文件的安装路径?
如果是的话,用管理员账号登陆sqlplus,执行一个查询:
select name from v$datafile;
数据文件的安装路径就出来了。
windows下面的话,修改注册表,可以搜索ORACLE_HOME,修改,可以在命令行下面使用set检查环境变量进行验证。
在linux下的话,修改.profile或者.bash_profile的路径,重新登录即可,可以在命令行下面使用set检查环境变量进行验证。
Oracle数据文件可以在数据库OPEN的时候被重命名或移动,但此时表空间必须为只读,这将允许用户从表中查询,但禁止他们这样做的插入,更新和删除,在表空间至于只读状态的时候,冻结数据文件块头。阻止更新数据文件块头,此时才能在线拷贝数据文件!