lo8ol.com - Oracle
type: channel
link: https://lo8ol.com/category/oracle/
items: 【部署】【卸载Oracle软件】
items: 【部署】【删除Oracle数据库实例的方式】
items: 【部署】【Oracle静默建库】
items: 【Doc】【OEM分类】
items: 【部署】【Linux下Oracle单实例服务自启动】
items: 【部署】【Oracle 11GR2 手动建库】
items: 【部署】【Oracle DB静默安装】
items: 【OPatch】Apply Oracle RAC 19c Patch
items: 【RMAN】 一周备份计划
items: 【DG部署】【Single DB+Single DG】

【部署】【卸载Oracle软件】
type: item
date: 2021-08-26T20:12:00+08:00
description: 1. Linux下卸载Oracle1.1 方式一：使用自带的deinstall # 卸载GRID，grid用户执行 [grid@orclasm ~]$ ORACLE_HOME/deinstall/deinstall # 卸载oracle，oracle用户执行 [oracle@orclasm ~]$ ORACLE_HOME/deinstall/deinstall # 过程较慢，也可能出现不成功的现象。1.2 方式二：手动删除手动卸载是删除一系列软件及配置信息1.2.1 停止数据库和监听 # oracle 用户 [oracle@orclasm ~]$ lsnrctl stop [oracle@orclasm ~]$ sqlplus / as sysdba SQL> shutdown immediate; # grid 用户 \$ lsnrctl stop \$ crsctl stop resource -all1.2.2 删除相关文件 # 删除oracl的ORACLE_BASE目录 $ $ORACLE_BASE # Oracle下查看 bash: /u01/app/oracle: Is a directory rm -rf /u01/app/oracle/* # root下删除 # 删除grid的ORACLE_BASE目录 $ $ORACLE_BASE # grid下查看 bash: /u01/app/grid: Is a directory rm -rf /u01/app/grid/* # root下删除 # 删除oraInventory目录 cat /etc/oraInst.loc # 查看oraInventory存放位置 inventory_loc=/u01/app/oracle/oraInventory inst_group=oinstall rm -rf /u01/app/oracle/oraInventory # 删除/usr/local/bin目录下的dbhome、oraenv、coraenv文件 rm -rf /usr/local/bin/oraenv rm -rf /usr/local/bin/coraenv rm -rf /usr/local/bin/dbhome # 删除etc下oracle相关的文件 rm -rf /etc/ora* # 删除Oracle的临时文件 rm -rf /var/tmp/.oracle rm -rf /tmp/*oracle* rm -rf /tmp/Oracle* rm -rf /tmp/.oracle rm -rf /tmp/CUV* rm -rf /tmp/OraInst*1.2.3 删除用户 # 删除oracle用户 userdel -r oracle userdel -r grid # 删除oracle用户组 groupdel oinstall groupdel oinstall groupdel dba groupdel oper groupdel asmadmin groupdel asmdba groupdel asmoper1.2.4 清除OCR、voting相关磁盘数据 dd if=/dev/zero of=/dev/xxxxx bs=1024 count=5122. Windows下卸载Oracle 停止oracle所有服务 开始菜单运行Oracle Universal Installer进行卸载 删除注册表(全文搜索oracle进行删除) 删除开始菜单的oracle目录 删除Oracle和grid的安装目录 删除C:\Program Files\Oracle目录 删除C:\Users\Administrator\Oracle目录 删除环境变量 重启检查

