SQL执行中占CPU资源最多的前10条查询

select top 20 total_worker_time/execution_count as avg_cpu_cost,plan_handle,execution_count,(select substring(text,statement_start_offset/2+1,(case when statement_end_offset=-1then len(convert(nvarchar(max),text))*2else statement_end_offsetend - statement_start_offset)/2)from sys.dm_exec_sql_text(sql_handle)) as query_textfrom sys.dm_exec_query_statsorder by [avg_cpu_cost] desc
找出工作负荷中运行最频繁的查询select top 10 total_worker_time,plan_handle,execution_count,   (select substring(text,statement_start_offset /2 +1,       (case when statement_end_offset = -1          then len(convert(nvarchar(max),text))*2          else statement_end_offset        end - statement_start_offset)/2)      from sys.dm_exec_sql_text(sql_handle)) as query_text   from sys.dm_exec_query_stats   order by execution_count desc
找到被编译得最多的前10位查询计划select top 10 plan_generation_num,execution_count,  (select substring(text,statement_start_offset /2 +1,     (case when statement_end_offset = -1       then len(convert(nvarchar(max),text))*2       else statement_end_offset      end - statement_start_offset)/2)    from sys.dm_exec_sql_text(sql_handle)) as query_textfrom sys.dm_exec_query_statswhere plan_generation_num>1order by plan_generation_num desc
来源:https://blog.csdn.net/easyboot/article/details/7623746

centos7 安装 sqlserver

安装可参考:https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-setup-red-hat

1.下载sql server的源,便于通过yum命令来安装

curl https://packages.microsoft.com/config/rhel/7/mssql-server.repo > /etc/yum.repos.d/mssql-server.repo

2.安装

yum install -y mssql-server

3.配置

sqlservr-setup 或 mssql-conf setup

安装客户端工具

可以参考:https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools

1.设置防火墙

要连接数据库,首先要打开防火墙上1433端口,也就是,增加tcp端口1433到公共区域,并且永久生效

2.下载客户端工具的源

curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo

3.安装客户端工具

yum install mssql-tools unixODBC-devel

4.连接sql sever

sqlcmd -S localhost -U sa

 

Spring Data JPA 查询方法支持的关键字

Keyword Sample JPQL snippet
And findByLastnameAndFirstname … where x.lastname = ?1 and x.firstname = ?2
Or findByLastnameOrFirstname … where x.lastname = ?1 or x.firstname = ?2
Is,Equals findByFirstname,findByFirstnameIs,findByFirstnameEquals … where x.firstname = 1?
Between findByStartDateBetween … where x.startDate between 1? and ?2
LessThan findByAgeLessThan … where x.age < ?1
LessThanEqual findByAgeLessThanEqual … where x.age <= ?1
GreaterThan findByAgeGreaterThan … where x.age > ?1
GreaterThanEqual findByAgeGreaterThanEqual … where x.age >= ?1
After findByStartDateAfter … where x.startDate > ?1
Before findByStartDateBefore … where x.startDate < ?1
IsNull findByAgeIsNull … where x.age is null
IsNotNull,NotNull findByAge(Is)NotNull … where x.age not null
Like findByFirstnameLike … where x.firstname like ?1
NotLike findByFirstnameNotLike … where x.firstname not like ?1
StartingWith findByFirstnameStartingWith … where x.firstname like ?1 (parameter bound with appended %)
EndingWith findByFirstnameEndingWith … where x.firstname like ?1 (parameter bound with prepended %)
Containing findByFirstnameContaining … where x.firstname like ?1 (parameter bound wrapped in %)
OrderBy findByAgeOrderByLastnameDesc … where x.age = ?1 order by x.lastname desc
Not findByLastnameNot … where x.lastname <> ?1
In findByAgeIn(Collection<Age> ages) … where x.age in ?1
NotIn findByAgeNotIn(Collection<Age> age) … where x.age not in ?1
True findByActiveTrue() … where x.active = true
False findByActiveFalse() … where x.active = false
IgnoreCase findByFirstnameIgnoreCase … where UPPER(x.firstame) = UPPER(?1)

通过解析方法名创建查询

通过前面的例子,读者基本上对解析方法名创建查询的方式有了一个大致的了解,这也是 Spring Data JPA 吸引开发者的一个很重要的因素。该功能其实并非 Spring Data JPA 首创,而是源自一个开源的 JPA 框架 Hades,该框架的作者 Oliver Gierke 本身又是 Spring Data JPA 项目的 Leader,所以把 Hades 的优势引入到 Spring Data JPA 也就是顺理成章的了。

框架在进行方法名解析时,会先把方法名多余的前缀截取掉,比如 find、findBy、read、readBy、get、getBy,然后对剩下部分进行解析。并且如果方法的最后一个参数是 Sort 或者 Pageable 类型,也会提取相关的信息,以便按规则进行排序或者分页查询。

在创建查询时,我们通过在方法名中使用属性名称来表达,比如 findByUserAddressZip ()。框架在解析该方法时,首先剔除 findBy,然后对剩下的属性进行解析,详细规则如下(此处假设该方法针对的域对象为 AccountInfo 类型):

  • 先判断 userAddressZip (根据 POJO 规范,首字母变为小写,下同)是否为 AccountInfo 的一个属性,如果是,则表示根据该属性进行查询;如果没有该属性,继续第二步;
  • 从右往左截取第一个大写字母开头的字符串(此处为 Zip),然后检查剩下的字符串是否为 AccountInfo 的一个属性,如果是,则表示根据该属性进行查询;如果没有该属性,则重复第二步,继续从右往左截取;最后假设 user 为 AccountInfo 的一个属性;
  • 接着处理剩下部分( AddressZip ),先判断 user 所对应的类型是否有 addressZip 属性,如果有,则表示该方法最终是根据 “AccountInfo.user.addressZip” 的取值进行查询;否则继续按照步骤 2 的规则从右往左截取,最终表示根据 “AccountInfo.user.address.zip” 的值进行查询。

可能会存在一种特殊情况,比如 AccountInfo 包含一个 user 的属性,也有一个 userAddress 属性,此时会存在混淆。读者可以明确在属性之间加上 “_” 以显式表达意图,比如 “findByUser_AddressZip()” 或者 “findByUserAddress_Zip()”。

在查询时,通常需要同时根据多个属性进行查询,且查询的条件也格式各样(大于某个值、在某个范围等等),Spring Data JPA 为此提供了一些表达条件查询的关键字,大致如下:

  • And — 等价于 SQL 中的 and 关键字,比如 findByUsernameAndPassword(String user, Striang pwd);
  • Or — 等价于 SQL 中的 or 关键字,比如 findByUsernameOrAddress(String user, String addr);
  • Between — 等价于 SQL 中的 between 关键字,比如 findBySalaryBetween(int max, int min);
  • LessThan — 等价于 SQL 中的 “<“,比如 findBySalaryLessThan(int max);
  • GreaterThan — 等价于 SQL 中的”>”,比如 findBySalaryGreaterThan(int min);
  • IsNull — 等价于 SQL 中的 “is null”,比如 findByUsernameIsNull();
  • IsNotNull — 等价于 SQL 中的 “is not null”,比如 findByUsernameIsNotNull();
  • NotNull — 与 IsNotNull 等价;
  • Like — 等价于 SQL 中的 “like”,比如 findByUsernameLike(String user);
  • NotLike — 等价于 SQL 中的 “not like”,比如 findByUsernameNotLike(String user);
  • OrderBy — 等价于 SQL 中的 “order by”,比如 findByUsernameOrderBySalaryAsc(String user);
  • Not — 等价于 SQL 中的 “! =”,比如 findByUsernameNot(String user);
  • In — 等价于 SQL 中的 “in”,比如 findByUsernameIn(Collection<String> userList) ,方法的参数可以是 Collection 类型,也可以是数组或者不定长参数;
  • NotIn — 等价于 SQL 中的 “not in”,比如 findByUsernameNotIn(Collection<String> userList) ,方法的参数可以是 Collection 类型,也可以是数组或者不定长参数;

各种排行榜出炉:Java 稳坐冠军宝座、Oracle 岌岌可危,我们的大 PHP 呢

2016年只剩下不到一个月的时间了, IT 界最重要的莫过于各种排行榜,除了加班最狠、待遇最好、妹子最多……的 IT 公司外,程序员们最关心的是不是各种编程语言、数据库的排行榜里,PHP 是最好的编程语言还是最好的“数据库”?

