MSSQL教程之创立逻辑备用库(Logical Standby Datab...
出于效率方面的考虑,InnoDB数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。创立上面的是LogicalStandbyDatabase的设置步骤.
(上面用到的一些文件的地位都是一时性的,还得做必定的修正)
将主数据库置为FORCELOGGING形式.在主数据库创立以后做以下操纵:
SQL>ALTERDATABASEFORCELOGGING;
确认主数据库是回档的并界说好当地回档.以下:
SQL>ALTERSYSTEMSETLOG_ARCHIVE_DEST_1=LOCATION=e:oracleoradataorclarchiveMANDATORYSCOPE=BOTH;
确认LOG_PARALLELISM初始化参数值,LogicalStandbyDatabase请求此参数的值为1,是个缺省值.假如查出来的参数值为1则不必要做修正,假如不是1值则要用ALTERSYSTEMSET命令做修正.详细操纵以下:
SQL>SHOWPARAMETERLOG_PARAMETER------检察参数确当前值
SQL>ALTERSYSTEMSETLOG_PARALLELISM=1SCOPE=BOTH;
修正完今后要封闭数据库偏重新启动此参数才无效.
SQL>SHUTDOWNIMMEDIATE
SQL>STARTUP
确认撑持的数据范例和表:
在创建LogicalStandbyDatabase时,有些数据范例和表是撑持的而有些是不撑持的.
撑持的数据范例有:
CHAR
NCHAR
VARCHAR2andVARCHAR
NVARCHAR2
NUMBER
DATE
TIMESTAMP
TIMESTAMPWITHTIMEZONE
TIMESTAMPWITHLOCALTIMEZONE
INTERVALYEARTOMONTH
INTERVALDAYTOSECOND
RAW
CLOB
BLOB
不撑持的数据范例有:
NCLOB
LONG
LONGRAW
BFILE
ROWID
UROWID
user-definedtypes
objecttypesREFs
varrays
nestedtables
不撑持的工具范例有:
User-definedtablesandsequencesintheSYSschema
Tableswithunsupporteddatatypes
Tablesusingdatasegmentcompression
Index-organizedtables
确认主数据是不是包括不撑持的工具能够查询数据字典表DBA_LOGSTDBY_UNSUPPORTED:
SQL>SELECTDISTINCTOWNER,TABLE_NAMEFROMDBA_LOGSTDBY_UNSUPPORTED
2>ORDERBYOWNER,TABLE_NAME;
用以下的体例检察下面所得出的表的字段名和数据范例:
SQL>SELECTCOLUMN_NAME,DATA_TYPEFROMDBA_LOGSTDBY_UNSUPPORTED
2>WHEREOWNER=OEANDTABLE_NAME=CUSTOMERS;
LogicalStandbyDatabase会过滤的SQL语句为:
ALTERDATABASE
ALTERSESSION
ALTERSNAPSHOT
ALTERSNAPSHOTLOG
ALTERSYSTEMSWITCHLOG
CREATECONTROLFILE
CREATEDATABASE
CREATEDATABASELINK
CREATEPFILEFROMSPFILE
CREATESCHEMAAUTHORIZATION
CREATESNAPSHOT
CREATESNAPSHOTLOG
CREATESPFILEFROMPFILE
CREATETABLEASSELECTFROMACLUSTERTABLE
DROPDATABASELINK
DROPSNAPSHOT
DROPSNAPSHOTLOG
EXPLAIN
LOCKTABLE
RENAME
SETCONSTRAINTS
SETROLE
SETTRANSACTION
确保主数据库中的表行是能够独一确认的(即有表中有主键)
找出没有主键的表:
SQL>SELECTOWNER,TABLE_NAME,BAD_COLUMNFROMDBA_LOGSTDBY_NOT_UNIQUE
2>WHERETABLE_NAMENOTIN(SELECTTABLE_NAMEFROMDBA_LOGSTDBY_UNSUPPORTED);
OWNERTABLE_NAMEB
-------------------------------------------------------------
OUTLNOL$HINTSN
OUTLNOL$NODESN
SYSTEMMVIEW$_ADV_BASETABLEN
SYSTEMMVIEW$_ADV_SQLDEPENDN
SYSTEMMVIEW$_ADV_FILTERINSTANCEN
SYSTEMDEF$_ORIGINN
SYSTEMREPCAT$_SNAPGROUPN
SYSTEMREPCAT$_DDLN
SYSTEMREPCAT$_RESOLUTION_STATISTICSN
SYSTEMREPCAT$_RUNTIME_PARMSY
SYSTEMMVIEW$_ADV_INDEXN
选择出来看BAD_COLUMN字段值.假如此值为N暗示这个表关于没有主键字段列有充足的列信息传到备用数据库中.假如此值为Y暗示信息不敷必需对这个表加一个DISABLERELYCONSTRAINT以使关于这个表的LOG能够APPLY到逻辑备用库中.
选择出来只要SYSTEM用户下的表REPCAT$_RUNTIME_PARMS必要做修正,然后
SQL>DESCSYSTEM.REPCAT$_RUNTIME_PARMS检察这个表的布局.然后做修正以下:
SQL>ALTERTABLESYSTEM.REPCAT$_RUNTIME_PARMSADDPRIMARYKEY(RUNTIME_PARM_ID,PARAMETER_NAME)RELYDISABLE;
修正完今后再做下面的查询以确认没有表必要再做修正:
SQL>SELECTOWNER,TABLE_NAME,BAD_COLUMNFROMDBA_LOGSTDBY_NOT_UNIQUE
2>WHERETABLE_NAMENOTIN(SELECTTABLE_NAMEFROMDBA_LOGSTDBY_UNSUPPORTED);
OWNERTABLE_NAMEB
-------------------------------------------------------------
OUTLNOL$HINTSN
OUTLNOL$NODESN
SYSTEMMVIEW$_ADV_BASETABLEN
SYSTEMMVIEW$_ADV_SQLDEPENDN
SYSTEMMVIEW$_ADV_FILTERINSTANCEN
SYSTEMDEF$_ORIGINN
SYSTEMREPCAT$_SNAPGROUPN
SYSTEMREPCAT$_DDLN
SYSTEMREPCAT$_RESOLUTION_STATISTICSN
SYSTEMMVIEW$_ADV_INDEXN
确认主数据库能够补足日记(SupplementalLogging)
SQL>SELECTSUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UIFROMV$DATABASE;
SUPSUP
------
NONO(NO值暗示此时主数据库是不撑持补足日记的)
使主数据库能够补足日记
SQL>ALTERDATABASEADDSUPPLEMENTALLOGDATA(PRIMARYKEY,UNIQUEINDEX)COLUMNS;(这条语句将有关由主数据修正的行独一信息能够经由过程日记传到备用数据库中并做LogApply)
在主数据库中做新的日记切换.由于在上一步做完EnableSupplementalLogging以后.以后日记大概包括了有补足的日记和没有补足的日记,而逻辑备用数据库的LogApply是不撑持二者一同的日记的.以是在创立逻辑备用数据库之前要确保要从主数据库传到备用数据库的一切日记都只包括补足日记
SQL>ALTERSYSTEMARCHIVELOGCURRENT;
确认一下主数据库此时撑持补足日记
SQL>SELECTSUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UIFROMV$DATABASE;
SUPSUP
------
YESYES(YES值暗示此时主数据库是撑持补足日记的)
SUPPLEMENTAL_LOG_DATA_PK:撑持补足日记,其信息是primarykey
SUPPLEMENTAL_LOG_DATA_UI:撑持补足日记,其信息是uniqueindex
在主数据库创立一个瓜代的表空间.并用DBMS_LOGMNR_D.SET_TABLESPACE将某些表放到这个表空间中.由于在逻辑备用数据库中有一些表是属于SYS和SYSTEM用户的,而这些是放在表空间的.这些表大概在一段工夫跋文录猛增.为了使SYSTEM表空间不会被用满而招致数据库DOWN机,创建这个瓜代的表空间来寄存这些表.
SQL>CREATETABLESPACElogmnrtsDATAFILE/disk1/oracle/dbs/logmnrts.dbf
2>SIZE25MAUTOEXTENDONMAXSIZE2048M
3>SEGMENTSPACEMANAGEMENTAUTO;
SQL>EXECUTEDBMS_LOGMNR_D.SET_TABLESPACE(logmnrts);
(下面一步EXECUTEDBMS_LOGMNR_D.SET_TABLESPACE(logmnrts);能够在今后的保护中再做响应的保护)
创立逻辑备用数据库
确认主数据库的数据文件和日记文件
在主数据库中经由过程查询V$DATAFILE取得数据文件的地位
SQL>selectnamefromv$datafile;
NAME
-----------------------------------------------------------
E:ORACLEORA92ORCLYSTEM01.DBF
E:ORACLEORA92ORCLUNDOTBS01.DBF
E:ORACLEORA92ORCLEXAMPLE01.DBF
E:ORACLEORA92ORCLINDX01.DBF
E:ORACLEORA92ORCLTOOLS01.DBF
E:ORACLEORA92ORCLUSERS01.DBF
E:ORACLEORA92ORCLLOGMNRTS.DBF
E:ORACLEORA92ORCLXDB01.DBF
在主数据库中经由过程查询V$LOGFILE取得日记文件的地位
SQL>colmemberformata35
SQL>selectgroup#,type,memberfromv$logfile;
GROUP#TYPEMEMBER
----------------------------------------------------
1ONLINEE:ORACLEORA92ORCLREDO01.LOG
2ONLINEE:ORACLEORA92ORCLREDO02.LOG
3ONLINEE:ORACLEORA92ORCLREDO03.LOG
对主数据库做一次冷备份(全备份,拷贝一切必要的文件:数据文件,把持文件,参数文件)详细做法以下:
封闭数据库:SQL>SHUTDOWNIMMEDIATE
将后面失掉的数据文件拷贝到一个一时的地位F:ORACLE
启动数据库到MOUNT形态下:SQL>STARTUPMOUNT
为逻辑备用数据库创立一个备份的把持文件:
SQL>ALTERDATABASEBACKUPCONTROLFILETO
2>f:oraclekcontrol.ora;
将主数据库放在restrictedsession形式下(在翻开数据库时以避免用户对数据库举行DML和DDL操纵):SQL>ALTERSYSTEMENABLERESTRICTEDSESSION;
创建Logminer字典(LogicalStandbyDatabase在分化REDOLOG为SQL语句时必要Logminer工具,而这个工具在利用之前必要创建Logminer字典):
SQL>ALTERDATABASEOPEN;
SQL>EXECUTEDBMS_LOGSTDBY.BUILD;
作废主数据库的restrictedsession形式利用户能够实行DML和DDL语句:
SQL>ALTERSYSTEMDISABLERESTRICTEDSESSION;
检察比来的回档日记(在前面的逻辑备用数据库的创立过程当中必要用到)
SQL>ALTERSYSTEMARCHIVELOGCURRENT;(对以后日记做回档)
SQL>SELECTNAMEFROMV$ARCHIVED_LOG
2>WHERE(SEQUENCE#=(SELECTMAX(SEQUENCE#)FROMV$ARCHIVED_LOG
3>WHEREDICTIONARY_BEGIN=YESANDSTANDBY_DEST=NO));
NAME
-----------------------------------------------------------------
E:ORACLEORADATAORCLARCHIVE1_19.DBF
下面的查询个中WHERE子句的DICTIONARY_BEGIN指明是要找出新建的字典,STANDBY_DEST指明是当地回档目次而不是远程回档.
为备用数据库创立筹办初始化参数:
SQL>CREATEPFILE=f:oracleinitstdby.oraFROMSPFILE;
将后面三步所失掉的数据文件,把持文件和参数文件从主数据库的服务器拷贝到备用数据库的服务器.(拷贝到f:oracle目次)
在备用数据库服务器修正初始化参数(刚拷贝过去的初始化参数文件)修正后的值也许以下:
*.aq_tm_processes=1
*.background_dump_dest=e:oracleadmintandbydump
*.compatible=9.2.0.0.0
*.control_files=e:oracleoradatacontrolfilekcontrol.ora
*.core_dump_dest=e:oracleadmintandbylcdump
*.db_block_size=16384
*.db_cache_size=137363456
*.db_domain=
*.db_file_multiblock_read_count=16
*.db_name=orcl
*.dispatchers=(PROTOCOL=TCP)(SERVICE=orclXDB)
*.fast_start_mttr_target=300
*.hash_join_enabled=TRUE
*.instance_name=standby
*.java_pool_size=33554432
*.job_queue_processes=10
*.large_pool_size=27262976
*.log_archive_dest_1=LOCATION=e:oracleoradataarchiveMANDATORY
*.log_archive_dest_state_1=ENABLE
*.log_archive_format=arch%d_%s.dbf
*.log_archive_start=true
*.open_cursors=300
*.pga_aggregate_target=80000000
*.processes=150
*.query_rewrite_enabled=FALSE
*.remote_login_passwordfile=EXCLUSIVE
*.shared_pool_size=45088768
*.sort_area_size=524288
*.sql_trace=FALSE
*.star_transformation_enabled=FALSE
*.timed_statistics=TRUE
*.undo_management=AUTO
*.undo_retention=10800
*.undo_tablespace=UNDOTBS1
*.user_dump_dest=e:oracleadmintandbyudump
*.workarea_size_policy=AUTO
*.lock_name_space=STANDBY
*.standby_file_management=AUTO
*.standby_archive_dest=e:oracleoradatatdarch
*.log_parallelism=1
在备用数据库一端创立一个新的实例.以下操纵:
c:>oradim–new–sidstandby–startmodeauto
在主数据设置listener.ora,tnsnames.ora和sqlnet.ora文件.设置完以后分离以下:
LISTENER=
(DESCRIPTION_LIST=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.100.0.122)(PORT=1521))
)
)
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))
)
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=PLSExtProc)
(ORACLE_HOME=e:oracleora92)
(PROGRAM=extproc)
)
(SID_DESC=
(GLOBAL_DBNAME=orcl)
(ORACLE_HOME=e:/oracle/ora92)
(SID_NAME=orcl)
)
)
tnsnames.ora文件为:
ORCL=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.100.0.122)(PORT=1521))
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=orcl)
)
)
STANDBY=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.100.0.222)(PORT=1521))
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=orcl)
)
)
EXTPROC_CONNECTION_DATA=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))
)
(CONNECT_DATA=
(SID=PLSExtProc)
(PRESENTATION=RO)
)
)
sqlnet.ora文件为:
SQLNET.AUTHENTICATION_SERVICES=(NTS)
NAMES.DIRECTORY_PATH=(HOSTNAME,TNSNAMES,ONAMES)
在备用数据库设置listener.ora,tnsnames.ora和sqlnet.ora.设置后的文件内容分离以下:
个中设置sqlnet.ora文件中的参数sqlnet.expire_time是enable逝世毗连侦测
LISTENER=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))
)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.100.0.222)(PORT=1521))
)
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=orcl2)
(ORACLE_HOME=e:oracleora92)
(SID_NAME=ORCL)
)
(SID_DESC=
(PROGRAM=extproc)
(SID_NAME=PLSExtProc)
(ORACLE_HOME=e:oracleora92)
)
)
tnsnames.ora文件为:
ORCL=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.100.0.122)(PORT=1521))
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=orcl)
)
)
STANDBY=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.100.0.222)(PORT=1521))
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=orcl)
)
)
EXTPROC_CONNECTION_DATA=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0))
)
(CONNECT_DATA=
(SID=PLSExtProc)
(PRESENTATION=RO)
)
)
sqlnet.ora文件为:
SQLNET.AUTHENTICATION_SERVICES=(NTS)
NAMES.DIRECTORY_PATH=(HOSTNAME,TNSNAMES,ONAMES)
SQLNET.EXPIRE_TIME=2
在主数据库和备用数据库用lsnrctlstart和lsnrctlstop启动和封闭监听器.然后在主数据库用tnspingstandby和在备用数据库用tnspingorcl试看两个库是不是是通的.
用初始化参数文件启动数据库到MOUNT形态下.
SQL>STARTUPMOUNTPFILE=f:oracleadmintandbypfileinitstdby.ora;
Rename数据文件.假如拷贝过去的数据文件的地位与本来在主库中的地位纷歧样.而我们如今利用的是主库备份过去的把持文件,以是要将数据文件rename到新的地位.做以下操纵(假如地位是一样的能够不做操纵):
SQL>ALTERDATABASERENAMEFILEE:ORACLEORA92ORCLYSTEM01.DBF
2>TOf:oracletandbyystem01.dbf;
SQL>ALTERDATABASERENAMEFILEE:ORACLEORA92ORCLUNDOTBS01.DBF
2>TOf:oracletandbyUNDOTBS01.DBF;
SQL>ALTERDATABASERENAMEFILEE:ORACLEORA92ORCLEXAMPLE01.DBF
2>TOf:oracletandbyEXAMPLE01.DBF;
SQL>ALTERDATABASERENAMEFILEE:ORACLEORA92ORCLINDX01.DBF
2>TOf:oracletandbyINDX01.DBF;
SQL>ALTERDATABASERENAMEFILEE:ORACLEORA92ORCLTOOLS01.DBF
2>TOf:oracletandbyTOOLS01.DBF;
SQL>ALTERDATABASERENAMEFILEE:ORACLEORA92ORCLUSERS01.DBF
2>TOf:oracletandbyUSERS01.DBF;
SQL>ALTERDATABASERENAMEFILEE:ORACLEORA92ORCLXDB01.DBF
2>TOf:oracletandbyXDB01.DBF;
SQL>ALTERDATABASERENAMEFILEE:ORACLEORA92ORCLLOGMNRTS.DBF
2>TOf:oracletandbyLOGMNRTS.DBF;
Rename日记文件.这一步只是将把持文件中日记文件的地位信息举行变动,此时并没有真实的日记文件天生,也没有从主库拷贝日记文件到备用库.做以下:
SQL>ALTERDATABASERENAMEFILEe:oracleora92orcledo01.log
2>TOe:oracleadataedo01.log;
SQL>ALTERDATABASERENAMEFILEe:oracleora92orcledo02.log
2>TOe:oracleadataedo02.log;
SQL>ALTERDATABASERENAMEFILEe:oracleora92orcledo03.log
2>TOe:oracleadataedo03.log;
在备用数据库翻开DATAGUARD(利用户不克不及在LogicalStandbyDatabase做更新操纵),做以下:
SQL>ALTERDATABASEGUARDALL;
SQL>ALTERDATABASEOPENRESETLOGS;
重设LogicalStandbyDatabase的数据库名(这一步的目标性临时没完整弄分明)
利用DBNEWID(nid)工具来重设数据库名.要先封闭数据库并把数据库启动为MOUNT形态:
SQL>SHUTDOWNIMMEDIATE;
SQL>STARTUPMOUNTPFILE=f:oracleinitstdby.ora;
用DBNEWID工具,操纵以下(这个是在命令行下操纵):
nidTARGET=SYS/password@orclDBNAME=standby
然后再封闭数据库:SQL>SHUTDOWNIMMEDIATE
改动初始化参数:db_name=standby
启动数据库为MOUNT形态:SQL>STARTUPMOUNT;
为备用数据库创立SERVERPARAMETERFILE:
SQL>CREATESPFILEFROMPFILE=f:oracleinitstdby.ora;
封闭数据库然后用SPFILE重启动数据库:
SQL>SHUTDOWNIMMEDIATE
SQL>STARTUPMOUNT
SQL>ALTERDATABASEOPENRESETLOGS;
给备用数据库创立一个新的一时文件(属于一时表空间)
先检察备用库中是不是有一时文件,假如没有就间接创立,假如有要删除从头创立.(由于从主库的冷备份拷贝过去的一时文件在备用库中是不克不及用的.以是得重修)响应操纵以下:
SQL>SELECT*FROMV$TEMPFILE;-------检察是不是有一时文件
norowsselected
SQL>ALTERDATABASETEMPFILEtempfilenameDROP;------删除重修前的一时文件
SQL>SELECTTABLESPACE_NAMEFROMDBA_TABLESPACESWHERE
2>CONTENTS=TEMPORARY;--------检察一时文件所属的一时表空间名
TABLESPACE_NAME
--------------------------------
TEMP
SQL>ALTERTABLESPACETEMPADDTEMPFILE
2>f:oracletandby emp01.dbf
3>SIZE40MREUSE;--------给这个一时表空间重修一个一时文件
注册回档日记和启动SQLApplyServices
SQL>ALTERDATABASEREGISTERLOGICALLOGFILE
2>e:oracleoradataorclarc0004.001;------将比来的回档日记注册到LogicalStandbyDatabase.这里的e:oracleoradatatdarchARCH1069826922_21.DBF是在后面失掉的.
SQL>ALTERDATABASESTARTLOGICALSTANDBYAPPLYINITIAL;-----启动redologsapply,用实行SQL语句的体例来applyredologs.就是SQLApplyServices.到于INITIAL是第一次启动SQLApplyServices时要写的.前面的能够间接用以下操纵
SQL>ALTERDATABASESTOPLOGICALSTANDBYAPPLY;----中断
SQL>ALTERDATABASESTARTLOGICALSTANDBYAPPLY;----启动
在主数据库设置远程回档.
SQL>ALTERSYSTEMSETLOG_ARCHIVE_DEST_3=SERVICE=payroll3SCOPE=BOTH;
--------设置远程回档目次
SQL>ALTERSYSTEMSETLOG_ARCHIVE_DEST_STATE_3=ENABLESCOPE=BOTH;
--------设置这个回档目次的形态为可用
SQL>ALTERSYSTEMARCHIVELOGCURRENT;----对以后日记举行回档,启动远程回档.
反省LogicalStandbyDatabase
在创建好LogicalStandbyDatabase后,LogTransportService和LogApplyService服务也都启动.必要反省一下日记是不是正由主数据库传到备用数据库并apply.要做到这个目标,用上面的步骤来做.
反省日记是不是已被注册到LogicalStandbyDatabase中.毗连到备用数据库并查询DBA_LOGSTDBY_LOG视图.
SQL>ALTERSESSIONSETNLS_DATE_FORMAT=DD-MON-YYHH24:MI:SS;
Sessionaltered.
SQL>SELECTSEQUENCE#,FIRST_TIME,NEXT_TIME,DICT_BEGIN,DICT_END
2>FROMDBA_LOGSTDBY_LOGORDERBYSEQUENCE#;
SEQUENCE#FIRST_TIMENEXT_TIMEDICDIC
------------------------------------------------------
2223-11月-0414:00:1723-11月-0414:26:58NONO
1rowsselected.
毗连到主数据库并回档部分日记.
SQL>ALTERSYSTEMARCHIVELOGCURRENT;
Systemaltered.
SQL>ALTERSYSTEMARCHIVELOGCURRENT;
Systemaltered.
再查询一下DBA_LOGSTDBY_LOG视图.
SQL>ALTERSESSIONSETNLS_DATE_FORMAT=DD-MON-YYHH24:MI:SS;
Sessionaltered.
SQL>SELECTSEQUENCE#,FIRST_TIME,NEXT_TIME,DICT_BEGIN,DICT_END
2FROMDBA_LOGSTDBY_LOGORDERBYSEQUENCE#;
SEQUENCE#FIRST_TIMENEXT_TIMEDICDIC
------------------------------------------------------
2223-11月-0414:00:1723-11月-0414:26:58NONO
2323-11月-0414:26:5823-11月-0414:33:33NONO
2rowsselected.
(能够看到多出来一个新的回档日记)
反省日记中的数据是不是Apply到逻辑备用数据库中
在逻辑备用数据库中查询DBA_LOGSTDBY_STATS视图来反省日记中的数据是不是正被准确地Appled.
SQL>COLUMNNAMEFORMATA30
SQL>COLUMNVALUEFORMATA30
SQL>SELECTNAME,VALUEFROMV$LOGSTDBY_STATSWHERENAME=coordinatorstate;
NAMEVALUE
------------------------------------------------------------
coordinatorstateINITIALIZING
在下面的输入中,coordinator历程正在初始化,这标明LogApplyService正筹办ApplySQL.可是日记中的数据还没有入手下手被Applied到逻辑备用数据库中.
查V$LOGSTDBY看以后的SQLApply举动形态.毗连到逻辑备用数据库中,查询V$LOGSTDBY视图.
SQL>COLUMNSTATUSFORMATA50
SQL>COLUMNTYPEFORMATA12
SQL>SELECTTYPE,HIGH_SCN,STATUSFROMV$LOGSTDBY;
TYPEHIGH_SCNSTATUS
------------------------------------------------------------------------
COORDINATORORA-16115:loadingLogMinerdictionarydata
READERORA-16127:stalledwaitingforadditionaltransact
ionstobeapplied
BUILDERORA-16117:processing
PREPARERORA-16116:noworkavailable
SQL>SELECTTYPE,HIGH_SCN,STATUSFROMV$LOGSTDBY;
TYPEHIGH_SCNSTATUS
------------------------------------------------------------------------
COORDINATORORA-16126:loadingtableorsequenceobjectnumber
READERORA-16116:noworkavailable
BUILDERORA-16116:noworkavailable
PREPARERORA-16116:noworkavailable
假如RedoData入手下手Apply到备用数据库中时,在V$LOGSTDBY视图中coordinator历程的形态会显现applying
反省日记中的数据是不是Apply完成能够在逻辑备用数据库中从DBA_LOGSTDBY_PROCESS视图中取得.
SQL>SELECTAPPLIED_SCN,NEWEST_SCNFROMDBA_LOGSTDBY_PROGRESS;
APPLIED_SCNNEWEST_SCN
---------------------
180702180702
个中,假如APPLIED_SCN和NEWEST_SCN两列的值是一样的,暗示coordinatorprocess历程已Apply完成.日记中的数据也Apply完成.
在LOG_ARCHIVE_DEST_n初始参数后指定DELAY=n(minutes)的意义是由primarydatabase传到standbydatabase的redologdata将在nminutes以后才入手下手Apply到standbydatabase.Default是NODELAY,假如指定了DELAY而没有指定值的话则缺省为30分钟.
Mysql的存储引擎接口定义良好。有兴趣的开发者可以通过阅读文档编写自己的存储引擎。 而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。 SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。 从项目平台的选择上讲,我们关心的,应该是一款产品能不能满足任务需求,而不是网上怎么说。 多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油 一个是把SQL语句写到客户端,可以使用DataSet进行加工; 比如日志传送、比如集群。。。 SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上. 但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。
页:
[1]