基于RMAN搭建DataGuard,使用Broker管理DataGuard
一、环境准备
1、数据库软件准备
2、操作系统配置
$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.31 xiaohe_dg1
192.168.56.32 xiaohe_dg2
3、数据库部分参数
角色 | 主机名 | 数据库实例 | db_domain |
主库 | xiaohe_dg1 | xiaohe | xiaohe.com |
备库 | xiaohe_dg2 | xiaohedg | xiaohe.com |
二、配置数据库
1、主库打开数据库
SQL> startup
2、配置监听
SQL> show parameter db_domain;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_domain string
SQL>
SQL> alter system set db_domain='xiaohe.com' scope=spfile;
- SQL> shutdown immediate
- SQL> startup
- SQL> show parameter db_domain;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_domain string xiaohe.com
$ cat listener.ora
LISTENER=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=xiaohe_dg1)(PORT=1521))))
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=xiaohe_DGMGRL.xiaohe.com)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0)
(SID_NAME=xiaohe))
)
$ cat listener.ora
LISTENER=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=xiaohe_dg2)(PORT=1521))))
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=xiaohedg_DGMGRL.xiaohe.com)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0)
(SID_NAME=xiaohedg))
)
[oracle@xiaohe_dg2 admin]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 18-MAR-2017 18:32:48
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Starting /u01/app/oracle/product/11.2.0/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.3.0 - Production
System parameter file is /u01/app/oracle/product/11.2.0/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/xiaohe_dg2/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xiaohe_dg2)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xiaohe_dg2)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 18-MAR-2017 18:32:49
Uptime 0 days 0 hr. 0 min. 1 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/xiaohe_dg2/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xiaohe_dg2)(PORT=1521)))
Services Summary...
Service "xiaohedg_DGMGRL.xiaohe.com" has 1 instance(s).
Instance "xiaohedg", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
3、配置tnsnames
$ cat tnsnames.ora
xiaohe_dg1=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=xiaohe_dg1)(PORT=1521)))
(CONNECT_DATA=
(SERVICE_NAME=xiaohe_DGMGRL.xiaohe.com))
)
xiaohe_dg2=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=xiaohe_dg2)(PORT=1521)))
(CONNECT_DATA=
(SERVICE_NAME=xiaohedg_DGMGRL.xiaohe.com))
)
[oracle@xiaohe_dg1 admin]$ sqlplus sys/oracle123@xiaohe_dg1 as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Sat Mar 18 19:02:30 2017
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
$ scp tnsnames.ora xiaohe_dg2:/u01/app/oracle/product/11.2.0/network/admin/
oracle@xiaohe_dg2's password:
tnsnames.ora 100% 333 0.3KB/s 00:00
4、开启主库的归档模式
[oracle@xiaohe_dg1 oradata]$ mkdir archive
[oracle@xiaohe_dg1 oradata]$ cd archive/
[oracle@xiaohe_dg1 archive]$ pwd
/oradata/archive
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
- SQL> alter system set log_archive_dest_1='location=/oradata/archive' scope=spfile;
- SQL> shutdown immediate;
SQL> startup
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /oradata/archive
Oldest online log sequence 10
Next log sequence to archive 12
Current log sequence 12
5、配置主备库数据、日志目录转换
SQL> alter system set db_file_name_convert='/oradata/xiaohedg','/oradata/xiaohe' scope=spfile;
SQL> alter system set log_file_name_convert='/oradata/xiaohedg','/oradata/xiaohe' scope=spfile;
6、设置闪回
[oracle@xiaohe_dg1 oradata]$ mkdir flash
[oracle@xiaohe_dg1 oradata]$ cd flash/
[oracle@xiaohe_dg1 flash]$ pwd
/oradata/flash
SQL> show parameter recover;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string
db_recovery_file_dest_size big integer 0
db_unrecoverable_scn_tracking boolean TRUE
recovery_parallelism integer 0
SQL> alter system set db_recovery_file_dest_size=500M;
SQL> alter system set db_recovery_file_dest='/oradata/flash';
- SQL> show parameter recover;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /oradata/flash
db_recovery_file_dest_size big integer 500M
db_unrecoverable_scn_tracking boolean TRUE
recovery_parallelism
7、设置standby的文件传输参数
SQL> show parameter standby
- NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_archive_dest string ?/dbs/arch
standby_file_management string MANUAL
SQL> alter system set standby_file_management=AUTO;
SQL> show parameter standby;
- NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_archive_dest string ?/dbs/arch
standby_file_management string AUTO
8、开启强制日志
SQL> alter database force logging;
9、开启闪回
SQL> shutdown immediate
SQL> startup mount;
- SQL> alter database flashback on;
SQL> alter database open;
10、配置standby log参数
SQL> alter database add standby logfile group 4 '/oradata/xiaohe/std_redo04.log' size 50M;
SQL> alter database add standby logfile group 5 '/oradata/xiaohe/std_redo05.log' size 50M;
SQL> alter database add standby logfile group 6 '/oradata/xiaohe/std_redo06.log' size 50M;
SQL> alter database add standby logfile group 7 '/oradata/xiaohe/std_redo07.log' size 50M;
11、生成参数文件pfile
SQL> create pfile='/oradata/initxiaohedg.ora' from spfile;
$ scp initxiaohedg.ora xiaohe_dg2:/u01/app/oracle/product/11.2.0/dbs/
oracle@xiaohe_dg2's password:
initxiaohedg.ora
12、传送密码文件到备库
$ cd $ORACLE_HOME/dbs
[oracle@xiaohe_dg1 dbs]$ scp orapwxiaohe xiaohe_dg2:/u01/app/oracle/product/11.2.0/dbs/
orapwxiaohedgoracle@xiaohe_dg2's password:
orapwxiaohe
13、在备库修改pfile文件
[oracle@xiaohe_dg2 dbs]$ cat initxiaohedg.ora
xiaohe.__db_cache_size=327155712
xiaohe.__java_pool_size=4194304
xiaohe.__large_pool_size=4194304
xiaohe.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
xiaohe.__pga_aggregate_target=339738624
xiaohe.__sga_target=503316480
xiaohe.__shared_io_pool_size=0
xiaohe.__shared_pool_size=155189248
xiaohe.__streams_pool_size=4194304
*.audit_file_dest='/u01/app/oracle/admin/xiaohe/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/oradata/xiaohedg/control01.ctl','/oradata/xiaohedg/control02.ctl'
*.db_block_size=8192
*.db_domain='xiaohe.com'
*.db_file_name_convert='/oradata/xiaohe','/oradata/xiaohedg'
*.db_name='xiaohe'
*.db_unique_name='xiaohedg'
*.db_recovery_file_dest_size=524288000
*.db_recovery_file_dest='/oradata/flash'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=xiaoheXDB)'
*.log_archive_dest_1='location=/oradata/archive'
*.log_file_name_convert='/oradata/xiaohe','/oradata/xiaohedg'
*.memory_target=839909376
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
14、在备库启动实例
SQL> startup
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2233000 bytes
Variable Size 494931288 bytes
Database Buffers 339738624 bytes
Redo Buffers 2379776 bytes
ORA-00205: error in identifying control file, check alert log for more info
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string
SQL> create spfile from pfile;
File created.
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2233000 bytes
Variable Size 494931288 bytes
Database Buffers 339738624 bytes
Redo Buffers 2379776 bytes
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL> /
15、检查并重启主库
$ sqlplus sys/oracle123@xiaohe_dg1 as sysdba;
$ sqlplus sys/oracle123@xiaohe_dg2 as sysdba;
SQL> show parameter convert;
16、使用rman
[oracle@xiaohe_dg1 dbs]$ rman target sys/oracle123@xiaohe_dg1 auxiliary sys/oracle123@xiaohe_dg2
Recovery Manager: Release 11.2.0.3.0 - Production on Sat Mar 18 20:21:06 2017
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: XIAOHE (DBID=4061739917)
connected to auxiliary database: XIAOHE (not mounted)
RMAN> duplicate target database for standby from active database;
Starting Duplicate Db at 18-MAR-17
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=20 device type=DISK
contents of Memory Script:
{
backup as copy reuse
targetfile '/u01/app/oracle/product/11.2.0/dbs/orapwxiaohe' auxiliary format
'/u01/app/oracle/product/11.2.0/dbs/orapwxiaohedg' ;
}
executing Memory Script
Starting backup at 18-MAR-17
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=38 device type=DISK
Finished backup at 18-MAR-17
contents of Memory Script:
{
backup as copy current controlfile for standby auxiliary format '/oradata/xiaohedg/control01.ctl';
restore clone controlfile to '/oradata/xiaohedg/control02.ctl' from
'/oradata/xiaohedg/control01.ctl';
}
executing Memory Script
Starting backup at 18-MAR-17
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
copying standby control file
output file name=/u01/app/oracle/product/11.2.0/dbs/snapcf_xiaohe.f tag=TAG20170318T202332 RECID=2 STAMP=938982213
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 18-MAR-17
Starting restore at 18-MAR-17
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: copied control file copy
Finished restore at 18-MAR-17
contents of Memory Script:
{
sql clone 'alter database mount standby database';
}
executing Memory Script
sql statement: alter database mount standby database
contents of Memory Script:
{
set newname for tempfile 1 to
"/oradata/xiaohedg/temp01.dbf";
switch clone tempfile all;
set newname for datafile 1 to
"/oradata/xiaohedg/system01.dbf";
set newname for datafile 2 to
"/oradata/xiaohedg/sysaux01.dbf";
set newname for datafile 3 to
"/oradata/xiaohedg/undotbs01.dbf";
set newname for datafile 4 to
"/oradata/xiaohedg/users01.dbf";
set newname for datafile 5 to
"/oradata/xiaohedg/example01.dbf";
backup as copy reuse
datafile 1 auxiliary format
"/oradata/xiaohedg/system01.dbf" datafile
2 auxiliary format
"/oradata/xiaohedg/sysaux01.dbf" datafile
3 auxiliary format
"/oradata/xiaohedg/undotbs01.dbf" datafile
4 auxiliary format
"/oradata/xiaohedg/users01.dbf" datafile
5 auxiliary format
"/oradata/xiaohedg/example01.dbf" ;
sql 'alter system archive log current';
}
executing Memory Script
executing command: SET NEWNAME
renamed tempfile 1 to /oradata/xiaohedg/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 backup at 18-MAR-17
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=/oradata/xiaohe/system01.dbf
output file name=/oradata/xiaohedg/system01.dbf tag=TAG20170318T202342
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:45
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=/oradata/xiaohe/sysaux01.dbf
output file name=/oradata/xiaohedg/sysaux01.dbf tag=TAG20170318T202342
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:35
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=/oradata/xiaohe/example01.dbf
output file name=/oradata/xiaohedg/example01.dbf tag=TAG20170318T202342
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting datafile copy
input datafile file number=00003 name=/oradata/xiaohe/undotbs01.dbf
output file name=/oradata/xiaohedg/undotbs01.dbf tag=TAG20170318T202342
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=/oradata/xiaohe/users01.dbf
output file name=/oradata/xiaohedg/users01.dbf tag=TAG20170318T202342
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 18-MAR-17
sql statement: alter system archive log current
contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script
datafile 1 switched to datafile copy
input datafile copy RECID=2 STAMP=938982344 file name=/oradata/xiaohedg/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=3 STAMP=938982344 file name=/oradata/xiaohedg/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=4 STAMP=938982344 file name=/oradata/xiaohedg/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=5 STAMP=938982344 file name=/oradata/xiaohedg/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=6 STAMP=938982344 file name=/oradata/xiaohedg/example01.dbf
Finished Duplicate Db at 18-MAR-17
17、在备库应用日志
SQL> select status from v$instance ;
STATUS
------------
MOUNTED
SQL> alter database recover managed standby database disconnect from session;
Database altered.
18、在主、备库启用broker
SQL> show parameter broker;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1 string /u01/app/oracle/product/11.2.0
/dbs/dr1xiaohe.dat
dg_broker_config_file2 string /u01/app/oracle/product/11.2.0
/dbs/dr2xiaohe.dat
dg_broker_start boolean FALSE
SQL> alter system set dg_broker_start=true;
System altered.
19、进入broker, 并创建配置信息
$ dgmgrl sys/oracle123@xiaohe_dg1;
DGMGRL> CREATE CONFIGURATION c1 AS
PRIMARY DATABASE IS xiaohe
CONNECT IDENTIFIER IS xiaohe_dg1;
DGMGRL> ADD DATABASE xiaohedg
AS CONNECT IDENTIFIER IS xiaohe_dg2;
DGMGRL> ENABLE CONFIGURATION;
DGMGRL> show configuration;
Configuration - c1
Protection Mode: MaxPerformance
Databases:
xiaohe - Primary database
xiaohedg - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL> show configuration verbose;
Configuration - c1
Protection Mode: MaxPerformance
Databases:
xiaohe - Primary database
xiaohedg - Physical standby database
Properties:
FastStartFailoverThreshold = '30'
OperationTimeout = '30'
FastStartFailoverLagLimit = '30'
CommunicationTimeout = '180'
FastStartFailoverAutoReinstate = 'TRUE'
FastStartFailoverPmyShutdown = 'TRUE'
BystandersFollowRoleChange = 'ALL'
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL>
DGMGRL> help create;
Creates a broker configuration
Syntax:
CREATE CONFIGURATION <configuration name> AS
PRIMARY DATABASE IS <database name>
CONNECT IDENTIFIER IS <connect identifier>;
DGMGRL> help add;
Adds a standby database to the broker configuration
Syntax:
ADD DATABASE <database name>
[AS CONNECT IDENTIFIER IS <connect identifier>]
[MAINTAINED AS {PHYSICAL|LOGICAL}];
DGMGRL> help enable;
Enables a configuration, a database, or fast-start failover
Syntax:
ENABLE CONFIGURATION;
ENABLE DATABASE <database name>;
ENABLE FAST_START FAILOVER [CONDITION <condition>];
DGMGRL>
20、打开备库
shutdown immediate
startup open read only;
21、打开备库的闪回创建测试库
SQL> select flashback_on from v$database;
- FLASHBACK_ON
------------------
NO
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database flashback on;
SQL> select flashback_on from v$database;
- FLASHBACK_ON
------------------
YES
SQL> alter database open;
SQL> select open_mode from v$database; OPEN_MODE
--------------------
READ ONLY
SQL> select open_mode from v$database; OPEN_MODE
--------------------
READ ONLY WITH APPLY
DGMGRL> help convert;
Converts a database from one type to another
Syntax:
CONVERT DATABASE <database name> TO
{SNAPSHOT STANDBY|PHYSICAL STANDBY};
DGMGRL> CONVERT DATABASE xiaohedg TO SNAPSHOT STANDBY;
Converting database "xiaohedg" to a Snapshot Standby database, please wait...
Database "xiaohedg" converted successfully
DGMGRL> show configuration;
Configuration - c1
Protection Mode: MaxPerformance
Databases:
xiaohe - Primary database
xiaohedg - Snapshot standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE
SQL> create table test(id number, name varchar2(20));
- SQL> insert into test values(1, 'node');
SQL> commit;
SQL> select * from test;
ID NAME
---------- --------------------
1 node
DGMGRL> CONVERT DATABASE xiaohedg TO PHYSICAL STANDBY;
Converting database "xiaohedg" to a Physical Standby database, please wait...
Operation requires shutdown of instance "xiaohedg" on database "xiaohedg"
Shutting down instance "xiaohedg"...
Database closed.
Database dismounted.
....
22、主备库切换
DGMGRL> show configuration;
Configuration - c1
Protection Mode: MaxPerformance
Databases:
xiaohe - Primary database
xiaohedg - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL> switchover to xiaohedg;
Performing switchover NOW, please wait...
New primary database "xiaohedg" is opening...
Operation requires shutdown of instance "xiaohe" on database "xiaohe"
Shutting down instance "xiaohe"...
ORACLE instance shut down.
Operation requires startup of instance "xiaohe" on database "xiaohe"
Starting instance "xiaohe"...
ORACLE instance started.
Database mounted.
Database opened.
Switchover succeeded, new primary is "xiaohedg"
DGMGRL>
DGMGRL> show configuration;
Configuration - c1
Protection Mode: MaxPerformance
Databases:
xiaohedg - Primary database
xiaohe - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
23、几个有用的视图
SQL> select sequence#,applied from v$archived_log order by 1 desc;
SEQUENCE# APPLIED
---------- ---------
79 NO
79 NO
78 YES
78 NO
77 NO
77 YES
76 YES
SQL> alter system switch logfile;
System altered.
SQL> select sequence#,applied from v$archived_log order by 1 desc;
SEQUENCE# APPLIED
---------- ---------
80 NO
80 NO
79 YES
79 NO
78 YES
78 NO
77 YES
SQL> select dest_id,error from v$archive_dest;
DEST_ID ERROR
---------- -----------------------------------------------------------------
1
2
3
4
SQL> select database_role,open_mode from v$database;
DATABASE_ROLE OPEN_MODE
---------------- --------------------
PRIMARY READ WRITE
SQL> select sequence#,status from v$standby_log;
SEQUENCE# STATUS
---------- ----------
80 ACTIVE
0 UNASSIGNED
0 UNASSIGNED
0 UNASSIGNED
SQL> set lines 200
SQL> col DATABASE_ROLE for a30;
SQL> select database_role,open_mode from v$database;
DATABASE_ROLE OPEN_MODE
------------------------------ --------------------
PHYSICAL STANDBY READ ONLY WITH APPLY
SQL> select process,status from v$managed_standby;
PROCESS STATUS
--------- ------------
ARCH CLOSING
ARCH CONNECTED
ARCH CONNECTED
ARCH CONNECTED
MRP0 APPLYING_LOG
RFS IDLE
RFS IDLE
RFS IDLE
8 rows selected.
基于RMAN搭建DataGuard,使用Broker管理DataGuard的更多相关文章
- (摘)DataGuard物理standby管理 - 主备切换
DataGuard物理standby管理 - 主备切换 Dataguard的切换分为两种,switchover和failover. switchover一般用于数据库或硬件升级,这时只需要较短时间中断 ...
- Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架
Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...
- broker监控dataguard配置
使用broker查看dataguard信息时有告警 DGMGRL> show configuration; Configuration - DRTEST Protection Mode: Max ...
- 第二篇 基于.net搭建热插拔式web框架(沙箱的构建)
上周五写了一个实现原理篇,在评论中看到有朋友也遇到了我的问题,真的是有种他乡遇知己的感觉,整个系列我一定会坚持写完,并在最后把代码开源到git中.上一篇文章很多人看了以后,都表示不解,觉得不知道我到底 ...
- 基于.net搭建热插拔式web框架(实现原理)
第一节:我们为什么需要一个热插拔式的web框架? 模块之间独立开发 假设我们要做一个后台管理系统,其中包括“用户活跃度”.“产品管理”."账单管理"等模块.每个模块中有自己的业务特 ...
- 基于RMAN从活动数据库异机克隆(rman duplicate from active DB)
Oracle 11g RMAN能够实现基于活动数据库进行异机克隆,从而省去需要先备份再ftp到辅助服务器的过程.这一切可以全部交给Oracle来搞定.在克隆期间,Oracle会读取Target DB的 ...
- 基于RMAN的异机数据库克隆(rman duplicate)
对于基于生产环境下的数据库的版本升级或者测试新的应用程序的性能及其影响,备份恢复等等,我们可以采取从生产环境以克隆的方式将其克隆到本地而不影响生产数据库的正常使用.实现这个功能我们可以借助rman d ...
- Oracle 基于 RMAN 的不完全恢复(incomplete recovery by RMAN)
Oracle 数据库可以实现数据库不完全恢复与完全恢复.完全恢复是将数据库恢复到最新时刻,也就是无损恢复,保证数据库无丢失的恢复.而不完全恢复则是根据需要特意将数据库恢复到某个过去的特定时间点或特定的 ...
- 分享一下我的部分毕设内容:基于Windows Phone平台的污染源管理应用
原文:分享一下我的部分毕设内容:基于Windows Phone平台的污染源管理应用 毕业半年,又总结了一下之前的工作,发现很多知识不复习都忘记了.最近新闻总是报道北京的空气污染,各种雾霾,各种PM X ...
随机推荐
- 一文搞懂Python可迭代、迭代器和生成器的概念
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
- vue路由传参的三种方式以及解决vue路由传参页面刷新参数丢失问题
最近项目中涉及到跨页面传参数和后台进行数据交互,看到需求之后第一反应就是用路由传参来解决:Vue中给我们提供了三种路由传参方式,下面我们一个一个的来看一下: 方法一:params传参: this.$r ...
- SpringBoot中快速实现邮箱发送
前言 在许多企业级项目中,需要用到邮件发送的功能,如: 注册用户时需要邮箱发送验证 用户生日时发送邮件通知祝贺 发送邮件给用户等 创建工程导入依赖 <!-- 邮箱发送依赖 --> < ...
- MySQL-InnoDB锁(二)
上篇文章中对InnoDB存储引擎中的锁进行学习,本文是实践部分,根据索引和查询范围,探究加锁范围的情况. 在本实例中,创建简单表如下: mysql> select * from t; +---- ...
- Python数据类型详解——列表
Python数据类型详解--列表 在"Python之基本数据类型概览"一节中,大概介绍了列表的基本用法,本节我们详细学一下列表. 如何定义列表:在[]内以英文里输入法的逗号,,按照 ...
- Array List和Linked List实现分析
一,前言 先来一张Collection集合图. 今天分享一些关于Collection集合中的List,讲真的集合这东西在网上真是老生常谈了.说实话连本人都觉得腻了(哈哈),但是话又说回来,整个 ...
- 一起来聊一下 JavaScript 的用途和那些特性
JavaScript 简介 我们一起来聊一下 JavaScript,用它能做什么,它有哪些特性,以及一些跟它配合使用的技术. 什么是 JavaScript? JavaScript 最初的目的是为了&q ...
- pyppeteer的使用
pyppeteer的使用 安装 属于第三方模块进行安装. pip install pyppeteer 在Linux中,如果权限不够则加上. sudo pip install pyppeteer 使用 ...
- 【LeetCode】79-单词搜索
题目描述 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中 "相邻" 单元格是那些水平相邻或垂直相邻的单元格.同一 ...
- 基于SSM的在线考试系统
本系统功能非常完善,页面美观大方,技术新颖,选用主流数据库Mysql,表数量及结构适当,如果你需要做在线考试或者其它考试类系统,这个系统将非常有用. 其实,任何考试系统,无非试题不一样,所以如果你是做 ...