C 语言自 2015 年 11 月以来就有下降趋势。在今年之前的整个 15 年的时间内,其评分都在 15%-20% 之间波动,但今年却一反常态,评分跌至 10% 以下,并且没有看到回升的势头。C 语言到底发生了什么?为何一蹶不振?

看来 Java 坐稳 2017 年热门编程语言排行榜冠军宝座了,你的语言上榜没?冠军总是比较忙,这会正和 Kotlin 比编译速度,到底谁更快呢~

除了编程语言,2016 年全球数据库排名也尘埃落定,Oracle 、MySQL 和 Microsoft SQL Server 依然稳坐三甲宝座,不过,Oracle 的地位可就没那么稳固了,跟第二名 MySQL 的差距已缩小至 30 分!看来明年的排行榜有看头了,不知道是@美国网友:”php是世界上最好的数据库“,还是@凡行:“MySQL是世界上最好的编程语言!”说得对呢~@达尔文:”前排出售小板凳。”

同样地位不保的还有第三方 Android 系统 CM 之父,被踢出局的他与乔布斯经历了同样的悲惨境遇,作为 Cyanogen 公司的主要创始人,Steve Kondik 已经从这家公司离职。

这种感觉就像 Firebug 在其官方网站上宣布 —— “Firebug 扩展不再进行开发或维护,我们邀请您使用 Firefox 的内置开发工具以代替”。@世尘悉洞 :“回想起用firebug的岁月,挺伤感的。感谢一路陪伴,虽然现在不怎么使用了,但是还是很感谢之前的陪伴。”讲不出的再见~

虽然开发者的世界少了 Firebug,不过我们的大谷歌回归啦,Google Developers 中国网站正式发布!Google Developers 中国网站是特别为中国开发者而建立的,它汇集了 Google 为全球开发者所提供的开发技术资源,包括 API 文档、开发案例、技术培训的视频。并涵盖了以下关键开发技术和平台产品的信息:

  • Android(developer.android.google.cn)
  • Tensor Flow (www.tensorflow.org)
  • Google Play(developer.android.com/distribute/googleplay/index.html)
  • AdMob(firebase.google.cn/docs/admob)、
  • Firebase(firebase.google.cn)

除了面向中国开发者的 Google Developers 中国网站,谷歌 DeepMind 还面向公众和开发者开放开源 AI 训练平台 DeepMind Lab,这款软件本周在GitHub上线,它看起来像一款卡通视频游戏,但却是精心设计的,目的是让AI开发者对他们机器人的学习加以控制。

当越来越牛逼的机器人取代程序员写代码,会发生什么呢?过去,程序员需要在大学或工作中花费好几年时间才能学习掌握一些编程知识,熟悉了解一些昂贵的服务器性能,而现在,只需几周时间就能搞定一项网页开发编程语言了。基于人工智能生成的代码,为整个行业带来了颠覆创新。

Adding SQLCipher to Xcode Projects IOS MAC

Adding SQLCipher to Xcode Projects

SQLite is already a popular API for persistent data storage in iOS apps so the upside for development is obvious. As a programmer you work with a stable, well-documented API that happens to have many good wrappers available in Objective-C, such as FMDB and Encrypted Core Data. All security concerns are cleanly decoupled from application code and managed by the underlying framework.

The framework code of the SQLCipher project is open source, so users can be confident that an application isn’t using insecure or proprietary security code. In addition, SQLCipher can also be compiled on Android, Linux, OS X and Windows for those developing cross-platform applications.

Using SQLCipher in an iOS app is fairly straightforward. This document describes integrating SQLCipher into an existing iOS project using the Community Edition source code build process. This tutorial assumes some familiarity with basic iOS app development and a working install of Xcode (6.1.1). The same basic steps can be applied to OS X projects as well.

? Hot Tip: Commercial Edition static libraries are available for you to drop right into your project if you’d like to skip all this and receive personalized support from our crack development team! Binaries and helpful projects integrations are available for all supported platforms. Learn more »

Prerequisites

Xcode with an iOS or OS X SDK installed. Visit the Apple Developer site for more information on downloading the latest Xcode and iOS and OS X SDKs.

OpenSSL

OpenSSL is no longer required for building SQLCipher on iOS and OS X, as the project by default uses Apple’s CommonCrypto framework for hardware-accelerated encryption. You can still build SQLCipher with other crypto providers like OpenSSL if you’d prefer, or you can write your own.

SQLCipher

Fire up the Terminal app, switch into your project’s root directory and checkout the SQLCipher project code using Git:

$ cd ~/Documents/code/SQLCipherApp
$ git clone https://github.com/sqlcipher/sqlcipher.git

Xcode Project Configuration

The SQLCipher source provides a sqlcipher.xcodeproj project file that we’ll add to your project to build a static library that you’ll link from your main application target.

Add Project Reference

Open your iOS app’s project or workspace in Xcode, open the Project Navigator (command+1), and click on the top-level Project icon for your iOS app. Right click on the project and choose “Add Files to “My App”” (the label will vary depending on your app’s name). Since we cloned SQLCipher directly into the same folder as your iOS app you should see a sqlcipher folder in your root project folder. Open this folder and select sqlcipher.xcodeproj:

Add Files to 'My App'

Project References

Project Settings

Navigate to your Project settings (make sure you don’t select the application target level). Select the Build Settings pane. In the search field, type in “Header Search Paths”. Double-click on the field under the target column and add the following path: $(PROJECT_DIR)/sqlcipher/src:

Next, add a setting to ensure that SQLCipher is the first library linked with your application in the “Other Linker Flags” setting. Start typing “Other Linker Flags” into the search field until the setting appears, double click to edit it, and add the following value: $(BUILT_PRODUCTS_DIR)/libsqlcipher.a

You will next edit one other setting on your Project to ensure the SQLCipher builds correctly—”Other C Flags.” Start typing “Other C Flags” into the search field until the setting appears, double click to edit it, and in the pop-up add the following value: -DSQLITE_HAS_CODEC

Target Settings

Next, navigate to the Target Level settings. Add a Target dependency to each of your application targets to ensure that SQLCipher is compiled before the application code. In Xcode’s Project Navigator (command+1), select your app’s Project file and in the Editor pane select Build Phases and your app’s main target (not the project file).

Expand Target Dependencies and click on the + button at the end of the list. In the browser that opens, select the sqlcipher static library target:

Add Target Dependency

Expand Link Binary With Libraries, click on the +button at the end of the list, and select the libsqlcipher.a library.

Link Binary With Libraries

Finally, also under Link With Libraries, add Security.framework.

? Hot Tip: If libsqlite3.dylib or another SQLite framework is listed in your Link Binary With Libraries list be sure to remove it!

Repeat these steps for any other targets in your project that will depend on SQLCipher, i.e. unit tests.

Integration Code

Now that the SQLCipher library is incorporated into the project you can start using the library immediately. Telling SQLCipher to encrypt a database is easy:

  • Open the database
  • Use the sqlite3_key function to provide key material. In most cases this should occur as the first operation after opening the database.
  • Run a query to verify the database can be opened (i.e. by querying the schema)
  • As a precautionary measure, run a query to ensure that the application is using SQLCipher on the active connection
#import <sqlite3.h>

...
NSString *databasePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]
                          stringByAppendingPathComponent: @"sqlcipher.db"];
sqlite3 *db;
bool sqlcipher_valid = NO;

if (sqlite3_open([databasePath UTF8String], &db) == SQLITE_OK) {
    const char* key = [@"BIGSecret" UTF8String];
    sqlite3_key(db, key, strlen(key));
    if (sqlite3_exec(db, (const char*) "SELECT count(*) FROM sqlite_master;", NULL, NULL, NULL) == SQLITE_OK) {
      if(sqlite3_prepare_v2(database, "PRAGMA cipher_version;", -1, &stmt, NULL) == SQLITE_OK) {
        if(sqlite3_step(stmt)== SQLITE_ROW) {
          const unsigned char *ver = sqlite3_column_text(stmt, 0);
          if(ver != NULL) {
            sqlcipher_valid = YES;

            // password is correct (or database initialize), and verified to be using sqlcipher

          }
        }
        sqlite3_finalize(stmt);
      }
    }
    sqlite3_close(db);
}

In most cases SQLCipher uses PBKDF2, a salted and iterated key derivation function, to obtain the encryption key. Alternately, an application can tell SQLCipher to use a specific binary key in blob notation (note that SQLCipher requires exactly 256 bits of key material), i.e.