【部署】【删除Oracle数据库实例的方式】
type: item
date: 2021-08-25T18:17:00+08:00
description: 方式一：DBCA删除注意：1)、数据库必须处于open状态下，否则无法删除1.1)、open状态下，删除数据库和安装了grid的主机是一样的。2)、如果数据库处于非open状态，那么：2.1)、在装有grid的主机上，DBCA图形界面和静默方式不会删除任何文件(/etcoratab和参数文件)；2.2)、在没装grid的主机上，DBCA图形界面会删除参数文件(pfile和spfile)，但是不会删除数据文件；而静默方式依然会报错，不会删除和修改任何文件。1.1 DBCA图形界面删除(略)1.2 DBCA静默删除在OS级别使用dbca命令静默的方式删除，如 [oracle@orclasm ~]$ dbca -silent -deleteDatabase -sourceDB mynewdb # 通过警告日志查看，删除的过程是： 先将数据库关闭 启动到mount状态下 执行'alter system enable restricted session' # 让数据库处于受限模式 drop database 清理/etc/oratab,删除spfile和pfile文件方式二：SQL窗口 SQL> alter database close; SQL> alter system enable restricted session; SQL> drop database; --或者 SQL> startup force mount restricted； SQL> drop database；推荐第一种方式对于第二种方式，若是RAC环境，数据库需要设置参数cluster_database为false后才可以执行dropSQL> alter system set cluster_database=false sid='*' scope=spfile; SQL> drop database

【部署】【Oracle静默建库】
type: item
date: 2021-08-24T20:12:00+08:00
description: 1. 静默建库概述Silent模式采用命令行方式一次将所有信息提供给DBCA完成数据库的建立，在建立过程中不存在交互作用，所有的信息、错误和告警都写到日志文件中，只在结束时屏幕上打印出日志文件的位置，除此以外，没有其他的消息。使用dbca安装oracle数据库实例也有两种方式：2. 方式一：响应文件模板一种就是根据[font color="green"]响应文件模板[/font]进行安装，Oracle安装程序的安装文件夹下的response目录的dbca.rsp文件就是dbca的模板文件。当然我们也可以通过复制这个模板文件来修改其中的内容来建立定制的数据库，在这个模板文件中对于各个参数的说明非常详细，对这个文件的内容在此不做说明。 # 创建命令：根据模版文件创建数据库： # 安装的路径：$ORACLE_HOME/assistants/dbca/dbca.rsp # 或者解压的路径：/xxx/database/response/dbca.rsp # 复制一份响应文件到指定路径下修改： $ cp dbca.rsp /u01/app/dbca.rsp # 创建命令 [oracle@orclasm ~]$ dbca -silent -cloneTemplate -gdbName orcl -sid orcl -datafileDestination /u01/app/oradata -responseFile /u01/app/dbca.rsp # 一些参数的说明： -silent # 指定dbca的静默安装方式 -cloneTemplate # 指定自模版文件创建 -gdbName # Global Database Name -sid # 创建数据库的sid -datafileDestination # 数据文件存放的目标路径 -responseFIle # 模版文件的路径3. 方式二：建库模板另外一种就是根据oracle自身的[font color="green"]数据库模板[/font]来建立数据库实例 # 数据库模板文件位置：$ORACLE_HOME/assistants/dbca/templates/*.dbc [oracle@orclasm templates]$ ls $ORACLE_HOME/assistants/dbca/templates Data_Warehouse.dbc General_Purpose.dbc pdbseed.xml Seed_Database.ctl example01.dfb New_Database.dbt sampleschema.dfb Seed_Database.dfb example.dmp pdbseed.dfb sampleschema.xml # ORACLE为我们提供了几个dbc模板： Data Warehouse 数据仓库 Transaction Processing 事务处理 General Purpose 一般用途 # 这几个模板是比较易用的模板，oracle针对不同的数据库用途做了专门的优化 # 当然我们也可以创建我们自己的模板（也是使用dbca命令） # 创建命令：根据Oracle提供的数据库模版创建数据库： # 可以通过dbca -help查看创建命令 # 12c静默建库命令命令一: [oracle@orclasm ~]$ dbca -silent -createDatabase -templateName $ORACLE_HOME/assistants/dbca/template/General_Purpose.dbc -gdbName orcl -sid orcl -responseFile NO_VALUE -characterSet ZHS16GBK # 输入密码： Enter SYS user password: Enter SYSTEM user password: Copying database files # 12c静默建库命令命令二: [oracle@orclasm ~]$ dbca -silent -createDatabase -templateName $ORACLE_HOME/assistants/dbca/template/General_Purpose.dbc -gdbName orcl -sid orcl -responseFile NO_VALUE \ -sysPassword xxxxx -systemPassword xxxx \ -datafileDestination 'DATA/' -recoveryAreaDestination 'FRA' \ -redoLogFileSize 50 \ -storageTyp…

