迁移数据库的相关文件到存储中(目录不相同)

来源:互联网 发布:淘宝删除差评的链接 编辑:程序博客网 时间:2024/06/10 20:15

迁移所有数据文件、日志文件、控制文件到新的存储(不同目录)


将控制文件、数据文件、日志文件迁移到新的存储上

一、安装11g数据库,添加一块磁盘,作为新的存储。

添加一块8g磁盘

 

[root@super ~]# fdisk /dev/sdb

[root@super ~]# mkfs.ext4 /dev/sdb1

[root@super ~]# mkdir /data -p

[root@super ~]# chown oracle:oinstall /data-R

[root@super ~]# chmod 775 /data -R

[root@super ~]# mount /dev/sdb1 /data

[root@super ~]# df -h


修改/etc/fstab 添加挂载点。

以上操作模拟添加一块存储,并挂载到目录上

二、移动控制文件

1)查看当前控制文件

NAME            TYPE        VALUE

--------------- ----------- ------------------------------

control_files   string     /oradata/orcl/control01.ctl, /

                           oradata/orcl/control02.ctl, /o

                           radata/orcl/control03.ctl

控制文件有三份,放在/oradata下

2)修改control_files参数,关闭数据库。

SQL>alter system set control_files='/data/orcl/control01.ctl','/data/orcl/control02.ctl','/data/orcl/control03.ctl' scope=spfile;

3)  使用操作系统命令移动控制文件,打开数据库查看参数。

[oracle@super orcl]$ cp /oradata/orcl/*.ctl /data/orcl/ -p

三、移动数据文件

1) 查看数据文件和临时文件。

 

SQL> col file_name for a30

SQL> selecttablespace_name,file_id,file_name from dba_data_files;

 

TABLESPACE_NAME                   FILE_ID FILE_NAME

------------------------------ ----------------------------------------

USERS                                   4/oradata/orcl/users01.dbf

UNDOTBS1                                3/oradata/orcl/undotbs01.dbf

SYSAUX                                  2/oradata/orcl/sysaux01.dbf

SYSTEM                                  1 /oradata/orcl/system01.dbf

2)移动systems表空间对应的数据文件

关闭数据库

SQL> shutdown immediate;

操作系统cp到指定位置

[oracle@super orcl]$ cp   /oradata/orcl/system01.dbf    /data/orcl/

启动到mount

SQL> startup mount;

更改数据文件在控制文件的记录

SQL> alter database rename file  '/oradata/orcl/system01.dbf' to'/data/orcl/system01.dbf';

打开数据库

SQL> alter database open;

查看结果

SQL> select file_id,file_name fromdba_data_files where tablespace_name='SYSTEM';

 

  FILE_ID FILE_NAME

---------- --------------------

        1 /data/orcl/system01.

           dbf

 

3)移动sysaux、users表空间对应数据文件

将sysaux对应的2号数据文件offline

SQL> alter database datafile 2 offline;

使用操作系统cp到相应位置

[oracle@super ~]$ cp   /oradata/orcl/sysaux01.dbf    /data/orcl/

更改控制文件的内容

SQL>alter database rename file  '/oradata/orcl/sysaux01.dbf' to '/adata/orcl/sysaux01.dbf';

修复datafile 2;

SQL> recover datafile 2;

使2号文件online

SQL> alter database datafile 2 online;

Users等其他非undo或temp文件都用此方法实现。

4)移动undo表空间数据文件

创建新的undo表空间

SQL> create UNDO tablespace undotbs2datafile '/data/orcl/undotbs02.dbf'  size50m autoextend on;

切换使用新建undo表空间

SQL> alter system set undo_tablespace=undotbs2;

删除旧的undo,如果状态是offline就drop

SQL> select tablespace_name , status ,count(*) from dba_rollback_segs group by tablespace_name , status;

 

TABLESPACE_NAME                STATUS             COUNT(*)

---------------------------------------------- ----------

UNDOTBS1                       OFFLINE                  10

SYSTEM                         ONLINE                    1

UNDOTBS2                       ONLINE                   10

SQL> drop tablespace UNDOTBS1 includingcontents and datafiles;

 

5)移动临时表空间数据文件

SQL> selectfile_name,file_id,tablespace_name, (bytes)/1024/1024 MB ,autoextensible fromdba_temp_files;

 

FILE_NAME                  FILE_ID TABLESPACE_NAME     MB AUT

--------------------   ------- ----------------- -------- ---

/oradata/orcl/temp01.dbf     1   TEMP                 29 YES

创建新的临时表空间

SQL> CREATE TEMPORARY TABLESPACE temp01

 2  TEMPFILE'/data/orcl/temp01.dbf' size 29m autoextend on ; 

更改默认临时表空间

SQL> ALTER DATABASE DEFAULT TEMPORARYTABLESPACE temp01;

四、移动日志文件

查看当前日志

SQL> select member from v$logfile;

 

MEMBER

--------------------------------------------------------------------------------

/oradata/orcl/redo03.log

/oradata/orcl/redo02.log

/oradata/orcl/redo01.log

添加一组日志

alter database add logfile group 4('/data/orcl/redo04.log') size 50m;

观察日志状态,归档状态

SQL> select group#,bytes/1024/1024mb,status,archived from v$log;

 

   GROUP#         MB STATUS           ARC

---------- ---------- ---------------- ---

        1         50 INACTIVE         YES

        2         50 CURRENT          NO

        3         50 INACTIVE         YES

        4         50 UNUSED           YES

      

第一组和第三组状态不是current和active且已经归档,删掉这两组日志

SQL> alter database drop logfile group1;

SQL> alter database drop logfile group 3;

在新位置添加日志

alter database add logfile group 1('/data/orcl/redo01.log') size 50m;

alter database add logfile group 3('/data/orcl/redo03.log') size 50m;

切换日志

SQL> alter system switch logfile;

使得日志归档

SQL> alter system checkpoint;

查看日志组状态,此时第2组第四组可以删除

SQL> alter database drop logfile group 2;

SQL> alter database drop logfile group 4;

添加第二组日志

alter database add logfile group 2('/data/orcl/redo02.log') size 50m;

 

 

 

 

 

 

0 0
原创粉丝点击