归档(Archiving)和闪回(Flashback)是 Oracle 数据库提供的两个重要特性,它们在数据库管理和恢复方面起着关键的作用。
上一章节设过好几个磁盘,其中就有dgrecovery这个盘
+dgrecovery的操作步骤
生产环境归档必开,
闪回根据情况,生产环境不建议开。
-开启归档模式
两台机器,其中有21/22两台机器,我们把22这台机器关闭
[oracle@fgerp62:/home/oracle] ‘ ‘ ‘ s q l p l u s " / a s s y s d b a " ‘ ‘ ‘ S Q L > ‘ s h u t d o w n i m m e d i a t e ; ‘ 回 到 第 一 台 主 机 21 ( O r a c l e 目 录 下 ) [ o r a c l e @ f g e r p 61 : / h o m e / o r a c l e ] ```sqlplus "/as sysdba" ``` SQL> ` shutdown immediate;` 回到第一台主机21 (Oracle目录下) [oracle@fgerp61:/home/oracle] ‘‘‘sqlplus"/assysdba"‘‘‘SQL>‘shutdownimmediate;‘回到第一台主机21(Oracle目录下)[oracle@fgerp61:/home/oracle]sqlplus “/as sysdba”
查一下归档
[SQL> archive log list;
上面可以看到显示非归档模式
SQL> show parameter recovery
NAME TYPE VALUE db_recovery_file_dest string /path/to/recovery_area db_recovery_file_dest_size big integer 0
1. db_recovery_file_dest: 指定了归档日志和其他重要恢复文件的存储位置。
2. db_recovery_file_dest_size: 指定了 db_recovery_file_dest 所指定位置的最大允许大小。
我们这个备份盘是2g,所以 我在这里指定位置的最大允许2g
SQL> alter system set db_recovery_file_dest_size=2g
用这个比较方便
SQL> alter system set db_recovery_file_dest='+dgrecovery'
还有一个参数也要设置(设置为false是由集群的变成单机)
SQL>alter system set cluster_database-false scope=spfile;
SQL> shutdown immediate;
SQL>startup mount;
SQL> alter database archivelog; #设置数据库归档模式
Database altered.
SQL> alter database open;
NAME TYPE VALUE
------------------------------------ ----------- ------cluster_database boolean TRUE
cluster_database_instances integer 2
• cluster_database: 显示数据库是否配置为集群数据库(TRUE 或 FALSE)。
• cluster_database_instances: 显示集群数据库实例的数量。
• thread: 如果是 RAC(Real Application Clusters)环境,显示数据库线程的信息。
SQL> alter database flashback on;
Database altered.
SQL> archive log list;
SQL> desc v d a t a b a s e ; S Q L > s e l e c t F L A S H B A C K O N f r o m v database; SQL> select FLASHBACK_ON from v database;SQL>selectFLASHBACKONfromvdatabase;
FLASHBACK_ON
YES 闪回的状态为yes
只不过这个实例打开了,另外一个实例22台主机的还没打开 启动
下面在改一个参数
SQL> alter system set cluster_database=true scope-spfile;
System altered.
SQL> shutdown immediate;
SQL> startup
这时候另一台主机的实例就可以打开了
换到22台主机输入 SQL > startup
即可打开
可以输入查看归档模式是否打开
可以使用 archive log list
命令查看归档日志的信息。
测试一下归档模式是否生效:
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL>/
System altered.
五组数据,这是在数据库中切换日志文件的命令。通过使用"alter system switch logfile",数据库会切换到下一个可用的在线日志文件,确保日志文件得以循环使用。在您的输出中,多次执行该命令,系统一直在切换日志文件,然后会切换日志文件时,生成的归档日志会保存到归档目录中。这是为了确保数据库的完整性和恢复能力。
切换日志做完以后,再打开一个21的主机页面,进到su -grid 测试一下这个归档:
asmcmd
ASMCMD> ls
ASMCMD> cd DGRECOVERY
ASMCMD> ls
根据上面可以看到,进入到asmcmd以后可以查看归档和闪回的相关日志
这些是数据库的归档日志文件,用于数据库恢复和事务的一致性。归档日志文件记录了数据库中发生的所有重要变更,包括数据修改和结构更改。这对于数据库的备份和还原、点-in-time恢复以及故障恢复非常重要。
具体来说,归档日志文件的主要作用包括:
恢复: 在数据库发生故障时,可以使用归档日志文件将数据库还原到之前的状态,以确保数据的完整性和一致性。
备份: 归档日志文件允许进行在线备份,保证备份的是一个事务一致的状态。
点-in-time恢复: 通过应用归档日志文件,可以将数据库还原到特定的时间点,这对于误操作或者数据丢失的修复非常有用。
总之,归档日志是数据库管理中不可或缺的一部分,确保了数据的安全性和可靠性。
先退出22台机器的实例
SQL> exit
[oracLe@fyserp22:/home/oracle] s q l p l u s " / a s s y s d b a " [ S Q L > s h u t d o w n i m m e d i a t e ; 然 后 第 一 个 实 例 S Q L > e x i t [ o r a c L e @ f g e r p 21 : / h o m e / o r a c l e ] sqlplus "/as sysdba" [SQL> shutdown immediate; 然后第一个实例 SQL> exit [oracLe@fgerp21:/home/oracle] sqlplus"/assysdba"[SQL>shutdownimmediate;然后第一个实例SQL>exit[oracLe@fgerp21:/home/oracle]sqlplus “/as sysdba”
[SQL>show parameter cluster
SQL> alter system set cluster_database=false scope=spfile;
SQL> shutdown immediate;
一般(开启/关闭归档)的步骤就是
1.先开归档开闪回
.先关闪回关归档
SQL> startup mount;
SOL> alter database flashback off;
SQL> alter database noarchivelog;
SQL>alter system set cluster_database=true scope-spfile;
SQL> shutdown immediate;
SOL> startup
SQL> archive log list;
Database log mode No Archive Mode
显示no archive mode就是关闭归档了
然后可以去另一台机器(22台)
启动
SOL> startup
SQL> archive log list;
Database log mode No Archive Mode
也是属于关闭的状态。
3)设置数据库为非集群模式
4)关闭数据库启动到mount
5)打开归档。
6)设買数据库为集群模式
7)重启数据库并打开
8)启动另一个实例
9)测试是否生成归档日志
10)如果需要开闪回,在这一步设置。
--关闭归档模式
1)关闭另一个实例
2)设置数据库为非集群模式
3)关闭数据库启动到mount
4)关闭归档。
5)设置数据库为集群模式
6)重启数据库并打开
7)启动另一个实例
8)检查是否配置生效
9)如果关闭闪回,在这一步设置。
做完上面的项目以后,如何测试Oracle RAC的功能?负载均衡与故障切换配置配置完成才算这个项目的结束。
客户端(client):win7/win8/win2008/win2016/win2019等等,安装oracle11g client x32/x64
准备sqlplus工具
我在201项目组中已经安装了win2008客户端了,这里将使用2008客户端来操作。
先在21/22这两台主机输入 SQL> show parameter listener
查看 Oracle 数据库中监听器的配置信息。
可以得到:
当初配置的就是fyserpscan,这里监听到ip是 192.168.0.23 fyserp21vip (虚拟的,可以大过8位)
192.168.0.24 fyserp22vip (虚拟的,可以大过8位)
意思就是当你访问负载均衡192.168.0.21这台主机的fyserpscan时,会被分到192.168.0.24这台机器。
SQL> show parameter listener
查一下服务名
sqlplus "sys/oracle@fgyxdb as sysdba"
select instance_ name, status from v$instance;
1. 使用 SQL*Plus 工具连接到名为 “fgyxdb” 的 Oracle 数据库的 “sys” 用户,并指定了连接的角色为 “sysdba”。这是以 SYSDBA 角色连接到数据库的命令。
2. 执行 SQL 查询语句 select instance_name, status from v$instance; 来检索数据库实例的名称和状态信息。这将返回一个显示实例名称和状态的结果集
SQL> show parameter service
查一下服务名
SQL> show parameter listener
remote_listener右边内容就是主机名称host=主机名
这个主机是原先我们配置在/etc/hosts下的#scan ip 192.168.1.65 fgerpscan
这个主机名。我们之所以把192.168.1.65taeroscan写到hosts里面,是做一个映射方便访问
1.1默认的设置
fgerpdb(服务名) =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = fgerpscan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = fgerpdb(服务名))
)
)
这段命令是Oracle数据库的连接描述符,用于指定数据库连接的详细信息。具体来说:
itpuxdb
是连接描述符的名称,你可以使用这个名称来引用这个连接描述符。(DESCRIPTION = ...)
包含了连接的详细信息。
(ADDRESS = (PROTOCOL = TCP)(HOST = itpuxscan.itpuxdb.com)(PORT = 1521))
指定了连接使用的协议(TCP)、主机名(itpuxscan.itpuxdb.com)和端口号(1521)。(CONNECT_DATA = ...)
包含了连接的服务器信息。
(SERVER = DEDICATED)
表示使用专用服务器模式,每个客户端连接都有一个专用的服务器进程。(SERVICE_NAME = itpuxdb)
指定了要连接的数据库的服务名称。–第一种方法 session
itpuxdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = itpuxscan.itpuxdb.com)(PORT = 1521))
(LOAD_BALANCE = yes)
(FAILOVER = ON)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = itpuxdb)
(FAILOVER_MODE = (TYPE = SESSION)
(METHOD = BASIC)
)
)
)
这段配置用于定义一个连接描述符,主要包括了负载均衡和故障切换的设置。
–第二种方法 select (建议使用)
itpuxdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = itpuxscan.itpuxdb.com)(PORT = 1521))
(LOAD_BALANCE = yes)
(FAILOVER = ON)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = itpuxdb)
(FAILOVER_MODE = (TYPE = SELECT)
(METHOD = BASIC)
)
)
)
在 Oracle 数据库的 FAILOVER_MODE
中,TYPE
的不同值影响故障切换的行为:
TYPE = SELECT
:TYPE = SESSION
:TYPE
取决于应用的性质和对故障切换的需求。如果应用对于连接的实例相对稳定且希望避免在会话期间频繁切换,可以选择 TYPE = SELECT
。如果希望在每个用户会话中均匀分配连接,并在故障时迅速切换到其他实例,可以选择 TYPE = SESSION
。3. 透明故障切换:
• 特点: 透明故障切换是 Oracle RAC 提供的一种机制,
它允许连接在发生故障时自动切换到其他可用的节点,
而不需要用户或应用程序的干预。
• 配置: 通过配置 FAILOVER_MODE = (TYPE = SESSION) 实现透明故障切换,
这意味着在用户会话级别进行切换,
确保用户的连接在节点故障时能够无缝切换到其他节点。
先在客户端的hosts文件加
192.168.1.65 fgerpscan
然后把1.1默认设置
的内容复制粘贴到路径 oracle\product\client_1\network\admin\ thsnames文件下
打开cmd终端输入 tnsping fgerpdb 就可以ping通了。
sqlplus "sys/oracle@fgyxdb as sysdba"
select instance_ name, status from v$instance;
打开cmd,把上面两句命令输入到5个窗口
假设我这里把21这台主机数据库 fgerpdb1关闭了,
SQL>shutdown immediate;
现在再去cmd窗口打开测试
select instance_ name, status from v$instance;
就会发现fgerpdb1机器会出报错,fgerpdb2是不受影响的
那应该怎么办呢?这时候要重新连接,但是重新连接以后,会跳到fgerpdb2这台机器
SOL>conn sys/oracle@fgerpdb as sysdba;
这是 1.1默认设置
的方法。
接下来看第一种方法 session的方法,操作如下:
第一步把thsnames文件下 1.1默认设置
的命令删掉,把session的命令粘贴到里面去,再去tnsping fgerpdb 就可以ping通了
然后把四个连接全部 exit
退出去,然后再重新连接才有效,然后输入:
sqlplus "sys/oracle@fgyxdb as sysdba"
select instance_ name, status from v$instance;
然后去22这台主机(随便一台)把数据库停了,再去客户端测试,负载均衡会有不一样的效果。
四台机器 输入
SOL> select instance_ name, status from v$instance;
就可以看到自动连接到fgerpdb1这台机器,不需要人工输入 conn sys/oracle@fgerpdb as sysdba;
去重新登陆他。
第二种 SELECT方法也是如此这样测试。
故障切换测试到这里就结束了,项目做完了一定要做故障测试!
Oracle数据库基础的维护与EM管理
管理180天密码过期问题进到数据库里面关闭密码,以及关闭审计,因为是在针对数据库的,所以在数据库里进行。
[oracle@fyserp21:/home/oracle]$ sqlplus "/as sysdba
ALTER PROFILE default LIMIT PASSWORD_LIFE_TIME UNLIMITED;
SQL> show parameter dump # 查看日志
可以查看后台进程的dump目录,一些进程异常的目录;警告日志的目录。
–3)关闭所有的数据库服务,备份一次安装代码
su - root
cd /backuptar zevf oracle.tar.gz /oracle