【Doc】【OEM分类】
type: item
date: 2021-08-24T17:57:00+08:00
description: 1. OEM分类 OEM全称：Oracle Enterprise Manager # 12c之前 EMDC：Enterprise Manager Database Control EMGC：EMGC_Enterprise Manager Grid Control # 12c之后 EMDE：Enterprise Manager Database Express EMCC：Enterprise Manager Cloud Control2. 介绍2.1 维护管理单个数据库EMDC： Enterprise Manager Database Control使用emca命令创建，针对单实例的数据库。12c中取消了ECDC，而是被EMDE取代了EMDE： Enterprise Manager Database Express不需要额外安装，只需要配置一个端口即可使用，pdb和cdb都可以配置EMDE。从12c开始，用于维护管理单个数据库2.2 管理多台数据库服务器EMGC： EMGC_Enterprise Manager Grid Control可以监控多台数据库服务器。用于12c之前EMCC： Enterprise Manager Cloud Control可以监控多台数据库服务器，EMCC比EMGC功能更加强大，从Oracle 12c开始使用。3. OEM的图形界面3.1 EMDC3.2 EMGC3.3 EMDE3.4 EMCC

【部署】【Linux下Oracle单实例服务自启动】
type: item
date: 2021-08-23T17:32:00+08:00
description: 1. 前置条件1.1 修改oratab [oracle@orclasm ~]$ cat /etc/oratab orcl:/u01/app/oracle/product/12.1.0/dbhome_1:Y# 将N改成Y # oratab由root.sh脚本创建，在DBCA创建实例时也会更新这个文件 # 这里的参数(Y/N)是个开关作用，不会真正启动或关闭，具体开关由&ORACLE_HOME/bin/dbstart和dbshut实现,执行时会先检查oratab的参数，为Y时才会继续执行.1.2 修改启动和关闭脚本 [oracle@orclasm ~]$ cat $ORACLE_HOME/bin/dbstart ORACLE_HOME_LISTNER=$ORACLE_HOME# 将$1改成$ORACLE_HOME [oracle@orclasm ~]$ cat $ORACLE_HOME/bin/dbshut ORACLE_HOME_LISTNER=$ORACLE_HOME# 将$1改成$ORACLE_HOME2. 方式一：配置Oracle服务2.1 编辑启动脚本 [root@orclasm ~]\# cat /etc/rc.d/init.d/oracle #!/bin/bash # chkconfig: 345 99 10 # description: Startup Script for Oracle Databases # /etc/rc.d/init.d/oracle export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1 export ORACLE_SID=orcl export PATH=$PATH:$ORACLE_HOME/bin ORA_OWNR="oracle" # if the executables do not exist -- display error if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ] then echo "Oracle startup: cannot start" exit 1 fi # depending on parameter -- startup, shutdown, restart # of the instance and listener or usage display case "$1" in start) # Oracle listener and instance startup echo -n "Starting Oracle: " su - $ORA_OWNR -c "$ORACLE_HOME/bin/dbstart" su - $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl start" touch /var/lock/Oracle su - $ORA_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole" #su - $ORA_OWNR -c "$ORACLE_HOME/bin/isqlplusctrl start" echo "OK" ;; stop) # Oracle listener and instance shutdown echo -n "Shutdown Oracle: " su - $ORA_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole" #su - $ORA_OWNR -c "$ORACLE_HOME/bin/isqlplusctrl stop" su - $ORA_OWNR -c "$ORACLE_HOME/bin/dbshut" su - $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop" rm -f /var/lock/Oracle echo "OK" ;; reload|restart) $0 stop $0 start ;; *) echo "Usage: `basename $0` start|stop|restart|reload" exit 1 esac exit 0 # 2.2 脚本授权 chown oracle /etc/init.d/oracle chmod 775 /etc/init.d/oracle chkconfig --add /etc/init.d/oracle2.3 创建服务 chkconfig --add oracle chkconfig oracle o…

