Oracle日志相关操作

news/2025/2/13 6:12:25/

1.归档日志设置

# 切换账号
$ su - oracle# 登录oracle的sys账户
$ sqlplus / as sysdbasql> archive log list;   #查看是不是归档方式  
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     367
Next log sequence to archive   369
Current log sequence    # 注:其中Archive Mode表示是归档方式,可以不用进行以下操作sql> alter system set log_archive_start=true scope=spfile; #启用主动归档  
sql> shutdown immediate;  
sql> startup mount;    #打开控制文件,不打开数据文件  
sql> alter database archivelog; #将数据库切换为归档模式  
sql> alter database open;   #将数据文件打开sql> archive log list;   #查看此时是否处于归档模式  
#查询以确定数据库位于archivelog模式中且归档过程正在运行  
sql> select log_mode from v$database;  
sql> select archiver from v$instance;  
#日志切换  
sql> alter system switch logfile;  
#在oracle情况中运行如下查询:  
sql> select name from v$archived_log;

2.设置非归档模式

sql> archive log list;   #查看是否是归档方式  
sql> alter system set log_archive_start=false scope=spfile; #禁用自动归档  
sql> shutdown immediate;  
sql> startup mount;    #打开控制文件,不打开数据文件  
sql> alter database noarchivelog; #将数据库切换为非归档模式  
sql> alter database open;   #将数据文件打开  
sql> archive log list;   #查看此时便处于非归档模式

3.阿里云设置oracle实时同步时,oracle的准备

查看数据库是否支持

# 查看数据库版本
sql> select * from v$version;
#可以看到版本是c12sql> select version from v$instance;# 查看数据库不是cdb类型(datawork不支持db)
sql> select name,cdb,open_mode,con_id from v$database;

创建同步账号,并赋予相应权限

# 创建oracle同步账号
sql> CREATE USER username IDENTIFIED BY password;
# 创建test账号
sql> CREATE USER test IDENTIFIED BY test123;#给同步账户设置相应权限
grant create session to '同步账号';  //授权同步账号登录数据库。
grant connect to '同步账号';  //授权同步账号连接数据库。
grant select on nls_database_parameters to '同步账号';  //授权同步账号查询数据库的nls_database_parameters系统配置。
grant select on all_users to '同步账号';  //授权同步账号查询数据库中的所有用户。
grant select on all_objects to '同步账号';  //授权同步账号查询数据库中的所有对象。
grant select on DBA_MVIEWS to '同步账号';  //授权同步账号查看数据库的物化视图。
grant select on DBA_MVIEW_LOGS to '同步账号';  //授权同步账号查看数据库的物化视图日志。
grant select on DBA_CONSTRAINTS to '同步账号';  //授权同步账号查看数据库所有表的约束信息。
grant select on DBA_CONS_COLUMNS to '同步账号';  //授权同步账号查看数据库中所有表指定约束中所有列的相关信息。
grant select on all_tab_cols to '同步账号';  //授权同步账号查看数据库中表、视图和集群中列的相关信息。
grant select on sys.obj$ to '同步账号';  //授权同步账号查看数据库中的对象。sys.obj$表是Oracle字典表中的对象基础表,存放Oracle的所有对象。
grant select on SYS.COL$ to '同步账号';  //授权同步账号查看数据库表中列的定义信息。SYS.COL$用于保存表中列的定义信息。
grant select on sys.USER$ to '同步账号';  //授权同步账号查看数据库的系统表。sys.USER$是用户会话的默认服务。
grant select on sys.cdef$ to '同步账号';  //授权同步账号查看数据库的系统表。
grant select on sys.con$ to '同步账号';  //授权同步账号查看数据库的约束信息。sys.con$记录了Oracle的相关约束信息。
grant select on all_indexes to '同步账号';  //授权同步账号查看数据库的所有索引。
grant select on v_$database to '同步账号';  //授权同步账号查看数据库的v_$database视图。
grant select on V_$ARCHIVE_DEST to '同步账号';  //授权同步账号查看数据库的V_$ARCHIVE_DEST视图。
grant select on v_$log to '同步账号';  //授权同步账号查看数据库的v_$log视图。v_$log用于显示控制文件中的日志文件信息。
grant select on v_$logfile to '同步账号';  //授权同步账号查看数据库的v_$logfile视图。v_$logfile包含有关Redo日志文件的信息。
grant select on v_$archived_log to '同步账号';  //授权同步账号查看数据库的v$archived_log视图。v$archived_log包含有关归档日志的相关信息。
grant select on V_$LOGMNR_CONTENTS to '同步账号';  //授权同步账号查看数据库的V_$LOGMNR_CONTENTS视图。
grant select on DUAL to '同步账号';   //授权同步账号查看数据库的DUAL表。DUAL是用来构成select语法规则的虚拟表,Oracle的中DUAL中仅保留一条记录。
grant select on v_$parameter to '同步账号';  //授权同步账号查看数据库的v_$parameter视图。v$parameter是Oracle的动态字典表,保存了数据库参数的设置值。
grant select any transaction to '同步账号';  //授权同步账号查看数据库的任意事务。
grant execute on SYS.DBMS_LOGMNR to '同步账号';  //授权同步账号使用数据库的Logmnr工具。Logmnr工具可以帮助您分析事务,并找回丢失的数据。
grant alter session to '同步账号';  //授权同步账号修改数据库的连接。
grant select on dba_objects to '同步账号';  //授权同步账号查看数据库的所有对象。
grant select on v_$standby_log to '同步账号';  //授权同步账号查看数据库的v_$standby_log视图。v_$standby_log包含备用库的归档日志。
grant select on v_$ARCHIVE_GAP to '同步账号';  //授权同步账号查询缺失的归档日志。# 赋予相应权限,以test为例
grant create session to test; 
grant connect to test;  
grant select on nls_database_parameters to test;
grant select on all_users to test;
grant select on all_objects to test; 
grant select on DBA_MVIEWS to test; 
grant select on DBA_MVIEW_LOGS to test; 
grant select on DBA_CONSTRAINTS to test;
grant select on DBA_CONS_COLUMNS to test; 
grant select on all_tab_cols to test;  
grant select on sys.obj$ to test;  
grant select on SYS.COL$ to test;  
grant select on sys.USER$ to test;
grant select on sys.cdef$ to test; 
grant select on sys.con$ to test;  
grant select on all_indexes to test; 
grant select on v_$database to test;
grant select on V_$ARCHIVE_DEST to test;
grant select on v_$log to test; 
grant select on v_$logfile to test;  
grant select on v_$archived_log to test;  
grant select on V_$LOGMNR_CONTENTS to test; 
grant select on DUAL to test;   
grant select on v_$parameter to test;  
grant select any transaction to test;  
grant execute on SYS.DBMS_LOGMNR to test; 
grant alter session to test;  
grant select on dba_objects to test;  
grant select on v_$standby_log to test; 
grant select on v_$ARCHIVE_GAP to test; 
grant LOGMINING TO test;# 如果您涉及使用离线全量同步数据,还需要执行如下命令,授权同步账号所有表的查询权限。
sql> grant select any table to '同步账号'; # Oracle 12c及之后的版本需要执行如下命令,授权同步账号可以进行日志挖掘。Oracle 12c之前的版本,内置日志挖掘功能,无需执行该命令。
sql> grant LOGMINING TO '同步账号';