PRAGMA key = "x'2DD29CA851E7B56E4697B0E1F08507293D761A05CE4D1B628663F411A8086D99'";

Once the key is set SQLCipher will automatically encrypt all data in the database! Note that if you don’t set a key then SQLCipher will operate identically to a standard SQLite database.

Testing and Verification

There are a number of ways that you can verify SQLCipher is working as expected in your applications before its release to users.

After the application is wired up to use SQLCipher, take a peek at the resulting data files to make sure everything is in order. An ordinary SQLite database will look something like the following under hexdump. Note that the file type, schema, and data are clearly readable.

% hexdump -C plaintext.db
00000000  53 51 4c 69 74 65 20 66  6f 72 6d 61 74 20 33 00  |SQLite format 3.|
00000010  04 00 01 01 00 40 20 20  00 00 00 04 00 00 00 00  |.....@  ........|
...
000003b0  00 00 00 00 24 02 06 17  11 11 01 35 74 61 62 6c  |....$......5tabl|
000003c0  65 74 32 74 32 03 43 52  45 41 54 45 20 54 41 42  |et2t2.CREATE TAB|
000003d0  4c 45 20 74 32 28 61 2c  62 29 24 01 06 17 11 11  |LE t2(a,b)$.....|
000003e0  01 35 74 61 62 6c 65 74  31 74 31 02 43 52 45 41  |.5tablet1t1.CREA|
000003f0  54 45 20 54 41 42 4c 45  20 74 31 28 61 2c 62 29  |TE TABLE t1(a,b)|
...
000007d0  00 00 00 14 02 03 01 2d  02 74 77 6f 20 66 6f 72  |.......-.two for|
000007e0  20 74 68 65 20 73 68 6f  77 15 01 03 01 2f 01 6f  | the show..../.o|
000007f0  6e 65 20 66 6f 72 20 74  68 65 20 6d 6f 6e 65 79  |ne for the money|

Fire up the SQLCipher application in simulator and look for the application database files under /Users/sjlombardo/Library/Application Support/iPhone Simulator/5.0/Applications/<Instance ID>/Documents. Try running hexdump on the application database. With SQLCipher the output should looks completely random, with no discerning characteristics at all.

% hexdump -C sqlcipher.db
00000000  1b 31 3c e3 aa 71 ae 39  6d 06 f6 21 63 85 a6 ae  |.1<..q.9m..!c...|
00000010  ca 70 91 3e f5 a5 03 e5  b3 32 67 2e 82 18 97 5a  |.p.>.....2g....Z|
00000020  34 d8 65 95 eb 17 10 47  a7 5e 23 20 21 21 d4 d1  |4.e....G.^# !!..|
...
000007d0  af e8 21 ea 0d 4f 44 fe  15 b7 c2 94 7b ee ca 0b  |..!..OD.....{...|
000007e0  29 8b 72 93 1d 21 e9 91  d4 3c 99 fc aa 64 d2 55  |).r..!...<...d.U|
000007f0  d5 e9 3f 91 18 a9 c5 4b  25 cb 84 86 82 0a 08 7f  |..?....K%.......|
00000800

Other sensible testing steps include:

  • Attempt to open a database with a correct key and verify that the operation succeeds
  • Attempt to open a database with an incorrect key and verify that the operation fails
  • Attempt to open a database without any key, and verify the operation fails
  • Programtically inspect the first 16 bytes of the database file and ensure that it contains random data (i.e. not the string SQLite Format 3\0)

来源:https://www.zetetic.net/sqlcipher/ios-tutorial/

Oracle 数据泵详解[转]

一、EXPDP和IMPDP使用说明

Oracle Database 10g引入了最新的数据泵(Data Dump)技术,数据泵导出导入(EXPDP和IMPDP)的作用

1)实现逻辑备份和逻辑恢复.

2)在数据库用户之间移动对象.

3)在数据库之间移动对象

4)实现表空间搬移.

二、数据泵导出导入与传统导出导入的区别

在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP.使用EXPDP和IMPDP时应该注意的事项:

1)EXP和IMP是客户端工具程序,它们既可以在可以客户端使用,也可以在服务端使用。

2)EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。

3)IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。

数据泵导出包括导出表,导出方案,导出表空间,导出数据库4种方式.

三、Expdp参数

EXPDP命令行选项,可通过expdp help=y查看:

E:\emp>expdp help=y

Export: Release 10.2.0.1.0- Production on 星期日, 03 5月, 2009 17:54:49

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

数据泵导出实用程序提供了一种用于在 Oracle 数据库之间传输

数据对象的机制。该实用程序可以使用以下命令进行调用:

示例: expdp scott/tigerDIRECTORY=dmpdir DUMPFILE=scott.dmp

您可以控制导出的运行方式。具体方法是: 在 ‘expdp’ 命令后输入

各种参数。要指定各参数, 请使用关键字:

格式: expdp KEYWORD=value 或 KEYWORD=(value1,value2,…,valueN)

示例: expdp scott/tigerDUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott

或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表

USERID 必须是命令行中的第一个参数。

关键字               说明 (默认)

——————————————————————————

ATTACH                连接到现有作业, 例如 ATTACH [=作业名]。

COMPRESSION           减小有效的转储文件内容的大小

关键字值为: (METADATA_ONLY) 和 NONE。

CONTENT               指定要卸载的数据, 其中有效关键字为:

(ALL), DATA_ONLY 和 METADATA_ONLY。

DIRECTORY             供转储文件和日志文件使用的目录对象。

DUMPFILE              目标转储文件 (expdat.dmp) 的列表,

例如 DUMPFILE=scott1.dmp, scott2.dmp,dmpdir:scott3.dmp。

ENCRYPTION_PASSWORD   用于创建加密列数据的口令关键字。

ESTIMATE              计算作业估计值, 其中有效关键字为:

(BLOCKS) 和 STATISTICS。

ESTIMATE_ONLY         在不执行导出的情况下计算作业估计值。

EXCLUDE               排除特定的对象类型, 例如EXCLUDE=TABLE:EMP。

FILESIZE              以字节为单位指定每个转储文件的大小。

FLASHBACK_SCN         用于将会话快照设置回以前状态的 SCN。

FLASHBACK_TIME        用于获取最接近指定时间的 SCN 的时间。

FULL                  导出整个数据库 (N)。

HELP                  显示帮助消息 (N)。

INCLUDE               包括特定的对象类型, 例如INCLUDE=TABLE_DATA。

JOB_NAME              要创建的导出作业的名称。

LOGFILE               日志文件名 (export.log)。

NETWORK_LINK          链接到源系统的远程数据库的名称。

NOLOGFILE             不写入日志文件 (N)。

PARALLEL              更改当前作业的活动 worker 的数目。

PARFILE               指定参数文件。

QUERY                 用于导出表的子集的谓词子句。

SAMPLE                要导出的数据的百分比;

SCHEMAS               要导出的方案的列表 (登录方案)。

STATUS                在默认值 (0) 将显示可用时的新状态的情况下,

要监视的频率 (以秒计) 作业状态。

TABLES                标识要导出的表的列表 – 只有一个方案。

TABLESPACES           标识要导出的表空间的列表。

TRANSPORT_FULL_CHECK  验证所有表的存储段 (N)。

TRANSPORT_TABLESPACES 要从中卸载元数据的表空间的列表。

VERSION               要导出的对象的版本, 其中有效关键字为:

(COMPATIBLE), LATEST 或任何有效的数据库版本。

下列命令在交互模式下有效。

注: 允许使用缩写

命令               说明

——————————————————————————

ADD_FILE              向转储文件集中添加转储文件。

CONTINUE_CLIENT       返回到记录模式。如果处于空闲状态, 将重新启动作业。

EXIT_CLIENT           退出客户机会话并使作业处于运行状态。

FILESIZE              后续 ADD_FILE 命令的默认文件大小 (字节)。

HELP                  总结交互命令。

KILL_JOB              分离和删除作业。

PARALLEL              更改当前作业的活动 worker 的数目。

PARALLEL=<worker 的数目>。

START_JOB             启动/恢复当前作业。

STATUS                在默认值 (0) 将显示可用时的新状态的情况下,

要监视的频率 (以秒计) 作业状态。

STATUS[=interval]

STOP_JOB              顺序关闭执行的作业并退出客户机。

STOP_JOB=IMMEDIATE 将立即关闭

数据泵作业。

1)ATTACH