【部署】【Oracle 11GR2 手动建库】
type: item
date: 2021-08-21T17:14:00+08:00
description: 1. 概述此文说明的是数据库在文件系统中的手动创建有时候因为环境的缘故不能使用图形界面或者不能使用DBCA的静默方式来创建一个新库，那么这个时候可以考虑使用CREATE DATABASE SQL命令行来创建数据库，该方式是一种手动建库方式，使用此种命令行手动创建数据库的优点是：可以用脚本来创建数据库。 另外OCM的考试中要求我们用CREATE DATABASE来创建数据库。当然在使用脚本创建数据库时，在建立数据字典视图和安装标准的PL/SQL程序包时，必须先建立一个可以操作的数据库。11GR2Creating a Database with the CREATE DATABASE Statement2. 创建过程2.1 确保环境变量正确 [oracle@orclasm ~]$ env | grep ORACLE ORACLE_SID=orcl ORACLE_BASE=/u01/app/oracle ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_12.2 创建密码文件 orapwd file=$ORACLE_HOME/dbs/orapworcl password=xxxx force=y 2.3 初始化参数文件 # 初始化参数文件有个模板例子 init.ora # 可以根据这个模板创建initmynewdb.ora，如orcl的一般是initorcl.ora [oracle@orclasm dbs]$ ls hc_orcl.dat init.ora lkORCL orapworcl # 创建参数文件 [oracle@orclasm dbs]$ cat initmynewdb.ora db_name=mynewdb memory_target=1G # 原模板参数 [oracle@orclasm dbs]$ cat init.ora db_name='ORCL' memory_target=1G processes = 150 audit_file_dest='<ORACLE_BASE>/admin/orcl/adump' audit_trail ='db' db_block_size=8192 db_domain='' db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area' db_recovery_file_dest_size=2G diagnostic_dest='<ORACLE_BASE>' dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)' open_cursors=300 remote_login_passwordfile='EXCLUSIVE' undo_tablespace='UNDOTBS1' # You may want to ensure that control files are created on separate physical devices control_files = (ora_control1, ora_control2) compatible ='11.2.0'2.4 创建数据库文件目录 [oracle@orclasm dbs]$ mkdir -p /u01/app/oracle/oradata/mynewdb # Oracle建议日志文件等放在不同目录,以作备份 [oracle@orclasm dbs]$ mkdir -p /u01/logs/my [oracle@orclasm dbs]$ mkdir -p /u02/logs/my2.5 启动数据库到nomount状态在该环境下，我们的控制文件尚未生成，实例至多也只能加载到NOMOUNT状态 [oracle@orclasm dbs]$ sqlplus / as sysdba SQL> startup nomount # 如果参数文件没有在默认路径下，可以在后面指定 # 如 startup nomount pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initmynewdb.ora'2.6 创建数据库2.6.1 方式一 CREATE DATABASE mynewdb USER SYS IDENTIFIED BY sys_password USER SYSTEM IDENTIFIED BY system_password LOGFILE GROUP 1 ('/u01/logs/my/redo01a.log','/u02/logs/my/redo01b.log') SIZE 100M BLOCKSIZE 512, GROUP 2 ('/u…

