Maclean’s Oracle Database Tech Blog Archives

  • mongodb db.collection.remove用法

      对于db.collection.remove需要加入加入一个query才能正常运行,否则仅仅运行remove()将会报错,例如:   > db.dbdao_stuff.insert({“_id”:1,”a”:1,”b”:1}); WriteResult({ “nInserted” : 1 }) > > db.dbdao_stuff.insert({“_id”:2,”a”:2,”b”:3}); WriteResult({ “nInserted” : 1 }) > db.dbdao_stuff.insert({“_id”:3,”a”:3,”b”:6}); WriteResult({ “nInserted” : 1 }) > db.dbdao_stuff.insert({“_id”:4,”a”:4,”b”:10}); WriteResult({ “nInserted” : 1 }) > db.dbdao_stuff.insert({“_id”:5,”a”:5,”b”:15}); WriteResult({ “nInserted” : 1 }) > > db.dbdao_stuff.find(); { “_id” : 1, “a” : 1, “b” : 1 } { “_id”…

  • MongoDB $unset重置某个field

    对于已经有值的field,在mongodb中可以使用$unset操作符来重置该field。 http://docs.mongodb.org/manual/reference/operator/update/unset/ 具体语法如下:   { $unset: { <field1>: “”, … } } 例如 db.products.update( { sku: “unknown” }, { $unset: { quantity: “”, instock: “” } } )     具体使用的例子: db.dbdao_sample.insert({“_id”:3,”a”:7,”c”:[3,4,7,-1,-1]}); > db.dbdao_sample.update({“_id”:3},{“$unset” : {“c”:””}}); WriteResult({ “nMatched” : 1, “nUpserted” : 0, “nModified” : 1 }) > db.dbdao_sample.find(); { “_id” : 3, “a” :…

  • mongodb $all操作符

    $all操作符帮助选择collection中field是array类型的,且该array包含所有指定的元素的document。 若使用$all操作符,语法如下:   { <field>: { $all: [ <value1> , <value2> … ] } }   使用例子如下   > db.dbdao_col.insert({_id:1,”a”:1,”b”:[3]}); WriteResult({ “nInserted” : 1 }) > db.dbdao_col.insert({_id:11,”a”:”5″,”b”:[5,3,7]}); WriteResult({ “nInserted” : 1 }) > db.dbdao_col.insert({_id:111,”a”: 1 ,”b”:[3,5]}); WriteResult({ “nInserted” : 1 }) > db.dbdao_col.insert({_id:12,”a”: “5” ,”b”:[“alpha”,5]}); WriteResult({ “nInserted” : 1 }) > db.dbdao_col.find(); { “_id” :…

  • MongoDB db.collection.remove()方法

    mongodb中删除document采用remove方法, http://docs.mongodb.org/manual/reference/method/db.collection.remove/ db.collection.remove(),从一个collection中移除对应的document。db.collection.remove()可以有2种用法:     db.collection.remove( <query>, <justOne> ) justone是布尔类型,是可选的参数,来保证只删除一个document; 默认为false即删除所有符合要求的document> 从版本2.6开始加入了新的语法: db.collection.remove( , { justOne: , writeConcern: } )   writeConcern 关于safe write。 下面的是db.collection.remove()的使用例子   其中new Date方法用来返回一个mongoldb中的ISOdate类型     ac:~ maclean$ mongo MongoDB shell version: 3.0.2 connecting to: test > > > db.dbdao_email.insert({email_title:”dbdao email!”,date: new Date(“1999-01-01”)}); WriteResult({ “nInserted” : 1 }) > > >…

  • 用于Linux上数据及被删除分区恢复的5个最佳数据恢复工具

      —————- 什么是数据恢复(Data Recovery)? 数据恢复是当数据不能正常访问时,从损坏/报错/讹误或不可访问的磁盘介质上进行数据拯救的一个过程。 被拯救的数据通常存放在存储介质如内部或外部磁盘,SSD, USB闪存,CD, DVD, RAID和其它电子存储设备中。 当存储设备出现物理损坏或文件系统出现逻辑损坏导致相关文件系统不能被mount到OS上,你就需要考虑进行恢复。 最通常需要数据恢复的原因是由于操作系统错误。当系统未能boot起来,那么我们需要立刻保存或恢复相关重要数据。 —————- 5个最佳的Linux数据恢复工具  如果你正在使用Linux,而你又由于某些物理或逻辑损坏的原因需要进行数据恢复,那么你会发现有很多恢复数据的工具可选。 为了不使我们在其中纠结迷失,我从中挑出了5个Linux上最好的数据恢复工具。 文中你可以选择其中一个来进行恢复而不必在一大堆的Linux数据恢复工具中寻找。 —————- 5. SystemRescureCD SystemRescureCD是基于Gentoo Linux平台工具,当系统在一次奔溃后受到损坏,它可以用于作为启用光盘或USB驱动来修复那些无法启动的情况。 此工具提供了非常多拯救数据,建立编辑分区,磁盘测试和其他特性: 特性: 使用GNU Parted和GParted进行磁盘分区和分区大小改变,包括了FAT32和NTFS格式 使用fdisk编辑磁盘分区表 使用PartImage磁盘镜像软件拷贝被使用过的扇区 使用TestDisk来恢复丢失的分区并使用PhotoRec恢复丢失的数据 使用FSArchiver系统工具可使你对文件系统中的内容进行压缩保存。 CD和DVD烧录:dvd+rw-tools工具 两个bootloader: GRUB和SYSLINUX 提供浏览器: Firefox, Midori, ELinks 文件管理器:emelFM2 具有归档和非归档能力 文件系统工具:文件系统建立,删除,重定义大小,移动支持多种文件格式, 除了FAT32和Mac OS HFS还包括NTFS读/写访问(通过NTFS-3G)支持 支持Intel x86和PowerPC系统,包括Mac 具有建立系统启动盘能力 支持Windows注册编辑和Linux密码修改能力 能通过CD启动FreeDOS, Memtest86+, 硬盘诊断和其他磁盘。 还有很多… 下载SystemRescureCD,使用CD-ROM或USB运行它: http://www.sysresccd.org/Download 关于如何在U盘上安装SystemRescureCD,可查看文档: http://www.sysresccd.org/Sysresccd-manual-en_How_to_install_SystemRescueCd_on_an_USB-stick —————-…

  • SHOUG老汪的APOUC 2015台北会议札记

      APOUC 2015年度活动于4月28日台北君悦酒店举行,时间为期3天。除第一天是仅对晚上到场的与会者进行自助餐形式的欢迎招待外。之后就会进入紧凑而有序的两天会议议程。 我们SHOUG一行在4月25日已早早地“侵入”台北啦:),不得不吐槽一下台湾签发的入台证,需要提早1个月就开始申请不说,如果去之前申请入台证需要加急,那费用更是贵得吓人(200元1天/人的加价)。 如果大家准备去台湾个人游的话,记得去淘宝找下中青旅关于入台证服务的购买介绍,早准备多省钱哦!! 从上海到台湾的飞机耗时真的不长,2个小时不到就着陆了,来之前就已经规划好了所有需要准备的事项:住宿,路线,悠游卡购买,3G手机上网卡7天期购买,外币兑换等等。 虽然旅行中或多或少还是会碰到了一些状况,比如迷宫一样的台北捷运车站。。。,比如不习惯的大肠面线早饭。。。       不过总体来说还是很顺利的,毕竟语言交流无障碍么:),而且7-Eleven超市到处都有,里面都有提供银联的ATM机,可以很容易的进行台币兑换。 总体台湾给我们的感觉是:干净整洁,有序紧凑。老百姓素质都很高(看他们的垃圾分类和捷运排队就知道了)。 店铺林立,日式店很多,和台湾的店铺一起融为一体,毫无违和感。 电瓶车超多,疯狂的小电瓶让出租车汗颜。自行车好少,且和人一起在上街道走。 到处都有学习补习班和牙医诊所。。       OK,回到旅游方面。 蒋中正纪念馆,中山纪念堂,台北故宫等有历史意义的参观总体上来说乏善可陈(下图为中山纪念堂降旗仪式)。     台北动物园(猫空缆车),西门町,台北诚品书店等还是应该去看下的。相对上海动物园来说,台北动物园的动物布局合理,景色优美,而且相当干净,水晶猫空缆车可以全角度拍照,很赞。       去西门町可以去尝尝那里正版的豪大大鸡排,超大又实惠的!!而且那里有很多漫画书卖,喜欢漫画,手办,抱枕的朋友可以去看下。 在台北由于那边的咖啡店到处都是,所以相对价格也便宜了些,星巴克相比上海每杯便宜10~15新台币。 去那里一定要去喝下那边天仁茗茶店做的奶茶,那可是台湾同胞点名推荐的哦~~,喝过了你就会知道,奶茶除了有奶之外,也应该有茶~~,好喝不腻又正宗么~~     ————– 终于等到了28日APOUC开会的那天:) 参与此会议活动的代表来自整个亚太区,Oracle为我们免费提供了两晚的住宿和君悦早上及中午的餐饮。 期间和澳大利亚,日本,台湾,泰国等各个国家的代表进行了一些交流,你可以问他们一些你感兴趣的话题,当然他们也会向你询问一些中国的情况。 如最近阿里巴巴淘宝在中国的发展情况,从中国来台湾是否顺利,你们OUG的发展情况等等。如果你英文很差也没关系,我告诉他们我是带着耳朵学英文的,他们哈哈笑着说:”OK, no problem”。 你也可以通过会议厅后的介绍墙了解各国代表的大致背景情况。       会议日程:     其中主要的议题是关于Oracle在当下对Cloud(IaaS, DaaS, PaaS, SaaS)方面的发展及布局, Java(J2EE 8介绍), MySQL 5.7(Fabric, NDB)新特性的介绍等。  …

  • Apple美国苹果公司的Oracle数据库的AWR报告

      这是一份Apple公司的Oracle数据库的AWR报告,硬件上基于Exadata X2。 基于这份报告AskMaclean论坛水友作了多方面的评价。 AWR报告下载地址:http://t.askmac.cn/forum.php?mod=attachment&aid=MzQ3NnxjMTY5NzExOHwxNDI3MDk5MDk0fDB8NDUzNQ%3D%3D 基于2方面来讨论此报告: 国外的DBA的管理风格 国外开发人员的代码风格 网友Oracle顾问说道:没有国内最常见的顺序读和全表扫描的IO问题。 网友游泳虎: 应该是2-2的满配,cell single block就是sequential read吧?cursor_sharing居然是force。应用分区没做好。 网友XKGLOB刀:SQL ordered by Sharable Memory那里的SQL语句让我印象深刻,IN后面很多变量,这样的语句很难共享cursor,并且parse花的内存多时间久. 2.有RAC相关的隐含参数,top5里RAC相关的事件也多 3. IOStat显示写redo89GB,我按load profile算是42GB,却只切换了一次. 网友文宇Baron:主要的问题是insert语句导致PRODUCTTASK_LASTMODDATE_P索引竞争引起gc buffer busy, 核心的解决办法还是是修改索引字段的生成方法,看来苹果的应用也没有对RAC作针对性的优化阿 网友原则丶张记:唯一看出来的是,编码风格:大小写统一、全部使用绑定变量,8节点rac gc这么管理的确实很好。应用设计估计很厉害。 网友 不了峰 1. undo_retention=36000 挺好的 log buffer=130M 2.Estd Interconnect traffic (KB)=30MB,从每秒有1GB的逻辑读来看,感觉也没有太多的cache fusion . 前台的应用应该有针对性的分节点. 3.感觉大部分的表都放在了同一个表空间中. 从而猜想这个表空间应该很大 4. 有做DataGuard 代码方面, 使用绑定变量,并且应该是大部分使用长连接 但有少量的rollback 整体上看,很好的吧~

  • 了解db.collection.find()

    db.collection.find()可能是mongodb中最常用的方法之一了,其定义为db.collection.find(query, projection), 即查询一个collection中的文档并返回一个包含了选定文件(document)的字段(field)的游标。   参数   query : 是可选参数,基于查询操作符指定了查询的条件,若希望返回collection中的所有文件,则无需指定该query 参数,直接 db.collection.find()即可 参数 projection:是可选参数,指定了那些字段是需要返回的,若要返回所有字段则不必要指定该参数。   projection参数的形式如下: { field1: <boolean>, field2: <boolean> … } 如上boolean布尔类型可以是下面的值: 1 或者 true 代表包含该field。find()方法总是包括_id字段,即便你这里没有指定要_id字段。 0或者false 代表不不包含该field。   例如: > db.dbdao_student.insert({name:”maclean”,age:30,score:100}); WriteResult({ “nInserted” : 1 }) > db.dbdao_student.insert({name:”jiang”,age:20,score:100}); WriteResult({ “nInserted” : 1 }) > > > > db.dbdao_student.find({},{age:1}); { “_id” : ObjectId(“55461b72fefe5936ccc41386”), “age”…

  • MongoDB的技术优势

    任何关系型数据库RDBMS均会有典型的Schema Design模式设计来规划系统中有多少张表以及这些表之间的关联。但在MongoDB中没有关系relationship 的概念 MongoDB对比RDBMS关系型数据库的优势   schema less:MongoDB是基于文档存储的数据库,在MongoDB中一个collection集合中可以存放多个不同的文档。 文档与文档之间对比,字段的数量,字段的和大小都是可以不同的。 单个对象的结构清楚 MongoDB通过不支持JOIN来深化其横向扩展能力 深度查询能力。MongoDB通过基于文档的查询语言提供针对文档的动态查询语言,其查询能力接近于SQL语言。 易于扩展,MongDB具备很好的扩展性 对于数据库对象和应用对象之间的转换更少 使用内部内存来排序工作集,让数据访问更快速 为什么使用MongoDB? 面向文档的存储方式:数据被以JSON风格文档形式存放 任何属性均可索引 具有复制和高可用特性 自动数据分片 丰富的查询功能 快速的数据库升级 有mongodb(10gen)公司提供支持   何处可以使用MongoDB? Big Data 内容管理和发布 移动和社交 用户数据管理 Data HUB

  • MongoDB的一些优势

    which of the following describe situations where mongodb has a clear advantage over a typical relational database? check all apply developer need to get an application into production quickily Queries from applications are ad hoc and unpredictable The data model changes frequently Many Long running complex transactions are present   由于mongodb是schema less的所以其初始开发速度异常的快, schema less意味着开发人员可以够少地做模式方案设计,更快将应用投产。 同时由于mongodb是schema…