Oracle DG之--构建Physical Standby 系统环境: 操作系统: RedHat EL4 Oracle: Oracle 10.2.0.1.0 650) this.width=650;" src="http://www.68idc.cn/help/uploads/allimg/151111/121R54538-0.jpg" title="dg2.png" alt="wKioL1R28C2B7wXmAACOWpabg-4498.jpg
Oracle DG之--构建Physical Standby
系统环境:
操作系统: RedHat EL4
Oracle: Oracle 10.2.0.1.0
从以上图中所示:主库为bj(db_unique_name),备库为sh。
案例分析:
本案例采用RMAN Duplicate方式建立standby database。
一、配置主备库初始化参数
主库的初始化参数:initbj.ora
[oracle@ocmtest dbs]$ more initbj.ora *.audit_file_dest='/u01/app/oracle/admin/bj/adump' *.background_dump_dest='/u01/app/oracle/admin/bj/bdump' *.compatible='10.2.0.1.0' *.control_files='/u01/app/oracle/oradata/bj/control01.ctl','/u01/app/oracle/oradata/bj/control02.ctl','/u01/app/oracle/oradata/bj/control 03.ctl' *.core_dump_dest='/u01/app/oracle/admin/bj/cdump' *.db_block_size=8192 *.db_domain='' *.db_file_multiblock_read_count=16 *.db_name='bj' *.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area' *.db_recovery_file_dest_size=2147483648 *.dispatchers='(PROTOCOL=TCP) (SERVICE=bjXDB)' *.job_queue_processes=10 *.open_cursors=300 *.pga_aggregate_target=68157440 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=205520896 *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' *.user_dump_dest='/u01/app/oracle/admin/bj/udump'
以下为DG配置参数:
DB_UNIQUE_NAME=bj LOG_ARCHIVE_CONFIG='DG_CONFIG=(bj,sh)' LOG_ARCHIVE_DEST_1='LOCATION=/u01/disk1/arch/bj/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=bj' LOG_ARCHIVE_DEST_2='SERVICE=sh LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=sh' LOG_ARCHIVE_DEST_STATE_1=ENABLE LOG_ARCHIVE_DEST_STATE_2=ENABLE REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE LOG_ARCHIVE_MAX_PROCESSES=3 FAL_SERVER=sh FAL_CLIENT=bj DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/sh/','/u01/app/oracle/oradata/bj/' LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/sh/','/u01/app/oracle/oradata/bj/' STANDBY_FILE_MANAGEMENT=AUTO
备库的初始化参数:initsh.ora
[oracle@ocmtest1 dbs]$ more initsh.ora *.audit_file_dest='/u01/app/oracle/admin/sh/adump' *.background_dump_dest='/u01/app/oracle/admin/sh/bdump' *.compatible='10.2.0.1.0' *.control_file_record_keep_time=7 *.control_files='/u01/app/oracle/oradata/sh/control01.ctl','/u01/app/oracle/oradata/sh/control02.ctl','/u01/app/oracle/oradata/sh/control 03.ctl' *.core_dump_dest='/u01/app/oracle/admin/sh/cdump' *.db_block_size=8192 *.db_domain='' *.db_file_multiblock_read_count=16 *.DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/bj/','/u01/app/oracle/oradata/sh/' *.db_name='bj' *.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area' *.db_recovery_file_dest_size=2147483648 *.open_cursors=300 *.pga_aggregate_target=68157440 *.processes=150 *.REMOTE_LOGIN_PASSWORDFILE='EXCLUSIVE' *.sga_target=205520896 *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' *.user_dump_dest='/u01/app/oracle/admin/sh/udump'
以下为DG配置参数:
*.DB_UNIQUE_NAME='sh' *.FAL_CLIENT='sh' *.FAL_SERVER='bj' *.job_queue_processes=10 *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(bj,sh)' *.LOG_ARCHIVE_DEST_1='LOCATION=/u01/disk1/arch/sh/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=sh' *.LOG_ARCHIVE_DEST_2='SERVICE=bj LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=bj' *.LOG_ARCHIVE_DEST_STATE_1='ENABLE' *.LOG_ARCHIVE_DEST_STATE_2='ENABLE' *.log_archive_format='arch_%t_%s_%r.log' *.LOG_ARCHIVE_MAX_PROCESSES=3 *.LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/bj/','/u01/app/oracle/oradata/sh/' *.STANDBY_FILE_MANAGEMENT='AUTO'
二、在主库上建立standby 日志
对于默认的最大性能的保护方式,可以不用建立standby redo logfiles;但建立standby redo logfiles可以更好的保存redo log;standby redo日志组组数应等于或多于redo log,日志的大小应该一致。 SQL> alter database add standby logfile group 4 ('/u01/app/oracle/oradata/bj/redo04.log') size 50m; SQL> alter database add standby logfile group 5 ('/u01/app/oracle/oradata/bj/redo05.log.rdo') size 50m; SQL> alter database add standby logfile group 6 ('/u01/app/oracle/oradata/bj/redo06.log') size 50m;
三、在备库上建立相应目录:
[oracle@ocmtest1 dbs]$mkdir -p /u01/app/oracle/admin/sh/adump [oracle@ocmtest1 dbs]$mkdir -p /u01/app/oracle/admin/sh/udump [oracle@ocmtest1 dbs]$mkdir -p /u01/app/oracle/admin/sh/bdump [oracle@ocmtest1 dbs]$mkdir -p /u01/app/oracle/admin/sh/cdump [oracle@ocmtest1 dbs]$mkdir -p /u01/app/oracle/oradata/sh
四、在主库生成备库的controlfile和备份
1、数据库在mount 状态下 06:57:41 SQL> alter database create standby controlfile as '/home/oracle/std_control01.ctl'; 2、 将生成的控制文件,拷贝到备库相同的目录下 [oracle@ocmtest1 ~]$ scp /home/oracle/std_control01.ctl 192.168.8.86:/home/oracle 对主库进行备份 [oracle@ocmtest bj]$ rman target / Recovery Manager: Release 10.2.0.1.0 - Production on Wed Aug 31 10:55:55 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. connected to target database (not started) RMAN> run { 2> startup force mount; 3> backup database format='/u01/disk1/rman/bj/bj_%s.bak' plus archivelog; 4> alter database open; 5> }
五、在备库上Duplicate Database(备库启动到弄mount)
1)在备库上建立/u01/disk1/rman/bj目录 拷贝主库的备份到备库/u01/disk1/rman/bj目录(拷贝到相同的目录下) [oracle@ocmtest bj]$ scp /u01/disk1/rman/bj/bj_*.bak 192.168.8.86:/u01/disk1/rman/bj 2)配置Oracle network 因为,备库启动到no mount 状态,拒绝用户远程联机,所以采用静态注册,如下所示备库listenter [oracle@ocmtest1 admin]$ cat listener.ora # listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = bj) (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1) (SID_NAME = bj) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ocmtest1.51CTO提醒您,请勿滥发广告!)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) ) 如下所示:主库的tnsnames文件: [oracle@ocmtest1 admin]$ [oracle@ocmtest admin]$ cat tnsnames.ora # tnsnames.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora # Generated by Oracle configuration tools. BJ = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.84)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = bj) ) ) SH = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.86)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = sh) (UR=A) ;添加此项连接到静态注册的备库 ) ) 测试连接备库 [oracle@ocmtest bj]$ sqlplus sys/oracle@sh as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Wed Aug 31 11:19:32 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options SQL> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options 通过主库连接到备库,进行恢复(通过克隆方式建立备库) [oracle@ocmtest bj]$ rman target / Recovery Manager: Release 10.2.0.1.0 - Production on Wed Aug 31 11:19:36 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. connected to target database: BJ (DBID=1015723911) RMAN> connect auxiliary sys/oracle@sh; connected to auxiliary database: BJ (not mounted) RMAN> duplicate target database for standby; Starting Duplicate Db at 31-AUG-11 using target database control file instead of recovery catalog allocated channel: ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: sid=155 devtype=DISK contents of Memory Script: { restore clone standby controlfile; sql clone 'alter database mount standby database'; } executing Memory Script Starting restore at 31-AUG-11 using channel ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: restoring control file channel ORA_AUX_DISK_1: copied control file copy input filename=/home/oracle/stand.ctl output filename=/u01/app/oracle/oradata/sh/control01.ctl output filename=/u01/app/oracle/oradata/sh/control02.ctl output filename=/u01/app/oracle/oradata/sh/control03.ctl Finished restore at 31-AUG-11 sql statement: alter database mount standby database released channel: ORA_AUX_DISK_1 contents of Memory Script: { set newname for tempfile 1 to "/u01/app/oracle/oradata/sh/temp01.dbf"; switch clone tempfile all; set newname for datafile 1 to "/u01/app/oracle/oradata/sh/system01.dbf"; set newname for datafile 2 to "/u01/app/oracle/oradata/sh/undotbs01.dbf"; set newname for datafile 3 to "/u01/app/oracle/oradata/sh/sysaux01.dbf"; set newname for datafile 4 to "/u01/app/oracle/oradata/sh/users01.dbf"; set newname for datafile 5 to "/u01/app/oracle/oradata/sh/example01.dbf"; restore check readonly clone database ; } executing Memory Script executing command: SET NEWNAME renamed temporary file 1 to /u01/app/oracle/oradata/sh/temp01.dbf in control file executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME Starting restore at 31-AUG-11 allocated channel: ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: sid=155 devtype=DISK channel ORA_AUX_DISK_1: starting datafile backupset restore channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set restoring datafile 00001 to /u01/app/oracle/oradata/sh/system01.dbf restoring datafile 00002 to /u01/app/oracle/oradata/sh/undotbs01.dbf restoring datafile 00003 to /u01/app/oracle/oradata/sh/sysaux01.dbf restoring datafile 00004 to /u01/app/oracle/oradata/sh/users01.dbf restoring datafile 00005 to /u01/app/oracle/oradata/sh/example01.dbf channel ORA_AUX_DISK_1: reading from backup piece /u01/disk1/rman/bj/bj_2.bak channel ORA_AUX_DISK_1: restored backup piece 1 piece handle=/u01/disk1/rman/bj/bj_2.bak tag=TAG20110831T105953 channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:48 Finished restore at 31-AUG-11 contents of Memory Script: { switch clone datafile all; } executing Memory Script datafile 1 switched to datafile copy input datafile copy recid=10 stamp=760621486 filename=/u01/app/oracle/oradata/sh/system01.dbf datafile 2 switched to datafile copy input datafile copy recid=11 stamp=760621487 filename=/u01/app/oracle/oradata/sh/undotbs01.dbf datafile 3 switched to datafile copy input datafile copy recid=12 stamp=760621487 filename=/u01/app/oracle/oradata/sh/sysaux01.dbf datafile 4 switched to datafile copy input datafile copy recid=13 stamp=760621487 filename=/u01/app/oracle/oradata/sh/users01.dbf datafile 5 switched to datafile copy input datafile copy recid=14 stamp=760621487 filename=/u01/app/oracle/oradata/sh/example01.dbf Finished Duplicate Db at 31-AUG-11
---备库建立完毕,并启动到mount状态!
六、在备库上启动MRP进程
11:40:28 SQL> SELECT status from v$instance; STATUS ------------ MOUNTED 11:45:40 SQL> alter database recover managed standby database disconnect from session; Database altered. 告警日志: alter database recover managed standby database disconnect from session Wed Aug 31 11:46:00 2011 Attempt to start background Managed Standby Recovery process (sh) MRP0 started with pid=22, OS id=14159 Wed Aug 31 11:46:01 2011 MRP0: Background Managed Standby Recovery process started (sh) Managed Standby Recovery not using Real Time Apply Wed Aug 31 11:46:06 2011 Errors in file /u01/app/oracle/admin/sh/bdump/sh_mrp0_14159.trc: ORA-00313: open failed for members of log group 1 of thread 1 ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/sh/redo01.log' ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3 Wed Aug 31 11:46:06 2011 Errors in file /u01/app/oracle/admin/sh/bdump/sh_mrp0_14159.trc: ORA-00313: open failed for members of log group 1 of thread 1 ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/sh/redo01.log' ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3 Clearing online redo logfile 1 /u01/app/oracle/oradata/sh/redo01.log Clearing online log 1 of thread 1 sequence number 23 Wed Aug 31 11:46:06 2011 Errors in file /u01/app/oracle/admin/sh/bdump/sh_mrp0_14159.trc: ORA-00313: open failed for members of log group 1 of thread 1 ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/sh/redo01.log' ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3 Wed Aug 31 11:46:07 2011 Completed: alter database recover managed standby database disconnect from session Wed Aug 31 11:46:08 2011 Clearing online redo logfile 1 complete Wed Aug 31 11:46:08 2011 Errors in file /u01/app/oracle/admin/sh/bdump/sh_mrp0_14159.trc: ORA-00313: open failed for members of log group 2 of thread 1 ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/sh/redo02.log' ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3 Wed Aug 31 11:46:08 2011 Errors in file /u01/app/oracle/admin/sh/bdump/sh_mrp0_14159.trc: ORA-00313: open failed for members of log group 2 of thread 1 ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/sh/redo02.log' ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3 Clearing online redo logfile 2 /u01/app/oracle/oradata/sh/redo02.log Clearing online log 2 of thread 1 sequence number 21 Wed Aug 31 11:46:08 2011 Errors in file /u01/app/oracle/admin/sh/bdump/sh_mrp0_14159.trc: ORA-00313: open failed for members of log group 2 of thread 1 ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/sh/redo02.log' ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3 Clearing online redo logfile 2 complete Wed Aug 31 11:46:09 2011 Errors in file /u01/app/oracle/admin/sh/bdump/sh_mrp0_14159.trc: ORA-00313: open failed for members of log group 3 of thread 1 ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/sh/redo03.log' ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3 Wed Aug 31 11:46:09 2011 Errors in file /u01/app/oracle/admin/sh/bdump/sh_mrp0_14159.trc: ORA-00313: open failed for members of log group 3 of thread 1 ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/sh/redo03.log' ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3 Clearing online redo logfile 3 /u01/app/oracle/oradata/sh/redo03.log Clearing online log 3 of thread 1 sequence number 22 Wed Aug 31 11:46:09 2011 Errors in file /u01/app/oracle/admin/sh/bdump/sh_mrp0_14159.trc: ORA-00313: open failed for members of log group 3 of thread 1 ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/sh/redo03.log' ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3 Clearing online redo logfile 3 complete Media Recovery Waiting for thread 1 sequence 23 Wed Aug 31 11:47:00 2011 Using STANDBY_ARCHIVE_DEST parameter default value as /u01/disk1/arch/sh/ Redo Shipping Client Connected as PUBLIC -- Connected User is Valid RFS[1]: Assigned to RFS process 14219 RFS[1]: Identified database type as 'physical standby' Wed Aug 31 11:47:00 2011 RFS LogMiner: Client disabled from further notification Wed Aug 31 11:47:01 2011 Redo Shipping Client Connected as PUBLIC -- Connected User is Valid RFS[2]: Assigned to RFS process 14221 RFS[2]: Identified database type as 'physical standby' Wed Aug 31 11:47:01 2011 RFS[1]: Archived Log: '/u01/disk1/arch/sh/arch_1_7_760458507.log' RFS[1]: Archived Log: '/u01/disk1/arch/sh/arch_1_8_760458507.log' Wed Aug 31 11:47:01 2011 RFS[2]: Archived Log: '/u01/disk1/arch/sh/arch_1_6_760458507.log' RFS[2]: Archived Log: '/u01/disk1/arch/sh/arch_1_10_760458507.log' Wed Aug 31 11:47:01 2011 RFS[1]: Archived Log: '/u01/disk1/arch/sh/arch_1_9_760458507.log' Wed Aug 31 11:47:02 2011 RFS[2]: Archived Log: '/u01/disk1/arch/sh/arch_1_11_760458507.log' Wed Aug 31 11:47:02 2011 RFS[1]: Archived Log: '/u01/disk1/arch/sh/arch_1_12_760458507.log' Wed Aug 31 11:47:02 2011 RFS[2]: Archived Log: '/u01/disk1/arch/sh/arch_1_13_760458507.log' Wed Aug 31 11:47:02 2011 RFS[1]: Archived Log: '/u01/disk1/arch/sh/arch_1_14_760458507.log' Wed Aug 31 11:47:02 2011 RFS[2]: Archived Log: '/u01/disk1/arch/sh/arch_1_15_760458507.log' Wed Aug 31 11:47:02 2011 RFS[1]: Archived Log: '/u01/disk1/arch/sh/arch_1_16_760458507.log' Wed Aug 31 11:47:03 2011 RFS[2]: Archived Log: '/u01/disk1/arch/sh/arch_1_17_760458507.log' Wed Aug 31 11:47:03 2011 RFS[1]: Archived Log: '/u01/disk1/arch/sh/arch_1_18_760458507.log' RFS[1]: Archived Log: '/u01/disk1/arch/sh/arch_1_19_760458507.log' Wed Aug 31 11:47:03 2011 RFS[2]: Archived Log: '/u01/disk1/arch/sh/arch_1_20_760458507.log' RFS[2]: Archived Log: '/u01/disk1/arch/sh/arch_1_22_760458507.log' Wed Aug 31 11:47:04 2011 RFS[1]: Archived Log: '/u01/disk1/arch/sh/arch_1_21_760458507.log' Wed Aug 31 11:47:04 2011 RFS[2]: Archived Log: '/u01/disk1/arch/sh/arch_1_24_760458507.log' RFS[2]: Archived Log: '/u01/disk1/arch/sh/arch_1_25_760458507.log' Wed Aug 31 11:47:05 2011 RFS[1]: Archived Log: '/u01/disk1/arch/sh/arch_1_23_760458507.log' Wed Aug 31 11:47:05 2011 RFS[2]: Archived Log: '/u01/disk1/arch/sh/arch_1_26_760458507.log' RFS[2]: Archived Log: '/u01/disk1/arch/sh/arch_1_27_760458507.log' Wed Aug 31 11:47:05 2011 RFS[1]: Archived Log: '/u01/disk1/arch/sh/arch_1_28_760458507.log' Wed Aug 31 11:47:05 2011 RFS[2]: Archived Log: '/u01/disk1/arch/sh/arch_1_29_760458507.log' Wed Aug 31 11:47:05 2011 Media Recovery Log /u01/disk1/arch/sh/arch_1_23_760458507.log Media Recovery Log /u01/disk1/arch/sh/arch_1_24_760458507.log Media Recovery Log /u01/disk1/arch/sh/arch_1_25_760458507.log Media Recovery Log /u01/disk1/arch/sh/arch_1_26_760458507.log Media Recovery Log /u01/disk1/arch/sh/arch_1_27_760458507.log Media Recovery Log /u01/disk1/arch/sh/arch_1_28_760458507.log Media Recovery Log /u01/disk1/arch/sh/arch_1_29_760458507.log Media Recovery Waiting for thread 1 sequence 30
七、在主库上切换日志测试数据同步
RMAN> sql'alter system switch logfile'; sql statement: alter system switch logfile 备库告警日志: RFS[1]: No standby redo logfiles created RFS[1]: Archived Log: '/u01/disk1/arch/sh/arch_1_30_760458507.log' Wed Aug 31 11:48:06 2011 Redo Shipping Client Connected as PUBLIC -- Connected User is Valid RFS[3]: Assigned to RFS process 14234 RFS[3]: Identified database type as 'physical standby' Primary database is in MAXIMUM PERFORMANCE mode Primary database is in MAXIMUM PERFORMANCE mode RFS[3]: No standby redo logfiles created Wed Aug 31 11:48:08 2011 Media Recovery Log /u01/disk1/arch/sh/arch_1_30_760458507.log Media Recovery Waiting for thread 1 sequence 31 (in transit) ---备库接收到归档日志,并对其做Media Recover。
八、查看数据库信息:
18:02:08 SYS@ bj >select name,database_role,protection_mode from v$database; NAME DATABASE_ROLE PROTECTION_MODE --------- ---------------- -------------------- BJ PRIMARY MAXIMUM PERFORMANCE 18:02:50 SYS@ sh >select name,database_role,protection_mode from v$database; NAME DATABASE_ROLE PROTECTION_MODE --------- ---------------- -------------------- BJ PHYSICAL STANDBY MAXIMUM PERFORMANCE
----@此案例采用Oracle 10g的环境,对于备库在recover状态下,只能启动到mount状态,如果启动到open环境,则会停止recover,失去了数据保护的功能;对于Oracle 11g,Oracle启用了新的特性,“Active Standby”,可以将备库启动到open状态,并且可以继续recover,从而增强了备库的应用范围和备库的功能。