【部署】【Oracle DB静默安装】
type: item
date: 2021-08-17T16:09:00+08:00
description: 1. 前提1.1 环境配置建立Oracle用户、安装必须的依赖、home路径、环境变量等设置.(略)1.2 创建oraInst.loc文件 # 新建oraInst.loc文件，没有此文件会报错：找不到这个文件 # 图形化安装时，oraInst.loc文件通常会自动生成在etc目录下 [root@orclasm ~]# vim /etc/oraInst.loc # 内容如下： inventory_loc=/u01/app/oraInventory inst_group=oinstall # 开放权限: [root@orclasm ~]# chown oracle:oinstall /etc/oraInst.loc [root@orclasm ~]# chmod 664 /etc/oraInst.loc2. 方式一：使用响应文件安装2.1 修改响应文件参数修改解压后的安装文件夹下response下面的db_install.rsp文件，直接产生orcl数据库实例将相关的参数设置为如下: # /xxx/database/response/db_install.rsp ORACLE_HOSTNAME=orclasm# 主机名 UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oraInventory# SELECTED_LANGUAGES=en,zh_CN ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1# 安装目录 ORACLE_BASE=/u01/app/oracle oracle.install.db.InstallEdition=EE oracle.install.db.EEOptionsSelection=false oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=oper oracle.install.db.isRACOneInstall=false oracle.install.db.config.starterdb.type=GENERAL_PURPOSE SECURITY_UPDATES_VIA_MYORACLESUPPORT=false oracle.installer.autoupdates.option=SKIP_UPDATES2.2 执行安装 # 执行db_install.rsp [oracle@orclasm ~]$ cd /soft/database [oracle@orclasm database]$./runInstaller -silent -noconfig -responseFile /soft/database/response/db_install.rsp -ignoreSysPrereqs -ignorePrereq . .. Successfully Setup Software. # 安装完后执行root脚本 [oracle@orclasm ~]$ su -root [root@orclasm ~]# /u01/app/oracle/product/12.1.0/dbhome_1/root.sh3. 方式二：命令行安装 # 开始安装 [oracle@orclasm ~]$ # 命令行 起始... # /soft/database/runInstaller -force -noconfig -ignoreSysPrereqs -ignorePrereq -showProgress \ oracle.install.option=INSTALL_DB_ONLY \ DECLINE_SECURITY_UPDATES=true \ UNIX_GROUP_NAME=oinstall \ INVENTORY_LOCATION=/u01/app/oraInventory \ SELECTED_LANGUAGES=en,zh_CN \ ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1 \ ORACLE_BASE=/u01/app/oracle \ oracle.install.db.InstallEdition=EE \ oracle.install.db.EEOptionsSelection=false \ oracle.install.db.DBA_GROUP=dba \ oracle.install.db.OPER_GROUP=dba \ oracle.install.db.isRACOneInstall=false \ oracle.install.db.con…

【OPatch】Apply Oracle RAC 19c Patch
type: item
date: 2021-08-10T12:29:00+08:00
description: 一、升级说明--记录时间:2021.03.03具体升级方法方法参考补丁中的[font color="green"]README.HTML[/font],里面介绍的很详细;安装的19c版本是19.3,需要升级到更高版本,当前最新补丁版本是19.10;升级补丁的顺序(19.10的包,包含GI和DB,可以自动安装GI和DB):GIDBOJVMOne off下载补丁: p32226239_190000_Linux-x86-64,Patch 32226239 - GI Release Update 19.10.0.0.210119二、Opatch补丁工具版本[grid@rac01 grid]$ cd $ORACLE_HOME/OPatch [grid@rac01 OPatch]$ ./opatch version OPatch Version: 12.2.0.1.17 OPatch succeeded.README.HTML要求补丁工具版本是12.2.0.1.23,不符合要求,下载Opatch工具Patch 6880880,选择对应的版本上传下载的p6880880_190000_Linux-x86-64.zip工具到所有节点,解压覆盖原Opatch,此处上传的是/u01目录# Grid用户 [grid@rac01 OPatch]$ unzip /u01/p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME [grid@rac02 OPatch]$ unzip /u01/p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME [grid@rac01 OPatch]$ ./opatch version OPatch Version: 12.2.0.1.24 OPatch succeeded. [grid@rac02 OPatch]$ ./opatch version OPatch Version: 12.2.0.1.24 OPatch succeeded. # Oracle用户 [oracle@rac01 ~]$ unzip /u01/p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME [oracle@rac02 ~]$ unzip /u01/p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME三、校验Oracle Inventory[grid@rac02 OPatch]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME OPatch succeeded. [grid@rac01 OPatch]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME OPatch succeeded. [oracle@rac02 OPatch]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME OPatch succeeded. [oracle@rac01 OPatch]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME OPatch succeeded.四、检查Opatch冲突# Grid用户 $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /tmp/32226239/32218454 OPatch succeeded. $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /tmp/32226239/32222571 OPatch succeeded. $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /tmp/32226239/32218663 OPatch succeeded. $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /tmp/32226239/29340594 OPatch succeeded. $ORACLE_HOME/OPatch/opa…

