海妖 发表于 2015-1-16 22:25:25

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的存储引擎接口定义良好。有兴趣的开发者可以通过阅读文档编写自己的存储引擎。

简单生活 发表于 2015-1-19 11:24:56

而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。

透明 发表于 2015-1-27 21:21:30

SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。

再见西城 发表于 2015-2-5 12:16:15

从项目平台的选择上讲,我们关心的,应该是一款产品能不能满足任务需求,而不是网上怎么说。

谁可相欹 发表于 2015-2-11 19:54:31

多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油

因胸联盟 发表于 2015-3-2 18:10:21

一个是把SQL语句写到客户端,可以使用DataSet进行加工;

深爱那片海 发表于 2015-3-11 05:26:34

比如日志传送、比如集群。。。

第二个灵魂 发表于 2015-3-17 21:10:28

SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.

飘飘悠悠 发表于 2015-3-25 03:15:41

但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。
页: [1]
查看完整版本: MSSQL教程之创立逻辑备用库(Logical Standby Datab...