Skip to content

Commit be2647e

Browse files
committed
update db
1 parent 4682748 commit be2647e

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

db相关总结.md

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,32 @@
6666
* 怎么判断oracle客户端、服务器端的位数:http://blog.csdn.net/linghe301/article/details/8471945
6767
* oracle数据导入与导出: http://blog.csdn.net/loadrunn/article/details/7283441
6868
* EXECUTE IMMEDIATE 常见使用方法: http://blog.itpub.net/27042095/viewspace-739404/
69+
* Oracle11g自带的SQL developer无法打开解决方案(百度文库): http://wenku.baidu.com/link?url=scHbokjqF7nK8kca00Pxrm8uaUmm7HNkgXLGaq0tNU-9T2zOrc08oZ7YJkXagD-QbQUmQl7c1wiZNigvIZ9YNVwMU9qIgxBI34HfkM8kWdO
6970

7071

7172
## PL/SQL Developer
7273

7374
* http://www.allroundautomations.com/registered/plsqldev.html
7475
* 配置:localhost:1521/orcl
7576

77+
## navicat 连接Oracle 报错:Cannot load OCI DLL, 126
78+
79+
windows Server 2008 服务器上安装了Oracle 11g R2,在用Navicat去连接Oracle时,提示以下错误:
80+
81+
Cannot load OCI DLL, 126: Instant Client package is required for Baic and TNS connection ,For more information: http://wiki.navicat.com/wiki/index.php/Instant_client_required
82+
83+
查看上述链接页面提示,Navicat only support 32-bit instant client, 因此,尽管我们安装了64位的Oracle,但由于Navicat仅支持32位的,因此我们还需下载一个32位的客户端, 下载地址:
84+
85+
http://www.oracle.com/technetwork/topics/winsoft-085727.html。
86+
87+
以下为完整的解决方法:
88+
89+
* 在上述地址中下载文件:instantclient-basic-nt-12.1.0.2.0.zip,
90+
* 解压此安装包至:D:/app/administrator/product/instantclient_2_2_x32
91+
* 打开Navicat,选择工具→选项→其他→OCI,然后设置OCI library为:D:app/administrator/product/instantclient_12_2_x32/oci.dll,设置SQL *plus为:D:/app/administrator/product/11.2.0/dbhome_1/BIN/sqlplus.exe。确定。
92+
* 测试成功。
93+
94+
7695

7796
## Oracle 11g 默认用户名和密码
7897

@@ -203,6 +222,44 @@ Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临
203222

204223
表空间的维护是由ORACLE数据库系统管理员DBA通过SQL*PLUS语句实现的,其中表空间创建与修改中的文件名是不能带路径的,因此DBA必须在ORACLE/DBS目录中操作。
205224

225+
## 使sqlplus中方向键可用
226+
227+
使Unix下的sqlplus/rman也像windows下sqlplus/rman命令一样,可以通过左右箭头修改命令,通过上下箭头查看命令历史。The rlwrap (readline wrapper) utility provides a command history and editing of keyboard input for any other command. This is a really handy addition to SQL*Plus and RMAN on Linux. 而rlwrap会用到readline包,首先要安装readline,然后安装rlwrap。
228+
229+
### 下载
230+
231+
* readline下载:http://directory.fsf.org/project/readline/
232+
* rlwrap下载:http://utopia.knoware.nl/~hlub/uck/rlwrap/
233+
234+
### 安装(使用root登陆,平台是Solaris,其它类似)
235+
```
236+
# install readline:
237+
gunzip readline-5.0.tar.gz
238+
tar xvf readline-5.0.tar
239+
cd readline-5.0
240+
./configure
241+
make
242+
make install
243+
244+
# install rlwrap:
245+
gunzip rlwrap-0.30.tar.gz
246+
tar xvf rlwrap-0.30.tar
247+
cd rlwrap-0.30
248+
./configure
249+
make
250+
make check
251+
make install
252+
```
253+
254+
### 使用
255+
256+
# rlwrap sqlplus user/pwd@testdb
257+
258+
可以设别名放到.bash_porfile里,然后直接使用别名即可。
259+
260+
alias rlsqlplus='rlwrap sqlplus'
261+
source ~/.bash_porfile
262+
206263
## Oracle安装错误ora-00922(缺少或无效选项)
207264

208265
安装Oracle 11g R2的过程中,在新建数据库实例时出现了该错误,如果选择"忽略"就会出现ora-28000错误。经网络查询验证,这是属于在前面配置管理员密码的时候,采用了数字开头的密码,Oracle貌似对此不支持,但当时不提示出错,晕倒!据说包含其他非法特殊字符也可能产生此问题。
@@ -788,6 +845,48 @@ Oracle提供了两种验证方式,一种是OS验证,另一种密码文件验
788845
* Spring Data MongoDB hello world example: http://www.mkyong.com/mongodb/spring-data-mongodb-hello-world-example/
789846
* MongoDB设置访问权限、设置用户: http://www.cnblogs.com/zengen/archive/2011/04/23/2025722.html
790847