【RMAN】 一周备份计划
type: item
date: 2021-08-05T18:04:00+08:00
description: Part 1:RMAN备份计划 : Windows (单机)一、备份条件1.1 归档日志--目标库设置在归档日志下: SQL> archive log list SQL> shutdown immediate SQL> startup mount SQL> alter database archivelog; SQL> alter database open; SQL> archive log list SQL> alter system switch logfile;1.2 日期格式Batch批处理根据此格式为备份日志文件命名.设置windows日期格式为:YYYY-MM-DD时间格式为:HH:MM:SS24小时制.二、备份路径备份数据库 D:\RMAN_Backup\Data 备份控制文件 D:\RMAN_Backup\Controlfile 备份归档日志 D:\RMAN_Backup\Archivelog 备份日志 D:\RMAN_Backup\Log 备份脚本 D:\RMAN_Backup\RMAN_Backup_Scripts三、备份计划3.1 备份时间Windows添加任务计划, 执行备份脚本(02:00:00)3.2 一周备份周日：0级增量备份 周一：1级增量备份 周二：1级增量备份 周三：1级增量备份 周四：0级增量备份 周五：1级增量备份 周六：1级增量备份3.3 备份策略a、保留策略-- 保留策略默认7改为14天, 可以恢复到14天内任何时间点 configure retention policy to recovery window of 14 days;b、控制文件自动备份c、备份优化d、控制文件保留备份集信息的时间-- 控制文件keep time值应为19(retention+ level 0 interval+1=14+4+1=19) -- 即极限情况下,keep time=保留策略+全备时间间隔+1天 alter system set control_file_record_keep_time=19 scope=both;四、备份脚本4.1 Level 0 批处理设置系统时间格式YYYY-MM-DD, HH:SS设置ORACLE_SID,或设置在变量环境中删除15天以上的备份日志[font color="green"]Win_RMAN_Backup_Level_0.bat[/font] 内容@echo off echo ================================================ echo Name :RMAN_Backup_Level_0 Batchfile echo Platform:Windows echo Version :Oracle 12cR1 echo Date :YYYY-MM-DD HH:MM:SS echo ================================================ echo ===!Excute RMAN Level 0 BACKUP!================= echo ===!!Do Not Kill This Windows!!================= echo ===!Running...... !================= echo ================================================ set ORACLE_SID=mcrspos if not exist "D:\RMAN_Backup\Data" md "D:\RMAN_Backup\Data" if not exist "D:\RMAN_Backup\Controlfile" md "D:\RMAN_Backup\Controlfile" if not exist "D:\RMAN_Backup\Archivelog" md "D:\RMAN_Backup\Archivelog" if not exist "D:\RMAN_Backup\Log" md "D:\RMAN_Backup\Log" forfiles /p D:\RMAN_Backup\Log /m *.*log /d -15 /c "cmd /c del @path" IF "%Time:~0,1%"==" " Set "Time=0%Time:~1%" set date=%Date:~0,4%%Date:~5,2%%Date:~8,2%_%Time:~0,2%%Time:~3,2%%Time:~6,2% 2>nul rman target / cmdfile RMAN_Backup_Level_0.rcv…

