Operaciones relacionadas con el registro de Oracle

1. Configuración del registro de archivo

# 切换账号
$ su - oracle

# 登录oracle的sys账户
$ sqlplus / as sysdba

sql> 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. Establecer el modo de no archivo

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. Cuando Alibaba Cloud establece la sincronización en tiempo real de Oracle, la preparación de Oracle

Compruebe si la base de datos es compatible

# 查看数据库版本
sql> select * from v$version;
#可以看到版本是c12

sql> select version from v$instance;

# 查看数据库不是cdb类型(datawork不支持db)
sql> select name,cdb,open_mode,con_id from v$database;

Cree una cuenta de sincronización y otorgue los permisos correspondientes

# 创建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 '同步账号';

Habilitación de registros complementarios
Puede optar por habilitar los registros complementarios apropiados de acuerdo con sus necesidades.La instrucción SQL es la siguiente.

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

Cambiar el archivo de registro de Redo
Después de habilitar el registro complementario, debe ejecutar el siguiente comando varias veces (generalmente se recomiendan 5 veces) para cambiar el archivo de registro de Redo.

sql> alter system switch logfile;

Compruebe la codificación de caracteres de la base de datos.

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

Cuando la integración de datos sincroniza datos, solo se admiten los formatos de codificación UTF8, AL32UTF8, AL16UTF16 y ZHS16GBK. Si la base de datos contiene codificaciones de caracteres no admitidas, modifíquelas antes de realizar la sincronización de datos.

Comprobar el tipo de datos de la tabla de la base de datos
Puede consultar el tipo de datos de la tabla de la base de datos utilizando la instrucción relacionada con SQL (SELECT) para ver la tabla. Ejemplo La instrucción para ver el tipo de datos de la tabla 'tablename' es la siguiente.

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

或

sql> desc tablename;

Compruebe si el tipo de datos es compatible con el trabajo de datos (referencia: https://help.aliyun.com/zh/dataworks/user-guide/oracle-data-source?spm=a2c4g.11186623.0.i52)

4. Manejar el problema de registro completo y configurar el script de limpieza automática de registro

Caso 1: cuando se puede iniciar sesión en la cuenta

# 进入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天的日志

Configurar un script de limpieza de registro automático

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

Entre ellos, 'SYSDATE - 3' significa mantener los registros de los últimos tres días, configurados según sea necesario

Copia de seguridad y restauración de registros archivados

# 备份归档日志
RMAN> backup archivelog all;

# 在进行数据库恢复时,可能需要使用备份的归档日志进行恢复。
RMAN> restore archivelog all;

# 恢复完归档日志后,需要将恢复的归档日志应用到数据库中,可以在SQL*Plus命令行界面输入以下命令进行恢复:
sql> recover database;

Caso 2: cuando el almacenamiento está lleno y no se puede iniciar sesión en la cuenta,
primero elimine algunos archivos de registro para que la cuenta pueda iniciar sesión en Oracle y luego realice la operación del Caso 1 para eliminar registros redundantes

# 使用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*

Supongo que te gusta

Origin blog.csdn.net/hutc_Alan/article/details/132148863
Recomendado
Clasificación