该选项用于在客户会话与已存在导出作用之间建立关联.语法如下

ATTACH=[schema_name.]job_name

Schema_name用于指定方案名,job_name用于指定导出作业名.注意,如果使用ATTACH选项在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:

Expdp scott/tiger ATTACH=scott.export_job

2) CONTENT

该选项用于指定要导出的内容.默认值为ALL

CONTENT={ALL | DATA_ONLY | METADATA_ONLY}

当设置CONTENT为ALL 时,将导出对象定义及其所有数据.为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象定义

Expdp scott/tiger DIRECTORY=dumpDUMPFILE=a.dump

CONTENT=METADATA_ONLY

3) DIRECTORY

指定转储文件和日志文件所在的目录

DIRECTORY=directory_object

Directory_object用于指定目录对象名称.需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS 目录

Expdp scott/tiger DIRECTORY=dumpDUMPFILE=a.dump

建立目录:

SQL> createdirectory dump_dir as ‘d:\dump’;

目录已创建。

SQL> grantread,write on directory dump_dir to scott;

授权成功。

查询创建了那些子目录:

SELECT * FROM dba_directories;

4) DUMPFILE

用于指定转储文件的名称,默认名称为expdat.dmp

DUMPFILE=[directory_object:]file_name [,….]

Directory_object用于指定目录对象名,file_name用于指定转储文件名.需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象

Expdp scott/tiger DIRECTORY=dump1DUMPFILE=dump2:a.dmp

5.)ESTIMATE

指定估算被导出表所占用磁盘空间分方法.默认值是BLOCKS

EXTIMATE={BLOCKS | STATISTICS}

设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间,设置为STATISTICS时,根据最近统计值估算对象占用空间

Expdp scott/tiger TABLES=empESTIMATE=STATISTICS

DIRECTORY=dump DUMPFILE=a.dump

6.)EXTIMATE_ONLY

指定是否只估算导出作业所占用的磁盘空间,默认值为N

EXTIMATE_ONLY={Y | N}

设置为Y时,导出作用只估算对象所占用的磁盘空间,而不会执行导出作业,为N时,不仅估算对象所占用的磁盘空间,还会执行导出操作.

Expdp scott/tiger ESTIMATE_ONLY=yNOLOGFILE=y

7.)EXCLUDE

该选项用于指定执行操作时释放要排除对象类型或相关对象

EXCLUDE=object_type[:name_clause] [,….]

Object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象.EXCLUDE和INCLUDE不能同时使用

Expdp scott/tiger DIRECTORY=dumpDUMPFILE=a.dup EXCLUDE=VIEW

8)FILESIZE

指定导出文件的最大尺寸,默认为0,(表示文件尺寸没有限制)

9. FLASHBACK_SCN

指定导出特定SCN时刻的表数据

FLASHBACK_SCN=scn_value

Scn_value用于标识SCN值.FLASHBACK_SCN和FLASHBACK_TIME不能同时使用

Expdp scott/tiger DIRECTORY=dumpDUMPFILE=a.dmp

FLASHBACK_SCN=358523

10)FLASHBACK_TIME

指定导出特定时间点的表数据

FLASHBACK_TIME=”TO_TIMESTAMP(time_value)”

Expdp scott/tiger DIRECTORY=dumpDUMPFILE=a.dmp FLASHBACK_TIME=

“TO_TIMESTAMP(’25-08-200414:35:00’,’DD-MM-YYYYHH24:MI:SS’)”

11)FULL

指定数据库模式导出,默认为N

FULL={Y | N}

为Y时,标识执行数据库导出.

12)HELP

指定是否显示EXPDP命令行选项的帮助信息,默认为N

当设置为Y时,会显示导出选项的帮助信息.

Expdp help=y

13)INCLUDE

指定导出时要包含的对象类型及相关对象

INCLUDE = object_type[:name_clause] [,… ]

14)JOB_NAME

指定要导出作用的名称,默认为SYS_XXX

JOB_NAME=jobname_string

15)LOGFILE

指定导出日志文件文件的名称,默认名称为export.log

LOGFILE=[directory_object:]file_name

Directory_object用于指定目录对象名称,file_name用于指定导出日志文件名.如果不指定directory_object.导出作用会自动使用DIRECTORY的相应选项值.

Expdp scott/tiger DIRECTORY=dumpDUMPFILE=a.dmp logfile=a.log

16)NETWORK_LINK

指定数据库链名,如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该选项.

17)NOLOGFILE

该选项用于指定禁止生成导出日志文件,默认值为N.

18)PARALLEL

指定执行导出操作的并行进程个数,默认值为1

19)PARFILE

指定导出参数文件的名称

PARFILE=[directory_path] file_name

20)QUERY

用于指定过滤导出数据的where条件

QUERY=[schema.] [table_name:] query_clause

Schema用于指定方案名,table_name用于指定表 名,query_clause用于指定条件限制子句.QUERY选项不能与 CONNECT=METADATA_ONLY,EXTIMATE_ONLY,TRANSPORT_TABLESPACES等选项同时使用.

Expdp scott/tiger directory=dumpdumpfiel=a.dmp

Tables=emp query=’WHERE deptno=20’

21)SCHEMAS

该方案用于指定执行方案模式导出,默认为当前用户方案.

22)STATUS

指定显示导出作用进程的详细状态,默认值为0

23)TABLES

指定表模式导出

TABLES=[schema_name.]table_name[:partition_name][,…]

Schema_name用于指定方案名,table_name用于指定导出的表名,partition_name用于指定要导出的分区名.

24)TABLESPACES

指定要导出表空间列表

25)TRANSPORT_FULL_CHECK

该选项用于指定被搬移表空间和未搬移表空间关联关系的检查方式,默认为N.

当设置为Y时,导出作用会检查表空间直接的完整关联关系,如果表空间所在表空间或其索 引所在的表空间只有一个表空间被搬移,将显示错误信息.当设置为N时,导出作用只检查单端依赖,如果搬移索引所在表空间,但未搬移表所在表空间,将显示出 错信息,如果搬移表所在表空间,未搬移索引所在表空间,则不会显示错误信息.

26)TRANSPORT_TABLESPACES

指定执行表空间模式导出

27)VERSION

指定被导出对象的数据库版本,默认值为COMPATIBLE.

VERSION={COMPATIBLE | LATEST |version_string}

为COMPATIBLE时,会根据初始化参数COMPATIBLE生成对象元数据;为LATEST时,会根据数据库的实际版本生成对象元数据.version_string用于指定数据库版本字符串.

 

四、EXPDP用法

使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录.因此,使用EXPDP工具时,必须首先建立DIRECTORY对象.并且需要为数据库用户授予使用DIRECTORY对象权限.

CREATE DIRECTORY dump_dir AS ‘/tmp’;

GRANT READ, WRITE ON DIRECTORY dump_dir TO scott;

1、导出表

Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=dept.dmpTABLES=dept

注:在unix下要注意directory目录的读写权限问题,如:

查看dump_dir所在的目录:用sys用户查看数据字典dba_directories

更该该文件夹的权限:chown–R oracle:dba /exp,问题解决

2、导出方案

expdp scott/tiger directory=dump_dirdumpfile=schema.dmp logfile=schema.log schemas=system

3、导出表空间

expdp scott/tiger directory=dump_dirdumpfile=tb.dmp logfile=tb.log tablespaces=users

4、导出数据库

Expdp system/manager DIRECTORY=dump_dirDUMPFILE=full.dmp FULL=Y

Expdp scott/tiger DIRECTORY=dump_dirDUMPFILE=full.dmp FULL=Y

注:提示scott用户没有相应的权限,给scott相应的权限或使用system来做全库导出 。

SQL> grant exp_full_database to scott;

Grant succeeded.

然后在做全库的导出:

五、IMPDP参数

IMPDP与EXPDP的不同参数:

1、REMAP_DATAFILE

该选项用于将源数据文件名转变为目标数据文件名,在不同平台之间搬移表空间时可能需要该选项.

REMAP_DATAFIEL=source_datafie:target_datafile

2、REMAP_SCHEMA

该选项用于将源方案的所有对象装载到目标方案中.

REMAP_SCHEMA=source_schema:target_schema

3、REMAP_TABLESPACE

将源表空间的所有对象导入到目标表空间中

REMAP_TABLESPACE=source_tablespace:target:tablespace

4、REUSE_DATAFILES

该选项指定建立表空间时是否覆盖已存在的数据文件.默认为N