848+
## 三招解决MongoDB的磁盘IO问题
849+
850+
### 使用组合式的大文档
851+
852+
我们知道MongoDB是一个文档数据库,其每一条记录都是一个JSON格式的文档。比如像下面的例子,每一天会生成一条这样的统计数据:
853+
854+
{ metric: "content_count", client: 5, value: 51, date: ISODate("2012-04-01 13:00") }{ metric: "content_count", client: 5, value: 49, date: ISODate("2012-04-02 13:00") }
855+
856+
而如果采用组合式大文档的话,就可以这样将一个月的数据全部存到一条记录里:
857+
858+
{ metric: "content_count", client: 5, month: "2012-04", 1: 51, 2: 49, ... }
859+
860+
通过上面两种方式存储,预先一共存储大约7GB的数据(机器只有1.7GB的内存),测试读取一年信息,这二者的读性能差别很明显:第一种: 1.6秒;第二种: 0.3秒。那么问题在哪里呢?实际上原因是组合式的存储在读取数据的时候,可以读取更少的文档数量。而读取文档如果不能完全在内存中的话,其代价主要是被花在磁盘seek上,第一种存储方式在获取一年数据时,需要读取的文档数更多,所以磁盘seek的数量也越多。所以更慢。实际上MongoDB的知名使用者foursquare就大量采用这种方式来提升读性能。见此
861+
862+
### 采用特殊的索引结构
863+
864+
我们知道,MongoDB和传统数据库一样,都是采用B树作为索引的数据结构。对于树形的索引来说,保存热数据使用到的索引在存储上越集中,索引浪费掉的内存也越小。所以我们对比下面两种索引结构:
865+
866+
db.metrics.ensureIndex({ metric: 1, client: 1, date: 1})
867+
db.metrics.ensureIndex({ date: 1, metric: 1, client: 1 })
868+
869+
采用这两种不同的结构,在插入性能上的差别也很明显。当采用第一种结构时,数据量在2千万以下时,能够基本保持10k/s 的插入速度,而当数据量再增大,其插入速度就会慢慢降低到2.5k/s,当数据量再增大时,其性能可能会更低。而采用第二种结构时,插入速度能够基本稳定在10k/s。其原因是第二种结构将date字段放在了索引的第一位,这样在构建索引时,新数据更新索引时,不是在中间去更新的,只是在索引的尾巴处进行修改。那些插入时间过早的索引在后续的插入操作中几乎不需要进行修改。而第一种情况下,由于date字段不在最前面,所以其索引更新经常是发生在树结构的中间,导致索引结构会经常进行大规模的变化。
870+
871+
###预留空间
872+
873+
与第1点相同,这一点同样是考虑到传统机械硬盘的主要操作时间是花在磁盘seek操作上。
874+
比如还是拿第1点中的例子来说,我们在插入数据的时候,预先将这一年的数据需要的空间都一次性插入。这能保证我们这一年12个月的数据是在一条记录中,是顺序存储在磁盘上的,那么在读取的时候,我们可能只需要一次对磁盘的顺序读操作就能够读到一年的数据,相比前面的12次读取来说,磁盘seek也只有一次。
875+
```
876+
db.metrics.insert([ { metric: 'content_count', client: 3, date: '2012-01', 0: 0, 1: 0, 2: 0, ... }
877+
{ .................................., date: '2012-02', ... })
878+
{ .................................., date: '2012-03', ... })
879+
{ .................................., date: '2012-04', ... })
880+
{ .................................., date: '2012-05', ... })
881+
{ .................................., date: '2012-06', ... })
882+
{ .................................., date: '2012-07', ... })
883+
{ .................................., date: '2012-08', ... })
884+
{ .................................., date: '2012-09', ... })
885+
{ .................................., date: '2012-10', ... })
886+
{ .................................., date: '2012-11', ... })
887+
{ .................................., date: '2012-12', ... })])
888+
```
889+
791890

792891
## MONGOVUE
793892

@@ -821,3 +920,8 @@ Oracle提供了两种验证方式,一种是OS验证,另一种密码文件验
821920
* Teradata Aster: http://developer.teradata.com/aster
822921
* actian: http://www.actian.com/
823922

923+
# 数据模型
924+
925+
## PowerDesigner两张表主键如何设成一致的
926+
927+
设置方法:Tools--->Model Options->Model Settings。在Data Item组框中定义数据项的唯一性代码选项(Unique Code)与重用选项(Allow Reuse)。把allow reuse选上,去掉unique code选项。

0 commit comments

Comments
 (0)