【DG部署】【Single DB+Single DG】
type: item
date: 2021-08-04T20:11:00+08:00
description: 一、Dataguard介绍1.1 概念Data Guard是保证企业数据的高可用性（high availability）、数据保护（data protection）以及灾难恢复（disaster recovery）的集成化灾难恢复解决方案，该技术可以维护生产数据库一个或多个同步备份，有一个生产数据库和若干个备用数据库组成，并形成一个独立的、易于管理的数据保护方案。Data Guard备用数据库可以与生产系统位于相同的数据中心，也可以是在地理位置上分布较远的的远程灾难备份中心。1.2 原理Data Guard的基本原理是，当某次事务处理对生产数据库中的数据作出更改时，Oracle将在联机重做日志文件中记录此次更改。在Data Guard中，除了把日志记录到本地的联机日志文件和归档日志文件中外，还通过网络，把日志信息发送到远程的备用数据库服务器上。这个备用日志文件写入过程可以是实时、同步的，以实现零数据丢失（最大保护模式）；也可以是异步的，以减少对网络带宽的压力（最大可用性模式）；或者是通过归档日志文件的批量传输模式，以减少对生产系统的性能影响（最大性能模式）。当备份数据库接收到日志信息时，Data Guard可以自动利用日志信息实现数据的同步。当主数据库打开并处于活动状态时，备份数据库可以执行恢复操作；如果主数据出现了故障，备用数据库即可以被激活并接管生产数据库的工作。1.3 特点1、需要冗余的服务器设备 该模式需要有冗余的服务器硬件，硬件成本较高。2、需要冗余的存储设备 主机和备机都需要同样的存储空间，成本较高。3、安装配置比较复杂 该模式比单节点、单实例的模式配置复杂一些，需要更多的配置步骤。4、管理维护成本高 该模式对维护人员的要求较高，维护成本高。5、具备一定的容灾特性 当主机数据库不可用并短期内无法恢复时，可以把数据库系统切换到备机上，具备容灾的功能。6、备机可以用作只读查询 备机可以切换到只读状态供报表之类的查询操作，减轻主机的压力。1.4 搭建DG方式Data Guard备库按照从生产数据库传输过来的日志处理方法的不同分为物理备库、逻辑备库和快照备库。物理备库 (三种方法：1、RMAN的Duplicate 2、RMAN的备份恢复 3、DBCA )备份数据库处于mount状态下，直接利用数据恢复技术，把日志文件中记录的数据变更应用在备份数据库中，从而实现与生产数据库的数据同步，在进行数据同步的时候，物理备份数据库是不能打开的、也无法提供数据查询等服务；物理备用数据库也可以通过只读的方式打开，此时就只能接收日志文件，而无法进行数据的同步。逻辑备库数据库是处于正常打开状态，当它接收到新的日志信息后，利用日志挖掘器的功能，把日志中记录的变更信息转换成具体的SQL语句，并在逻辑备用数据库上执行这些SQL语句，从而实现与生产数据库的数据同步。逻辑备份数据支持在数据同步时，进行数据的查询、报表等操作。Oracle从9i R2开始支持逻辑备份数据库。快照备库可以暂时将物理备份数据库转换为可更新的数据库，快照备份数据不会立马应用接收到的日志文件，设一个时间点，一次性转换。1.5 备库数据保护级别Oracle Data Guard 支持多种级别的数据保护模式：最大性能模式，最大可用性模式，最大保护模式。分别对应于“重要信息系统灾难恢复指南”中的5级，5级6级自适应，6级的数据保护级别。其中对应6级的最大保护模式可以实现实时数据实时同步和0数据丢失。另外，Oracle Data Guard 可以设置延时应用时间窗口，从而防范错误操作、黑客攻击等人为错误导致的数据损坏。1.5.1 保护模式和重做传输要确定适当的保护模式，企业需要根据用户对系统响应时间的要求来估量它们对数据保护的业务要求。下表从数据丢失风险的角度概述了各种模式的适用性。保护模式在灾难出现时数据丢失的风险重做传输机制最大保护零数据丢失LGWR SYNC最大可用零数据丢失LGWR SYNC最高性能最小数据丢失LGWR SYNC或ARCH1.5.2 最大保护模式最大保护模式为主数据库提供了最高水平的数据保护，从而确保一个全面的零数据丢失的灾难恢复解决方案。当在最大保护模式下运行时，重做记录由日志写入器 (LGWR) 进程从主数据库同步地传输到备用数据库，并且直到确认事务数据在至少一个备用服务器上的磁盘上可用时，才在主数据库上提交事务。强烈建议，这种模式应至少配置两个备用数据库。当最后参与的备用数据库不可用时，主数据库上的处理将停止。这就确保了当主数据库与其所有备用数据库失去联系时，不会丢失事务。由于重做传输的同步特性，这种最大保护模式可能潜在地影响主数据库响应时间。可以通过配置一个低延迟网络，并为它分配足够应付高峰事务负载的带宽来将这种影响减到最小。需要这种最大保护模式的企业有股…