REUSE_DATAFIELS={Y | N}

5、SKIP_UNUSABLE_INDEXES

指定导入是是否跳过不可使用的索引,默认为N

6、SQLFILE

指定将导入要指定的索引DDL操作写入到SQL脚本中

SQLFILE=[directory_object:]file_name

Impdp scott/tiger DIRECTORY=dumpDUMPFILE=tab.dmp SQLFILE=a.sql

7、STREAMS_CONFIGURATION

指定是否导入流元数据(StreamMatadata),默认值为Y.

8、TABLE_EXISTS_ACTION

该选项用于指定当表已经存在时导入作业要执行的操作,默认为SKIP

TABBLE_EXISTS_ACTION={SKIP | APPEND |TRUNCATE | FRPLACE }

当设置该选项为SKIP时,导入作业会跳过已存在表处理下一个对象;当设置为 APPEND时,会追加数据,为TRUNCATE时,导入作业会截断表,然后为其追加新数据;当设置为REPLACE时,导入作业会删除已存在表,重建表 并追加数据,注意,TRUNCATE选项不适用与簇表和NETWORK_LINK选项

9、TRANSFORM

该选项用于指定是否修改建立对象的DDL语句

TRANSFORM=transform_name:value[:object_type]

Transform_name用于指定转换名,其中 SEGMENT_ATTRIBUTES用于标识段属性(物理属性,存储属性,表空间,日志等信息),STORAGE用于标识段存储性,VALUE用于指定 是否包含段属性或段存储属性,object_type用于指定对象类型.

Impdp scott/tiger directory=dumpdumpfile=tab.dmp

Transform=segment_attributes:n:table

10、TRANSPORT_DATAFILES

该选项用于指定搬移空间时要被导入到目标数据库的数据文件

TRANSPORT_DATAFILE=datafile_name

Datafile_name用于指定被复制到目标数据库的数据文件

Impdp system/manager DIRECTORY=dumpDUMPFILE=tts.dmp

TRANSPORT_DATAFILES=’/user/data/tbs1.f’

六、IMPDP用法

1、导入表

impdp hsiufo/hsiufo directory=dump_dirdumpfile=full.dmp tables=scott.emp remap_schema=scott:scott

注:上图为为有一个全库的逻辑备份 full.dmp,然后删除用户scott的emp表,在full.dmp中导入emp到用户scott

impdp hsiufo/hsiufo directory=dump_dirdumpfile=full.dmp tables=scott.test remap_schema=scott:system

第一种方法表示将EMP表导入到SCOTT方案中,第二种方法表示将test表导入的SYSTEM方案中.

注意,如果要将表导入到其他方案中,必须指定REMAP SCHEMA选项.

2、导入方案

impdp hsiufo/hsiufodirectory=dump_dir dumpfile=full.dmp schemas=scott

Impdp system/manager DIRECTORY=dump_dirDUMPFILE=schema.dmp

SCHEMAS=scott REMAP_SCHEMA=scott:system

3、导入表空间

Impdp system/manager DIRECTORY=dump_dirDUMPFILE=tablespace.dmp

TABLESPACES=user

4、导入数据库

Impdp system/manager DIRECTORY=dump_dirDUMPFILE=full.dmp FULL=y

来源:http://blog.csdn.net/jojo52013145/article/details/7966047

免费好用的MySQL数据库客户端图形界面管理工具

1. Workbench
MySQL Workbench — 可视化数据库设计
MySQLWorkbench 是一款可视化的数据库设计工具,它将SQL开发、管理和数据库设计、创建和维护融合到一个简单的开发环境中,它源自fabFORCE.net,是 DBDesigner4的接班人,并且更换了mysql GUI工具绑定。当前的版本是5.2,最开始的版本是5.0, 需要强调的 是,MySQLWorkbench是被视为DBDesinger 4的继承者来开发的。

下载地址:http://dev.mysql.com/downloads/workbench/

2. HeidiSQL

ConnectionHeidiSQL 之前被称为mySQL-Front,是由德国程序员AnsgarBecker和一些在Delhi领域有突出贡献的人开发的一款免费的开源客户端。用 HeidiSQL管理数据库,用户必须通过验证登录一个本地或者远程的MySQL服务器,创建一个会话(session). 在这个会话里,用户可以通过 连接MySQL服务器管理MySQL 数据库,会话结束会断开与服务器的连接。它的特征集对于大部分普通和高级的数据库,表和数据操作来说已经足够了,但 是为了让它趋向完美,它依然保持积极的开发状态。

一个由Java, jHeidi编写的版本,被设计用来工作在Mac和Linux电脑上,不幸的是,这个项目在2010年三月被叫停了。

官方网站:http://www.heidisql.com/

3.phpMyAdmin10-best-mysql-gui-tools5

PhpMyAdmin是由PHP编写的,目的在于通过Internet管理MySQL,PhpMyAdmin支持对MySQL的大范围的操作,最频繁的使用是数据库的管理、表格、字段、关系、索引、用户、权限。你也可以直接执行SQL语句。

官方网站:http://www.phpmyadmin.net/home_page/

4. Sequel Pro

10-best-mysql-gui-tools6Sequel Pro是一款免费的开源项目,它是CocoaMySQL 数据库管理系统的继承者, CocoaMySQL是LorenzTextor脑力劳动的产物, 而Lorenz Textor是从2003年开始,CocoaMySQL主要的开发者。

SequelPro用来管理MySQL数据库(本地或者internet),它允许你增加、删除数据库和表,更改字段、索引和视图,过滤table内容,增加、编辑和删除列,执行自定义查询和转存table和整个数据库
它兼容MySQL 3.x, 4 or 5.

官方网站:http://www.sequelpro.com/

5. MySQL Browser

MySQLBrowser的优点是简单,极其简单,安装之后能够立刻上手,马上就能使用的那种,布局也很简陋,功能也很简陋,简单使用没有问题,尤其是刚开始学习mysql的童鞋,可以尝试一下。

官方下载地址: http://dev.mysql.com/downloads/gui-tools/5.0.html

MySQL查询时区分大小写的方法

1、一种方法是可以设置表或行的collation,使其为binary或case sensitive。在MySQL中,对于Column Collate其约定的命名方法如下:

*_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的
*_cs: case sensitive collation,区分大小写
*_ci: case insensitive collation,不区分大小写

###########
# Start binary collation example
###########
mysql> create table case_bin_test (word VARCHAR(10)) CHARACTER SET latin1 COLLATE latin1_bin;
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO case_bin_test VALUES (‘Frank’),(‘Google’),(‘froogle’),(‘flickr’),(‘FlicKr’);
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM case_bin_test WHERE word LIKE ‘f%’;
+———+
| word |
+———+
| froogle |
| flickr |
+———+
2 rows in set (0.00 sec)

mysql> SELECT * FROM case_bin_test WHERE word LIKE ‘F%’;
+———+
| word |
+———+
| Frank |
| FlicKr |
+———+
4 rows in set (0.00 sec)

###########
# End
###########

2、另外一种方法

###########
# Start case sensitive collation example
###########

mysql> create table case_cs_test (word VARCHAR(10)) CHARACTER SET latin1 COLLATE latin1_general_cs;
Query OK, 0 rows affected (0.08 sec)

mysql> INSERT INTO case_cs_test VALUES (‘Frank’),(‘Google’),(‘froogle’),(‘flickr’),(‘FlicKr’);
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM case_cs_test WHERE word LIKE ‘F%’;
+———+
| word |
+———+
| Frank |
| FlicKr |
+———+
4 rows in set (0.00 sec)

mysql> SELECT * FROM case_cs_test WHERE word LIKE ‘f%’;
+———+
| word |
+———+
| froogle |
| flickr |
+———+
2 rows in set (0.00 sec)

###########
# end
###########

3、还有一种方法就是在查询时指定collation