开启补充日志
您可以根据需要选择开启合适的补充日志,SQL语句如下。

sql> alter database add supplemental log data(primary key) columns; //为数据库的主键列开启补充日志。
sql> alter database add supplemental log data(unique) columns; //为数据库的唯一索引列开启补充日志。

切换Redo日志文件
开启补充日志后,您需要多次(一般建议执行5次)执行如下命令,切换Redo日志文件。

sql> alter system switch logfile;

查看数据库的字符编码

sql> select * from v$nls_parameters where PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');

数据集成同步数据时,仅支持UTF8、AL32UTF8、AL16UTF16及ZHS16GBK编码格式。如果数据库中包含不支持的字符编码,请进行修改后再执行数据同步。

检查数据库表的数据类型
您可以使用查看表的SQL相关语句(SELECT)查询数据库表的数据类型。示例查看’tablename’表数据类型的语句如下。

sql> select COLUMN_NAME,DATA_TYPE from all_tab_columns where TABLE_NAME='tablename'; 或sql> desc tablename;

核对数据类型是否被datawork支持(参考:https://help.aliyun.com/zh/dataworks/user-guide/oracle-data-source?spm=a2c4g.11186623.0.i52)

4.日志爆满问题处理及设置日志自动清理脚本

情况一:账户可以登录时

# 进入RMAN
sql> rman target /# 查看备份参数
RMAN> show all;using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name S4ORCL are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/12c/dbs/snapcf_s4orcl.f'; # default# 查看存储日志
RMAN> crosscheck archivelog all;# 验证并删除过期归档日志
RMAN> delete noprompt expired archivelog all;# 验证并删除过期归档日志,方式二
RMAN> delete noprompt archivelog all completed before '时间';
# 其中,时间需要根据情况设置,表示删除早于该时间的归档日志,比如'SYSDATE - 3',表示保留近3天的日志

设置自动清理日志脚本

rman target / nocatalog << EOF
run {
allocate channel d1 type disk;
delete noprompt archivelog all completed before 'SYSDATE - 3';
release channel d1;
}
exit;
EOF

其中,'SYSDATE - 3’表示保留近三天的日志,按需设置

归档日志的备份和恢复

# 备份归档日志
RMAN> backup archivelog all;# 在进行数据库恢复时,可能需要使用备份的归档日志进行恢复。
RMAN> restore archivelog all;# 恢复完归档日志后,需要将恢复的归档日志应用到数据库中,可以在SQL*Plus命令行界面输入以下命令进行恢复:
sql> recover database;

情况二:存储占满导致无法登录账户时
先删除一部分日志文件后,使得账户能够登录oracle,再进行情况一的操作删除多余日志

# 使用root用户
# 查看存储情况
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.8G     0  3.8G   0% /dev
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           3.9G  1.1M  3.9G   1% /run
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/vda1        69G   38G   28G  58% /
tmpfs           781M     0  781M   0% /run/user/0# 其中/dev/vda1中的Used表示当前日志存储空间剩余容量# 按天删除
# 查看某天日志数量
$ ls /u01/app/oracle/admin/s4orcl/adump |grep 20230701 |wc -l
# 删除某天日志
$ rm -rf /u01/app/oracle/admin/s4orcl/adump/*20230701*# 按月删除
# 查看某月日志数量
$ ls /u01/app/oracle/admin/s4orcl/adump |grep 202307 |wc -l
# 删除某月10天日志
$ rm -rf /u01/app/oracle/admin/s4orcl/adump/*2023070*
$ rm -rf /u01/app/oracle/admin/s4orcl/adump/*2023071*
$ rm -rf /u01/app/oracle/admin/s4orcl/adump/*2023072*
$ rm -rf /u01/app/oracle/admin/s4orcl/adump/*2023073*
# 删除某月日志
$ rm -rf /u01/app/oracle/admin/s4orcl/adump/*202307*

http://www.ppmy.cn/news/1015008.html

相关文章

ArcGIS制作带蒙版的遥感影像地图

这次文章我们来介绍一下&#xff0c;如何通过一个系统的步骤完成ArcGIS制作带蒙版的遥感影像地图。 主要的步骤包括&#xff1a; 1 添加行政区划数据 2 导出兴趣去乡镇矢量范围 3 添加遥感影像底图 4 制作蒙版 5 利用自动完成面制作蒙版 6 标注乡镇带晕渲文字 7 …

架构实践方法

一、识别复杂度 将主要的复杂度问题列出来&#xff0c;然后根据业务、技术、团队等综合情况进行排序&#xff0c;优先解决当前面临的最主要的复杂度问题。对于按照复杂度优先级解决的方式&#xff0c;存在一个普遍的担忧&#xff1a;如果按照优先级来解决复杂度&#xff0c;可…

《Zookeeper》源码分析(四)之ServerCnxnFactory的启动过程

目录 ServerCnxnFactory1. 创建ServerCnxnFactory2. 配置属性configure()3. 启动start() ServerCnxnFactory Zookeeper使用ServerCnxnFactory管理与客户端的连接&#xff0c;服务端每与一个客户端就会创建一个ServerCnxn实例并由ServerCnxnFactory管理&#xff0c;ServerCnxnF…

保障容器应用安全的6个建议

虽然容器技术出现已经超过了十年时间&#xff0c;但由于其应用的轻量性、快捷性和灵活性&#xff0c;使得容器应用的流行程度一直保持了快速的增长趋势&#xff0c;并逐渐成为云原生环境中部署业务应用和工作负载的不二选择。在容器应用快速普及的发展背景下&#xff0c;要确保…

C语言用信号量进行pv操作

一、获取信号量 用semget()函数获取信号量&#xff0c;其中semget()函数中所需传的参数如下&#xff1a; semget(key_t key , int nsems, semflg); 参数解释&#xff1a; 1、其中key可以通过ftok() 函数进行获取&#xff0c;ftok函数所需传入的参数为①文件路径②一个八位的整…

Numpy矩阵拼接

一、矩阵拼接一、矩阵拼接 numpy矩阵拼接常用方法&#xff1a; np.append(arr,values,axis) np.concatenate(arrays,axis,outNone) np.stack(arrays,axis,outNone) np.hstack(tup) np.vstack(tup) ① np.append(arr,values,axis) 支持数组和数组或数组和数的拼接&#xff0c;不…

vue3集成echarts最佳实践

安装 echarts npm install echarts --save 两种引用方式 非虚拟 dom import * as echarts from echarts;var chartDom document.getElementById(mychart); var myChart echarts.init(chartDom); var option;option {title: {text: Referer of a Website,subtext: Fake Da…

【Matlab】RBF神经网络遗传算法(RBF-GA)函数极值寻优——非线性函数求极值

上一篇博客介绍了GRNN神经网络遗传算法(GRNN-GA)函数极值寻优——非线性函数求极值&#xff0c;神经网络用的是RBF神经网络&#xff0c;RBF神经网络和GRNN神经网络有相似之处。本篇博客将GRNN神经网络替换成RBF神经网络&#xff0c;希望能帮助大家快速入门RBF网络。 1.背景条件…