十一月 12th, 2011最近在考虑通过OAM页来找出某个表的所有相关页面
OAM页在sybase数据库中起着相当重要的作用,管理着单个表的位置信息,通过遍历OAM页,来找到所有的分配页,然后再通过分配页的信息来获取所有该表的页面。
OAM页在sybase数据库中起着相当重要的作用,管理着单个表的位置信息,通过遍历OAM页,来找到所有的分配页,然后再通过分配页的信息来获取所有该表的页面。
近期有一个客户说他们有一个数据库,出了问题,库又很大,我发传送到本地,远程操作又相当的困难,要求的时间又紧急,就放弃了处理。
处理的过程中发现了自己程序中的一些毛病,比如对于DOL页面处理能力不够,不能像APL表一样,通过页链来直接处理。之前曾经将这方面的工作已经进入到一定的程度,但后来由于工作的关系搁了下来,近期打算更新。
核心的算法已经基本上都完成,但是在展现方面还是存在一定的问题,一直都在思考,陆陆续续再做吧
The Adaptive Server Enterprise scheduler manages the processing time provided to client tasks. The scheduler allows a task to execute on a server engine using the rule:-
The following diagram illustrates management of processing time using default values for time slice (1 clock tick, 1/10th of a second) and cpu grace time (500 clock ticks, 50 seconds). The task begins execution at the end of the “free time”.
At periodic yield points, the task checks to see if the time slice has been exceeded. If it has not, the task continues executing. If it has, the task voluntarily yields the engine within the cpu grace time; if the task had not yet fulfilled the client request, the task goes to the end of the run queue. If there are no other tasks in the run queue, the server grants the task another processing interval.
It is possible for a task not to encounter a yield point and to exceed the time slice period. When this occurs, the server terminates the task with a time slice error at the end of the cpu grace time. Time slice errors are typically due to a delay in acquiring an Adaptive Server resource, a coding problem, or some other issue; for example, the Server may have made a blocking system call that does not return for a long time.
If you receive time slice errors, take these steps:-
Set up a configurable shared memory dump (CSMD) using “timeslice” as the dump condition. Information about CSMD can be found in the section “Other Useful Tasks” in the most recent version of Troubleshooting and Disaster Recovery.
Try increasing the value of the cpu grace time parameter. See “Configuration parameters” in the System Administration Guide: Volume 1 chapter “Setting Configuration Parameters.” Warning! Sybase does not recommend changing the time slice configuration parameter to resolve these errors, only the cpu grace time parameter. Changing the time slice parameter affects all tasks and changes the dynamics of Adaptive Server’s processing time management; changing the cpu grace time affects only tasks that would be terminated with a time slice error. If cpu grace time is set to 1500 and time slice errors persist, contact Sybase Technical Support.
Sometimes one table will be inserted some duplicate rows.example for:
col1 col2 col3
a b c
d e f
a b c
a b c
d e f
—————————–
I want to delete duplicate rows. And the result like:
col1 col2 col3
a b c
d e f
—————————–
How to do?
It is often necessary to identify gaps in sequential data,like key gaps, bcp load gaps, etc.
Here is a simple table with a sequence gap (i.e. the number 4 is missing)
SELECT * FROM number
go
number
———–
1
2
3
5
6
(5 rows affected)
How to find the missing data of 4?
Latches are nontransactional synchronization mechanisms used to guarantee the physical consistency of a page. While rows are being inserted, updated or deleted, only one Adaptive Server process can have access to the page at the same time. Otherwise, changes could overwrite each other. Latches are used for both datapages and datarows locking. They are not used for changes to tables using the allpages locking scheme.
The most important distinction between a lock and a latch is the duration:
A lock can persist for a long period of time: while a page is being scanned, for the duration of a
statement, or for the duration of a transaction.
A latch is held only for the time required to insert or move a few bytes on a data page, to
copy pointers, columns or rows, or to acquire a latch on another index page.
In datarows locking, row-level locks are acquired on individual rows on data pages. Index rows and
pages are not locked. When a row needs to be changed on a data page, a nontransactional latch
is acquired on the page. The latch is held while the physical change is made to the data page, and
then the latch is released. The lock on the data row is held until the end of the transaction. The
index rows are updated, using latches on the page, but are not locked. Index entries are implicitly locked by acquiring a lock on the data row.
环境ASE 12.5.4 WINDOWS
库名test
大小2M
表名pet_goods
dump文件test.dump
步骤:
1 建一个2M的库test,实现方法随便大家
2 load database test from ‘test.dump’
3 online database test
4 bcp test..pet_goods out pet_goods.bcp -c -Usa -Pxxxx
你会发现你的bcp一直都不会结束,直到你中断
dbcc checktable(pet_goods)
————————————–
Table Corrupt: Page linkage is not consistent; check the following pages:
(current page#=631; page# pointing to this page=678; previous page# indicated
in this page=630)
DBCC execution completed. If DBCC printed error messages, contact a user with
System Administrator (SA) role.
————————————–
最近碰到一件非常奇怪的事情,在为一个客户做数据恢复服务的时候,bcp往外导数据,居然bcp一直都停不下来,知道磁盘空间满。当然这个数据库的这个表肯定是出于不正常的状态,没有经过分析,结合页链pglinkage的分析,隐隐约约觉得其中页面如果进入一个死循环状态,可能会导致这个问题,这段时间打算研究一下这么一个问题
最近在学习项目管理,孙子兵法有两句话,在项目整体管理中出现,就是“日费千金,然后十万师举矣”,“故兵闻拙速,未睹巧之久也”。其原意应该就是打仗是很耗人力物力的,一个军队领导人或者国家领导人在做出决策之前一定要考虑好这些因素,后一句就是,用兵只听说过快速用兵,没有听说过长期持久的,当然老毛抗日战争是另外一回事,那时孙子还不知道。