Oracle修改归档文件和数据文件位置

来自https://www.hsli.top

Linux硬盘规划

首先分析一下linux的硬盘规划

mark

可见分配的/export目录才是挂载的硬盘,数据文件等等应该放在这个位置

root登录创建文件夹,分配给用户,用groups命令查看当前用户所属组

修改archive路径

sysdba登录,查看闪回路径

1
2
3
4
5
6
7
SQL> show parameter db_recovery

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /opt/oracle/flash_recovery_are
a
db_recovery_file_dest_size big integer 3882M

可见闪回路径的目录和大小限制

修改闪回路径

1
2
3
SQL> alter system set log_archive_dest_1='location=/export/DataBase/archives';

System altered.

注意该目录需要有oracle用户权限

完了之后重启数据库,查看是否修改成功

1
2
3
4
5
6
7
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /export/DataBase/archives
Oldest online log sequence 1491
Next log sequence to archive 1493
Current log sequence 1493

切换日志试一下看有没有新的归档日志文件产生

1
2
3
4
5
6
7
SQL> alter system switch logfile;

System altered.

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

跑到那个目录下面看一下,有新的归档日志文件了

归档日志路径设置规则

1
select v."NAME",v."VALUE",v."DESCRIPTION" from v$parameter v

看一下,可以看到有很多和归档相关的目录,大致分为三类

  • log_archive_dest 指定归档文件存放路径

  • log_archive_dest_n oracle最多支持归档文件放在10个地方,n从1到10

  • db_recovery_file_dest 指定闪回恢复区路径

总体而言,log_archive_dest_n的优先级最高,如果设置了他,db_recovery_file_dest设置了也不起作用,log_archive_dest不能设置,如果设置了db_recovery_file_dest,就不能设置log_archive_dest,如果设置了log_archive_dest另外亮着都不能设置。。。表示很无语

  1. 如果设置了DB_RECOVERY_FILE_DEST,就不能设置LOG_ARCHIVE_DEST,默认的归档日志存放于DB_RECOVERY_FILE_DEST指定的闪回恢复区中。可以设置LOG_ARCHIVE_DEST_n,如果这样,那么归档日志不再存放于DB_RECOVERY_FILE_DEST中,而是存放于LOG_ARCHIVE_DEST_n设置的目录中。如果想要归档日志继续存放在DB_RECOVERY_FILE_DEST中,可以通过如下命令:

    1
    alter system set log_archive_dest_1=’location=USE_DB_RECOVERY_FILE_DEST’;
  2. 如果设置了LOG_ARCHIVE_DEST,就不能设置LOG_ARCHIVE_DEST_n和DB_RECOVERY_FILE_DEST。如果设置了LOG_ARCHIVE_DEST_n,就不能设置LOG_ARCHIVE_DEST。也就是说,LOG_ARCHIVE_DEST参数和DB_RECOVERY_FILE_DEST、LOG_ARCHIVE_DEST_n都不共存。而DB_RECOVERY_FILE_DEST和LOG_ARCHIVE_DEST_n可以共存。

  3. LOG_ARCHIVE_DEST只能与LOG_ARCHIVE_DUPLEX_DEST共存。这样可以设置两个归档路径。LOG_ARCHIVE_DEST设置一个主归档路径,LOG_ARCHIVE_DUPLEX_DEST设置一个从归档路径。所有归档路径必须是本地的。

  4. 如果LOG_ARCHIVE_DEST_n设置的路径不正确,那么Oracle会在设置的上一级目录归档。比如设置LOG_ARCHIVE_DEST_1=’location=C:\archive1’,而OS中并没有archive1这个目录,那么Oracle会在C盘归档。

移动数据库文件

关库

1
2
3
4
5
6
7
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

移动(复制)数据库文件到目标路径

1
[[email protected] ~]$ cp /opt/oracle/oradata/BIZDB/users01.dbf /export/DataBase/data/users01.dbf

重新挂载,修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[[email protected] ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Thu Apr 6 11:16:15 2017

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup mount
ORACLE instance started.

Total System Global Area 6680915968 bytes
Fixed Size 2213936 bytes
Variable Size 3556771792 bytes
Database Buffers 3087007744 bytes
Redo Buffers 34922496 bytes
Database mounted.
SQL> alter database rename file '/opt/oracle/oradata/BIZDB/users01.dbf' to '/export/DataBase/data/users01.dbf';

Database altered.

打开数据库

1
2
3
SQL> alter database open;

Database altered.

查看一下

1
2
3
4
5
6
7
8
SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/opt/oracle/oradata/BIZDB/system01.dbf
/opt/oracle/oradata/BIZDB/sysaux01.dbf
/opt/oracle/oradata/BIZDB/undotbs01.dbf
/export/DataBase/data/users01.dbf

真是个伤筋动骨的操作啊

如果文章有用,请随意打赏