mysql> create table case_test (word VARCHAR(10)) CHARACTER SET latin1;
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO case_test VALUES (‘Frank’),(‘Google’),(‘froogle’),(‘flickr’),(‘FlicKr’);
Query OK, 7 rows affected (0.01 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM case_test WHERE word LIKE ‘f%’;
+———+
| word |
+———+
| Frank |
| froogle |
| flickr |
| FlicKr |
+———+
6 rows in set (0.01 sec)

mysql> SELECT * FROM case_test WHERE word LIKE ‘F%’;
+———+
| word |
+———+
| Frank |
| froogle |
| flickr |
| FlicKr |
+———+
6 rows in set (0.01 sec)

mysql> SELECT * FROM case_test WHERE word COLLATE latin1_bin LIKE ‘F%’;
+———+
| word |
+———+
| Frank |
| FlicKr |
+———+
4 rows in set (0.05 sec)

mysql> SELECT * FROM case_test WHERE word COLLATE latin1_bin LIKE ‘f%’;
+———+
| word |
+———+
| froogle |
| flickr |
+———+
2 rows in set (0.00 sec)

mysql> SELECT * FROM case_test WHERE word LIKE ‘f%’ COLLATE latin1_bin;
+———+
| word |
+———+
| froogle |
| flickr |
+———+
2 rows in set (0.00 sec)

mysql> SELECT * FROM case_test WHERE word LIKE ‘F%’ COLLATE latin1_bin;
+———+
| word |
+———+
| Frank |
| FlicKr |
+———+
4 rows in set (0.01 sec)

mysql> SELECT * FROM case_test WHERE word LIKE ‘F%’ COLLATE latin1_general_cs;
+———+
| word |
+———+
| Frank |
| FlicKr |
+———+
4 rows in set (0.04 sec)

要让mysql查询区分大小写,可以:

  1. select  * from  table_name where  binary  a like  ‘a%’
  2. select  * from  table_name where  binary  a like  ‘A%’

也可以在建表时,加以标识

create  table  table_name(

     a varchar (20) binary

)

来源:http://www.cnblogs.com/pinnasky/archive/2012/09/11/2680264.html

MySQL的Grant命令

来源:http://yingxiong.javaeye.com/blog/451208

本文实例,运行于 MySQL 5.0 及以上版本。

MySQL 赋予用户权限命令的简单格式可概括为:

grant 权限 on 数据库对象 to 用户

一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。

grant select on testdb.* to common_user@’%’
grant insert on testdb.* to common_user@’%’
grant update on testdb.* to common_user@’%’
grant delete on testdb.* to common_user@’%’

或者,用一条 MySQL 命令来替代:

grant select, insert, update, delete on testdb.* to common_user@’%’

二、grant 数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限。

grant 创建、修改、删除 MySQL 数据表结构权限。

grant create on testdb.* to developer@’192.168.0.%’;
grant alter on testdb.* to developer@’192.168.0.%’;
grant drop on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 外键权限。

grant references on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 临时表权限。

grant create temporary tables on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 索引权限。

grant index on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 视图、查看视图源代码 权限。

grant create view on testdb.* to developer@’192.168.0.%’;
grant show view on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 存储过程、函数 权限。

grant create routine on testdb.* to developer@’192.168.0.%’; — now, can show procedure status
grant alter routine on testdb.* to developer@’192.168.0.%’; — now, you can drop a procedure
grant execute on testdb.* to developer@’192.168.0.%’;

三、grant 普通 DBA 管理某个 MySQL 数据库的权限。

grant all privileges on testdb to dba@’localhost’

其中,关键字 “privileges” 可以省略。
四、grant 高级 DBA 管理 MySQL 中所有数据库的权限。

grant all on *.* to dba@’localhost’

五、MySQL grant 权限,分别可以作用在多个层次上。

1. grant 作用在整个 MySQL 服务器上:

grant select on *.* to dba@localhost; — dba 可以查询 MySQL 中所有数据库中的表。
grant all on *.* to dba@localhost; — dba 可以管理 MySQL 中的所有数据库

2. grant 作用在单个数据库上:

grant select on testdb.* to dba@localhost; — dba 可以查询 testdb 中的表。

3. grant 作用在单个数据表上:

grant select, insert, update, delete on testdb.orders to dba@localhost;

这里在给一个用户授权多张表时,可以多次执行以上语句。例如:

grant select(user_id,username) on smp.users to mo_user@’%’ identified by ‘123345’;
grant select on smp.mo_sms to mo_user@’%’ identified by ‘123345’;

4. grant 作用在表中的列上:

grant select(id, se, rank) on testdb.apache_log to dba@localhost;

5. grant 作用在存储过程、函数上:

grant execute on procedure testdb.pr_add to ‘dba’@’localhost’
grant execute on function testdb.fn_add to ‘dba’@’localhost’

六、查看 MySQL 用户权限

查看当前用户(自己)权限:

show grants;

查看其他 MySQL 用户权限:

show grants for dba@localhost;

七、撤销已经赋予给 MySQL 用户权限的权限。

revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:

grant all on *.* to dba@localhost;
revoke all on *.* from dba@localhost;

八、MySQL grant、revoke 用户权限注意事项

1. grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。

2. 如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“

grant select on testdb.* to dba@localhost with grant option;

这个特性一般用不到。实际中,数据库权限最好由 DBA 来统一管理。

遇到 SELECT command denied to user ‘用户名’@’主机名’ for table ‘表名’ 这种错误,解决方法是需要把吧后面的表名授权,即是要你授权核心数据库也要。

我遇到的是SELECT command denied to user ‘my’@’%’ for table ‘proc’,是调用存储过程的时候出现,原以为只要把指定的数据库授权就行了,什么存储过程、函数等都不用再管了,谁知道也要把数据库mysql的 proc表授权

mysql授权表共有5个表:user、db、host、tables_priv和columns_priv。

授权表的内容有如下用途:
user表
user表列出可以连接服务器的用户及其口令,并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。例如,如果你启用了DELETE权限,在这里列出的用户可以从任何表中删除记录,所以在你这样做之前要认真考虑。

db表
db表列出数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。

host表
host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用db好些。这个表不受GRANT和REVOKE语句的影响,所以,你可能发觉你根本不是用它。

tables_priv表
tables_priv表指定表级权限,在这里指定的一个权限适用于一个表的所有列。

columns_priv表
columns_priv表指定列级权限。这里指定的权限适用于一个表的特定列。

Microsoft® SQL Server® 2012 Evaluation

来源:http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=a74d1b60-6566-4551-b581-03337853b82b

Microsoft SQL Server 2012 实现了一个为云做好准备的信息平台,该平台可帮助组织对整个组织有突破性深入了解。

本节中的链接对应此下载包含的各个文件。下载文件最适合你文件。


文件名: 下载大小: 下载下列文件
CHS\SQLFULL_CHS.iso 4820.2MB 下载

CHS\x64\SQLFULL_x64_CHS_Core.box

1824.8MB

下载

CHS\x64\SQLFULL_x64_CHS_Install.exe

94KB

下载

CHS\x64\SQLFULL_x64_CHS_Lang.box

754.9MB

下载

CHS\x86\SQLFULL_x86_CHS_Core.box

1653.9MB

下载

CHS\x86\SQLFULL_x86_CHS_Install.exe

94KB

下载

CHS\x86\SQLFULL_x86_CHS_Lang.box

735.8MB

下载

快速详细信息


版本:

11.0.2100.60

发布日期:

2012/3/6

更改语言: 中文(简体)

概述

Microsoft SQL Server 2012 实现了一个为云做好准备的信息平台,该平台可帮助组织对整个组织有突破性深入了解,在由确保关键任务的功能所支持的内部部署和公共云中可以快速生成解决方案和扩展数据。
SQL Server 2012 实现了一个为云做好准备的信息平台,该平台可帮助组织对整个组织有突破性深入了解,在由确保关键任务的功能所支持的内部部署和公共云中可以快速生成解决方案和扩展数据:

  • 通过 AlwaysOn 提供所需运行时间和数据保护
  • 通过列存储索引获得突破性和可预测的性能
  • 通过用于组的新用户定义角色和默认架构,帮助实现安全性和遵从性
  • 通过列存储索引实现快速数据恢复,以便更深入地了解组织
  • 通过 SSIS 改进、用于 Excel 的 Master Data Services 外接程序和新 Data Quality Services,确保更加可靠、一致的数据
  • 通过使用 SQL Azure 和 SQL Server Data Tools 的数据层应用程序组件 (DAC) 奇偶校验,优化服务器和云间的 IT 和开发人员工作效率,从而在数据库、BI 和云功能间实现统一的开发体验

九个原则设计网站着陆页

来源: 创业邦

我儿子三四岁的时候,有天下午外面下雨,于是我把他带到一个巨大的室内海边游乐场玩。我以为那些闪烁的灯光,令人眼花缭乱的机器摆动和大堆青蛙过河、小蜜蜂、大金刚之类的模型会让他很兴奋,让我们在那里度过几小时的快乐亲子时间。

可实际上,他却踌躇地呆立在游乐场正中,眼花缭乱,不知所措。随便朝一个斜坡扔了几个小球后,他转过头问我:“妈妈,够了吗?我们可以回家了吗?”

网站的着陆页面时常看起来感觉就像游乐场,对访问网站的用户不仅没有吸引力和引导效果,反而令他们丈二和尚摸不着头脑——这也就意味着你的访问者会像我儿子一样迫不及待地想要点“后退”逃离这个乱七八糟的地方。

着陆页是指访问者在其他地方看到你发出的某个具有明确主题的特定营销活动——通过Email、社交媒体或广告发布的诱人优惠信息等,点击后被链接到你网站上的第一个页面。通常,着陆页上各种诱人的优惠信息背后暗藏的是发掘并收集潜在消费者信息的表单,目的是将访问者转化为潜在客户,根据收集到的信息继续跟进。着陆页为访问者提供了一种“目标超明确”的访问体验:通过呈现一个特定页面,为他们指出一条明确的路径继续加深与你公司的关系。

设计一个目标明确的着陆页面是一种艺术(也是科学)。行之有效的着陆页面应含有足够的信息,但信息量又不能太多,不能让访问者觉得眼花缭乱不知所措。理想的着陆页应传递三个简单信息:访问者所处的位置;你为他们准备了什么优惠(这些优惠是多么诱人);如果想要得到这个诱人的优惠,下一步要做什么(以及了解更多关于优惠物品的详细情况)。

一个很容易出现的误区是画蛇添足——像花枝招展的游乐场一样——在着陆页塞满了各种各样重要但非必要的花哨信息。应尽量简单明了,导航条一目了然。贵在求精。

下面将为你介绍一些设计高效着陆页的关键——可以将浏览者变成真正的买家,或至少增进你和访问者之间的关系。

承诺了就要做到

如果你在宣传中对潜在顾客或实际顾客承诺要给他们提供某种东西(比如产品使用说明、免费电子书等),一定要确保实现你的承诺——而且是即刻。

“信息不符”是极为常见的情况:电子邮件营销服务商Silverpop研究了150个不同着陆页后发现,大部分成功的着陆页都与Email促销信息中的“点击诱因”相呼应——浏览者就是为了这个才决定点击访问你的网站。然而有45%的登陆页并没有在标题中重复Email中的促销信息。如果你在促销时对人做出了某种承诺,一定要确保对方访问你的网站后立刻就能实现这个承诺,而不是给人家一个截然不同的说法。

提供的内容要有价值

有天我点了一个链接,链接标题是提供适合家庭度假的加勒比度假村指南,但当我下载后发现,其实只是一家度假村的促销小册子。我觉得被人耍了,让我这个潜在消费者觉得非常不是滋味。确定你在着陆下载页面中提供的内容的确有价值:潜在客户会喜欢吗?还是很差劲?

避免信息过量。我儿子在游乐场里的感觉就是这个问题的最佳示范。千万不要在着陆页中塞入太多东西。

这样可导致超链接干扰,令你的潜在消费者不知不觉地点开其他不相关链接,然后将原本的目的全抛到一边。Ion互动营销代理公司总裁兼合作创始人斯科特·布林克尔将这种用长篇文字和解释填充页面的倾向称为“填充页面综合征”。

“努力将所有信息塞入一个页面就等于在浏览者身上压上了筛选内容的负担,”布林克尔说,“遗憾的是,大多数时候人们还没兴趣在你身上花那么多时间。”

标题要以客户利益为导向

通过告诉顾客你提供的产品对他们有什么好处,不断重复这次活动有多好。一个以产品为导向的标题会突出你的产品或服务可以做什么。一个以客户利益为导向的标题则告诉客户你的产品和服务能为他们做什么。

我们在MarketingProfs进行过一次实验,分别测试两个不同着陆页面的效果,两个都提供了对我们公司一个计划工具的访问,第一个着陆页说,“立即加入,访问SmartTools:社交媒体营销工具。”第二个着陆页说,“SmartTools帮您迅速创建成功的社交媒体宣传活动。”第一个页面是以产品为导向,第二个却告诉订购者可以从中得到什么。结果并不意外,第二个以客户利益为导向的着陆页最终转换效果比以产品为导向的页面高出26.06%。

关于副标题和视频图片

位于标题下方的副标题是阐述你提供的产品有何主要益处的好地方。在营销圈内,这里应长篇大论还是寥寥数笔是个广受争议的话题。我个人喜欢用比较少的笔墨,最好是易于分辨的点列格式,或许还可以配上视频或相关图片。总而言之:不要将视频或音频文件设为页面下载后立即自动播放模式。这样不仅有些烦人,而且突然冒出的声音还会吓到很多想在安静环境中工作的人。

突出强调“点击诱因”

“点击诱因”指的是吸引访问者采取下一步行动的按钮或链接。当访问者打开了页面,选择你所提供的产品服务,接下来就要确保他们知道下一步该怎么做。将“点击诱因”放在明显位置,同时选择最适合你的文字标签进行注释。有些研究结果建议,着陆页的提交按钮上只写着“提交”字样的效果会逊于更有行动性的文字,比如“立即下载”或“注册”。按钮一定要注意4B原则:大(Big)、鲜艳(Bright)、醒目(Bold)、显而易见(Blindingly obvious)。

保持简单

收集购买意向时,只要求对方提供最相关的信息。主要理念是排除横亘在访问者和你希望他们做出的行动之间的一切阻力——引诱他们参与而不是打消人家的积极性。简单还意味着将页面所用的文字和图片削减到最精华的部分。着陆页的内容越少,重要位置或者访问者无需向下滚动页面就可以看到的显著位置就越突出。

利用信用证明和社会认可

通过传递你的可信度来建立信任感:证明书、媒体报道、第三方信任和安全认证(比如TRUSTe或商业改进局)、不满意退款等。你还可以加入“社会认可”,像是博客评论或Facebook、Twitter的粉丝数量。“社会认可”可以增强可信度,因为这发送了一种信号,代表其他人对你的公司的认可。

测试,测试

你的产品和服务是独一无二的,你的受众群体也是一样。设计着陆页面时,测试哪一种对你效果最好——亦即对你的受众效果最好。最直接的方式是通过简单的A/B测试,同时提供几个不同版本的促销页面,然后看哪个效果最好。从测试“青菜”(Apple)vs“萝卜”(Orange)开始,然后进行修改。当你确定“青菜”的销售转换效果比“萝卜”强,然后决定是否麦金塔的转换率比富士强。 _译/金笙

How to set up mysql master/slave architecture.

来源:【原创】How to set up mysql master/slave architecture. (2008-12-10 09:55)

All the info below should be added in /etc/my.cnf. If you can’t find this file, just use the following statements to find where it is.

  1. To find the location of my.cnf.

ps aux | grep mysql | grep -v ‘grep’ | head -n 1

For example .

[root@localhost ~]# ps aux | grep mysql | grep -v ‘grep’ | head -n 1

root      2952  0.0  0.2   4512  1220 ?        S    16:12   0:00 /bin/sh ./mysqld_safe –defaults-file=/usr/local/mysql/my.cnf

Then we know the correct configuration file is /usr/local/mysql/my.cnf.

We should add the following lines to my.cnf in section [mysqld].

server-id = 1

log-bin=mysql-bin

binlog-do-db=db1

binlog-do-db=db2

binlog-ignore-db=ignore-db1

binlog-ignore-db=ignore-db2

expire_logs_days = 5

max_binlog_size=500M

log-slave-updates

Then restart mysqld manually and execute the following statements in mysql command line client.

  1. To grant valid user to slave.

To assume this thread called A.

grant file,replication slave on *.* to ‘mysql_ms’@’Slave IP’ identified by ‘Your password’;

flush privileges;

For example, if my slave’s ip address is "192.168.4.55". The user is "mysql_ms" and his password is "123456".

mysql> grant replication slave,file on *.* to ‘mysql_ms’@’192.168.4.55’ identified by ‘123456’;

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

Be sure to send the username and password to me.

  1. Lock tables and get the master’s binary log file and position.

flush tables with read lock;

show master status\G

You must not quit the current mysql command line client.

mysql> show master status\G

*************************** 1. row ***************************

            File: mysql-bin.000004

        Position: 595

Binlog_Do_DB: test

Binlog_Ignore_DB: mysql

1 row in set (0.00 sec)

mysql>

Then send the results to me.

  1. Backup exact database.

Now we locked all the tables and got the exact binary log file and position in the previous step. So begin to backup the exact database right now.

Use mysqldump to dump the necessary data to flat file, then use tool named gzip or gzip2 to compress it.

For example, if your database name is db1 and your mysql installation path was added in the environment variable named "PATH".

Use the following statement to backup your databases’ data.

mysqldump -uroot -p –net_buffer_length=10M –max_allowed_packet=11M db1 > db1.txt

Here is my example in my machine, my database name is test.

[root@localhost ~]# /usr/local/mysql/bin/mysqldump -uroot -p –net_buffer_length=100M –max_allowed_packet=120M test > test.txt

To compress the flat text file to a gzip file, using the following command.

gzip db1.txt

Then the compressed file named db1.txt.gz will be generated. You should send this file to me.

After all the above completes, go to thread A and execute the following command.

unlock tables.

Then quit thread A.

  1. What the slave machine want.

User name and password.

Master’s IP address.(192.168.4.54)

Master’s  mysql port.(3308)

Master’s  mysql binary log file and position

Master’s backup data.

  1. The following is the slave configuration.

Add the my.cnf on slave machine and restart mysqld.

[mysqld]

server-id = 2

replicate-do-db=db1

replicate-do-db=db2

replicate-ignore-db=ignore-db1

replicate-ignore-db=ignore-db2

log-bin=slave-bin

  1. Get the master information on slave machine.

Then exit from it and use the following command to import from the backup file in the shell environment.

gzip gb1.txt.gz

mysql –uroot –p –S/tmp/mysql3307.sock < gb1.txt

Enter the mysql command line client.

set @@global.max_allowed_packet=11*1024*1024;

Then exit it and enter it again.

Change master to

master_host=’192.168.4.54’,

master_port=3308,

master_user=’mysql_ms’,

master_password=’123456’

master_log_file=’mysql-bin.000004’,

master_log_pos=595;

start slave;

Oracle默认端口清单

服务 端口 产品 更改办法
Oracle HTTP Server listen port / Oracle HTTP Server port 80 Oracle Application Server Edit httpd.conf and restart OHS
Oracle Internet Directory(non-SSL) 389 Oracle Application Server
Oracle HTTP Server SSL port 443 Oracle Application Server Edit httpd.conf and restart OHS
Oracle Internet Directory(SSL) 636 Oracle Application Server
Oracle Net Listener / Enterprise Manager Repository port 1521 Oracle Application Server / Oracle Database Edit listener.ora and restart listener
Oracle Net Listener 1526 Oracle Database Edit listener.ora and restart listener
Oracle Names 1575 Oracle Database Edit names.ora and restart names server
Oracle Connection Manager (CMAN) 1630 Oracle Connection Manager Edit cman.ora and restart Connection Manager
Oracle JDBC for Rdb Thin Server 1701 Oracle Rdb
Oracle Intelligent Agent 1748 Oracle Application Server snmp_rw.ora
Oracle Intelligent Agent 1754 Oracle Application Server snmp_rw.ora
Oracle Intelligent Agent 1808 Oracle Application Server snmp_rw.ora
Oracle Intelligent Agent 1809 Oracle Application Server snmp_rw.ora
Enterprise Manager Servlet port SSL 1810 Oracle Enterprise Manager
Oracle Connection Manager Admin (CMAN) 1830 Oracle Connection Manager (CMAN) Edit cman.ora and restart Connection Manager
Enterprise ManagerAgent port 1831 Oracle Enterprise Manager
Enterprise Manager RMI port 1850 Oracle Enterprise Manager
Oracle XMLDB FTP Port 2100 Oracle Database change dbms_xdb.cfg_update
Oracle GIOP IIOP 2481 Oracle Database Edit listener.ora/init.ora and restart listener/database
Oracle GIOP IIOP for SSL 2482 Oracle Database Edit listener.ora/init.ora and restart listener/database
Oracle OC4J RMI 3201 Oracle Application Server
Oracle OC4J AJP 3301 Oracle Application Server
Enterprise Manager Reporting port 3339 Oracle Application Server Edit oem_webstage/oem.conf and restart OHS
Oracle OC4J IIOP 3401 Oracle Application Server
Oracle OC4J IIOPS1 3501 Oracle Application Server
Oracle OC4J IIOPS2 3601 Oracle Application Server
Oracle OC4J JMS 3701 Oracle Application Server
Oracle9iAS Web Cache Admin port 4000 Oracle Application Server Webcache Admin GUI or webcache.xml
Oracle9iAS Web Cache Invalidation port 4001 Oracle Application Server Webcache Admin GUI or webcache.xml
Oracle9iAS Web Cache Statistics port 4002 Oracle Application Server Webcache Admin GUI or webcache.xml
Oracle Internet Directory(SSL) 4031 Oracle Application Server
Oracle Internet Directory(non-SSL) 4032 Oracle Application Server
OracleAS Certificate Authority (OCA) – Server Authentication 4400 Oracle Application Server
OracleAS Certificate Authority (OCA) – Mutual Authentication 4401 Oracle Application Server
Oracle HTTP Server SSL port 4443 Oracle Application Server Edit httpd.conf and restart OHS
Oracle9iAS Web Cache HTTP Listen(SSL) port 4444 Oracle Application Server Webcache Admin GUI or webcache.xml
Oracle TimesTen 4662 Oracle TimesTen
Oracle TimesTen 4758 Oracle TimesTen
Oracle TimesTen 4759 Oracle TimesTen
Oracle TimesTen 4761 Oracle TimesTen
Oracle TimesTen 4764 Oracle TimesTen
Oracle TimesTen 4766 Oracle TimesTen
Oracle TimesTen 4767 Oracle TimesTen
Oracle Enterprise Manager Web Console 5500 Oracle Enterprise Manager Web
iSQLPlus 10g 5560 Oracle i*SQLPlus
iSQLPlus 10g 5580 Oracle i*SQLPlus RMI Port
Oracle Notification Service request port 6003 Oracle Application Server
Oracle Notification Service local port 6100 Oracle Application Server
Oracle Notification Service remote port 6200 Oracle Application Server
Oracle9iAS Clickstream Collector Agent 6668 Oracle Application Server
Java Object Cache port 7000 Oracle Application Server
DCM Java Object Cache port 7100 Oracle Application Server
Oracle HTTP Server Diagnostic Port 7200 Oracle Application Server
Oracle HTTP Server Port Tunneling 7501 Oracle Application Server
Oracle HTTP Server listen port / Oracle HTTP Server port 7777 Oracle Application Server Edit httpd.conf and restart OHS
Oracle9iAS Web Cache HTTP Listen(non-SSL) port 7779 Oracle Application Server Webcache Admin GUI or webcache.xml
Oracle HTTP Server Jserv port 8007 Oracle Application Server
Oracle XMLDB HTTP port 8080 Oracle Database change dbms_xdb.cfg_update
OC4J Forms / Reports Instance 8888 Oracle Developer Suite
OC4J Forms / Reports Instance 8889 Oracle Developer Suite
Oracle Forms Server 6 / 6i 9000 Oracle Application Server
Oracle SOAP Server 9998 Oracle Application Server
OS Agent 14000 Oracle Application Server
Oracle Times Ten 15000 Oracle Times Ten
Oracle Times Ten 15002 Oracle Times Ten
Oracle Times Ten 15004 Oracle Times Ten
Log Loader 44000 Oracle Enterprise Manager

MySQL:讨人喜欢的 MySQL replace into 用法(insert into 的增强版)

讨人喜欢的 MySQL replace into 用法(insert into 的增强版)

在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。

在 SQL Server 中可以这样处理:

 if not exists (select 1 from t where id = 1) insert into t(id, update_time) values(1, getdate()) else update t set update_time = getdate() where id = 1

那么 MySQL 中如何实现这样的逻辑呢?别着急!MySQL 中有更简单的方法: replace into

replace into t(id, update_time) values(1, now());

replace into t(id, update_time) select 1, now();

replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中,

1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。

2. 否则,直接插入新数据。

要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。

MySQL replace into 有三种形式:

1. replace into tbl_name(col_name, ...) values(...) 
2. replace into tbl_name(col_name, ...) select ... 
3. replace into tbl_name set col_name=value, ...

前两种形式用的多些。其中 “into” 关键字可以省略,不过最好加上 “into”,这样意思更加直观。另外,对于那些没有给予值的列,MySQL 将自动为这些列赋上默认值。