INNODBは、レドログと非論的なものを使用して、データの一貫性と信頼性を確保しています。 1.レドログは、クラッシュの回復とトランザクションの持続性を確保するために、データページの変更を記録します。 2.Undologsは、元のデータ値を記録し、トランザクションロールバックとMVCCをサポートします。

説明コマンドのキーメトリックには、タイプ、キー、行、および追加が含まれます。 1)タイプは、クエリのアクセスタイプを反映しています。値が高いほど、constなどの効率が高くなります。 2)キーは使用されているインデックスを表示し、nullはインデックスがないことを示します。 3)行はスキャンされた行の数を推定し、クエリのパフォーマンスに影響します。 4)追加の情報を最適化する必要があるというFilesortプロンプトを使用するなど、追加情報を提供します。

Temporaryを使用すると、MySQLクエリに一時テーブルを作成する必要があることが示されています。これは、異なる列、またはインデックスされていない列を使用して順番に一般的に見られます。インデックスの発生を回避し、クエリを書き直し、クエリのパフォーマンスを改善できます。具体的には、expliect出力に使用を使用する場合、MySQLがクエリを処理するために一時テーブルを作成する必要があることを意味します。これは通常、次の場合に発生します。1)個別またはグループビーを使用する場合の重複排除またはグループ化。 2)Orderbyに非インデックス列が含まれているときに並べ替えます。 3)複雑なサブクエリを使用するか、操作に参加します。最適化方法には以下が含まれます。1)OrderbyとGroupB

