Oracle Timesten 7.0 内存数据库: (4) 使用ttisql
ttIsql就像oracle的sqlplus一样,是个基本的管理工具.1.运行模式(1) 批处理模式: 把要运行的语句保存在一个文件里,然后在运行时指定要运行的文件,例如:ttisql -f test.sql ttdemo也可以先进入命令行界面,然后再用run命令调用一个文件,例如 ~/bin # ttisql ttdemoCommand> run test.sql(2) 交互模式: 2.获取帮助help命令的基本用法是先用"help;"查看可用的命令,然后按命令查看"help cmd_name".3.查看命令历史这个更多的带有unix shell的特征,输入history或者h(简写)可以显示命令历史 .4. 几个常用的命令(1) describl
SQL Server CTEs 递归功能
CTEs支持在定义时引用自身,从而可以达到递归的目的,看下面的例子:---prepare test dataSET NOCOUNT ON;CREATE TABLE dbo.Parts(partid INT NOT NULL PRIMARY KEY,partname VARCHAR(25) NOT NULL);INSERT INTO dbo.Parts(partid, partname) VALUES( 1, 'Black Tea');INSERT INTO dbo.Parts(partid, partname) VALUES( 2, 'White Tea');INSERT INTO dbo.Parts(partid, partname) VALUES( 3, 'Latte');INSERT INTO dbo.Parts(partid, partname) VALUES( 4, 'Espresso');INSERT INTO dbo.Parts(partid, partname) VALUES( 5, 'Double Espres
Oracle Timesten 7.0 内存数据库: (3)创建一个只读的CacheGroup
1. 先在sys.odbc.ini配置一个DSN####################################################### [ttdemo] Driver=/opt/TimesTen/tt70/lib/libtten.so DataStore=/var/TimesTen/tmp/ttdemo DatabaseCharacterSet=WE8ISO8859P1 TempSize=20 PermSize=20 Authenticate=0 UID=test OracleID=shacola OraclePwd=123456 Logging=1 Isolation=1 PassThrough=0 LockLevel=0 TypeMode=0####################################################### 2 创建Oracle测试表并准
Oracle Timesten 7.0 内存数据库: (2)基本管理
1. Daemon进程的起停ttDaemonAdmin -startttDaemonAdmin -stop2. 查看系统状态ttStatusTimesTen status report as of Wed May 13 17:47:00 2009Daemon pid 26443 port 17001 instance tt70TimesTen server pid 26464 started on port 17003TimesTen webserver pid 26459 started on port 17005------------------------------------------------------------------------Data store /var/TimesTen/tt70/DemoDataStore/TptbmDataThere are no connections to the data storeReplication policy : ManualCache agent policy : Manual-------
Oracle Timesten 7.0 内存数据库: (1)安装
安装环境: Suse Enterprise Linux 10使用root用户安装, 不启用Access Control.步骤比较简单,可以参见"Oracle TimesTen In-Memory Database Installation Guide", 或者参加下面的viewlethttp://www.oracle.com/technology/products/timesten/viewlets/tt70_install_linux_viewlet_swf.html 1. Pre-Install(1) 按照安装文档的要求修改系统参数: Large pages, Shared memory, Semaphores.如果需要复制功能的话,还需要用sysctl配置一系列net相关的参数(2) 检查compat-libstdc++ 2. Install (1) 先安装In-Memory Database
SQL Server Dynamic SQL
1. An Exec ExampleDECLARE @schemaname AS NVARCHAR(128), @tablename AS NVARCHAR(128), @objectname AS NVARCHAR(517);SET @schemaname = N'dbo';SET @tablename = N'Orders';SET @objectname = QUOTENAME(@schemaname) + N'.' + QUOTENAME(@tablename);EXEC(N'SELECT COUNT(*) FROM ' + @objectname + N';');2. Exec At 通过DB Link执行一个动态SQLEXEC('SELECT ProductID, ProductName, UnitPriceFROM Northwind.dbo.ProductsWHERE ProductID = ?;', 3) AT [Dojo];3.sp_executesql相对EXEC而言,sp_executesql可以增加执行计划的稳定性
T-SQL 异常处理
1. try/catchSET XACT_ABORT off BEGIN TRYBEGIN TRAN--do sth hereCOMMIT TRANPRINT 'Transaction committed'END TRYBEGIN CATCHROLLBACKPRINT 'Transaction rolled back'SELECT ERROR_NUMBER() AS ErrorNumber,ERROR_MESSAGE() as ErrorMessage,ERROR_SEVERITY() AS ErrorSeverity,ERROR_STATE() as ErrorState,ERROR_LINE() as ErrorLine,ERROR_PROCEDURE() as ErrorProcedureEND CATCH2. 事务与异常处理(1) 事务的3种状态:a. active/committableb. no open transactionc. failed/doomed: 事务仍然处于激活状态,但是不能提交,不能执行任
SQL Server DateTime存储格式和所能表示的日期范围
1. 内部存储格式(1) Dateime 8个字节:前4个直接用于表示日期, 表示的方式是相对 Jan 1, 1900的天数差后4个字节表示时间, 从半夜开始的时间,单位是 1/300 秒(2) Small DateTime 4个字节前两个字节表示天,后两个字节表示分钟2. DateTime能够表示的时间范围:(1) DateTime Jan 1, 1753 - Dec 31, 9999西方国家以前存在两种日历, Julian和Gregorian, 在从Julian迁移到Gregorian的过程中,需要跳过10-13天. 英国在1752年完成了这个转换. 但是不同的国家完成这个切换的时间和跳过的天数不尽相同,为了避免混乱,所以就不允许1753以前的时间.(2) Smal
SQL Server 2005日志文件
1.逻辑日志文件(VLF)日志文件实际上有若干逻辑日志文件(VLF)组成,逻辑日志文件的大小由SQL Server根据物理日志文件的大小以及自动增长机制决定. 一个日志文件创建以后通常包含4-16个逻辑日志文件, 日志文件最少可以被收缩到只包含一个VLF.2.VLF可以处于以下几种状态:Active: 包含未提交事务Recoverable: 不包含活跃事务,但尚未被备份Reusable: 不包含活跃事务, 已经被备份或者数据库不需要维护一个连续的日志备份Unused: 尚未使用过3. 可以使用DBCC LOGINFO命令查看 VLF:FileID: 物理文件的编号FileSize: StartOffset: FseqNo: File Seque
SQL Server 索引维护 - Alter Index
1. Alter index可以用来执行如下任务:(1) Rebuilding an index (2) Disabling an index disable之后必须通过rebuild启用(3) Changing index options ALLOW_ROW_LOCKS, ALLOW_PAGE_LOCKS, IGNORE_DUP_KEY, and STATISTICS_NORECOMPUTE(4) Reorganizing an index 用于碎片整理2. 碎片整理(1)碎片的类型 a.Internal Fragmentation索引页没有被填满b.External Fragmentation索引页的逻辑顺序和物理顺序不一致,或者一个索引的extents不连续(2) 检测碎片SELECT * FROM sys.dm_db_index_physical_stats (Database_ID, Object_ID , Index_id, Part
SQL Server里的特殊索引(计算索引和视图索引)
除了常见的索引,SQL Server 还提供了基于计算列和视图的索引,这两种索引的一个共同之处就是它们都定义在虚拟的数据库对象上.1.Prerequisites对于给定的函数和输入值,为了保证结果的确定性,必须满足如下条件:(1)SET OptionsSET CONCAT_NULL_YIELDS_NULL ONSET QUOTED_IDENTIFIER ONSET ANSI_NULLS ONSET ANSI_PADDING ONSET ANSI_WARNINGS ONSET ARITHABORT ONSET NUMERIC_ROUNDABORT OFFcheck当前值 SELECT SessionProperty('NUMERIC_ROUNDABORT')SELECT quoted_identifier, arithabort, ansi_warnings,ansi_padding, ansi_nulls, concat_
SQL Server Create Index语法
CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX index_nameON table_name (column_name [ASC | DESC][,...n])[WITH[FILLFACTOR = fillfactor][[,] [PAD_INDEX] = { ON | OFF }][[,] DROP_EXISTING = { ON | OFF }][[,] IGNORE_DUP_KEY = { ON | OFF }][[,] SORT_IN_TEMPDB = { ON | OFF }][[,] STATISTICS_NORECOMPUTE = { ON | OFF }][[,] ALLOW_ROW_LOCKS = { ON | OFF }][[,] ALLOW_PAGE_LOCKS = { ON | OFF }][[,] MAXDOP = max_degree_of_parallelism][[,] ONLINE = { ON | OFF }]](1) FILLFACTOR : 在创建索引时为每个leaf页面保
SQL Server Identity 特性的使用
1. 创建一个带identity列的表CREATE TABLE customer(cust_id smallint IDENTITY(100, 20) NOT NULL,cust_name varchar(50) NOT NULL)2. 得到起点和步距SELECT IDENT_SEED('customer'), IDENT_INCR('customer')3.暂时禁止identity特性SET IDENTITY_INSERT tablename ON 4.检索identity列的值(1) @@IDENTITY 返回当前connection的最后一个identity值INSERT customer (cust_name) VALUES ('AAA Gadgets')SELECT @@IDENTITY这个例子里,由于触发器的因素, @@IDENTITY返回的值甚至可能都不是最后一个cust_id的值,有可能是另外一个表上的identity
SQL Server 2005 System Objects
1. DMVs and DMFs动态2. Catalog Views持久化视图,例如 sys.objects,sys.databases3. Compatibility Views纯粹为了兼容,例如 sysfiles,sysindexes,sysobjects4.Information Schema Views为了跟SQL 92兼容而搞的一套视图,都在INFORMATION_SCHEMA下5. System Functions一堆属性函数SERVERPROPERTYCOLUMNPROPERTYDATABASEPROPERTY (deprecated in favor of the following function)DATABASEPROPERTYEXINDEXPROPERTYINDEXKEY_PROPERTYOBJECTPROPERTY (deprecated)OBJECTPROPERTYEXSQL_VARIANT_PROPERTYFILEPROPERTYFILEGROUPPROPERTYTYP
SQL Server Database Snapshots
1. 创建数据库快照的几个典型用途:(1). 可以基于database mirror生成database snapshot,后者用于reporting server(2). 用作一个镜像级的备份2. 创建数据库快照:CREATE DATABASE AdventureWorks_snapshot ON( NAME = N'AdventureWorks_Data', -- the same name FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataAW_snapshot.mdf') -- a new physical nameAS SNAPSHOT OF AdventureWorks; 3. Snapshot的原理(1) snapshot创建后,snapshot文件都为空;当数据发生变动时,该数据页的pre-change快照被保存到snapshot中;当所有的数
在SQL Server 2005里面把表移动到另外一个filegroup里(ZT,经翻译)
在SQL Server 2005里面, alter table新增了一个move to 选项,可以将table移动到另外一个filegroup里面,其原理为:删除一个表的cluster index时, SQL Server会将数据移动到一个普通的表里(heap).通过指定move to选项,可以控制SQL Server将数据移动到指定的filegroup里.举例说明如下: --先创建一个测试数据库USE masterGOCREATE DATABASE TESTGO--创建两个filegroupALTER DATABASE TEST ADD FILEGROUP TEST_DATA_1GOALTER DATABASE TEST ADD FILEGROUP TEST_DATA_2GO--添加一个数据文件到TEST_DATA_1ALTER DATABASE TESTADD FILE( NAME = TES