同一环境下新建Standby RAC库
需求:在同一个环境下新建Standby RAC库,即和Primary RAC在相同的磁盘组。
说明:生产环境一般不建议这样配置DG,因为存储层面是相同磁盘组,灾备的实际意义不大。我这里是客户特殊场景的要求。
基本信息:
db_name: jyzhao
Primary RAC db_unique_name:jyzhao
Standby RAC db_unique_name:jyzhaodg
Standby RAC instance_name: jyzhaodg1, jyzhaodg2
版本:GI 11.2.0.4 + DB 11.2.0.4
第四章 rman恢复控制文件
第五章 rman恢复数据库
第六章 备库开启日志应用
第七章 创建standby log
第八章 检查资源状态
第一章 准备工作
1.1 ASM存储
确认RAC Standby存储是在和RAC Primary相同的ASM磁盘组内(PS:灾备效果不明显),创建RAC Standby存储目录(根据db_unique_name)
mkdir +DATA/JYZHAODG
mkdir +FRA/JYZHAODG
1.2 配置tnsnames.ora
cd $ORACLE_HOME/network/admin/
cat tnsnames.ora
添加主库备库的连接信息(所有节点):
JYZHAO =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradb-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = jyzhao)
)
)
jyzhaodg =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradb-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = jyzhaodg)
)
)
1.3 密码文件
节点1:
export ORACLE_SID=jyzhaodg1
密码文件;
cd $ORACLE_HOME/dbs
orapwd file=orapwjyzhaodg1 password=oracle entries=5
或者直接copy之前的密码文件,然后mv重命名:
cp orapwjyzhao1 orapwjyzhaodg1
节点2:
export ORACLE_SID=jyzhaodg2
密码文件;
cd $ORACLE_HOME/dbs
orapwd file=orapwjyzhaodg2 password=oracle entries=5
或者直接copy之前的密码文件,然后mv重命名:
cp orapwjyzhao2 orapwjyzhaodg2
最后测试相互连接可用
sqlplus sys/oracle@jyzhao as sysdba
sqlplus sys/oracle@jyzhaodg as sysdba
第二章 源数据库备份
vi backup.sh
备份脚本如下:
rman target / <<EOF
run {
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup as compressed backupset database filesperset 1 format '/u01/orabak/salehrdb_%d_%T_%s.bak';
backup current controlfile format '/u01/orabak/control.bak';
release channel c1;
release channel c2;
}
EOF
后台执行备份任务:
nohup sh backup.sh &
注意:如果使用backup as copy database format方案,就不用再备份到磁盘后再恢复了,可以节省时间。
backup as copy 方案备份脚本 backupcp.sh内容如下:
rman target / <<EOF
run {
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup as copy database format '+DATA/JYZHAODG/DATAFILE/%u.dbf';
release channel c1;
release channel c2;
}
EOF
注意:这种方式,路径包含的目录需手动创建。
mkdir +DATA/JYZHAODG/DATAFILE
第三章 参数文件
3.1 修改主库参数文件
确认当前环境ORACLE_SID:
echo $ORACLE_SID
export ORACLE_SID=jyzhao1
根据spfile文件创建pfile:
create pfile='/tmp/pfile.ora' from spfile;
Primary RAC 添加参数
--为不停止primary RAC,所以尽可能动态修改参数:
show parameter log_archive_config
show parameter db_file_name_convert
show parameter log_file_name_convert
show parameter fal_client
show parameter fal_server
show parameter log_archive_dest_3
alter system set log_archive_config='dg_config=(jyzhao,jyzhaodg)';
alter system set db_file_name_convert='+DATA/jyzhaodg','+DATA/jyzhao' scope=spfile;
alter system set log_file_name_convert='+DATA/jyzhaodg','+DATA/jyzhao' scope=spfile;
alter system set fal_client='jyzhao';
alter system set fal_server='jyzhaodg';
alter system set log_archive_dest_3='service=jyzhaodg valid_for=(online_logfiles,primary_role) db_unique_name=jyzhaodg';
--暂时defer传输链路,防止此时主库告警生成相关错误
SQL> alter system set log_archive_dest_state_3=defer;
3.2 修改Standby RAC 参数
根据主库之前导出的参数文件修改备库的参数文件:
cp /tmp/pfile.ora /tmp/pfile_std.ora
vi /tmp/pfile_std.ora
*._high_priority_processes='LMS*'
*.audit_file_dest='/u01/app/oracle/admin/jyzhaodg/adump'
*.audit_trail='db'
*.cluster_database=true
*.compatible='11.2.0.4.0'
*.control_files='+DATA/jyzhaodg/controlfile/current.260.931878631','+FRA/jyzhaodg/controlfile/current.256.931878631'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.db_name='jyzhao'
*.db_recovery_file_dest='+FRA'
*.db_recovery_file_dest_size=4621074432
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=jyzhaoXDB)'
jyzhaodg2.instance_number=2
jyzhaodg1.instance_number=1
*.log_archive_format='%t_%s_%r.dbf'
*.memory_target=313286272
*.open_cursors=300
*.processes=150
*.remote_listener='oradb-scan:1521'
*.remote_login_passwordfile='exclusive'
jyzhaodg2.thread=2
jyzhaodg1.thread=1
jyzhaodg2.undo_tablespace='UNDOTBS2'
jyzhaodg1.undo_tablespace='UNDOTBS1'
#add
db_unique_name='jyzhaodg'
log_archive_config='dg_config=(jyzhao,jyzhaodg)'#db_unique_name
db_file_name_convert='+DATA/jyzhao','+DATA/jyzhaodg'
log_file_name_convert='+DATA/jyzhao','+DATA/jyzhaodg'
standby_file_management=auto
fal_client='jyzhaodg'#tnsnames.ora
fal_server='jyzhao'#salehrdb
log_archive_dest_3='service=jyzhao valid_for=(online_logfiles,primary_role) db_unique_name=jyzhao'
主要是注意后面#add之后的内容。
3.3 在ASM中创建standby的spfile
在ASM中创建standby的spfile,并确定各节点的参数文件内容指向磁盘中的spfile。
节点1:
echo $ORACLE_SID
export ORACLE_SID=jyzhaodg1
create spfile='+DATA/jyzhaodg/spfilejyzhaodg.ora' from pfile='/tmp/pfile_std.ora';
--
cat initjyzhaodg1.ora
SPFILE='+DATA/jyzhaodg/spfilejyzhaodg.ora'
节点2:
echo $ORACLE_SID
export ORACLE_SID=jyzhaodg2
cat initjyzhaodg2.ora
SPFILE='+DATA/jyzhaodg/spfilejyzhaodg.ora'
创建adump目录(所有节点)
mkdir -p /u01/app/oracle/admin/jyzhaodg/adump
3.4 Standby RAC启动到nomount
节点1:
echo $ORACLE_SID
export ORACLE_SID=jyzhaodg1
startup nomount
节点2:
echo $ORACLE_SID
export ORACLE_SID=jyzhaodg2
startup nomount
第四章 rman恢复控制文件
在Primary RAC上创建备库使用的控制文件:
echo $ORACLE_SID
export ORACLE_SID=jyzhao1
SQL> alter database create standby controlfile as '/tmp/control01.ctlbak';
在Standby RAC的节点1上恢复控制文件并启动到mount:
echo $ORACLE_SID
export ORACLE_SID=jyzhaodg1
restore controlfile from '/tmp/control01.ctlbak';
alter database mount;
crosscheck backupset;
--如果是之前copy到磁盘组的备份没加载到控制文件中,可以手动catalog
catalog start with '+data/jyzhaodg/DATAFILE';
--同样,如果是之前的备份集没加载到控制文件中,一样手动catalog
catalog start with '/u01/orabak/';
查看此时standby记录的各文件路径是否符合预期:
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA/jyzhaodg/datafile/system.256.931878537
+DATA/jyzhaodg/datafile/sysaux.257.931878537
+DATA/jyzhaodg/datafile/undotbs1.258.931878537
+DATA/jyzhaodg/datafile/users.259.931878537
+DATA/jyzhaodg/datafile/undotbs2.264.931878827
+DATA/jyzhaodg/datafile/dbs_d_jingyu.268.937515173
6 rows selected.
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
+DATA/jyzhaodg/onlinelog/group_2.262.931878637
+FRA/jyzhao/onlinelog/group_2.258.931878639
+DATA/jyzhaodg/onlinelog/group_1.261.931878635
+FRA/jyzhao/onlinelog/group_1.257.931878637
+DATA/jyzhaodg/onlinelog/group_3.265.931879021
+FRA/jyzhao/onlinelog/group_3.259.931879023
+DATA/jyzhaodg/onlinelog/group_4.266.931879027
+FRA/jyzhao/onlinelog/group_4.260.931879029
8 rows selected.
SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
+DATA/jyzhaodg/tempfile/temp.263.931878661
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
+DATA/jyzhaodg/controlfile/current.288.937645851
+FRA/jyzhaodg/controlfile/current.275.937645851
发现日志文件有不符合预期的路径,进行修正:
SQL> show parameter convert
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string +DATA/jyzhao, +DATA/jyzhaodg
log_file_name_convert string +DATA/jyzhao, +DATA/jyzhaodg
SQL> alter system set log_file_name_convert='+DATA/jyzhao','+DATA/jyzhaodg','+FRA/jyzhao','+FRA/jyzhaodg' scope=spfile;
SQL> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 313159680 bytes
Fixed Size 2252824 bytes
Variable Size 222302184 bytes
Database Buffers 83886080 bytes
Redo Buffers 4718592 bytes
Database mounted.
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
+DATA/jyzhaodg/onlinelog/group_2.262.931878637
+FRA/jyzhaodg/onlinelog/group_2.258.931878639
+DATA/jyzhaodg/onlinelog/group_1.261.931878635
+FRA/jyzhaodg/onlinelog/group_1.257.931878637
+DATA/jyzhaodg/onlinelog/group_3.265.931879021
+FRA/jyzhaodg/onlinelog/group_3.259.931879023
+DATA/jyzhaodg/onlinelog/group_4.266.931879027
+FRA/jyzhaodg/onlinelog/group_4.260.931879029
8 rows selected.
第五章 rman恢复数据库
Standby RAC节点1:
确定ORACLE_SID变量:
echo $ORACLE_SID
export ORACLE_SID=jyzhaodg1
a. 如果是使用从备份集恢复的方式
vi restore.sh
rman target / <<EOF! > db_restore.log
run {
allocate channel d1 type disk;
allocate channel d2 type disk;
restore database;
release channel d1;
release channel d2;
}
exit;
EOF!
nohup sh restore.sh &
b. 如果是直接使用copy到磁盘组的
直接switch database to copy即可。
RMAN> switch database to copy;
using target database control file instead of recovery catalog
datafile 1 switched to datafile copy "+DATA/jyzhaodg/datafile/0eru6m4s.dbf"
datafile 2 switched to datafile copy "+DATA/jyzhaodg/datafile/0fru6m4s.dbf"
datafile 3 switched to datafile copy "+DATA/jyzhaodg/datafile/0hru6meo.dbf"
datafile 4 switched to datafile copy "+DATA/jyzhaodg/datafile/0iru6mg5.dbf"
datafile 5 switched to datafile copy "+DATA/jyzhaodg/datafile/0jru6mg6.dbf"
datafile 6 switched to datafile copy "+DATA/jyzhaodg/datafile/0gru6men.dbf"
第六章 备库开启日志应用
确认Primary RAC的日志传输链路打开:
echo $ORACLE_SID
export ORACLE_SID=jyzhao1
SQL> alter system set log_archive_dest_state_3=enable;
Standby RAC节点1在mount状态下开启日志应用:
echo $ORACLE_SID
export ORACLE_SID=jyzhaodg1
SQL> alter database recover managed standby database disconnect from session;
第七章 创建standby log
停止备库应用:
SQL> alter database recover managed standby database cancel;
查看日志信息:
SQL> select * from v$Log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------ ------------ ------------
1 1 69 52428800 512 2 YES CURRENT 2450934 03-MAR-17 2.8147E+14
2 1 0 52428800 512 2 YES UNUSED 2440706 03-MAR-17 2450934 03-MAR-17
3 2 0 52428800 512 2 YES UNUSED 2440817 03-MAR-17 2450939 03-MAR-17
4 2 36 52428800 512 2 YES CURRENT 2450939 03-MAR-17 2.8147E+14
SQL> col member for a70
SQL> select group#, type, member from v$logfile;
GROUP# TYPE MEMBER
---------- ------- ----------------------------------------------------------------------
2 ONLINE +DATA/jyzhaodg/onlinelog/group_2.298.937648563
2 ONLINE +FRA/jyzhaodg/onlinelog/group_2.278.937648565
1 ONLINE +DATA/jyzhaodg/onlinelog/group_1.297.937648559
1 ONLINE +FRA/jyzhaodg/onlinelog/group_1.279.937648561
3 ONLINE +DATA/jyzhaodg/onlinelog/group_3.299.937648567
3 ONLINE +FRA/jyzhaodg/onlinelog/group_3.389.937648569
4 ONLINE +DATA/jyzhaodg/onlinelog/group_4.300.937648573
4 ONLINE +FRA/jyzhaodg/onlinelog/group_4.390.937648573
8 rows selected.
根据检查结果,合理为数据库添加standby logfile:
alter database add standby logfile thread 1 group 11 ('+DATA','+FRA') size 52428800;
alter database add standby logfile thread 1 group 12 ('+DATA','+FRA') size 52428800;
alter database add standby logfile thread 1 group 13 ('+DATA','+FRA') size 52428800;
alter database add standby logfile thread 2 group 21 ('+DATA','+FRA') size 52428800;
alter database add standby logfile thread 2 group 22 ('+DATA','+FRA') size 52428800;
alter database add standby logfile thread 2 group 23 ('+DATA','+FRA') size 52428800;
添加完再次查看:
SQL> select group#, type, member from v$logfile;
GROUP# TYPE MEMBER
---------- ------- ----------------------------------------------------------------------
2 ONLINE +DATA/jyzhaodg/onlinelog/group_2.298.937648563
2 ONLINE +FRA/jyzhaodg/onlinelog/group_2.278.937648565
1 ONLINE +DATA/jyzhaodg/onlinelog/group_1.297.937648559
1 ONLINE +FRA/jyzhaodg/onlinelog/group_1.279.937648561
3 ONLINE +DATA/jyzhaodg/onlinelog/group_3.299.937648567
3 ONLINE +FRA/jyzhaodg/onlinelog/group_3.389.937648569
4 ONLINE +DATA/jyzhaodg/onlinelog/group_4.300.937648573
4 ONLINE +FRA/jyzhaodg/onlinelog/group_4.390.937648573
11 STANDBY +DATA/jyzhaodg/onlinelog/group_11.301.937648773
11 STANDBY +FRA/jyzhaodg/onlinelog/group_11.391.937648775
12 STANDBY +DATA/jyzhaodg/onlinelog/group_12.302.937648777
GROUP# TYPE MEMBER
---------- ------- ----------------------------------------------------------------------
12 STANDBY +FRA/jyzhaodg/onlinelog/group_12.392.937648779
13 STANDBY +DATA/jyzhaodg/onlinelog/group_13.303.937648779
13 STANDBY +FRA/jyzhaodg/onlinelog/group_13.393.937648781
21 STANDBY +DATA/jyzhaodg/onlinelog/group_21.304.937648783
21 STANDBY +FRA/jyzhaodg/onlinelog/group_21.394.937648783
22 STANDBY +DATA/jyzhaodg/onlinelog/group_22.305.937648785
22 STANDBY +FRA/jyzhaodg/onlinelog/group_22.395.937648787
23 STANDBY +DATA/jyzhaodg/onlinelog/group_23.306.937648787
23 STANDBY +FRA/jyzhaodg/onlinelog/group_23.396.937648789
20 rows selected.
继续开启备库应用,确定恢复完成日志没报错信息后取消日志应用,打开数据库,开启ADG:
alter database recover managed standby database disconnect from session;
alter database recover managed standby database cancel;
alter database open;
alter database recover managed standby database using current logfile disconnect from session;
查看DG同步状态:
SQL> SELECT OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS FROM V$DATABASE;
OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS FOR DATAGUAR GUARD_S
-------------------- ---------------- -------------------- --- -------- -------
READ ONLY WITH APPLY PHYSICAL STANDBY NOT ALLOWED NO DISABLED NONE
SQL> set lines 1000
SQL> select * from v$dataguard_stats;
NAME VALUE UNIT TIME_COMPUTED DATUM_TIME
-------------------------------- ---------------------------------------------------------------- ------------------------------ ------------------------------ ------------------------------
transport lag +00 00:09:37 day(2) to second(0) interval 03/03/2017 10:03:20 03/03/2017 10:03:13
apply lag +00 00:09:38 day(2) to second(0) interval 03/03/2017 10:03:20 03/03/2017 10:03:13
apply finish time day(2) to second(3) interval 03/03/2017 10:03:20
estimated startup time 40 second 03/03/2017 10:03:20
--可以在Primary RAC上归档当前日志模拟业务切换归档:
SQL> SELECT OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS FROM V$DATABASE;
OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS FOR DATAGUAR GUARD_S
-------------------- ---------------- -------------------- --- -------- -------
READ WRITE PRIMARY TO STANDBY NO DISABLED NONE
SQL> alter system archive log current;
System altered.
--再次在Standby RAC上查看DG同步状态:
SQL> r
1* select * from v$dataguard_stats
NAME VALUE UNIT TIME_COMPUTED DATUM_TIME
-------------------------------- ---------------------------------------------------------------- ------------------------------ ------------------------------ ------------------------------
transport lag +00 00:00:00 day(2) to second(0) interval 03/03/2017 10:04:45 03/03/2017 10:04:44
apply lag +00 00:00:00 day(2) to second(0) interval 03/03/2017 10:04:45 03/03/2017 10:04:44
apply finish time day(2) to second(3) interval 03/03/2017 10:04:45
estimated startup time 40 second 03/03/2017 10:04:45
至此,已完成RAC Standby库在同环境下的创建。
第八章 检查资源状态
我们可以将RAC Standby也加入到crs资源中:
[oracle@oradb23 ~]$ srvctl add database -d jyzhaodg -o $ORACLE_HOME -i jyzhaodg1 -n jyzhao
[oracle@oradb23 ~]$ srvctl add instance -d jyzhaodg -i jyzhaodg1 -n oradb23
[oracle@oradb23 ~]$ srvctl add instance -d jyzhaodg -i jyzhaodg2 -n oradb24
--启动数据库
[oracle@oradb23 ~]$ srvctl start database -d salehrdg
--查看资源状态:
[grid@oradb23 ~]$ crsctl stat res -t
总结:同环境下搭建Standby RAC,最重要的注意事项就是一定要细心,操作前确保自己操作的是正确的ORACLE_SID,备库的路径也要反复确认无误再操作。
同一环境下新建Standby RAC库的更多相关文章
- win10环境下VS2019配置NTL库
win10环境下VS2019配置NTL库 1.下载 WINNTL库文件 https://www.shoup.net/ntl/download.html 2.创建静态库 文件->新建-&g ...
- 在Windows 环境下编译Qt静态库(QT5.32)
参考链接 Qt5.3 Tools and Versions MinGW ICU ActivePerl Qt 安装MinGW工具链环境 这里在Win32环境下要安装一个MinGW工具链,这里最好是先安装 ...
- CentOS 7.6环境下安装中文字体库
JAVA画图时常用到Font 类对象 这样的对象依赖于本地的字段.新装的linux没有安装字段库,和相应的字体. 1.fc-list查看字体库 2.yum -y install fontconfig安 ...
- Windows环境下php开启GD库的方法
一.GD库是什么? GD库是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片,也可以给图片加水印.在网站上GD库通常用来生成缩略图,或者用来对图片加 ...
- vue环境下新建项目
1.之前电脑上安装了node和npm,查看下版本信息. 2.现在安装vue-cli脚手架,可以全局安装: npm install --global vue-cli 之前自己电脑没有安装过webpac ...
- 在linux环境下编译android so库
(1) 配置Android NDK环境 (2) mk文件编写 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # OpenCV OPENCV_CA ...
- weblogic linux环境下新建domain
1. cd /home/weblogic/Oracle/Middleware/wlserver_10.3/common/bin 2. ./config.sh -mode=console(用控制台模式安 ...
- 【RAC】rac环境下的数据库备份与还原
[RAC]rac环境下的数据库备份与还原 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~ ...
- RAC 环境下的重要参数
Oracle 数据库启动时会根据参数文件中提供的相关参数启动Oracle实例.这些参数包括数据库名字.sga,pga的分配,控制文件的位置,undo,process等等.Oracle RAC数据库同样 ...
随机推荐
- 一分钟完成MySQL5.7安装部署
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://suifu.blog.51cto.com/9167728/1855415 Part ...
- iOS 之 后台下载,前台显示模式,双 block
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ //耗时的操作 NSURL *url ...
- 上传文件到linux服务器
可以在SecureCRT下上传 先用使用命令下载一个文件:yum install lrzsz -y 然后在跳转到要保存的目录 最后,拖拽文件到secureCRT中即可
- apache 做负载
首先说明一下,我感觉这种办法不太好,不能叫负载吧.不知道跳转到的服务器把数据返回给用户,还通不通过Apache的服务器,还有就是不能断点下载了 方法 1.打开httpd.conf 把如下模块前面的# ...
- C++写时钟表
time函数的运用,输出是没输换行,在流中,就什么的输不出,可以用清流函数,fflush(stdout) 代码 #include<iostream>#include<cstdio&g ...
- 关于firefox启动就崩溃的问题
前些天在公司内网机器安装了Firefox Developer,每次启动直接就崩溃.最后发现问题出在Firefox的硬件加速上.解决办法: 1.右击firefox快捷方式,选择属性,在“目标”后面,即f ...
- Iframe 自适应高度并实时监控高度变化的js代码
不得不用到iframe,且被强烈要求不能让它出现滚动条!嵌入的页面肯定是高度不一的,页面中也不能出现大片空白,所以也不能写死高度!真是麻鬼烦啊!google N次 + 百度M次 + 试验了1605次之 ...
- 关于在官网上下载Eclipse遇到的问题!!
首先Eclipse是什么? Eclipse 是一个开放源代码的.基于Java的可扩展开发平台.就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境. 幸运的是,Eclipse 附带了一 ...
- 比AutoMapper轻量快速简洁的实体映射库YeaJur.Mapper
之前在做实体深拷贝时一直使用的AutoMapper,但是总是觉得其写法比繁琐,效率也不算很高,自己写了一个轻量级的实体拷贝库YeaJur.Mapper,和AutoMapper 测试对比如下 PK项 Y ...
- T-SQL 语句
表的创建:1.创建列(字段):列名+类型2.设置主键列(primary key):能够唯一标识一条数据3.设置唯一(unique):内容不能重复4.外键关系:一张表(从表)其中的某列引用自另外一张表( ...