MySQL/INNODBは、4つのトランザクション分離レベルをサポートしています。 1.ReadunCommittedは、知らないデータを読み取ることができます。 2。読み込みは汚い読み取りを回避しますが、繰り返しのない読みが発生する可能性があります。 3. RepeatablerEadはデフォルトレベルであり、汚い読み取りと非回復不可能な読みを避けますが、幻の読み取りが発生する可能性があります。 4. Serializableはすべての並行性の問題を回避しますが、同時性を低下させます。適切な分離レベルを選択するには、データの一貫性とパフォーマンス要件のバランスをとる必要があります。

MySQLは、Webアプリケーションやコンテンツ管理システムに適しており、オープンソース、高性能、使いやすさに人気があります。 1)PostgreSQLと比較して、MySQLは簡単なクエリと高い同時読み取り操作でパフォーマンスが向上します。 2)Oracleと比較して、MySQLは、オープンソースと低コストのため、中小企業の間でより一般的です。 3)Microsoft SQL Serverと比較して、MySQLはクロスプラットフォームアプリケーションにより適しています。 4)MongoDBとは異なり、MySQLは構造化されたデータおよびトランザクション処理により適しています。

MySQLインデックスのカーディナリティは、クエリパフォーマンスに大きな影響を及ぼします。1。高いカーディナリティインデックスは、データ範囲をより効果的に狭め、クエリ効率を向上させることができます。 2。低カーディナリティインデックスは、完全なテーブルスキャンにつながり、クエリのパフォーマンスを削減する可能性があります。 3。ジョイントインデックスでは、クエリを最適化するために、高いカーディナリティシーケンスを前に配置する必要があります。

MySQL学習パスには、基本的な知識、コアの概念、使用例、最適化手法が含まれます。 1)テーブル、行、列、SQLクエリなどの基本概念を理解します。 2)MySQLの定義、作業原則、および利点を学びます。 3)インデックスやストアドプロシージャなどの基本的なCRUD操作と高度な使用法をマスターします。 4)インデックスの合理的な使用や最適化クエリなど、一般的なエラーのデバッグとパフォーマンス最適化の提案に精通しています。これらの手順を通じて、MySQLの使用と最適化を完全に把握できます。

MySQLの実際のアプリケーションには、基本的なデータベース設計と複雑なクエリの最適化が含まれます。 1)基本的な使用法:ユーザー情報の挿入、クエリ、更新、削除など、ユーザーデータの保存と管理に使用されます。 2)高度な使用法:eコマースプラットフォームの注文や在庫管理など、複雑なビジネスロジックを処理します。 3)パフォーマンスの最適化:インデックス、パーティションテーブル、クエリキャッシュを使用して合理的にパフォーマンスを向上させます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
