默认为SET XACT_ABORT OFF,没有事务行为。
SET XACT_ABORT ONSET XACT_ABORT ON分为两种:
1、总体作为一个事务,整体提交或整体回滚,格式为:
SET XACT_ABORT ON
BEGIN TRAN
--要执行的语句
COMMIT TRAN
GO
2、每个语句作为一个事务,事务在错误行终止,错误行回滚,错误行之前的不回滚,格式为:
SET XACT_ABORT ON
BEGIN
--要执行的语句
END
GO
--创建测试表
use MyDB
CREATE TABLE student
(
stuid int NOT NULL PRIMARY KEY,
stuname varchar(50)
)
CREATE TABLE score
(
stuid int NOT NULL REFERENCES student(stuid),
score int
)
GO
--插入测试数据
INSERT INTO student VALUES (101,'zhangsan')
INSERT INTO student VALUES (102,'wangwu')
INSERT INTO student VALUES (103,'lishi')
INSERT INTO student VALUES (104,'maliu')
GO
--
---SPFILE 必须在共享卷或共享raw设备上创建
---所有实例使用同一个SPFILE
---如果手工创建数据库,则通过PFILE创建SPFILE。
[oracle@rac11 dbs]$ more initPROD1.ora
SPFILE='+DATA1/PROD/spfilePROD.ora'
[oracle@rac22 dbs]$ more initPROD2.ora
SPFILE='+DATA1/PROD/spfilePROD.ora'
---更改参数设置
alter system set <dpname> scope=memory sid=<sid|*>;
*.pname 适用于所有实例
sid.pname适用于sid
sid.pname 优先级高于*.sid
---use current or future *.dpname settings for <sid>
alter system reset dpname scope=memory sid=<sid>;
---将entry从spfile删除
alter system reset dpname scope=spfile sid=<sid|*>;
---需要unique设置(加sid)的参数列表:
instance 设置:
thread instance_number rollback_segments undo_tablespace instance_name
---quiescing RAC database 静默数据库,只有sys用户能够登录执行操作
alter system quiesce restricted;
alter system unquiesce;
这两个操作影响RAC环境中的所有实例。
当数据库处于 quiesce 状态时,无法执行 cold 备份操作。
---常见 sqlplus 命令对实例的影响
archivelog 影响当前实例
connect 影响默认实例
host 影响运行sqlplus 命令的节点
recover 不影响特定实例,影响整个数据块
show parameter 和 show sga 显示当前实例参数和 SGA 信息
startup 影响当前实例
shutdown 影响当前实例
show instance 显示当前实例的信息
转载请注明作者出处及原文链接:
http://blog.csdn.net/xiangsir/article/details/8644387
MongoDB是最易用的NoSQL,比较适合取代MySQL做一些存储,不过不是强一致性的。本文介绍一下MongoDB各种部署方式,并分享一些感受。前两部分“单机部署”和“主从部署”是“分片部署”的基础。
启动下载来的MongoDB包的bin目录下的mongod.exe即可打开MongoDB服务,可以添加的基本配置是:
./mongod.exe --dbpath ~/db/data --port 127.0.0.1:10000 --logpath ~/db/log
默认的端口是27017。启动的时候必须有一个data目录,让mongod读写数据。写入数据后,data目录里的文件如图:
.lock文件如果在下次启动时候还存在,需要删除才能成功启动。"article"和"config"是数据库名字,可以特别注意一下每个文件块的大小(16M, 32M, 64M, 128M)。
主从配置是MongoDB特色之一,使之具备了容错,故障恢复等性能。主节点要声明"master",从节点们要声明"slave"和"--source"。最简单的主从配置如下:
./mongod.exe --dbpath ~/db/master --port 10000 --master
./mongod.exe --dbpath ~/db/slave --port 10001 --slave --source localhost:10001从节点直接从主节点同步数据,从节点之间不互相同步。容错性更强的部署是一个主从集群,互相都能成为“主节点”,叫做Replica Set。在Replica Set里会有一个活跃节点和若干个备份节点。配置的时候,整个Replica Set要取个名字,然后每台都要指明一个或几个伙伴:
./mongod.exe --dbpath ~/db/node1 --port 10001 --replSet setname/localhost:10002
./mongod.exe --dbpath ~/db/node2 --port 10002 --replSet setname/localhost:10001
./mongod.exe --dbpath ~/db/node3 --port 10003 --replSet setname/localhost:10001
谁成为活跃节点取决于优先级,优先级默认是1,也可以启动mongod进行设置(不具体介绍了),总之是内部的选举机制。
介绍完以上,组合起来就可以搭建一个比较强壮的分布式MongoDB集群。分片类似分布式,MongoDB以新增分片的方式,扩展自己的容量,并且能给读写负载均衡。
1. 每一个启动的mongod都是实际存放数据的地方,都能作为别人的sharding
2. 分片部署需要一个mongos,起路由分发的作用;需要一个配置服务器和若干个分片服务器(都是mongod)
3. 单机的时候,应用连接的是mongod;分布式的时候,应用连接的是mongos。
最简单的分片部署是单个的配置服务器,一个config(即mongod),一个mongos,几个sharding(即mongod):
./mongod.exe --dbpath ~/db/config --port 20000
./mongos.exe --configdb 127.0.0.1:20000 --port 30000
./mongod.exe --dbpath ~/db/shard1 --port 10001
./mongod.exe --dbpath ~/db/shard2 --port 10002如果有时候启动不了某个mongod,可能和端口有关。在windows下,这样一个集群会打开很多shell窗口。这种情况下,还是三个独立的mongd,要打开上面的mongos,输入命令加入sharding片:
> use admin > db.runCommand({addshard : "localhost:10001"}, allowLocal : true) > db.runCommand({addshard : "localhost:10002"}, allowLocal : true)
> db.runCommand({"enablesharding" : "dbname"})还要设置片建,以提供负载均衡的依据:
> db.runCommand({"shardcollection" : "dbname.collection", "key" : {"_id":1}})dbname.collection是自己的数据库的数据集。设置的"key"需要已经建立索引。
mongos下还有一些查看分片情况的命令,方便集群的管理和监控,可以自己体验下:
> db.shards.find() > db.chunks.find() > db.printShardingStatus()也可以通过runCommand的其他命令添加新的片,删除已有的片,而且添加的片可以是旧的mongod。
测试开发的时候像上面这样的一组可能够了,真正健壮的集群可能要具备下面三个条件:
1. 多个配置服务器config1, config2, config3(可以都经过一个mongos来路由)
2. 每个sharding都是Replica Set
3. 每一台物理物理服务器承担若干个不同的进程(mongos, shards, config)
就像下面这种图呈现的一样:
我们可以这样理解mongos, shards, config三样东西:
1. shards是一些实际存数据的可以单独使用的db,他们能分配给任何config server,而且添加删除都很方便。
2. 每个shard里有若干个地位平等的mongods,所以每个是一个Replica Set(副本集)
3. 一个config手下带领好几个shards,目的是负载和扩容,他们之间需要mongos来路由
4. mongos是一个路由,可以路由一个或多个config servers,不需要很大的分配空间
5. 每一个客户端的应用,每一张数据库表,最好对应一个config server和一个mongos
以上内容里的"--port" 部分改为IP:port就可以分布式环境了。比较合理的节省物理服务器的配置方法可以像下图这样:
不把所有鸡蛋扔一个篮子里。
(全文完)