技术知识
关于Oracle数据库的归档路径
归档日志路径三个参数的关系
[root@oracle19c ~]# mkdir /oraclearchivelog
[root@oracle19c ~]# chown oracle:oinstall /oraclearchivelog
[root@oracle19c ~]# su - oracle
Last login: Wed Apr 19 17:12:39 CST 2023 on pts/0
[oracle@oracle19c ~]$ cd /oraclearchivelog
[oracle@oracle19c oraclearchivelog]$ ls -l
total 0
[oracle@oracle19c oraclearchivelog]$ ls -lat
total 4
drwxr-xr-x. 2 oracle oinstall 6 Apr 19 17:13 .
dr-xr-xr-x. 22 root root 4096 Apr 19 17:13 ..
[oracle@oracle19c oraclearchivelog]$ chmod 755 /oraclearchivelog
===============================================================================
oracle 归档日志路径三个参数的关系
DB_RECOVERY_FILE_DEST
LOG_ARCHIVE_DEST
LOG_ARCHIVE_DEST_n
show parameter DB_RECOVERY_FILE_DEST
show parameter LOG_ARCHIVE_DEST
show parameter LOG_ARCHIVE_DEST_1
db_recovery_file_dest:默认的指定闪回恢复区路径
log_archive_dest:指定归档文件存放的路径,所有归档路径必须是本地的
log_archive_dest_n:默认值为’’,n从1到10,归档地址可以为本地磁盘,或者网络设备
注意:
当db_recovery_file_dest、log_archive_dest、log_archive_dest_n都没有设置时,归档日志会存放在$ORACLE_HOME/dbs/arch/目录下
未设置db_recovery_file_dest,则需关闭闪回(alter database flashback off;)
pfile:文本参数文件又叫静态参数文件,ASCII文本文件(可以直接编辑)
spfile:服务器参数文件。二进制文件(不可以直接编辑,db启动后通过sql命令在线修改。)。
判断db系统以pfile还是spfile启动:如果Value为空,则表示使用以pfile启动db,未创建spfile。
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中
可以通过如下命令:
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可以共存
共存:
db_recovery_file_dest可以和log_archive_dest_n共存
log_archive_dest可以和log_archive_duplex_dest共存
db_recovery_file_dest和log_archive_dest_n不能和log_archive_dest共存
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=/archive_log',而OS中并没有archive_log这个目录,那么Oracle会在"/"归档。
常用命令:
关闭数据库: shutdown immediate;
开启数据库: startup mount; 注意:修改归档模式必须是在mount下
开启归档模式:alter database archivelog;
查看数据库的归档模式:archive log list;
查看spfile存放位子:show parameter spfile;
查看日志默认存放路径:show parameter DB_RECOVERY_FILE_DEST;
查看日志存放路径:show parameter log_archive_dest;
!!!!可以设置LOG_ARCHIVE_DEST_n,如果这样,那么归档日志不再存放于DB_RECOVERY_FILE_DEST中,而是存放于LOG_ARCHIVE_DEST_n设置的目录中!!!!
检查flash recovery area的使用情况(db_recovery_file_dest模式下):select * from V$FLASH_RECOVERY_AREA_USAGE
修改log_archive_dest日志存放路径:alter system set log_archive_dest='路径' scope=both;
修改数据库的状态为打开:alert database open;
切换日志(强制生成日志):alter system switch logfile;
===============================================================================
查看归档日志占用空间:
SQL>
show parameter db_
set linesize 300
col NAME for a40
col FILE_TYPE for a30
col SPACE_LIMIT for 999,999,999,999,999
select * from v$recovery_file_dest;
select * From v$flash_recovery_area_usage;
SELECT SPACE_LIMIT/1024/1024/1024 AS "Quota_GB",
SPACE_USED/1024/1024/1024 AS "Used_GB",
SPACE_USED/SPACE_LIMIT *100 "Used_%",
space_reclaimable AS reclaimable,
number_of_files AS files FROM v$recovery_file_dest;
SQL>
archive log list
show parameter db_recovery
show parameter log_archive_dest_1
show parameter db_recovery_file_dest_size
alter system set log_archive_dest_1='location=/oraclearchivelog' scope=spfile;
alter system set db_recovery_file_dest_size=600G;
ALTER SYSTEM SET db_recovery_file_dest_size=600G scope=both;
log_archive_dest和log_archive_dest_1参数不能同时设置
即如果启用了log_archive_dest_1参数就不能再使用log_archive_dest参数重复设置了
SQL>
shutdown immediate
startup
SQL>
archive log list
show parameter db_recovery
show parameter log_archive_format
show parameter DB_RECOVERY_FILE_DEST
alter system set log_archive_dest_1='location=/oraclearchivelog' scope=spfile;
alter system switch logfile;
set linesize 300
col NAME for a50
select recid, name, first_time from v$archived_log;
删除归档日志
RMAN>
list archivelog all;
delete archivelog until time 'sysdate-1';
delete obsolete;
crosscheck archivelog all;
delete expired archivelog all;
===============================================================================
!!!!可以设置LOG_ARCHIVE_DEST_n,如果这样,那么归档日志不再存放于DB_RECOVERY_FILE_DEST中,而是存放于LOG_ARCHIVE_DEST_n设置的目录中!!!!
如下:
设置了LOG_ARCHIVE_DEST_n,则归档日志存放在log_archive_dest_1, location=/oraclearchivelog
SQL> show parameter db_recovery
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /oradata/fast_recovery_area
db_recovery_file_dest_size big integer 600G
===============================================================================
SQL> show parameter DB_RECOVERY_FILE_DEST;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /oradata/fast_recovery_area
db_recovery_file_dest_size big integer 600G
SQL> show parameter log_archive_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string
log_archive_dest_1 string location=/oraclearchivelog
log_archive_dest_10 string
log_archive_dest_11 string
log_archive_dest_12 string
log_archive_dest_13 string
log_archive_dest_14 string
log_archive_dest_15 string
log_archive_dest_16 string
log_archive_dest_17 string
log_archive_dest_18 string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_19 string
log_archive_dest_2 string
log_archive_dest_20 string
log_archive_dest_21 string
log_archive_dest_22 string
log_archive_dest_23 string
log_archive_dest_24 string
log_archive_dest_25 string
log_archive_dest_26 string
log_archive_dest_27 string
log_archive_dest_28 string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_29 string
log_archive_dest_3 string
log_archive_dest_30 string
log_archive_dest_31 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
log_archive_dest_7 string
log_archive_dest_8 string
log_archive_dest_9 string
log_archive_dest_state_1 string enable
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_10 string enable
log_archive_dest_state_11 string enable
log_archive_dest_state_12 string enable
log_archive_dest_state_13 string enable
log_archive_dest_state_14 string enable
log_archive_dest_state_15 string enable
log_archive_dest_state_16 string enable
log_archive_dest_state_17 string enable
log_archive_dest_state_18 string enable
log_archive_dest_state_19 string enable
log_archive_dest_state_2 string enable
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_20 string enable
log_archive_dest_state_21 string enable
log_archive_dest_state_22 string enable
log_archive_dest_state_23 string enable
log_archive_dest_state_24 string enable
log_archive_dest_state_25 string enable
log_archive_dest_state_26 string enable
log_archive_dest_state_27 string enable
log_archive_dest_state_28 string enable
log_archive_dest_state_29 string enable
log_archive_dest_state_3 string enable
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_30 string enable
log_archive_dest_state_31 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
SQL>