??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲视频一区在线,亚洲狠狠婷婷综合久久久久,亚洲色成人中文字幕网站http://m.tkk7.com/duduli/archive/2011/01/17/343089.htmlduduliduduliMon, 17 Jan 2011 05:33:00 GMThttp://m.tkk7.com/duduli/archive/2011/01/17/343089.htmlhttp://m.tkk7.com/duduli/comments/343089.htmlhttp://m.tkk7.com/duduli/archive/2011/01/17/343089.html#Feedback0http://m.tkk7.com/duduli/comments/commentRss/343089.htmlhttp://m.tkk7.com/duduli/services/trackbacks/343089.html 1.用sybasew䆾安装QCD20045-55-1252-01.tgz
    建立sybaseQ家目录?opt/sybase,加密码。解压到/tmp/inst/。修?etc/hosts:ip  tank
2.用sybasedQ启动xwindowQ运?tmp/inst/setupq行囑Ş安装?br /> 3。查看SYBASE服务命o(h)Q?br /> $showserver
4.停止sybase服务Q?br /> $isql -Usa -STANK
>shutdown SYB_BACKUP  --->停backupserver
>go
>shutdown ------->停dataserver
>go
>quit
5.启动sybase服务Q?br /> $cd ~ASE_125/install/
$startserver -f RUN_TANK
$startserver -f RUN_TANK_BS
$showserver

安装 FOR WIN
cM一般程序安装;在WIN服务理里设|启动?br /> win下的SYBASE客户端sql advantage和dsedit{无法启动(本机LAN原因Q解x法:(x)
修改本机X:\sybase\locales\locales文g里NT选项的locale = zh_CN, us_english, iso_1Q加入本机LAN卛_Q如zh_CNQ?br />

常用操作Q?br /> 1.su - sybase -c "isql -Usa -STANK"
2.修改SA的密?SA默认密码为空):
用ISQLq接上后
 sp_password null,"新密? or  sp_password "旧密?,"新密?
3.开始和认事务(注意Q有些命令不可以在事务里q行Q见附录)
begin transaction和commit transaction可将L数目的SQL语句装hQ这两名的简单语法ؓ(f)Q?br /> begin transaction
commit transaction
or
begin tran
commit
  ps:只有执行?jin)commit数据才是真正写入库里?br /> 4. 回退事务
在commit transaction命o(h)提交前Q何时候可取消或回退事务Q该命o(h)的简单语法ؓ(f)Q?br /> rollback transaction
or
rollback
5Q检查事务状?br /> 全局变量@@transtate记录?jin)事务当前的状态。在执行一个语句后SQL Server通过记录所有事务变化来定q回何种状态?br /> @@transtate可包含下列|(x)
?nbsp; 意义
0事务q行中:(x)一个显式或隐式事务有效Q上一语句执行成功
1事务完成Q事务完成ƈ提交其变?br /> 2语句异常中止Q上一语句异常l止Q对事务无媄(jing)?br /> 3事务异常中止Q事务异怸止ƈ回退所有变?br /> 举例Q在事务中,可在一个语句(如insertQ后使用@@transtate定该语句成功或p|对事务的影响。commit transaction
Begin transaction
Insert into publishers(pub_id)values(‘9999’)
(1 row affected)
select @@transtate
…………………
0
commit transaction
select @@transtate
…………………
0
(1 row affected)

6.备䆾pȝ数据
SYBASE pȝ的备份与恢复机制保证?jin)在pȝp|旉新获取数据的可能性。SQL Server 提供?jin)两U不同类型的恢复机制Q一cLpȝ自动完成的恢复,q种措施在每ơ系l启动时都自动进行,保证?jin)在pȝ瘫痪前完成的事务都写到数据库讑֤上,而未完成的事务都被回退Q另一cL人工完成的恢复,q是通过 DUMP ?LOAD 命o(h)来执行h工备份和恢复工作。因此定期备份事务日志和数据库是一十分重要的日常l护工作?
7、备份数据库
每一个数据库都应在创Z后卸出,从而提供一个装入基炏V在此之后按排定的时间周期表卸出。比如每周五卸出数据库。对一般数据库pȝ卸出数据库周期徏议ؓ(f)每周一ơ?br /> 除了(jin)按计划周期卸出数据库之外Q还需在每ơ运行没有日志的操作后卸出数据库。例如:(x)
·每次强制地运行了(jin) DUMP TRAN WITH NO_LOG Q因为数据库的磁盘空溢出Q;
·每次?sp_dboption 允许 select into/bulkcopy 做快速拷贝,或用 SELECT INTO 命o(h)创徏一个永久性的表,或用了(jin) WRITETEXT 命o(h)?br /> 卸出数据库的命o(h)为:(x)
DUMP DATABASE database_name
TO dump_device
database_name 是要卸出的数据库名称Qdump_device 是卸?gu)备的名称。用pȝq程 sp_helpdevice 可以获得讑֤的信息?br /> 下面一条命令用来卸出数据库 my_db Q?br /> DUMP DATABASE my_db
TO db_bk_dev
默认导出到C:\WINDOWS\SYSTEM32\下了(jin)。也可以指定路径?br /> 8、备份事务日?br /> 如果事务日志与数据库攑֜同一个设备上Q则事务日志不应与数据库分开备䆾。master 数据库和于 4M 的用h据库是q种情况。一般数据库pȝ的数据库和日志分别放在不同的讑֤上,因此Q可以用 DUMP TRAN 命o(h)单独备䆾日志?br /> 备䆾事务日志的周期直接媄(jing)响数据的恢复E度Q因此徏议每天备份?br /> 备䆾事务日志的命令格式ؓ(f)Q?br /> DUMP TRANsaction database_name
[TO dump_device]
[WITH TRUNCATE_ONLY|WITH NO_LOG|WITH NO_TRUNCATE]
其中 database_name 是要备䆾事务的数据库名称Qdump_device 是备份设备名Uͼ仅当包含?WITH TRUNCATE_ONLY ?WITH NO_LOG 子句Ӟ才可以备份到讑֤?br /> 注意Q如果L?DUMP DATEBASE Q备份数据库?qing)其日志Q,而不?DUMP TRAN Q事务日志将不会(x)hQ而变得非常庞大?br /> 对于 master 数据库和型数据库每ơ运?DUMP DATEBASE 之后应当q行 DUMP TRANsaction 命o(h)h日志 ?br /> 下面一条命令备份数据库 db160 的事务日志到备䆾讑֤上:(x)
DUMP TRANsaction db160
TO db_log_bk_dev
WITH TRUNCATE_ONLY
9、备份数据库?qing)其日志间的怺作用
在至卸Zơ数据库前,卸出事务日志是毫无意义的。下图显CZ(jin)备䆾数据库及(qing)其日志间的关p?br /> 如果在星期二下午5Q?1出现非硬件故障,需要做的所有工作是装入带5Q参见下一节:(x)数据恢复Q,׃带5是下?Q?0刚备份的Q因此只有备份和装入之间的一分钟内的数据损失?br /> 但是Q如果在星期二下?Q?9失效?x)怎么样呢Q在q种情况下,要装入磁?Q在星期五下?Q?0的卸出)(j)。然后,依次装入带2Q?以及(qing)4。这Ppȝ恢复到星期二上?0Q?0点的状态,星期二的大部分工作丢׃(jin)。此例显CZ(jin)l常卸出事务的重要性?br /> 10、万一pȝp|时恢复数据库pȝ
如果用户数据库存储的讑֤失效Q从而数据库被破坏或不可存取Q通过装入最新的数据库备份以?qing)后来的事务日志备䆾可以恢复数据库。假讑ֽ前的事务日志存在于一个ƈ没有毁坏的设备上Q带着 WITH NO_TRUNCATE 选项?DUMP TRANsaction 命o(h)卸出它?br /> 要恢复数据库按如下步骤去做:(x)
1Q、如果日志存在于一个分ȝ讑֤上,用带着 NO_TRUNCATE 选项?DUMP TRANsaction 命o(h)卸出被毁坏的或者不可存取的用户数据库事务日志?br /> 2Q、用下面的查询检查设备分配已毁坏数据库的讑֤使用情况。必Mؓ(f)同一目的赋同L(fng)I间块?br /> 下面的查询显CZ(jin)分配l数据库 mydb 讑֤使用和尺寸情况:(x)
SELECT segmapQsize FROM sysusages
WHERE dbid =
Q?SELECT dbid FROM sysdatabases WHERE name = “mydb”Q?br /> 3Q、检查查询的输出。在 segmap 列的 ‘3’代表数据分配Q?#8216;4’代表日志分配。size 列代?2K 数据块的数目。注意此信息的次序、用和寸部分。例如,输出为:(x)
4Q、用 DROP DATABASE 命o(h)删除毁坏讑֤上的数据库。如果系l报错,用DBCC DBREPAIR 命o(h)?DROPDB 选项?br /> 5Q、删除数据库后,?sp_dropdevice 删除毁坏?jin)的讑֤?br /> 6Q、用 DISK INIT 初始化新的数据库讑֤?br /> 7Q、重建数据库。用 CREATE DATABASE 命o(h)从老的 sysusages 表拷贝所有的行,q包含第一逻辑讑֤?br /> 对上例,命o(h)为:(x)
CREATE DATABASE mydb
ON datadev1=20Qdatadev2=10
LOG ON logdev1=10
8Q、用 ALTER DATABASE 命o(h)重徏其余入口。在此例中,在datadev1上分配更多的I间Q命令ؓ(f)Q?br /> ALTER DATABASE mydb ON datadev1=2
9Q、用 LOAD DATABASE 重新装入数据库,然后?LOAD TRAN 装入前面卸出的日志?br /> LOAD DATABASE 命o(h)语法是:(x)
LOAD DATABASE database_name
FROM dump_device

LOAD TRANsaction 命o(h)的语法是Q?br /> LOAD TRANsaction database_name FROM dump_device

卸出数据库和事务日志的缺省权限归数据库所有者,且可以传递给其他用户Q装载数据库和事务的权限也归数据库所有者,但不能传递?br />
11、生用户信息表QƈZ息表授权Q?br /> pȝl护人员的另一个日怺务是为用户创建新的信息表QƈZ授权。创以及(qing)授权的方法已l在讲过Q在此只有兛_令语法写出来?br /> ·创徏表的命o(h)为:(x)
CREATE TABLE table_name
Q?column_1 datatype [NULL | NOT NULL | IDENTITY]Q?br /> column_2 ……
Q?br /> go

ALTER TABLE table_name
ADD PRIMARY KEY Qcolumn_listQ?br /> go

·删除表的命o(h)格式为:(x)
DROP TABLE table_name
go

·授权的命令格式ؓ(f)Q?br /> GRANT {ALL|permission_list}
ON table_name TO user_name
go

·收回权限的命令格式ؓ(f)
REVOKE {ALL|permission_list}
ON table_name FROM user_name
go

12、监视系l运行状况,?qing)时处理pȝ错误Q?br /> pȝ理员的另一Ҏ(gu)常工作是监视pȝq行情况。主要有以下几个斚wQ?br /> 1Q、监视当前用户以?qing)进E的信息
使用pȝq程Qsp_who
说明Q该命o(h)昄当前pȝ所有注册用户及(qing)q程信息Q如下表是某pȝ的信息?br /> SpidStatusLoginamehostnameblkdbnamecmd
---------------------------------------------------------------
1RunningSascosysv0MasterSELECT
2SleepingNULL0MasterNETWORK HANDLE
3SleepingNULL0MasterDEADLOCK TUNE
4SleepingNULL0MasterMIRROR HANDLER
5SleepingNULL0MasterHOUSEKEEPER
6SleepingNULL0MasterCHECKPOINT SLEEP
从左向右依次昄Q进E号、当前状态、注册用户名、主机名、占用块数、数据库名以?qing)当前命令?br /> 如果监视时发现进EL接近最大连接数Q用pȝq程Qsp_configure “user conn” 查看Q时Q应下掉不活动或无关q程Q以保证pȝ正常q做Q另外亦可监视非法用h用户使用不属于自׃用范围的数据库等情况?br /> 2Q、监视目标占用空间情?br /> 使用pȝq程Qsp_spaceused
说明Q该q程昄行数、数据页C?qing)当前数据库中由某个目标或所有目标所占用的空间。如下表是某数据库日志表的信息:(x)

NameRow_totalreserveddataIndex_sizeunused
------------------------------------------------------------
SyslogsNot avail32KB32KB0KBNot avail

日常要监视的主要目标有:(x)用户数据库、数据库日志表(syslogsQ以?qing)计费原始数据表{。如果发现占用空间过大,Ҏ(gu)志表要进行{储;对其他目标则应扩充空间或清楚垃圾数据?br /> 3Q、监?SQL Server l计数字
使用pȝq程Qsp_monitor
说明Qsp_monitor 昄SQL Server 的历史统计数字,下表是某pȝ的统计数字:(x)

Last_runCurrent_runSeconds
---------------------------------------------------------------
May 13 2000 1:27PMMay 13 2000 3:01PM5678
CPU_busyIO_busyIdle
---------------------------------------------------------------
16(6)-0%0(0)-0%5727(5672)-99%
Packets_receivedPackets_sentPacket_errors
---------------------------------------------------------------
21(17)100(97)0(0)
Total_readTotal_writeTotal_errorsConnections
--------------------------------------------------------
785(366)311(113)0(0)3(2)

上表依次l出该系l本ơ运行统计的上一ơ时间、本ơ时间、间隔秒数、CPU占用、IO占用、收发包情况、系l读入写出情늭信息

13、保证系l数据安全,周期更改用户口o(h)Q?br /> Z证系l数据的安全Q系l管理员必须依据pȝ的实际情况,执行一pd的安全保障措施。其中,周期性的更改用户口o(h)是比较常用且十分有效的措施?br /> 更改用户口o(h)是通过调用pȝq程sp_password 来实现的。Sp_password 的语法ؓ(f)Q?br /> sp_password caller_password,new_password [,loginame]
其中caller_password 是登录口令(老口令)(j)Qnew_password是新口o(h)Qloginame是登录名U?br />
14.如何修改IP地址改变后的interfaces文gQ?br /> A.安装SYBASE Adapive Server的机器IP地址改变? 应修?interfaces 文g?qing)有关的讄?br /> 如果 interfaces 文g中用的是机器名而不?IP 地址, 则不需要变动?但如果客L(fng)联结服务器
用的是服务器?IP 地址而不是机器名,那么客户端需修改联结服务器的 IP 地址.?br /> 如果 interfaces 文g中用的?IP 地址, 那么需要修?interfaces 文g中和地址有关的部?
可用dscp ?dsedit q行修改?如果客户端联l服务器使用的是服务器的地址而不是机器名,那么?br /> L(fng)也需修改?br /> 15。实现开机时自动装蝲Sybase数据?br />   原先要Sybase SQL Server启动Q一般需要先以sybase用户dQ然后运?SYBASE/install目录下的startserver命o(h)启动SYBASE_XXXX服务q程和SYB_BACKUP_XXXX备䆾服务q程?br />   要实现Unixpȝ启动时就能在后台装蝲Sybase的功?我们可在/etc/rc2.d/目录下新Z文gS99sybase,内容如下:
  SYBASE=/usr/sybase
  PATH=$PATH:$SYBASE/bin
  export $SYBASE $PATH
  $SYBASE/install/startserver -f $SYBASE/install/RUN_SYBASE_XXXX > /dev/null
  $SYBASE/install/startserver -f $SYBASE/install/RUN_SYB_BACKUP_XXX >/dev/null
  然后修改Sybase的权限,重启pȝ卛_?br /> 16.实现x时自动卸载Sybase数据?br /> Z证Sybasepȝ的正常运行,每次在关闭Unixpȝ时要先结束Sybase SQL Server 的服务进E,从减ȝl管理h员操作的角度出发建立一用户haltQ修?etc/passwd文gQ将halt用户的uid改ؓ(f)0Q或其他可运?shutdown的用户idQ,?usr/halt/.profile中添加以下语句:(x)
  SYBASE=/usr/sybase
  DSQUERY=SYBASE_XXXX
  PATH=$PATH:$SYBASE/bin
  export SYBASE DSQUERY PATH
  isql -Usa -Pabcabc -ihalt.sql > /dev/null
  shutdown -y -g0
  其中“abcabc”为sa用户的口?halt.sql是一单的文本文gQ内容如下:(x)
  shutdown
  go
  q样每次只要以halt用户dQ就实现?jin)自动卸下Sybase数据库,然后关闭Unixpȝ?br /> 17. Sybase UTF-8中文字符集设|?br /> (q里SYBASE的安装\径ؓ(f)c:\sybase)
 1.c:\>cd \sybase\charsets\cp936
 2.c:\sybase\charsets\cp936> charset -U用户?-P密码 -S数据库服务器名称 binary.srt cp936
 更改默认字符集ؓ(f)cp936
 3.在SQL环境?br />  1>select name,id from syscharsets(?x)列出字W集对应的id?
 2>go
 扑ֈname为cp936对应的id(假设?71)
  1>sp_configure "default character set id",171
  2>go
 5.重启server两次
Q注:W一ơ启动后Qserver?x)自动宕掉,需要第二次重启后才能用)(j)

18.创徏用户数据?br /> 以下通过一个徏立数据库的脚本说明徏立数据库的过E:(x)
//创徏数据库设备,讑֤大小以页Q?KQؓ(f)单位
disk init
name="test_dbdev",
physname="/home/bk/test_dbdev.dat",
vdevno=5,
size=10240
go
disk init
name="test_logdev",
physname="/home/bk/test_logdev.dat",
vdevno=6,
size=5120
go
//创徏数据库TEST_DBQ其大小?0MQ日志大ؓ(f)10M
create database TEST_DB
on test_dbdev=20
log on test_logdev=10
go
//打开数据?br /> use TEST_DB
go
-----------
举例说明Q?br /> DISK INIT
Name=’My_Device’,
Physname=’D:\database\My_device.dat’,
Vdevno=3
Size=5000
注释Q逻辑名、物理名、设备虚拟号、设备大?br /> ------------------------
创徏用户数据?br /> Create Database 数据库名
  On 讑֤_1=Size_1,//单位QM
     讑֤_2=Size_2,
……
log on 日志讑֤=Log_Size
[With Override]//在同一讑֤上创建数据库和事务日志时使用该选项
[For Load]    //止用户讉K直到数据库的装入或恢复操作完成ؓ(f)?br /> 举例Q?br />     Create Database test_db
    On data_dev=100,//单位QM
       Index_dev=50
    Log on log_dev=30
说明Q?br /> Q?Q将日志攑֜单独的设备上Q有利于数据库性能的提高;
Q?Q如果将数据库和日志攑֜同一讑֤上,׃能实现增量备份;
Q?Q通常System和DefaultD늾减范围到一个设备上Q如删除讑֤Index_dev上的SystemD和DefaultD,创徏新的D,用来存放专门的数据库对象
19.备䆾和恢复DB数据
dump database mydb to '/u01/mydb_full.bk'
go

dump tranaction mydb to '/u01/mydb_tran.bk'
go

load database mydb from '/u01/mydb_full.bk'
load transaction mydb from '/u01/mydb_tran.bk'
online database mydb
go
 ps:采用增量备䆾后,严禁日志截断! 即禁止用:(x)dump transaction sctf truncate_only  命o(h)!
增量备䆾必须是在完整备䆾后的或上一ơ增量备份后Q中间若遇到日志截断Q后l的增量备䆾均告p|Q?br /> 增量备䆾可以Ҏ(gu)需要,如每时备䆾一ơ,每次备䆾所需旉U?Q?U,所以时间极快?br />  ps: 单引号和双引号都能关闭shell对特D字W的处理。不同的是,双引h有单引号严格Q单引号关闭所有有Ҏ(gu)作用的字W,而双引号只要求shell忽略大多敎ͼ具体的说Q就是①元W号②反引号③反斜杠Q这3U特D字W不被忽略?不忽略美元符h味着shell在双引号内部也进行变量名替换?br />

*********************************************
下面资料来自SYBASE白皮?br /> 1。客L(fng)字符集修?locales.dat
2.可以通过讄CHARSET驱动E序属性指定在应用E序中用的字符集?br />   或者设|jconnect字符集的Ҏ(gu)来设|?br /> 3。查看字W集Q?br /> SERVERQsp_helpsort
         go
CLIENTQselect @@client_csname
        go
4.D?阀|(x)
默认是三个段: system default logsegment
systemD? 数据库系l表存放?br /> defaultD? 未指明段的对象都存放在这?br /> logsegmentD?数据库的事务日志存放?br />
阀?threshold) :
建立阀? sp_addthreshold 库名,D名,自由I间,存储q程名字
删除阀? sp_dropthreshold 库名,D名,自由I间?
昄阀? sp_helpthreshold
理阀? sp_dboption
昄D늩间信?sp_helpsegment
阀值管理的程如下:
先徏存储q程:(下面的是日志的存储过E?原因:日志增长h不可预见?相比之下,数据增长h可预见?所以一般都建logsegment的阀值管?default的阀值管理可不徏)
create procedure szjj
@dbname varchar (30),
@segmentname varchar (30),
@space_left int,
@status int
as
dump transaction @dbname to "/tmp/bb.dat"
go
  ps:上面是日志的存储q程,如果是数据的存储则用dump database...

查看当前日志自由I间情况:
sp_helpsegment logsegment
go
查看当前数据库数据自q间情?
sp_helpsegment default
go

查看当前阀值情?
sp_helpthreshold
go

查看当前D|?
sp_helpsegment
go

然后Ҏ(gu)自由I间来定阀值参?
sp_addthreshold test_db,logsegment,200,szjj
go

 ps:当日志段的最后机?x)阀D越?试图往该日志段上记日志的用戯E默认是被挂?用下面的命o(h)修改MASTER库参?让阀D越后事务就?x)?
use master
go
sp_dboption test_db,"abort tran on log full",true
go

5.l护
1Q对各ASE用户担当的角色和Ҏ(gu)q行分派?br /> 2Q管理和监视盘I间的用情c(din)?br /> 3Q数据库I间Q?br />      sp_helpdb 查看各库情况
     alter database 扩充I间
     dump tran  截断日志
4Q日常数据备份和恢复
5QSYBASE默认的服务器Q?br />      adaptive server:理整个数据库系l,包括用户 数据 资源{的理和控制?br />      backup server: 在备份和恢复时执行数据库的dump or load
     xp server:执行扩展存储q程
     monitor server:为性能调试分析采集数据?br />      historical server:保存来自monitor server的数据,以备来分析?br /> 6。单模式启动SYBASE
  1Q停止ASE数据库服?br />   2Q?/install/startserver -f RUN_servername -m
         ps:windows下在服务的属性里?m?br /> 7.license序列?br />   验证许可软g是否执行:*/bin/lmutil lmstat -c
  手工启动:*/bin/lmgrd -c $lm_license_file&
  启动许可理器:(x)*/bin/lmgr
  q行Q?/bin/lmutil lmreread
8.查看逻辑大?br />   select @@maxpagesize
9.启动关闭SYBASE
  启动Q?/startserver -f RUN_servername
  关闭Q登录后shutdownx据库服务  shutdown SYB_BACKUP兛_份服务器
10。帐L(fng)?br /> SA帐户初始口o(h)为空Q具有SA和SSO角色。具有SSO的登录帐户可以添加其他登录帐戗?br /> 1Q创建登录帐?br />    sp_addlogin login_name,password
   go
2)修改帐户密码
   sp_password caller_password,new_password,login_name
   go
3)讄d帐户的缺省数据库(如果不指?默认是master?
   sp_addlogin login_name,password,default_db
   go
or
   sp_modifylogin login_name,"defdb",db_name
   go
4Qؓ(f)d帐户授予pȝ角色
  sp_role "grant",role_name,login_name
  go
or
  grant role role_name to login_name
  go
5)查看d帐户的信?br />   sp_displaylogin login_name
  go
6)SYBASE常用角色Qsa sso oper
7)修改d密码
 sp_password caller_passwd,new_passwd[,login_name]
8)删除sa_role的口?br />   alter role sa_role drop passwd
9Q创建数据库用户
  sp_adduser loginname[,name_in_db[,grpname]]
  go
10)d用户q授予查询权?br />   sp_adduser 权限 on 表名 to 用户?br /> 11Q删除别?br />   sp_dropalias loginname
12)创徏用户自定义组
  sp_addgroup grpname
  go
13)扑֛SA密码
   停止SYBASE服务--〉修改RUN_xxx,在命令行的最后加?psa--〉startserver -f RUN_xxx-->启动信息的最后会(x)出来密码?br />
11。数据库理
1Q数据库选项的设|?br />   sp_dboption[dbname,optname,{,true|false}]
2)建库
  create database dbname on data_device_name=size log on log_device_name=size
  go
 ps:size default is M
3)查看库大?sp_helpdb dbname
4)改变库的属主 sp_changedbowner loginname[,true]
5)扩展数据?br />   扩展数据I间Qalter database db_name on device_name
  扩展日志I间: alter database db_name log on device_name
6)讄数据库ؓ(f)单用h?可以在用戯中自动添加序L(fng)成器/自动截断事务日志模式
use master
go
sp_dboption db_name,"signle user",true
go
sp_dboption db_name,"trunc log on chkpt",true
go
sp_dboption db_name,"auto identity",true
use db_name
go
checkpoint
go
7)查看当前库的q程信息
sp_who

附录=====================================
Explanation
SQL commands are grouped into the following categories:
SQL commands that are not allowed in transactions at all.
SQL commands, such as Data Definition Language (DDL) commands, that are allowed in transactions only if the required database option (ddl in tran) is set to TRUE.

SQL commands that are allowed only if the transaction affects some other database. These commands include create table, drop table, and other commands that are run across databases to create or drop objects in another database when the database in which the objects are being created or dropped has the database option ddl in tran set to TRUE.

Error 226 occurs when Adaptive Server detects a command that is not allowed in a multi-statement transaction. A multi-statement transaction is a set of commands prefaced with the begin transaction command.
The following commands are never allowed in multi-statement transactions:
alter database
create database
dbcc reindex, dbcc fix_text
disk init
drop database
dump database, dump transaction
load database, load transaction
select into
set transaction isolation level
truncate table
update statistics
setuser

The following commands are not normally allowed in multi-statement transactions but you can use them if you use sp_dboption to set ddl in tran to TRUE first:

create default
create index
create procedure
create rule
create schema
create table
create trigger
create view
drop default
drop index
drop procedure
drop rule
drop table
drop trigger
drop view
grant
revoke
Action

If the command is allowed in a multistatement transaction when ddl in tran is set to TRUE, set ddl in tran to TRUE before running the transaction. Setting ddl in tran to TRUE causes locks on system tables and this can affect performance. You can check the current setting of ddl in tran with sp_helpdb.

If the command is never allowed in a multi-statement transaction, execute it outside the multi-statement transaction.


duduli 2011-01-17 13:33 发表评论
]]>
oracle在redhat as 5支持http://m.tkk7.com/duduli/archive/2010/07/03/325126.htmlduduliduduliSat, 03 Jul 2010 04:29:00 GMThttp://m.tkk7.com/duduli/archive/2010/07/03/325126.htmlhttp://m.tkk7.com/duduli/comments/325126.htmlhttp://m.tkk7.com/duduli/archive/2010/07/03/325126.html#Feedback0http://m.tkk7.com/duduli/comments/commentRss/325126.htmlhttp://m.tkk7.com/duduli/services/trackbacks/325126.html阅读全文

duduli 2010-07-03 12:29 发表评论
]]>
sybase和sql serverZ么都是用transact-sqlQ?/title><link>http://m.tkk7.com/duduli/archive/2010/06/29/324741.html</link><dc:creator>duduli</dc:creator><author>duduli</author><pubDate>Tue, 29 Jun 2010 02:19:00 GMT</pubDate><guid>http://m.tkk7.com/duduli/archive/2010/06/29/324741.html</guid><wfw:comment>http://m.tkk7.com/duduli/comments/324741.html</wfw:comment><comments>http://m.tkk7.com/duduli/archive/2010/06/29/324741.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/duduli/comments/commentRss/324741.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/duduli/services/trackbacks/324741.html</trackback:ping><description><![CDATA[     摘要: sybase和sql serverZ么都是用transact-sql  <a href='http://m.tkk7.com/duduli/archive/2010/06/29/324741.html'>阅读全文</a><img src ="http://m.tkk7.com/duduli/aggbug/324741.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/duduli/" target="_blank">duduli</a> 2010-06-29 10:19 <a href="http://m.tkk7.com/duduli/archive/2010/06/29/324741.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle得到语句http://m.tkk7.com/duduli/archive/2010/04/22/319093.htmlduduliduduliThu, 22 Apr 2010 04:52:00 GMThttp://m.tkk7.com/duduli/archive/2010/04/22/319093.htmlhttp://m.tkk7.com/duduli/comments/319093.htmlhttp://m.tkk7.com/duduli/archive/2010/04/22/319093.html#Feedback0http://m.tkk7.com/duduli/comments/commentRss/319093.htmlhttp://m.tkk7.com/duduli/services/trackbacks/319093.html阅读全文

duduli 2010-04-22 12:52 发表评论
]]>
oracle中的archivelog和noarchivelog模式转换QȝQ?/title><link>http://m.tkk7.com/duduli/archive/2010/04/22/319061.html</link><dc:creator>duduli</dc:creator><author>duduli</author><pubDate>Thu, 22 Apr 2010 01:22:00 GMT</pubDate><guid>http://m.tkk7.com/duduli/archive/2010/04/22/319061.html</guid><wfw:comment>http://m.tkk7.com/duduli/comments/319061.html</wfw:comment><comments>http://m.tkk7.com/duduli/archive/2010/04/22/319061.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.tkk7.com/duduli/comments/commentRss/319061.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/duduli/services/trackbacks/319061.html</trackback:ping><description><![CDATA[     摘要: oracle 开启归档或非归档模?nbsp; <a href='http://m.tkk7.com/duduli/archive/2010/04/22/319061.html'>阅读全文</a><img src ="http://m.tkk7.com/duduli/aggbug/319061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/duduli/" target="_blank">duduli</a> 2010-04-22 09:22 <a href="http://m.tkk7.com/duduli/archive/2010/04/22/319061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle的sql生成日历Q{自http://space.itpub.net/519536/viewspace-618320Q?/title><link>http://m.tkk7.com/duduli/archive/2010/04/18/318632.html</link><dc:creator>duduli</dc:creator><author>duduli</author><pubDate>Sun, 18 Apr 2010 01:58:00 GMT</pubDate><guid>http://m.tkk7.com/duduli/archive/2010/04/18/318632.html</guid><wfw:comment>http://m.tkk7.com/duduli/comments/318632.html</wfw:comment><comments>http://m.tkk7.com/duduli/archive/2010/04/18/318632.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/duduli/comments/commentRss/318632.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/duduli/services/trackbacks/318632.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080;"> 1</span> <span style="color: #0000ff;">select</span><span style="color: #000000;"> LPAD (</span><span style="color: #ff00ff;">Month</span><span style="color: #000000;">, </span><span style="color: #800000; font-weight: bold;">20</span><span style="color: #000000;"> </span><span style="color: #808080;">-</span><span style="color: #000000;"> (</span><span style="color: #800000; font-weight: bold;">20</span><span style="color: #000000;"> </span><span style="color: #808080;">-</span><span style="color: #000000;"> LENGTH (</span><span style="color: #ff00ff;">month</span><span style="color: #000000;">)) </span><span style="color: #808080;">/</span><span style="color: #000000;"> </span><span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;">) </span><span style="color: #ff00ff;">month</span><span style="color: #000000;">,<br /> </span><span style="color: #008080;"> 2</span> <span style="color: #000000;">          "Su",<br /> </span><span style="color: #008080;"> 3</span> <span style="color: #000000;">          "Mo",<br /> </span><span style="color: #008080;"> 4</span> <span style="color: #000000;">          "Tu",<br /> </span><span style="color: #008080;"> 5</span> <span style="color: #000000;">           "We",<br /> </span><span style="color: #008080;"> 6</span> <span style="color: #000000;">           "Th",<br /> </span><span style="color: #008080;"> 7</span> <span style="color: #000000;">           "Fr",<br /> </span><span style="color: #008080;"> 8</span> <span style="color: #000000;">           "Sa"<br /> </span><span style="color: #008080;"> 9</span> <span style="color: #000000;">      </span><span style="color: #0000ff;">from</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">select</span><span style="color: #000000;"> TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">fmMonthfm YYYY</span><span style="color: #ff0000;">'</span><span style="color: #000000;">) </span><span style="color: #ff00ff;">month</span><span style="color: #000000;">,<br /> </span><span style="color: #008080;">10</span> <span style="color: #000000;">                  </span><span style="color: #ff00ff;">case</span><span style="color: #000000;"><br /> </span><span style="color: #008080;">11</span> <span style="color: #000000;">                     </span><span style="color: #0000ff;">when</span><span style="color: #000000;"> TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">fmMonthfm YYYY</span><span style="color: #ff0000;">'</span><span style="color: #000000;">) </span><span style="color: #808080;">like</span><span style="color: #000000;"> </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">Dec%</span><span style="color: #ff0000;">'</span><span style="color: #000000;"><br /> </span><span style="color: #008080;">12</span> <span style="color: #000000;">                     </span><span style="color: #808080;">and</span><span style="color: #000000;"> TO_CHAR (dt </span><span style="color: #808080;">+</span><span style="color: #000000;"> </span><span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">iw</span><span style="color: #ff0000;">'</span><span style="color: #000000;">) </span><span style="color: #808080;">=</span><span style="color: #000000;"> </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">01</span><span style="color: #ff0000;">'</span><span style="color: #000000;"><br /> </span><span style="color: #008080;">13</span> <span style="color: #000000;">                     </span><span style="color: #0000ff;">then</span><span style="color: #000000;"><br /> </span><span style="color: #008080;">14</span> <span style="color: #000000;">                        </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">53</span><span style="color: #ff0000;">'</span><span style="color: #000000;"><br /> </span><span style="color: #008080;">15</span> <span style="color: #000000;">                     </span><span style="color: #0000ff;">when</span><span style="color: #000000;"> TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">fmMonthfm YYYY</span><span style="color: #ff0000;">'</span><span style="color: #000000;">) </span><span style="color: #808080;">like</span><span style="color: #000000;"> </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">Jan%</span><span style="color: #ff0000;">'</span><span style="color: #000000;"><br /> </span><span style="color: #008080;">16</span> <span style="color: #000000;">                      </span><span style="color: #808080;">and</span><span style="color: #000000;"> TO_CHAR (dt </span><span style="color: #808080;">+</span><span style="color: #000000;"> </span><span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">iw</span><span style="color: #ff0000;">'</span><span style="color: #000000;">) </span><span style="color: #808080;">=</span><span style="color: #000000;"> </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">53</span><span style="color: #ff0000;">'</span><span style="color: #000000;"><br /> </span><span style="color: #008080;">17</span> <span style="color: #000000;">                     </span><span style="color: #0000ff;">then</span><span style="color: #000000;"><br /> </span><span style="color: #008080;">18</span> <span style="color: #000000;">                        </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">.5</span><span style="color: #ff0000;">'</span><span style="color: #000000;"><br /> </span><span style="color: #008080;">19</span> <span style="color: #000000;">                     </span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br /> </span><span style="color: #008080;">20</span> <span style="color: #000000;">                        TO_CHAR (dt </span><span style="color: #808080;">+</span><span style="color: #000000;"> </span><span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">iw</span><span style="color: #ff0000;">'</span><span style="color: #000000;">)<br /> </span><span style="color: #008080;">21</span> <span style="color: #000000;">                  </span><span style="color: #0000ff;">end</span><span style="color: #000000;"><br /> </span><span style="color: #008080;">22</span> <span style="color: #000000;">                     week,<br /> </span><span style="color: #008080;">23</span> <span style="color: #000000;">                  </span><span style="color: #ff00ff;">MAX</span><span style="color: #000000;">(DECODE (TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">d</span><span style="color: #ff0000;">'</span><span style="color: #000000;">),<br /> </span><span style="color: #008080;">24</span> <span style="color: #000000;">                              </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">1</span><span style="color: #ff0000;">'</span><span style="color: #000000;">, LPAD (TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">fmdd</span><span style="color: #ff0000;">'</span><span style="color: #000000;">), </span><span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;">)))<br /> </span><span style="color: #008080;">25</span> <span style="color: #000000;">                     "Su",<br /> </span><span style="color: #008080;">26</span> <span style="color: #000000;">                 </span><span style="color: #ff00ff;">MAX</span><span style="color: #000000;">(DECODE (TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">d</span><span style="color: #ff0000;">'</span><span style="color: #000000;">),<br /> </span><span style="color: #008080;">27</span> <span style="color: #000000;">                              </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">2</span><span style="color: #ff0000;">'</span><span style="color: #000000;">, LPAD (TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">fmdd</span><span style="color: #ff0000;">'</span><span style="color: #000000;">), </span><span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;">)))<br /> </span><span style="color: #008080;">28</span> <span style="color: #000000;">                     "Mo",<br /> </span><span style="color: #008080;">29</span> <span style="color: #000000;">                  </span><span style="color: #ff00ff;">MAX</span><span style="color: #000000;">(DECODE (TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">d</span><span style="color: #ff0000;">'</span><span style="color: #000000;">),<br /> </span><span style="color: #008080;">30</span> <span style="color: #000000;">                              </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">3</span><span style="color: #ff0000;">'</span><span style="color: #000000;">, LPAD (TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">fmdd</span><span style="color: #ff0000;">'</span><span style="color: #000000;">), </span><span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;">)))<br /> </span><span style="color: #008080;">31</span> <span style="color: #000000;">                     "Tu",<br /> </span><span style="color: #008080;">32</span> <span style="color: #000000;">                  </span><span style="color: #ff00ff;">MAX</span><span style="color: #000000;">(DECODE (TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">d</span><span style="color: #ff0000;">'</span><span style="color: #000000;">),<br /> </span><span style="color: #008080;">33</span> <span style="color: #000000;">                              </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">4</span><span style="color: #ff0000;">'</span><span style="color: #000000;">, LPAD (TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">fmdd</span><span style="color: #ff0000;">'</span><span style="color: #000000;">), </span><span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;">)))<br /> </span><span style="color: #008080;">34</span> <span style="color: #000000;">                     "We",<br /> </span><span style="color: #008080;">35</span> <span style="color: #000000;">                  </span><span style="color: #ff00ff;">MAX</span><span style="color: #000000;">(DECODE (TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">d</span><span style="color: #ff0000;">'</span><span style="color: #000000;">),<br /> </span><span style="color: #008080;">36</span> <span style="color: #000000;">                              </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">5</span><span style="color: #ff0000;">'</span><span style="color: #000000;">, LPAD (TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">fmdd</span><span style="color: #ff0000;">'</span><span style="color: #000000;">), </span><span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;">)))<br /> </span><span style="color: #008080;">37</span> <span style="color: #000000;">                     "Th",<br /> </span><span style="color: #008080;">38</span> <span style="color: #000000;">                  </span><span style="color: #ff00ff;">MAX</span><span style="color: #000000;">(DECODE (TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">d</span><span style="color: #ff0000;">'</span><span style="color: #000000;">),<br /> </span><span style="color: #008080;">39</span> <span style="color: #000000;">                              </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">6</span><span style="color: #ff0000;">'</span><span style="color: #000000;">, LPAD (TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">fmdd</span><span style="color: #ff0000;">'</span><span style="color: #000000;">), </span><span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;">)))<br /> </span><span style="color: #008080;">40</span> <span style="color: #000000;">                     "Fr",<br /> </span><span style="color: #008080;">41</span> <span style="color: #000000;">                  </span><span style="color: #ff00ff;">MAX</span><span style="color: #000000;">(DECODE (TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">d</span><span style="color: #ff0000;">'</span><span style="color: #000000;">),<br /> </span><span style="color: #008080;">42</span> <span style="color: #000000;">                              </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">7</span><span style="color: #ff0000;">'</span><span style="color: #000000;">, LPAD (TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">fmdd</span><span style="color: #ff0000;">'</span><span style="color: #000000;">), </span><span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;">)))<br /> </span><span style="color: #008080;">43</span> <span style="color: #000000;">                     "Sa"<br /> </span><span style="color: #008080;">44</span> <span style="color: #000000;">             </span><span style="color: #0000ff;">from</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">select</span><span style="color: #000000;"> TRUNC (SYSDATE, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">y</span><span style="color: #ff0000;">'</span><span style="color: #000000;">) </span><span style="color: #808080;">-</span><span style="color: #000000;"> </span><span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;"> </span><span style="color: #808080;">+</span><span style="color: #000000;"> ROWNUM dt<br /> </span><span style="color: #008080;">45</span> <span style="color: #000000;">                     </span><span style="color: #0000ff;">from</span><span style="color: #000000;"> all_objects<br /> </span><span style="color: #008080;">46</span> <span style="color: #000000;">                    </span><span style="color: #0000ff;">where</span><span style="color: #000000;"> ROWNUM </span><span style="color: #808080;"><=</span><span style="color: #000000;"><br /> </span><span style="color: #008080;">47</span> <span style="color: #000000;">                             ADD_MONTHS (TRUNC (SYSDATE, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">y</span><span style="color: #ff0000;">'</span><span style="color: #000000;">), </span><span style="color: #800000; font-weight: bold;">12</span><span style="color: #000000;">)<br /> </span><span style="color: #008080;">48</span> <span style="color: #000000;">                             </span><span style="color: #808080;">-</span><span style="color: #000000;"> TRUNC (SYSDATE, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">y</span><span style="color: #ff0000;">'</span><span style="color: #000000;">))<br /> </span><span style="color: #008080;">49</span> <span style="color: #000000;">           </span><span style="color: #0000ff;">group</span><span style="color: #000000;"> </span><span style="color: #0000ff;">by</span><span style="color: #000000;"> TO_CHAR (dt, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">fmMonthfm YYYY</span><span style="color: #ff0000;">'</span><span style="color: #000000;">), TO_CHAR (dt </span><span style="color: #808080;">+</span><span style="color: #000000;"> </span><span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">iw</span><span style="color: #ff0000;">'</span><span style="color: #000000;">)<br /> </span><span style="color: #008080;">50</span> <span style="color: #000000;">           </span><span style="color: #0000ff;">order</span><span style="color: #000000;"> </span><span style="color: #0000ff;">by</span><span style="color: #000000;"> TO_CHAR (dt </span><span style="color: #808080;">+</span><span style="color: #000000;"> </span><span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">iw</span><span style="color: #ff0000;">'</span><span style="color: #000000;">))<br /> </span><span style="color: #008080;">51</span> <span style="color: #000000;">   </span><span style="color: #0000ff;">order</span><span style="color: #000000;"> </span><span style="color: #0000ff;">by</span><span style="color: #000000;"> TO_DATE (</span><span style="color: #ff00ff;">month</span><span style="color: #000000;">, </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">Month YYYY</span><span style="color: #ff0000;">'</span><span style="color: #000000;">), TO_NUMBER (week)</span></div> <img src ="http://m.tkk7.com/duduli/aggbug/318632.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/duduli/" target="_blank">duduli</a> 2010-04-18 09:58 <a href="http://m.tkk7.com/duduli/archive/2010/04/18/318632.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle procedurce很基Q{自:(x)http://space.itpub.net/519536/viewspace-571504Q?/title><link>http://m.tkk7.com/duduli/archive/2010/04/16/318527.html</link><dc:creator>duduli</dc:creator><author>duduli</author><pubDate>Fri, 16 Apr 2010 07:40:00 GMT</pubDate><guid>http://m.tkk7.com/duduli/archive/2010/04/16/318527.html</guid><wfw:comment>http://m.tkk7.com/duduli/comments/318527.html</wfw:comment><comments>http://m.tkk7.com/duduli/archive/2010/04/16/318527.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/duduli/comments/commentRss/318527.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/duduli/services/trackbacks/318527.html</trackback:ping><description><![CDATA[<font size="2"><span style="font-family: Courier New;">本文通过一个最单的<a href="javascript:;" onclick="javascript:tagshow(event, 'oracle');" target="_self"><u><strong>oracle</strong></u></a><a href="javascript:;" onclick="javascript:tagshow(event, '%B4%E6%B4%A2%B9%FD%B3%CC');" target="_self"><u><strong>存储q程</strong></u></a>"proc_helloworld"的实验,展现一? 存储q程的开发和l护q程Q适合超初学牛(like me)?/span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New; font-weight: bold;">1.~写。编写一个最最单的存储q程Q给它v个名字叫? proc_helloworld</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New; color: #990102;">CREATE OR REPLACE <a href="javascript:;" onclick="javascript:tagshow(event, 'PROCEDURE');" target="_self"><u><strong>PROCEDURE</strong></u></a> proc_helloworld</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">IS</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">BEGIN</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">   DBMS_OUTPUT.put_line ('Hello World!');</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">END;</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">/</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New; font-weight: bold;">2.创徏。在sqlplus命o(h)行界面创存储q程</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sys@ora10g> conn sec/sec</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">Connected.</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  2  IS</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  3  BEGIN</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  4     DBMS_OUTPUT.put_line ('Hello World!');</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  5  END;</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  6  /</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">Procedure created.</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New; font-weight: bold;">3.q行。两U方法运行存储过E?/span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">1).需要在屏幕上显C出"DBMS_OUTPUT.put_line"的输出字W串Q需要做一个小的讄</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sec@ora10g> show serveroutput</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">serveroutput OFF</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sec@ora10g><span style="color: #990102;">set serveroutput on</span></span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sec@ora10g> show serveroutput</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">serveroutput ON SIZE 10000 FORMAT WORD_WRAPPED</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">2).在sqlplus命o(h)行界面?EXECUTE"命o(h)Q简? ?EXEC"Q执?/span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sec@ora10g><span style="color: #990102;">exec proc_helloworld</span></span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">Hello World!</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">PL/SQL procedure successfully completed.</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">3).在一个无名PL/SQL块内q行存储q程</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New; color: #990102;">BEGIN</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">   proc_helloworld;</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">END;</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">/</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sec@ora10g> BEGIN</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  2     proc_helloworld;</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  3  END;</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  4  /</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">Hello World!</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">PL/SQL procedure successfully completed.</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New; font-weight: bold;">4.修改。修改一个存储过E只需要将修改好的存储q程在sqlplus界面先重新执行一下即可,因ؓ(f)在创 E中使用的是"CREATE OR REPLACE PROCEDURE"Q也是说如果没有就创徏Q如果已l存在了(jin)q个存储q程Q就替换?/span><br style="font-family: Courier New;" /> <span style="font-family: Courier New; color: #990102;">CREATE OR REPLACE PROCEDURE proc_helloworld</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">IS</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">BEGIN</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">   DBMS_OUTPUT.put_line ('Hello World! '||chr(10)||'I am a Happy DBA Secooler!');</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">END;</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">/</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #0001ff;">或?/span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">CREATE OR REPLACE PROCEDURE proc_helloworld</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">IS</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">BEGIN</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">   DBMS_OUTPUT.put_line ('Hello World!</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">I am a Happy DBA Secooler!');</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">END;</span><br style="font-family: Courier New; color: #990102;" /> <span style="font-family: Courier New; color: #990102;">/</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  2  IS</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  3  BEGIN</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  4     DBMS_OUTPUT.put_line ('Hello World! '||chr(10)||'I am a Happy DBA Secooler!');</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  5  END;</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  6  /</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">Procedure created.</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">看一下执行效果:(x)</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sec@ora10g> exec proc_helloworld;</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">Hello World!</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">I am a Happy DBA Secooler!</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">PL/SQL procedure successfully completed.</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New; font-weight: bold;">5.调试。对于非常复杂的存储q程的调试是真正体现个h力和能力的地方Q往往需要很多的l验Q这个急不得, 只能慢慢?Take it easy.</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">在sqlplus下调试存储过E时Q如果出现错误,时刻使用"show errors"命o(h)查看哪里出错?jin),例如Q?/span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  2  IS</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  3  BEGIN</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  4     DBMS_OUTPUT.put_line ('Hello World!');</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  5 <span style="color: #ff0102;">END</span></span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  6  /</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">Warning: Procedure created with compilation errors.</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sec@ora10g> show errors</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">Errors for PROCEDURE PROC_HELLOWORLD:</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">LINE/COL ERROR</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">-------- -----------------------------------------------------------------</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">5/3      PLS-00103: Encountered the symbol "end-of-file" when expecting</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">         one of the following:</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">         ; <an identifier> <a double-quoted delimited-identifier></span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">         delete exists prior <a single-quoted <a href="javascript:;" onclick="javascript:tagshow(event, 'SQL');" target="_self"><u><strong>SQL</strong></u></a> string></span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">         The symbol ";" was substituted for "end-of-file" to continue.</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">通过提示Q问题出现在END后面没有分号l束W号Q修改后问题得到处理</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  2  IS</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  3  BEGIN</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  4     DBMS_OUTPUT.put_line ('Hello World!');</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  5  END;</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  6  /</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">Procedure created.</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New; font-weight: bold;">6.删除。用drop语句删除存储q? E?/span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sec@ora10g> select object_name,object_type,status from user_objects where OBJECT_TYPE='PROCEDURE';</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">OBJECT_NAME                    OBJECT_TYPE         STATUS</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">------------------------------ ------------------- -------</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">PROC_HELLOWORLD                PROCEDURE           VALID</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sec@ora10g><span style="color: #990102;">DROP PROCEDURE proc_helloworld;</span></span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">Procedure dropped.</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sec@ora10g> select object_name,object_type,status from user_objects where OBJECT_TYPE='PROCEDURE';</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">no rows selected</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New; font-weight: bold;">7.获取。在l护存储q程的过E中往往 需要快速的获取存储q程的SQL创徏语句Q我l常使用的有如下两种Ҏ(gu)</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">1).使用DBMS_METADATA包获?/span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sec@ora10g><span style="color: #990102;">SELECT DBMS_METADATA.get_ddl ('PROCEDURE', 'PROC_HELLOWORLD') from dual;</span></span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">DBMS_METADATA.GET_DDL('PROCEDURE','PROC_HELLOWORLD')</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">--------------------------------------------------------------------------------</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">  CREATE OR REPLACE PROCEDURE "SEC"."PROC_HELLOWORLD"</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">IS</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">BEGIN</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">   DBMS_OUTPUT.put_line ('Hello World!');</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">END;</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">2).使用"<a href="javascript:;" onclick="javascript:tagshow(event, 'USER_SOURCE');" target="_self"><u><strong>USER_SOURCE</strong></u></a>" 视图获得Q本人推荐用这U方法查看,格式标准Q内容也全面</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">sec@ora10g><span style="color: #990102;">SELECT text FROM user_source WHERE NAME = 'PROC_HELLOWORLD';</span></span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">TEXT</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">------------------------------------------------------------------------------------------------------------------------------</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">PROCEDURE proc_helloworld</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">IS</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">BEGIN</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">   DBMS_OUTPUT.put_line ('Hello World!');</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">END;</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New; font-weight: bold;">8.结</span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">上面的实验,我通过~写、创建、运行、修攏V调试、删除和获取七个内容描述?jin)一个存储过E的开发和l护q程?/span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">试验Q实验还有实践,技术工作者永q不变的途径Q?/span><br style="font-family: Courier New;" /> <span style="font-family: Courier New;">Goodluck Friends!</span><br style="font-family: Courier New;" /> <br style="font-family: Courier New;" /> <span style="font-family: Courier New;">-- The End --</span></font> <img src ="http://m.tkk7.com/duduli/aggbug/318527.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/duduli/" target="_blank">duduli</a> 2010-04-16 15:40 <a href="http://m.tkk7.com/duduli/archive/2010/04/16/318527.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 10g flashbackȝQ{Qhttp://blog.csdn.net/tianlesoftware/archive/2009/10/16/4677378.aspxQ?/title><link>http://m.tkk7.com/duduli/archive/2010/03/17/315680.html</link><dc:creator>duduli</dc:creator><author>duduli</author><pubDate>Wed, 17 Mar 2010 07:33:00 GMT</pubDate><guid>http://m.tkk7.com/duduli/archive/2010/03/17/315680.html</guid><wfw:comment>http://m.tkk7.com/duduli/comments/315680.html</wfw:comment><comments>http://m.tkk7.com/duduli/archive/2010/03/17/315680.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.tkk7.com/duduli/comments/commentRss/315680.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/duduli/services/trackbacks/315680.html</trackback:ping><description><![CDATA[<div>Flashback 技术是以Undo segment中的内容为基的, 因此受限于UNDO_RETENTON参数。要使用flashback 的特性,必须启用自动撤销理表空间?/div> <div>在Oracle 10g中, Flash back家族分ؓ(f)以下成员Q?Flashback DatabaseQ?Flashback DropQFlashback Query(分Flashback Query,Flashback Version QueryQ?Flashback Transaction Query 三种) 和Flashback Table?/div> <div> </div> <div>一Q?Flashback Database</div> <div><br /> Flashback Database 功能非常cM与RMAN的不完全恢复Q?它可以把整个数据库回退到过ȝ某个时点的状态, q个功能依赖于Flashback log 日志?比RMAN更快速和高效?因此Flashback Database 可以看作是不完全恢复的替代技术?但它也有某些限制Q?/div> <div><br /> 1. Flashback Database 不能解决Media FailureQ?q种错误RMAN恢复仍是唯一选择</div> <div>2. 如果删除?jin)数据文件或者利用Shrink技术羃?yu)数据文件大,q时不能用Flashback Database技术回退到改变之前的状态,q时候就必须先利用RMAN把删除之前或者羃?yu)之前的文g备䆾restore 出来Q?然后利用Flashback Database 执行剩下的Flashback Datbase?/div> <div>3. 如果控制文g是从备䆾中恢复出来的Q或者是重徏的控制文Ӟ也不能用Flashback Database?/div> <div>4. 使用Flashback Database锁能恢复到的最早的SCNQ?取决与Flashback Log中记录的最早SCN?/div> <div> </div> <div>Flashback Database 架构</div> <div><br /> Flashback Database 整个架构包括一个进ERecover Writer(RVWR)后台q程QFlashback Database Log日志 和Flash Recovery Area。一旦数据库启用?jin)Flashback DatabaseQ?则RVWRq程?x)启动,该进E会(x)向Flash Recovery Area中写入Flashback Database LogQ?q些日志包括的是数据块的 " 前镜?before image)"Q?q也是Flashback Database 技术不完全恢复块的原因?/div> <div><br /> [oracle@dba ~]$ ps -ef|grep rvw</div> <div>oracle   12620 12589  0 13:21 pts/1    00:00:00 grep rvw</div> <div> </div> <div>启用Flashback Database</div> <div>数据库的Flashback Database功能~省是关闭的Q要惛_用这个功能,需要做如下配置?/div> <div>1. 配置Flash Recovery Area</div> <div>  要想使用Flashback DatabaseQ?必须使用Flash Recovery AreaQ因为Flashback Database Log只能保存在这里?要配|的2个参数如下,一个是大小Q一个是位置。如果数据库是RACQflash recovery area 必须位于׃n存储中。数据库必须处于archivelog 模式.</div> <div> </div> <div>启用Flash Recovery AreaQ?/div> <div>SQL>ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=20G SCOPE=BOTH;</div> <div>SQL>ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/DBA/FB' SCOPE=BOTH;</div> <div><br /> 用Flash Recovery AreaQ?/div> <div>SQL>ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='' ;</div> <div> </div> <div>对于Flash Recovery AreaQOracle 是这样徏议的Qflash recovery area 讄的越大,flashback database 的恢复能力就强Q因此徏议flash recovery area 能够攄下所有的数据文gQ增量备份,以及(qing)所有尚未备份的归档文gQ当然还有它自己产生的flashback logs?/div> <div>在数据库q行q程中,oracle 自动向该区域写入文gQ当剩余I间不15%的时候,它就?x)在alert 中增加警告,提示你空间不뀂但此时不会(x)影响数据库的正常q{Q直到所有空间统l被用掉之后Qoracle 首先试删除Mq期的文Ӟ冗余文g或备份过的文Ӟ如果q些做完?jin),q是没有I闲I间的话Q数据库phang 住了(jin)?/div> <div><br /> 对于因Flash Recovery AreaD的数据库hang的处理,请参考:(x)</div> <div><a target="_blank">http://blog.csdn.net/tianlesoftware/archive/2009/10/14/4668991.aspx</a></div> <div>或?/div> <div><a target="_blank">http://user.qzone.qq.com/251097186/blog/1244650673</a></div> <div> </div> <div>2. 启用数据库Flashback 功能</div> <div><br /> 1). 数据库启动到mount状?/div> <div>SQL> startup mountQ?/div> <div>2). (g)查Flashback 功能Q?~省时功能是关闭的?/div> <div>SQL> select name, current_scn, flashback_on from v$database;</div> <div>NAME    CURRENT_SCN  FLASHBACK_ON</div> <div>--------    -----------          ------------------</div> <div>DBA      945715          NO</div> <div> </div> <div>3). 启动Flashback功能</div> <div>SQL>  alter database flashback on;</div> <div>数据库已更改?/div> <div><br /> SQL>  select name, current_scn, flashback_on from v$database;</div> <div>NAME      CURRENT_SCN FLASHBACK_ON</div> <div>--------- ----------- ------------------</div> <div>DBA                 0 YES</div> <div><br /> 4). 讄初始化参敎ͼ(x)DB_FLASHBACK_RETENTION_TARGETQ?/div> <div><br /> SQL>alter system set db_flashback_retention_target=1440 scope=both;</div> <div><br /> 该参数用来控制flashback log 数据保留的时_(d)或者说Q你希望flashback database 能够恢复的最早的旉炏V默认值是1440Q单位是minuteQ即24 时Q需要注意的是该参数虽然未直接指定flash recovery area大小Q但却受其制U,举个例子假如数据库每天有10%左右的数据变动的话,如果该初始化参数D|ؓ(f)1440Q则flash recovery area 的大至要是当前数据库实际定w?0%Q如果该初始化参数设|ؓ(f)2880Q则flash recovery area 的大就臛_是数据库所占容量的20%?/div> <div><br /> 5). 启动数据?/div> <div>SQL>alter database open;</div> <div> </div> <div> </div> <div>Flashback Database操作CZ</div> <div><br /> 做操作前先备份数据库</div> <div>RMAN> backup database;</div> <div><br /> 1. (g)查是否启动了(jin)flash recovery area:­</div> <div>SQL> show parameter db_recovery_file</div> <div>NAME                    TYPE        VALUE</div> <div>------------------------------------  ----------- ------------------------------</div> <div>db_recovery_file_dest       tring       D:\oracle/flash_recovery_area</div> <div>db_recovery_file_dest_size  big integer 1G</div> <div><br /> 2. (g)查是否启用了(jin)归档­</div> <div>SQL> archive log list;</div> <div>数据库日志模?nbsp;     存档模式</div> <div>自动存档            启用</div> <div>存档l点            USE_DB_RECOVERY_FILE_DEST</div> <div>最早的联机日志序列  9</div> <div>下一个存档日志序?nbsp; 11</div> <div>当前日志序列        11</div> <div><br /> 3. (g)查是否启用了(jin)flashback database </div> <div>SQL> select flashback_on from v$database;</div> <div>FLASHBACK_ON     </div> <div> ------------------ </div> <div>YES               </div> <div><br /> 4. 查询当前的scn­</div> <div>SQL> SELECT CURRENT_SCN FROM V$DATABASE;</div> <div><br /> CURRENT_SCN</div> <div>-----------</div> <div>947921</div> <div><br /> 5. 查询当前的时?/div> <div>SQL> select to_char(sysdate,'yy-mm-dd hh24:mi:ss') time from dual;</div> <div><br /> TIME</div> <div>-----------------</div> <div>09-10-14 14:37:05</div> <div><br /> 6. 删除表A</div> <div>SQL> select * from A;</div> <div><br /> ID  NAME</div> <div>---------- ----------</div> <div>1  tianle</div> <div>2  dave</div> <div><br /> SQL> drop table A;</div> <div>表已删除?/div> <div>SQL> commit;</div> <div><br /> 7. Flashback Database 实际是对数据库的一个不完全恢复操作Q因为需要关闭数据库重启到mount状态?/div> <div>SQL> shutdown immediate</div> <div>数据库已l关闭?/div> <div>已经卸蝲数据库?/div> <div>ORACLE 例程已经关闭?/div> <div>SQL> startup mount</div> <div>ORACLE 例程已经启动?/div> <div><br /> Total System Global Area  209715200 bytes</div> <div>Fixed Size                  1248116 bytes</div> <div>Variable Size              79692940 bytes</div> <div>Database Buffers          121634816 bytes</div> <div>Redo Buffers                7139328 bytes</div> <div>数据库装载完毕?/div> <div><br /> 8. 执行恢复Q分timestamp 或者SCN两种</div> <div><br /> SQL> Flashback database to timestamp to_timestamp('09-10-14 14:37:05','yy-mm-dd</div> <div>hh24:mi:ss');</div> <div>闪回完成?/div> <div><br /> 或者:(x)</div> <div>SQL> Flashback database to scn 947921;</div> <div>闪回完成?/div> <div><br /> 9. 打开数据库:(x)</div> <div>在执行完flashback database 命o(h)之后Qoracle 提供?jin)两U方式让你修复数据库Q?/div> <div>1). 直接alter database open resetlogs 打开数据库,当然Q指定scn 或者timestamp 旉点之后生的数据l统丢失?/div> <div>2). 先执行alter database open read only 命o(h)以read-only 模式打开数据库,然后立刻通过逻辑导出的方式将误操作涉?qing)表的数据导出,再执行recover database 命o(h)以重新应用数据库产生的redoQ将数据库修复到flashback database 操作前的状态,然后再通过逻辑导入的方式,之前误操作的表重新导入Q这L(fng)话对现有数据的媄(jing)响最,不会(x)有数据丢失?/div> <div><br /> q里演示Q就以resetlogs方式打开Q?/div> <div>SQL> alter database open resetlogs;</div> <div>数据库已更改?/div> <div><br /> 验证数据Q?/div> <div>SQL> select * from A;</div> <div><br />         ID NAME</div> <div>---------- ----------</div> <div>         1 tianle</div> <div>         2 dave</div> <div> </div> <div> </div> <div> </div> <div>和Flashback Database 相关?个视图:(x)</div> <div>1. V$database</div> <div> q个视图可以查看是否启用?jin)Flashback database功能</div> <div>SQL> select flashback_on from v$database;</div> <div>FLASHBACK_ON</div> <div>------------------</div> <div>YES</div> <div><br /> 2. V$flashback_database_log</div> <div> Flashback Database 所能回退到的最早时_(d)取决与保留的Flashback Database Log 的多, 该视囑ְ可以查看许多有用的信息?/div> <div>Oldest_flashback_scn / Oldest_flashback_time : q两列用来记录可以恢复到最早的时点</div> <div>Flashback_size: 记录?jin)当前用的Flash Recovery Area I间的大?/div> <div>Retention_target: pȝ定义的策?/div> <div>Estimated_flashback_size: Ҏ(gu){略寚w要的I间大小的估计?/div> <div>SQL> select oldest_flashback_scn os, to_char(oldest_flashback_time,'yy-mm-dd hh2</div> <div>4:mi:ss') ot, retention_target rt,flashback_size fs, estimated_flashback_size es</div> <div> from v$flashback_database_log;</div> <div><br /> OS       OT             RT      FS        ES</div> <div>----------  -----------------     ----------  ----------    ----------</div> <div>946088  09-10-14 13:49:59  1440     16384000  350920704</div> <div><br /> 3. V$flashback_database_stat</div> <div>q个视图用来对Flashback log I间情况q行更细_度的记录和估计?q个视图以小时ؓ(f)单位记录单位旉内数据库的活动量QFlashback_Data 代表Flashback log产生数量QDB_Date 代表数据改变数量QRedo_Date代表日志数量Q通过q?个数量可以反映出数据的活动特点,更准的预计Flash Recovery Area的空间需?/div> <div><br /> SQL> alter session set nls_date_format='hh24:mi:ss';</div> <div><br /> ?x)话已更攏V?/div> <div><br /> SQL> select *from v$flashback_database_stat;</div> <div><br /> BEGIN_TI END_TIME FLASHBACK_DATA DB_DATA REDO_DATA ESTIMATED_FLASHBACK_SIZE</div> <div>-------- -------- -------------- ---------- ---------- ------------------------</div> <div>14:43:10 15:15:28        6455296   29310976    3898368              0</div> <div> </div> <div> </div> <div>Flashback DROP</div> <div><br /> Flashback Drop 是从Oracle 10g 开始出现的Q?用于恢复用户误删除的对象(包括表,索引{?Q?q个技术依赖于Tablespace Recycle Bin(表空间回收站)Q这个功能和windows的回收站非常cM?/div> <div><br /> Flashback 不支持sys用户. system表空间下的对象,也不能从回收站里拿到。故使用SYS 或者SYSTEM用户登陆Ӟ show recyclebin 为空?/div> <div> </div> <div>1. Tablespace Recycle Bin</div> <div><br /> 从Oracle 10g 开始, 每个表空间都?x)有一个叫作回收站的逻辑区域Q当用户执行drop命o(h)Ӟ 被删除的表和表的兌对象( 包括索引Q?U束Q触发器QLOBD,LOB index D? 不会(x)被物理删除, q些对象先{Ud回收站中Q这q用户提供?jin)一个恢复的可能?/div> <div> </div> <div>初始化参数recyclebin 用于控制是否启用recyclebin功能Q缺省是ONQ?可以使用OFF关闭?/div> <div><br /> SQL> show parameter recycle</div> <div><br /> NAME                    TYPE        VALUE</div> <div>------------------------------------ ----------- ------------------------------</div> <div>buffer_pool_recycle            string</div> <div>db_recycle_cache_size         big integer 0</div> <div>recyclebin                    string      on</div> <div><br /> 用该功能:(x)</div> <div>SQL> alter system set recyclebin=off;</div> <div>SQL> alter system set recyclebin=on;</div> <div><br /> SQL> alter session set recyclebin=off;</div> <div>SQL> alter session set recyclebin=on;</div> <div><br /> 用后删除的对象直接删除,不会(x)写到Recycle中,当然在删除时Q指定purge 参数Q表也将直接删除Q不?x)写到recyclebin中?br /> SQL> drop table name purge;</div> <div><br /> 查看recyclebin中的对象列表Q?/div> <div>SQL> select * from A;</div> <div>        ID</div> <div>        ----------</div> <div>         1</div> <div>         2</div> <div>         3</div> <div>SQL> drop table A;</div> <div>表已删除?/div> <div>SQL> show recyclebin</div> <div>ORIGINAL NAME    RECYCLEBIN NAME       OBJECT TYPE  DROP TIME</div> <div>----------------      -----------------------------          ------------       -------------------</div> <div><br /> A            BIN$RWXQQcTPRde0ws4h9ewJcg==$0  TABLE     2009-10-15:12:44:33</div> <div><br /> 查看recyclebin中对象:(x)</div> <div>SQL> select original_name,object_name from recyclebin;</div> <div><br /> ORIGINAL_NAME                    OBJECT_NAME</div> <div>-------------------------------- ------------------------------</div> <div>A                                BIN$RWXQQcTPRde0ws4h9ewJcg==$0</div> <div><br /> 查看recyblebin对象里的内容Q?/div> <div>SQL> select * from "BIN$RWXQQcTPRde0ws4h9ewJcg==$0";</div> <div><br />         ID</div> <div>       ----------</div> <div>         1</div> <div>         2</div> <div>         3</div> <div><br /> 表空间的Recycle Bin 区域只是一个逻辑区域Q而不是从表空间上物理的划Z块区域固定用于回收站Q因此Recycle Bin是和普通对象共用表I间的存储区域,或者说是Recycle Bin的对象要和普通对象抢夺存储空间。当发生I间不够ӞOracle?x)按照先入先出的序覆盖Recycle Bin中的对象。也可以手动的删除Recycle Bin占用的空间?/div> <div>1). Purge tablespace tablespace_name : 用于清空表空间的Recycle Bin</div> <div>2). Purge tablespace tablespace_name user user_name: 清空指定表空间的Recycle Bin中指定用L(fng)对象</div> <div>3). Purge recyclebin: 删除当前用户的Recycle Bin中的对象</div> <div>4). Purge dba_recyclebin: 删除所有用L(fng)Recycle Bin中的对象Q该命o(h)要sysdba权限</div> <div>5). Drop table table_name purge:  删除对象q且不放在Recycle Bin中,x久的删除Q不能用Flashback恢复?/div> <div>6). Purge index recycle_bin_object_nameQ?当想释放Recycle bin的空_(d)又想能恢复表Ӟ可以通过释放该对象的index所占用的空间来~解I间压力?因ؓ(f)索引是可以重建的?/div> <div>2. Flashback Drop 实例操作</div> <div>SQL> select original_name,object_name from recyclebin;</div> <div>ORIGINAL_NAME                    OBJECT_NAME</div> <div>-------------------------------- ------------------------------</div> <div>A                                BIN$RWXQQcTPRde0ws4h9ewJcg==$0</div> <div>SQL> flashback table a to before drop;</div> <div>闪回完成?/div> <div>SQL> select * from a;</div> <div>        ID</div> <div>         ----------</div> <div>         1</div> <div>         2</div> <div>         3</div> <div><br /> 当我们删除表A后,在新AQ这时在恢复的时候就?x)报错,此时我们在闪回时Q对表重命名可以了(jin)Q?/div> <div>SQL> drop table a;</div> <div>表已删除?/div> <div>SQL> create table a</div> <div>  2  (id number(1));</div> <div>表已创徏?/div> <div>SQL> flashback table a to before drop ;</div> <div>flashback table a to before drop</div> <div>*</div> <div>W?1 行出现错?</div> <div>ORA-38312: 原始名称已被现有对象使用</div> <div><br /> SQL> flashback table a to before drop rename to B;</div> <div>闪回完成?/div> <div>SQL> select * from B;</div> <div>        ID</div> <div>        ----------</div> <div>         1</div> <div>         2</div> <div>         3</div> <div><br /> 当我们删除表AQ在新徏表AQ在删除它,q是在Recycle Bin中就?x)?个相同的表明Q此时恢复我们就要指定object_name才行.</div> <div><br /> SQL> select * from B;</div> <div>        ID</div> <div>        ----------</div> <div>         1</div> <div>         2</div> <div>         3</div> <div>SQL> drop table B;</div> <div>表已删除?/div> <div>SQL> create table B(name varchar(20));</div> <div>表已创徏?/div> <div>SQL> drop table B;</div> <div>表已删除?/div> <div>SQL> select original_name,object_name from recyclebin;</div> <div>ORIGINAL_NAME                    OBJECT_NAME</div> <div>--------------------------------            ------------------------------</div> <div>B                                BIN$vYuv+g9fTi2exYP9X2048Q==$0</div> <div>B                                BIN$geQ9+NekSjuRvzG+TqDVWw==$0</div> <div>SQL> flashback table "BIN$vYuv+g9fTi2exYP9X2048Q==$0" to before drop;</div> <div>闪回完成?/div> <div>SQL> select * from B;</div> <div>        ID</div> <div>       ----------</div> <div>         1</div> <div>         2</div> <div>         3</div> <div>一旦完成闪回恢复,Recycle Bin中的对象消׃(jin). Flashback Drop 需要注意的地方Q?/div> <div>1). 只能用于非系l表I间和本地管理的表空?/div> <div>2). 对象的参考约束不?x)被恢复Q指向该对象的外键约束需要重建?/div> <div>3). 对象能否恢复成功Q取决与对象I间是否被覆盖重用?/div> <div>4). 当删除表Ӟ信赖于该表的物化视图也会(x)同时删除Q但是由于物化视囑ƈ不会(x)被放入recycle binQ因此当你执行flashback table to before drop Ӟ也不能恢复依赖其的物化视图,需要dba 手工介入重新创徏?/div> <div>5). 对于Recycle Bin中的对象Q只支持查询.</div> <div> </div> <div> </div> <div>Flashback Query</div> <div>Flashback 是ORACLE ?i 开始提供的一特性,?i 中利用oracle 查询多版本一致的特点Q实C回滚D中d表一定时间内操作q的数据Q可用来q行数据比对Q或者修正意外提交造成的错误数据,该项Ҏ(gu)也被称为Flashback Query?/div> <div><br /> 一、Flashback Query<br /> 正如前言中所提,Flashback Query 是利用多版本M致性的Ҏ(gu)从UNDO 表空间读取操作前的记录数据!</div> <div><br /> 什么是多版本读一致?br /> Oracle 采用?jin)一U非怼U的设计,通过undo 数据来确保写不堵塞读Q简单的Ԍ不同的事务在写数据时Q会(x)数据的前映像写入undo 表空_(d)q样如果同时有其它事务查询该表数据,则可以通过undo 表空间中数据的前映像来构造所需的完整记录集Q而不需要等待写入的事务提交或回滚?/div> <div><br /> flashback query 有多U方式构建查询记录集Q记录集的选择范围可以Z旉或基于scnQ甚臛_以同时查询出记录在undo 表空间中不同事务时的前映象。用法与标准查询非常cMQ要通过flashback query 查询undo 中的撤销数据Q最单的方式只需要在标准查询语句的表名后面跟上as of timestamp(Z旉)或as of scn(Zscn)卛_。as of timestamp|scn 的语法是?iR2 后才开始提供支持?/div> <div><br /> 1、As of timestamp 的示例:(x)</div> <div><br /> SQL>  alter session set nls_date_format='YYYY-MM-DD hh24:mi:ss';</div> <div>?x)话已更攏V?/div> <div>SQL> select sysdate from dual;</div> <div>SYSDATE</div> <div>-------------------</div> <div>2009-10-15 19:04:16</div> <div><br /> SQL> select * from A;</div> <div><br />         ID</div> <div>        ----------</div> <div>         2</div> <div>         1</div> <div>         3</div> <div>         4</div> <div><br /> 模拟用户误操作,删除数据</div> <div>SQL> delete from A;</div> <div>已删?行?/div> <div>SQL> commit;</div> <div>提交完成?/div> <div>SQL> select * from A;</div> <div>未选定?/div> <div>查看删除之前的状态:(x)<br /> 假设当前距离删除数据已经? 分钟左右的话Q?br /> SQL> select * from A as of timestamp sysdate-5/1440;</div> <div><br />         ID</div> <div>        ----------</div> <div>         2</div> <div>         1</div> <div>         3</div> <div>         4</div> <div>或者:(x)</div> <div>SQL>select * from A as of timestamp to_timestamp('2009-10-15 19:04:16','YYYY-MM-DD hh24:mi:ss');</div> <div><br />         ID</div> <div>        ----------</div> <div>         2</div> <div>         1</div> <div>         3</div> <div>         4</div> <div>用Flashback Query恢复之前的数据:(x)</div> <div>SQL>Insert into A select * from A as of timestamp to_timestamp('2009-10-15 19:04:16','YYYY-MM-DD hh24:mi:ss');</div> <div>已创?行?/div> <div>SQL> COMMIT;</div> <div><br /> 提交完成?/div> <div><br /> SQL> select * from A;</div> <div><br />         ID</div> <div>        ----------</div> <div>         2</div> <div>         1</div> <div>         3</div> <div>         4</div> <div>如上q示例中所表示的,as of timestamp 的确非常易用Q但是在某些情况下,我们使用as of scn 的方式执行flashback queryQ比如需要对多个怺有主外键U束的表q行恢复Ӟ如果使用as of timestamp 的方式,可能?x)由于时间点不统一的缘故造成数据选择或插入失败,通过scn 方式则能够确保记录的U束一致性?/div> <div><br /> 2. As of scn CZ</div> <div><br /> 查看SCN:<br /> SELECT dbms_flashback.get_system_change_number FROM dual;<br /> SELECT CURRENT_SCN FROM V$DATABASE;</div> <div><br /> SQL> SELECT CURRENT_SCN FROM V$DATABASE;</div> <div>CURRENT_SCN</div> <div>-----------</div> <div>1095782</div> <div><br /> 删除数据Q?br /> SQL> delete from A;</div> <div>已删?行?/div> <div>SQL> commit;</div> <div>提交完成?/div> <div> </div> <div>查看删除之前的状态:(x)</div> <div>SQL> select * from A as of scn 1095782;</div> <div>        ID</div> <div>     ----------</div> <div>         2</div> <div>         1</div> <div>         3</div> <div>         4</div> <div><br /> 用Flashback Query恢复之前的数据:(x)</div> <div>SQL> insert into A select * from A as of scn 1095782;</div> <div>已创?行?/div> <div>SQL> commit;</div> <div>提交完成?/div> <div>SQL> select * from A;</div> <div>        ID</div> <div>        ----------</div> <div>         2</div> <div>         1</div> <div>         3</div> <div>         4</div> <div><br /> 事实上,Oracle 在内部都是用scnQ即使你指定的是as of timestampQoracle 也会(x)其转换成scnQ系l时间标Cscn 之间存在一张表Q即SYS 下的SMON_SCN_TIME</div> <div><br /> SQL> desc sys.smon_scn_time</div> <div> 名称                       是否为空? cd</div> <div> ----------------------------------------- --------    ---------------------------</div> <div><br />  THREAD                               NUMBER</div> <div> TIME_MP                              NUMBER</div> <div> TIME_DP                              DATE</div> <div> SCN_WRP                             NUMBER</div> <div> SCN_BAS                              NUMBER</div> <div> NUM_MAPPINGS                       NUMBER</div> <div> TIM_SCN_MAP                         RAW(1200)</div> <div> SCN                                   NUMBER</div> <div> ORIG_THREAD                         NUMBER</div> <div><br /> 每隔5 分钟Q系l生一ơ系l时间标Cscn 的匹配ƈ存入sys.smon_scn_time 表,该表中记录了(jin)最q?440个系l时间标Cscn 的匹配记录,׃该表只维护了(jin)最q的1440 条记录,因此如果使用as of timestamp 的方式则只能flashback 最q? 天内的数据(假设pȝ是在持箋不断q行q无中断或关机重启之cL作的话)(j)?/div> <div>注意理解pȝ旉标记与scn 的每5 分钟匚w一ơ这句话QD个例子,比如scn:339988,339989 分别匚w08-05-3013:52:00 ?008-13:57:00Q则当你通过as of timestamp 查询08-05-30 13:52:00 ?8-05-30 13:56:59 q段旉?br /> 内的旉Ӟoracle 都会(x)其匚w为scn:339988 到undo 表空间中查找Q也p在这个时间内Q不你指定的时间点是什么,查询q回的都是08-05-30 13:52:00 q个时刻的数据?/div> <div>查看SCN ?timestamp 之间的对应关p:(x)<br /> select scn,to_char(time_dp,'yyyy-mm-dd hh24:mi:ss')from sys.smon_scn_time;</div> <div> </div> <div>Flashback version Query</div> <div><br /> 相对于Flashback Query 只能看到某一点的对象状态, Oracle 10g引入的Flashback Version Query可以看到q去某个旉D内Q记录是如何发生变化的?Ҏ(gu)q个历史QDBA可以快速的判断数据是在什么时点发生了(jin)错误Q进而恢复到之前的状态?/div> <div><br /> 先看一个伪?ORA_ROWSCN.  所谓的伪列Q就是假的,不存在的数据列,用户创徏表时虽然没有指定Q但是OracleZ(jin)l护而添加的一些内部字D,q些字段可以像普通文仉L(fng)使用?/div> <div><br /> 最熟?zhn)的伪列就?ROWIDQ?它相当于一个指针,指向记录在磁盘上的位|。ORA_ROWSCN 是Oracle 10g 新增的,暂且把它看作是记录最后一ơ被修改时的SCN?Flashback Version Query 是通过q个伪列来跟t出记录的变化历双Ӏ?/div> <div><br /> 举个例子Q?/div> <div>SQL> select * from A;</div> <div>        ID</div> <div>        ----------</div> <div>         2</div> <div>         1</div> <div>         3</div> <div>         4</div> <div>SQL> insert into A values(5);</div> <div>已创?1 行?/div> <div>SQL> select * from A;</div> <div>        ID</div> <div>        ----------</div> <div>         2</div> <div>         1</div> <div>         3</div> <div>         4</div> <div>         5</div> <div><br /> SQL> commit;</div> <div>提交完成?/div> <div>SQL> select ora_rowscn, id from A;</div> <div>ORA_ROWSCN       ID</div> <div>----------             ----------</div> <div>   1098443          2</div> <div>   1098443          1</div> <div>   1098443          3</div> <div>   1098443          4</div> <div>   1098443          5</div> <div><br /> 获取更多的历史信?/div> <div>SQL>Select versions_xid,versions_startscn,versions_endscn,</div> <div>   DECODE(versions_operation,'I','Insert','U','Update','D','Delete', 'Original') "Operation", id from A versions between scn minvalue and maxvalue;</div> <div>或?/div> <div>SQL>select xid,commit_scn,commit_timestamp,operation,undo_sql </div> <div>from flashback_transaction_query q where q.xid in(select versions_xid from B versions between scn 413946 and 413959);</div> <div><br /> VERSIONS_XID     VERSIONS_STARTSCN VERSIONS_ENDSCN Operatio    ID</div> <div>---------------- ----------------- --------------- -------- ----------</div> <div>05001A0054020000           1099482                 Update            3</div> <div>05001A0054020000           1099482                 Delete            3</div> <div>05001A0054020000           1099482                 Delete            2</div> <div>05001A0054020000           1099482                 Delete            1</div> <div>0400150005020000           1098443                 Insert             5</div> <div><br /> 下面我们来讲下伪列, Flashback Version Query 技术其实有很多伪列Q但是ORA_ROWSCN是最重要。它记录的是最后一ơ被修改时的SCNQ?注意是被提交的修攏V如果没有提交,q个伪列不会(x)发生变化?/div> <div> </div> <div>ORA_ROWSCN ~省是数据块U别的,也就是一个数据块内的所有记录都是一个ORA_ROWSCNQ数据块内Q意一条记录被修改Q这个数据库块内的所有记录的ORA_ROWSCN都会(x)同时改变。上例的查询l果以证明?/div> <div><br /> 不过我们可以在徏表时使用关键?rowdependenciesQ?可以改变q种~省行ؓ(f)Q用这个关键字后,每条记录都有自己的ORA_ROWSCN?</div> <div><br /> 举例Q?/div> <div>SQL> create table B (id number(2)) rowdependencies;</div> <div>表已创徏?/div> <div>SQL> insert into B values(1);</div> <div>已创?1 行?/div> <div>SQL> insert into B values(2);</div> <div>已创?1 行?/div> <div>SQL> insert into B values(3);</div> <div>已创?1 行?/div> <div>SQL> commit;</div> <div>提交完成?/div> <div>SQL> select ora_rowscn, id from B;</div> <div>ORA_ROWSCN         ID</div> <div>---------- ----------</div> <div>   1100560          1</div> <div>   1100560          2</div> <div>   1100560          3</div> <div><br /> 此处SCN一P一定很奇怪,q正好说明是最后一ơ被修改时的SCNQ如果没有提交,是不?x)变的,我们重做一下就清楚?jin)?/div> <div><br /> SQL> analyze table B compute statistics;</div> <div>表已分析?/div> <div>SQL> select ora_rowscn, id from B;</div> <div>ORA_ROWSCN         ID</div> <div>---------- ----------</div> <div>   1100560          1</div> <div>   1100560          2</div> <div>   1100560          3</div> <div><br /> SQL> delete from B;</div> <div>已删?行?/div> <div>SQL> select ora_rowscn, id from B;</div> <div>未选定?/div> <div>SQL> insert into B values(1);</div> <div>已创?1 行?/div> <div>SQL> commit;</div> <div>提交完成?/div> <div>SQL> insert into B values(2);</div> <div>已创?1 行?/div> <div>SQL> commit;</div> <div>提交完成?/div> <div>SQL> select ora_rowscn, id from B;</div> <div>ORA_ROWSCN         ID</div> <div>---------- ----------</div> <div>   1100723          1</div> <div>   1100729          2</div> <div> </div> <div> </div> <div> </div> <div> </div> <div> </div> <div> </div> <div>Flashback Transaction Query</div> <div>Flashback Transaction Query也是使用UNDO信息来实现。利用这个功能可以查看某个事务执行的所有变化,它需要访问flashback_transaction_query 视图Q这个视囄XID列代表事务IDQ利用这个ID可以区分特定事务发生的所有数据变化?/div> <div>CZQ?/div> <div>SQL> insert into B values(3);</div> <div>已创?1 行?/div> <div>SQL> commit;</div> <div>提交完成?/div> <div>SQL> select * from B;</div> <div><br />         ID</div> <div>       ----------</div> <div>         1</div> <div>         2</div> <div>         3</div> <div><br /> 查看视图Q每个事务都对应相同的XID</div> <div><br /> SQL>Select xid,operation,commit_scn,undo_sql from flashback_transaction_query where xid in (</div> <div>Select versions_xid from B versions between scn minvalue and maxvalue);</div> <div>或?/div> <div>SQL>select xid,commit_scn,commit_timestamp,operation,undo_sql </div> <div>from flashback_transaction_query q where q.xid in(select versions_xid from B versions between scn 413946 and 413959);</div> <div><br /> XID              OPERATION                        COMMIT_SCN</div> <div>---------------- -------------------------------- ----------</div> <div>UNDO_SQL</div> <div>--------------------------------------------------------------------------------</div> <div><br /> 03001C006A020000 DELETE                              1100723</div> <div>insert into "SYS"."B"("ID") values ('4');</div> <div><br /> 03001C006A020000 DELETE                              1100723</div> <div>insert into "SYS"."B"("ID") values ('3');</div> <div><br /> 03001C006A020000 DELETE                              1100723</div> <div>insert into "SYS"."B"("ID") values ('2');</div> <div> </div> <div>Flashback Table</div> <div><br /> 注意SYS用户不支持闪回,q点前面已经说明q?/div> <div><br /> Flashback Table也是使用UNDO tablespace的内Ҏ(gu)实现Ҏ(gu)据的回退。该命o(h)相对单,输入Qflashback table table_name to scn(to timestamp) 卛_?/div> <div><br /> 注意Q如果想要对表进行flashbackQ必d许表的row movement.</div> <div>Alter table table_name row movement;</div> <div> </div> <div>要查看某表是否启用row movementQ可以到user_tables 中查?或all_tables,dba_tables)Q?/div> <div>例如Q?br /> SQL> select row_movement from user_tables where table_name='C';<br /> ROW_MOVE<br /> --------<br /> ENABLED</div> <div><br /> 要启用或止某表row movementQ可以通过下列语句Q?/div> <div><br /> --启用<br /> JSSWEB> ALTER TABLE table_name ENABLE ROW MOVEMENT;<br /> 表已更改?br /> --止<br /> JSSWEB> ALTER TABLE table_name DISABLE ROW MOVEMENT;<br /> 表已更改?/div> <div><br /> 举例Q?/div> <div><br /> SQL> create table C (id number(2));</div> <div>表已创徏?/div> <div>SQL> insert into C values(1);</div> <div>已创?1 行?/div> <div>SQL> insert into C values(2);</div> <div>已创?1 行?/div> <div>SQL> commit;</div> <div>提交完成?/div> <div>SQL> select * from c;</div> <div>        ID</div> <div>----------</div> <div>         1</div> <div>         2</div> <div><br /> SQL> alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss";</div> <div>?x)话已更攏V?/div> <div>SQL> select sysdate from dual;</div> <div>SYSDATE</div> <div>-------------------</div> <div>2009-10-15 21:17:47</div> <div>SQL> select current_scn from v$database;</div> <div><br /> CURRENT_SCN</div> <div>-----------</div> <div>      1103864</div> <div><br /> 删除数据q恢?/div> <div>SQL> delete from C;</div> <div>已删?行?/div> <div>SQL> commit;</div> <div>提交完成?/div> <div>SQL> alter table c enable row movement;</div> <div>表已更改?/div> <div>SQL> flashback table c to scn  1103864;</div> <div>闪回完成?/div> <div>或者:(x)</div> <div>SQL> flashback table c to timestamp to_timestamp('2009-10-15 21:17:47','yyyy-mm-</div> <div>dd hh24:mi:ss');</div> <div><br /> SQL> select * from c;</div> <div>        ID</div> <div>----------</div> <div>         1</div> <div>         2</div> <div><br /> Flashback table 命o(h)支持同时操作多个表,表名中间以逗号分隔卛_Q如果你执行一条flashback table命o(h)时同时指定了(jin)多个表,要记住单个flashback table 是在同一个事务中Q因此这些表的恢复操作要么都成功Q要么都p|?/div> <div>如:(x)</div> <div>flashback table a,b ,c to scn 1103864;</div> <div> </div> <div>一些注意事?/div> <div>1. Zundo 的表恢复Q需要注意DDL 操作的媄(jing)?br /> W三个就是修改ƈ提交q数据之后,对表做过DDL 操作Q包括:(x)<br /> drop/modify ? move ? drop 分区(如果有的?, truncate table/partitionQ这些操作会(x)另undo 表空间中的撤销数据失效Q对于执行过q些操作的表应用flashback query ?x)触发ORA-01466 错误。另外一些表l构修改语句虽然q不?x)?jing)响到undo 表空间中的撤销记录Q但有可能因表结构修改导致undo 中重做记录无法应用的情况Q比如对于增加了(jin)U束Q而flashback query 查询出的undo 记录已经不符合新建的U束条gQ这个时候直接恢复显然不可能成功Q你要么暂时disable U束Q要么通过适当逻辑Q对要恢复的数据q行处理之后Q再执行恢复?br /> 另外Qflashback query 对v$tables,x$tables {动态性能视图无效Q不q对于dba_*,all_*,user_*{数据字典是有效的。同时该Ҏ(gu)也完全支持讉Kq端数据库,比如select * from <a href="mailto:tbl@dblink" target="_blank">tbl@dblink</a> as of scn 360;的Ş式?</div> <div> </div> <div>2. Zundo 的表恢复Qflashback table 实际上做的也是dml 操作(?x)在被操作的表上加dml ?Q因此还需要注意triggers 对其的媄(jing)响,默认情况下,flashback table to scn/timestamp 在执行时?x)自动disable 掉与其操作表相差的triggersQ如果你希望在此期间trigger 能够l箋发挥做用Q可以在flashback table 后附?br /> ENABLE TRIGGERS 子句?/div> <div> </div> <div>补充Q?/div> <div><br /> 什么是Automatic Undo Management( 自动撤销理表空?<br /> 提到自动撤销理表空_(d)׃得不提手动管理的回滚Dc(din)在9i 之前Q回滚段的管理和监控是需要dba手工介入的,创徏合适的回滚D|仉常耗费dba _֊的事情,你可能需要不断关注oracle q行状况很长一阵子旉后,通过不断的调整才能基本确认一D|期内回滚D늚大小Q一旦回滚段创徏的不合适,极有可能引h能问题甚至错误Q比如ora-1555 是典型的回滚段讄不合适触发的?br /> 9i 之后??i)Qoracle Z(jin)清晰它的整个概念Q取消了(jin)回滚D这个说?实际上ƈ未取消回滚段)Q而完全以undo 来代替,q也它正好与redo 相对应,一个重做,一个撤销。回滚段可以不再由dba 手工介入Q而是完全由它自己在运行时自动分配Q这在一定程度上卌放了(jin)dbaQ也实起到?jin)提高性能的作用,比如采用自动理表空间就可以最大程序的降低ora-1555发生的机?注意是降低,不是避免Q我们不可能创徏一个无限大的回滚段Qora-1555 也ƈ不完全是回滚D造成的,关于ora-1555 的问题这里就不深入讨Z(jin)Q互联网上已l有太多文章描述和介l该问题?qing)解x?</div> <div>是否L(fng)自动理的撤销表空间由二个初始化参数决定:(x)<br /> UNDO_MANAGEMENTQgؓ(f)AUTO 表示使用?jin)自动撤销理表空_(d)MANUAL 则表C手动管?br /> UNDO_TABLESPACEQ当UNDO_MANAGEMENT gؓ(f)AUTO Ӟ该参数用来指定当前的undo 表空间名U?br /> undo 表空间的大小Q直接媄(jing)响到flashback query 的查询能力,因ؓ(f)多版本查询所依赖的undo 数据都存储在undo 表空间中Q该表空间越大,所能够存储的undo 数据自然也越多,如果该表I间可用I间非常,别说flashback ?jin),恐怕正常查询都有可能触发ora-1555 吧?/div> <div><br /> 初始化参数UNDO_RETENTION<br /> 该参数用来指定undo 记录保存的最长时_(d)以秒为单位,是个动态参敎ͼ完全可以在实例运行时随时修改通常默认?00 U,也就?5 分钟?br /> 一定要注意Qundo_retention 只是指定undo 数据的过期时_(d)q不是说Qundo 中的数据一定会(x)在undo表空间中保存15 分钟Q比如说刚一个新事务开始的时候,如果undo 表空间已l被写满Q则C务的数据?x)自动覆盖已提交事务的数据,而不这些数据是否已q期Q因此呢Q这又兌回了(jin)W一点,当你创徏<br /> 一个自动管理的undo 表空间时Q还要注意其I间大小Q要可能保证undo 表空间有_的存储空间?br /> 同时q要注意Q也q不是说Qundo_retention 中指定的旉一q,已经提交事务中的数据qL法访问,它只是失效,只要不被别的事务覆盖Q它?x)仍然存在,q可随时被flashback Ҏ(gu)引用。如果你的undo表空间够大Q而数据库又不是那么繁忙,那么其实undo_retention 参数的值ƈ不会(x)影响CQ哪怕你讄?Q只要没有事务去覆盖undo 数据Q它?yu)׃?x)持箋有效。因此呢Q这里还是那句话Q要注意undo 表空间的大小Q保证其有够的存储I间?/div> <div><br /> 只有在一U情况下Qundo 表空间能够确保undo 中的数据在undo_retention 指定旉q期前一定有效,是为undo 表空间指定Retention GuaranteeQ指定之后,oracle 对于undo 表空间中未过期的undo 数据不会(x)覆盖Q?/div> <div>例如Q?br /> SQL> Alter tablespace undotbs1 retention guarantee;<br /> 如果想禁止undo 表空间retention guaranteeQ?/div> <div>例如Q?br /> SQL> Alter tablespace undotbs1 retention noguarantee;<br /> <br /> </div> <br /> <br /> 本文转蝲于:(x)<a target="_blank">http://blog.csdn.net/tianlesoftware/archive/2009/10/16/4677378.aspx</a> <img src ="http://m.tkk7.com/duduli/aggbug/315680.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/duduli/" target="_blank">duduli</a> 2010-03-17 15:33 <a href="http://m.tkk7.com/duduli/archive/2010/03/17/315680.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>工作中oracle记录http://m.tkk7.com/duduli/archive/2010/03/14/315367.htmlduduliduduliSun, 14 Mar 2010 02:18:00 GMThttp://m.tkk7.com/duduli/archive/2010/03/14/315367.htmlhttp://m.tkk7.com/duduli/comments/315367.htmlhttp://m.tkk7.com/duduli/archive/2010/03/14/315367.html#Feedback2http://m.tkk7.com/duduli/comments/commentRss/315367.htmlhttp://m.tkk7.com/duduli/services/trackbacks/315367.html阅读全文

duduli 2010-03-14 10:18 发表评论
]]>
Oracle 数据库导?exp)/ 导入(imp)http://m.tkk7.com/duduli/archive/2010/03/12/315302.htmlduduliduduliFri, 12 Mar 2010 10:45:00 GMThttp://m.tkk7.com/duduli/archive/2010/03/12/315302.htmlhttp://m.tkk7.com/duduli/comments/315302.htmlhttp://m.tkk7.com/duduli/archive/2010/03/12/315302.html#Feedback0http://m.tkk7.com/duduli/comments/commentRss/315302.htmlhttp://m.tkk7.com/duduli/services/trackbacks/315302.html说Oracle 数据库导?exp)/ 导入(imp)
exp
数据库内的各对象以二进制方式下载成dmp 文gQ方便数据迁UR?br /> buffer Q下载数据缓冲区Q以字节为单位,~省依赖操作pȝ
consistent Q下载期间所涉及(qing)的数据保持read onlyQ缺省ؓ(f)n
direct Q用直通方式,~省为n
feeback Q显C处理记录条敎ͼ~省?Q即不显C?br /> fileQ输出文Ӟ~省为expdat.dmp
filesizeQ输出文件大,~省为操作系l最大?br /> indexesQ是否下载烦(ch)引,~省为nQ这是指索引的定义而非数据Qexp 不下载烦(ch)引数?br /> logQlog 文gQ缺省ؓ(f)无,在标准输出显C?br /> ownerQ指明下载的用户?br /> queryQ选择记录的一个子?br /> rowsQ是否下载表记录
tablesQ输出的表名列表
导出整个实例
exp dbuser/oracle file=oradb.dmp log=oradb.log full=y consistent=y direct=y
user 应具有dba 权限
导出某个用户所有对?/div>
exp dbuser/oracle file=dbuser.dmp log=dbuser.log owner=dbuser buffer=4096000 feedback=10000
导出一张或几张?/div>
exp dbuser/oracle file=dbuser.dmp log=dbuser.log tables=table1,table2 buffer=4096000
feedback=10000
导出某张表的部分数据
exp dbuser/oracle file=dbuser.dmp log=dbuser.log tables=table1 buffer=4096000 feedback=10000
query=\”where col1=\’…\’ and col2 \<…\”
不可用于嵌套?/div>
以多个固定大文件方式导出某张表
exp dbuser/oracle file=1.dmp,2.dmp,3.dmp,… filesize=1000m tables=emp buffer=4096000
feedback=10000
q种做法通常用在Q表数据量较大,单个dump 文g可能?x)超出文件系l的限制
直通\径方?/div>
direct=yQ取代buffer 选项Qquery 选项不可?/div>
有利于提高下载速度
consistent 选项
自export 启动后,consistent=y ȝ来自其它?x)话的对export 操作的数据对象的更新Q这样可以保?/div>
dump l果的一致性。但q个q程不能太长Q以免回滚段和联机日志消耗完
imp
exp 下蝲的dmp 文g上蝲到数据库内?br /> bufferQ上载数据缓冲区Q以字节为单位,~省依赖操作pȝ
commitQ上载数据缓冲区中的记录上蝲后是否执行提?br /> feeback Q显C处理记录条敎ͼ~省?Q即不显C?br /> fileQ输入文Ӟ~省为expdat.dmp
filesizeQ输入文件大,~省为操作系l最大?br /> fromuserQ指明来源用h
ignoreQ是否忽略对象创建错误,~省为nQ在上蝲前对象已被徏立往往是一个正常现象,所以此选项?br /> 议设为y
indexesQ是否上载烦(ch)引,~省为nQ这是指索引的定义而非数据Q如果上载时索引已徏立,此选项即?br /> n 也无效,imp 自动更新索引数据
logQlog 文gQ缺省ؓ(f)无,在标准输出显C?br /> rowsQ是否上载表记录
tablesQ输入的表名列表
touserQ指明目的用h
导入整个实例
imp dbuser/oracle file=oradb.dmp log=oradb.log full=y buffer=4096000 commit=y ignore=y
feedback=10000
导入某个用户所有对?/div>
imp dbuser/oracle file=dbuser.dmp log=dbuser.log fromuser=dbuser touser=dbuser2 buffer=2048000
commit=y ignore=y feedback=10000
导入一张或几张?/div>
imp dbuser2/oracle file=user.dmp log=user.log tables=table1,table2 fromuser=dbuser
touser=dbuser2 buffer=2048000 commit=y ignore=y feedback=10000
以多个固定大文件方式导入某张表
imp dbuser/oracle file=\(1.dmp,2.dmp,3.dmp,…\) filesize=1000m tables=emp fromuser=dbuser
touser=dbuser2 buffer=4096000 commit=y ignore=y feedback=10000
 
Oracle 数据库的备䆾与恢?/strong>
 
 

oracle数据库有三种标准的备份方?它们分别是导出/导入Qexp/impQ?热备份与冷备?导出备g是一U逻辑备䆾,冷备份与热备份是物理备䆾.

利用export可将数据从数据库中提取出?利用import则可提取出来的数据送回到oracle数据库中?
一. 导出Q导入(exportQimportQ?br /> oracle支持三种方式cd的输?
Q? 单导出数据(exportQ与导入数据QimportQ?

 Q1Q?表方式(t方式Q?指定表的数据导?
 Q2Q?用户方式Qu方式Q?指定用L(fng)所有对象及(qing)数据导出.

 Q3Q?全库方式Qfull方式Q?瘉|据库中的所有对象导?

数据导入QimportQ的q程是数据导出(exportQ的逆过E?分别数据文件导入数据库与将数据库数据导出到数据文g.

Q? 增量导出Q导?

增量导出是一U常用的数据备䆾Ҏ(gu),它只能对整个数据库来实施,q且必须作ؓ(f)system来导?在进行此U导出时,pȝ不要求回{Q何问?导出文g名缺省ؓ(f)export.dmp,如果不希望自q输出文g定名为export.dmp,必须在命令行中指?gu)用的文g?

增量导出包括三种cd:

Q1Q?“完全”增量导出QcompleteQexp system/manager inctype=complete file=040731.dmp

 卛_份三个数据库,比如:

 备䆾上一ơ备份后改变的数?比如:

 Q2Q?“增量?#8221;增量导出

 exp system/manager inctype=incremental file=040731.dmp

 Q3Q?“累积?#8221;增量导出

 累计型导出方式是导出自上?#8220;完全”导出之后数据库中变化?jin)的信?比如:

 exp system/manager inctype=cumulative file=040731.dmp

 数据库管理员可以排定一个备份日E表,用数据导出的三个不同方式合理高效的完?

 比如数据库的被封d可以做如下安?

 星期一:完全备䆾QaQ?br />  星期?增量导出QbQ?

 星期?增量导出QcQ?

 星期?增量导出QdQ?

 星期?累计导出QeQ?

 星期?增量导出QfQ?

 星期?增量导出QgQ?/p>

duduli 2010-03-12 18:45 发表评论
]]>很久以前的一个错?/title><link>http://m.tkk7.com/duduli/archive/2009/10/31/300505.html</link><dc:creator>duduli</dc:creator><author>duduli</author><pubDate>Sat, 31 Oct 2009 11:22:00 GMT</pubDate><guid>http://m.tkk7.com/duduli/archive/2009/10/31/300505.html</guid><wfw:comment>http://m.tkk7.com/duduli/comments/300505.html</wfw:comment><comments>http://m.tkk7.com/duduli/archive/2009/10/31/300505.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/duduli/comments/commentRss/300505.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/duduli/services/trackbacks/300505.html</trackback:ping><description><![CDATA[     摘要: mysql中的脚本执行?nbsp; <a href='http://m.tkk7.com/duduli/archive/2009/10/31/300505.html'>阅读全文</a><img src ="http://m.tkk7.com/duduli/aggbug/300505.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/duduli/" target="_blank">duduli</a> 2009-10-31 19:22 <a href="http://m.tkk7.com/duduli/archive/2009/10/31/300505.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql权限控制Q徏立用?/title><link>http://m.tkk7.com/duduli/archive/2009/10/31/300489.html</link><dc:creator>duduli</dc:creator><author>duduli</author><pubDate>Sat, 31 Oct 2009 08:18:00 GMT</pubDate><guid>http://m.tkk7.com/duduli/archive/2009/10/31/300489.html</guid><wfw:comment>http://m.tkk7.com/duduli/comments/300489.html</wfw:comment><comments>http://m.tkk7.com/duduli/archive/2009/10/31/300489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/duduli/comments/commentRss/300489.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/duduli/services/trackbacks/300489.html</trackback:ping><description><![CDATA[     摘要: 数据库对用户建立的相x作?nbsp; <a href='http://m.tkk7.com/duduli/archive/2009/10/31/300489.html'>阅读全文</a><img src ="http://m.tkk7.com/duduli/aggbug/300489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/duduli/" target="_blank">duduli</a> 2009-10-31 16:18 <a href="http://m.tkk7.com/duduli/archive/2009/10/31/300489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql中一些简单的对表l构q行的操?/title><link>http://m.tkk7.com/duduli/archive/2009/10/30/300404.html</link><dc:creator>duduli</dc:creator><author>duduli</author><pubDate>Fri, 30 Oct 2009 10:56:00 GMT</pubDate><guid>http://m.tkk7.com/duduli/archive/2009/10/30/300404.html</guid><wfw:comment>http://m.tkk7.com/duduli/comments/300404.html</wfw:comment><comments>http://m.tkk7.com/duduli/archive/2009/10/30/300404.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/duduli/comments/commentRss/300404.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/duduli/services/trackbacks/300404.html</trackback:ping><description><![CDATA[     摘要: 数据库的基本alter操作?nbsp; <a href='http://m.tkk7.com/duduli/archive/2009/10/30/300404.html'>阅读全文</a><img src ="http://m.tkk7.com/duduli/aggbug/300404.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/duduli/" target="_blank">duduli</a> 2009-10-30 18:56 <a href="http://m.tkk7.com/duduli/archive/2009/10/30/300404.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql中的一些常?/title><link>http://m.tkk7.com/duduli/archive/2009/10/29/300282.html</link><dc:creator>duduli</dc:creator><author>duduli</author><pubDate>Thu, 29 Oct 2009 15:26:00 GMT</pubDate><guid>http://m.tkk7.com/duduli/archive/2009/10/29/300282.html</guid><wfw:comment>http://m.tkk7.com/duduli/comments/300282.html</wfw:comment><comments>http://m.tkk7.com/duduli/archive/2009/10/29/300282.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/duduli/comments/commentRss/300282.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/duduli/services/trackbacks/300282.html</trackback:ping><description><![CDATA[发现自己sql基础很不牢固Q今天就体现出来?jin)?br /> 通配W的问题Q?br /> sql中用“_”代表一个字W,?#8220;%”代表L多个字符Q?br /> 但是如果惌查找一个带_?的字W时Q就得用ESCAPE?jin)?br /> 如:(x) <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">select</span><span style="color: #000000"> </span><span style="color: #808080">*</span><span style="color: #000000"> </span><span style="color: #0000ff">from</span><span style="color: #000000"> </span><span style="color: #ff00ff">user</span><span style="color: #000000"> </span><span style="color: #0000ff">where</span><span style="color: #000000"> name </span><span style="color: #808080">like</span><span style="color: #000000"> "</span><span style="color: #808080">%/</span><span style="color: #000000">_</span><span style="color: #808080">%</span><span style="color: #000000">" </span><span style="color: #0000ff">ESCAPE</span><span style="color: #000000"> </span><span style="color: #ff0000">'</span><span style="color: #ff0000">/</span><span style="color: #ff0000">'</span></div> <br /> q有一个就是涉?qing)到多表的updateQ及(qing)把A表中的一个字D,赋值到B表中厅R?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #0000ff">UPDATE</span><span style="color: #000000"> A </span><span style="color: #0000ff">SET</span><span style="color: #000000"> A.NAME</span><span style="color: #808080">=</span><span style="color: #000000">B.NAME </span><span style="color: #0000ff">FROM</span><span style="color: #000000"> A,B </span><span style="color: #0000ff">WHERE</span><span style="color: #000000"> A.ID</span><span style="color: #808080">=</span><span style="color: #000000">B.ID</span></div> <img src ="http://m.tkk7.com/duduli/aggbug/300282.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/duduli/" target="_blank">duduli</a> 2009-10-29 23:26 <a href="http://m.tkk7.com/duduli/archive/2009/10/29/300282.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle的decode使用http://m.tkk7.com/duduli/archive/2009/10/29/300259.htmlduduliduduliThu, 29 Oct 2009 12:59:00 GMThttp://m.tkk7.com/duduli/archive/2009/10/29/300259.htmlhttp://m.tkk7.com/duduli/comments/300259.htmlhttp://m.tkk7.com/duduli/archive/2009/10/29/300259.html#Feedback0http://m.tkk7.com/duduli/comments/commentRss/300259.htmlhttp://m.tkk7.com/duduli/services/trackbacks/300259.html阅读全文

duduli 2009-10-29 20:59 发表评论
]]>
oracle中将字典理表空间{换ؓ(f)本地理表空?/title><link>http://m.tkk7.com/duduli/archive/2009/08/01/289338.html</link><dc:creator>duduli</dc:creator><author>duduli</author><pubDate>Sat, 01 Aug 2009 00:12:00 GMT</pubDate><guid>http://m.tkk7.com/duduli/archive/2009/08/01/289338.html</guid><wfw:comment>http://m.tkk7.com/duduli/comments/289338.html</wfw:comment><comments>http://m.tkk7.com/duduli/archive/2009/08/01/289338.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/duduli/comments/commentRss/289338.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/duduli/services/trackbacks/289338.html</trackback:ping><description><![CDATA[     摘要: oracle表空?字典理和本地管?之间q行转换的两U方?  <a href='http://m.tkk7.com/duduli/archive/2009/08/01/289338.html'>阅读全文</a><img src ="http://m.tkk7.com/duduli/aggbug/289338.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/duduli/" target="_blank">duduli</a> 2009-08-01 08:12 <a href="http://m.tkk7.com/duduli/archive/2009/08/01/289338.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle中数据库数据块尺寸的定义http://m.tkk7.com/duduli/archive/2009/07/02/285066.htmlduduliduduliThu, 02 Jul 2009 01:29:00 GMThttp://m.tkk7.com/duduli/archive/2009/07/02/285066.htmlhttp://m.tkk7.com/duduli/comments/285066.htmlhttp://m.tkk7.com/duduli/archive/2009/07/02/285066.html#Feedback0http://m.tkk7.com/duduli/comments/commentRss/285066.htmlhttp://m.tkk7.com/duduli/services/trackbacks/285066.html阅读全文

duduli 2009-07-02 09:29 发表评论
]]>
4U方法加强实?关系模型中的数据库完整和业务规则http://m.tkk7.com/duduli/archive/2009/07/01/284874.htmlduduliduduliWed, 01 Jul 2009 01:23:00 GMThttp://m.tkk7.com/duduli/archive/2009/07/01/284874.htmlhttp://m.tkk7.com/duduli/comments/284874.htmlhttp://m.tkk7.com/duduli/archive/2009/07/01/284874.html#Feedback0http://m.tkk7.com/duduli/comments/commentRss/284874.htmlhttp://m.tkk7.com/duduli/services/trackbacks/284874.html阅读全文

duduli 2009-07-01 09:23 发表评论
]]>
Java的面向对象数据库db4ohttp://m.tkk7.com/duduli/archive/2009/06/09/280903.htmlduduliduduliTue, 09 Jun 2009 05:34:00 GMThttp://m.tkk7.com/duduli/archive/2009/06/09/280903.htmlhttp://m.tkk7.com/duduli/comments/280903.htmlhttp://m.tkk7.com/duduli/archive/2009/06/09/280903.html#Feedback3http://m.tkk7.com/duduli/comments/commentRss/280903.htmlhttp://m.tkk7.com/duduli/services/trackbacks/280903.html阅读全文

duduli 2009-06-09 13:34 发表评论
]]>
书籍推荐《oracle 10g数据库管理艺术?/title><link>http://m.tkk7.com/duduli/archive/2009/05/20/271802.html</link><dc:creator>duduli</dc:creator><author>duduli</author><pubDate>Wed, 20 May 2009 13:29:00 GMT</pubDate><guid>http://m.tkk7.com/duduli/archive/2009/05/20/271802.html</guid><wfw:comment>http://m.tkk7.com/duduli/comments/271802.html</wfw:comment><comments>http://m.tkk7.com/duduli/archive/2009/05/20/271802.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/duduli/comments/commentRss/271802.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/duduli/services/trackbacks/271802.html</trackback:ping><description><![CDATA[     摘要: 书籍推荐《oracle 10g数据库管理艺术?nbsp; <a href='http://m.tkk7.com/duduli/archive/2009/05/20/271802.html'>阅读全文</a><img src ="http://m.tkk7.com/duduli/aggbug/271802.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/duduli/" target="_blank">duduli</a> 2009-05-20 21:29 <a href="http://m.tkk7.com/duduli/archive/2009/05/20/271802.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>昄表结构oralceQmysqlhttp://m.tkk7.com/duduli/archive/2009/05/12/270170.htmlduduliduduliTue, 12 May 2009 03:35:00 GMThttp://m.tkk7.com/duduli/archive/2009/05/12/270170.htmlhttp://m.tkk7.com/duduli/comments/270170.htmlhttp://m.tkk7.com/duduli/archive/2009/05/12/270170.html#Feedback0http://m.tkk7.com/duduli/comments/commentRss/270170.htmlhttp://m.tkk7.com/duduli/services/trackbacks/270170.html阅读全文

duduli 2009-05-12 11:35 发表评论
]]>
fedora 安装后磁盘空间不断减以?qing)oracle 10G安装出现的一些问?/title><link>http://m.tkk7.com/duduli/archive/2009/05/09/269826.html</link><dc:creator>duduli</dc:creator><author>duduli</author><pubDate>Sat, 09 May 2009 14:14:00 GMT</pubDate><guid>http://m.tkk7.com/duduli/archive/2009/05/09/269826.html</guid><wfw:comment>http://m.tkk7.com/duduli/comments/269826.html</wfw:comment><comments>http://m.tkk7.com/duduli/archive/2009/05/09/269826.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/duduli/comments/commentRss/269826.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/duduli/services/trackbacks/269826.html</trackback:ping><description><![CDATA[自己安装f(xi)edoea后剩下了(jin)5.8G的磁盘空_(d)<br /> 最q空间不断减,到现在只?.4G?jin),到网l上查看原因Q?br /> 其中不少都是没用信息Q都是tmp文g的问题?br /> 其实最主要的问题是自己开?jin)更斎ͼ所以下载了(jin)很多更新包?br /> 只要你删除它?yu)可以?jin)Q当然如果你的磁盘空间大的话Q那没必要?jin)?br /> 切换?/var/cache/yum目录下,然后使用rm * -fr命o(h)把所在文件夹下的东西全部删除?br /> <br /> Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?br /> oracle 10G安装Q?br /> 下蝲?jin)oracle XE 10G版本的rpm包?br /> 使用命o(h) rpm -ivh q行安装Q发现其依赖于一个libaio.0.3.96的rpm包。到|络上去扑֐?br /> http://rpm2html.osmirror.nl/white-box-linux/3.0/en/obsolete-updates/libaio-0.3.96-5.i386.html<br /> 此处可以下?br /> 先安装libaio的包Q然后安装oracle包?br /> oracle的安装不像在windows下,有东西可以看的,安装很快的?br /> 然后l端提示Q?br /> You must run '/etc/init.d/oracle-xe configure' as the root user to <br /> configure the database.<br /> 大家大概意思还是懂吧?br /> 学计机的吗Q那执行吧?br /> 认oracle http的portQ监听端口,然后输入sys密码。再ơ输入(q里都不?x)显C的Q?br /> 安装完成之后Q提C是不是开启启动监听y是的N不是?br /> ok打开Qhttp://127.0.0.1:8080/apex 可以连接数据库?jin)?br /> <br /> <br /> <br /> <img src ="http://m.tkk7.com/duduli/aggbug/269826.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/duduli/" target="_blank">duduli</a> 2009-05-09 22:14 <a href="http://m.tkk7.com/duduli/archive/2009/05/09/269826.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate无主键表查询?qing)数据库q接回顾http://m.tkk7.com/duduli/archive/2009/04/10/264915.htmlduduliduduliFri, 10 Apr 2009 11:51:00 GMThttp://m.tkk7.com/duduli/archive/2009/04/10/264915.htmlhttp://m.tkk7.com/duduli/comments/264915.htmlhttp://m.tkk7.com/duduli/archive/2009/04/10/264915.html#Feedback3http://m.tkk7.com/duduli/comments/commentRss/264915.htmlhttp://m.tkk7.com/duduli/services/trackbacks/264915.html阅读全文

duduli 2009-04-10 19:51 发表评论
]]>
困扰?jin)自׃天的问题居然q样?/title><link>http://m.tkk7.com/duduli/archive/2009/03/28/262534.html</link><dc:creator>duduli</dc:creator><author>duduli</author><pubDate>Fri, 27 Mar 2009 16:44:00 GMT</pubDate><guid>http://m.tkk7.com/duduli/archive/2009/03/28/262534.html</guid><wfw:comment>http://m.tkk7.com/duduli/comments/262534.html</wfw:comment><comments>http://m.tkk7.com/duduli/archive/2009/03/28/262534.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/duduli/comments/commentRss/262534.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/duduli/services/trackbacks/262534.html</trackback:ping><description><![CDATA[     摘要: hibernate报nested exception is org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update。居然是数据库中字段与sql关键字有兟?nbsp; <a href='http://m.tkk7.com/duduli/archive/2009/03/28/262534.html'>阅读全文</a><img src ="http://m.tkk7.com/duduli/aggbug/262534.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/duduli/" target="_blank">duduli</a> 2009-03-28 00:44 <a href="http://m.tkk7.com/duduli/archive/2009/03/28/262534.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql中数据ƈ非ؕ码,而在command line client中ؕ码问题解x?/title><link>http://m.tkk7.com/duduli/archive/2008/12/08/245036.html</link><dc:creator>duduli</dc:creator><author>duduli</author><pubDate>Mon, 08 Dec 2008 07:25:00 GMT</pubDate><guid>http://m.tkk7.com/duduli/archive/2008/12/08/245036.html</guid><wfw:comment>http://m.tkk7.com/duduli/comments/245036.html</wfw:comment><comments>http://m.tkk7.com/duduli/archive/2008/12/08/245036.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://m.tkk7.com/duduli/comments/commentRss/245036.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/duduli/services/trackbacks/245036.html</trackback:ping><description><![CDATA[     摘要: mysql中数据ƈ非ؕ码,而在command line client中ؕ码问题解x法?nbsp; <a href='http://m.tkk7.com/duduli/archive/2008/12/08/245036.html'>阅读全文</a><img src ="http://m.tkk7.com/duduli/aggbug/245036.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/duduli/" target="_blank">duduli</a> 2008-12-08 15:25 <a href="http://m.tkk7.com/duduli/archive/2008/12/08/245036.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql中各Ujoin的笔?/title><link>http://m.tkk7.com/duduli/archive/2008/10/31/237892.html</link><dc:creator>duduli</dc:creator><author>duduli</author><pubDate>Fri, 31 Oct 2008 12:43:00 GMT</pubDate><guid>http://m.tkk7.com/duduli/archive/2008/10/31/237892.html</guid><wfw:comment>http://m.tkk7.com/duduli/comments/237892.html</wfw:comment><comments>http://m.tkk7.com/duduli/archive/2008/10/31/237892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/duduli/comments/commentRss/237892.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/duduli/services/trackbacks/237892.html</trackback:ping><description><![CDATA[     摘要: sql join  <a href='http://m.tkk7.com/duduli/archive/2008/10/31/237892.html'>阅读全文</a><img src ="http://m.tkk7.com/duduli/aggbug/237892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/duduli/" target="_blank">duduli</a> 2008-10-31 20:43 <a href="http://m.tkk7.com/duduli/archive/2008/10/31/237892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oralce, DB2 , sql server , mysql各数据库字段ȝhttp://m.tkk7.com/duduli/archive/2008/10/18/235158.htmlduduliduduliSat, 18 Oct 2008 05:58:00 GMThttp://m.tkk7.com/duduli/archive/2008/10/18/235158.htmlhttp://m.tkk7.com/duduli/comments/235158.htmlhttp://m.tkk7.com/duduli/archive/2008/10/18/235158.html#Feedback0http://m.tkk7.com/duduli/comments/commentRss/235158.htmlhttp://m.tkk7.com/duduli/services/trackbacks/235158.html阅读全文

duduli 2008-10-18 13:58 发表评论
]]>
oracle中大数据存储问题http://m.tkk7.com/duduli/archive/2008/09/13/228753.htmlduduliduduliSat, 13 Sep 2008 10:01:00 GMThttp://m.tkk7.com/duduli/archive/2008/09/13/228753.htmlhttp://m.tkk7.com/duduli/comments/228753.htmlhttp://m.tkk7.com/duduli/archive/2008/09/13/228753.html#Feedback2http://m.tkk7.com/duduli/comments/commentRss/228753.htmlhttp://m.tkk7.com/duduli/services/trackbacks/228753.html 题目是将文本文g录入数据库中?br /> q个题目看似单,其实很难?对于我来说啦)?br /> 自己很少做关于文件操作的题目Q所以感到有点困难?br /> 正如大家认ؓ(f)的那P
无非是ؓ(f)见读写以?qing)数据库的操作Ş了(jin)?br /> 可是大家有没有想q如果数据的字节大于4000怎么办?
用varchar2cd的肯定不行?br /> 在网上查到关于大数据存储用clobcd的?br /> 我尝试着用clobcd的?br /> 但是clobcd该怎么使用呢?
以前׃来没遇到q的?br /> ȝ(ch)~~?br /> 现在卡在q了(jin)?br /> 下次做好?br /> 把源代码一起弄上来

duduli 2008-09-13 18:01 发表评论
]]>
վ֩ģ壺 ĻسƷ޸| һ| AVһլɫӰ| ƵַѲ| AV֮պƷ| ҹѹѵ| Ļѹۿ| Ůվ| 椸Ƶ| ޹AVһ| ҹڵ| ˿ҳ | һƬaѲſ| žžAVƬ| Ļ˾ƷAV| Ƶվ| Ƭѹۿ| ˳Ƶ߲| һۿ| ƷѴƬ| ޴ɫ߹ۿ| Ѱββ8x| 弶18ѿ| պĻһ| ƷԺ| ˳վɫ7799| VAۺVAVA| þѾƷһ| һƵ| AV֮պƷ| þ߿߿| ŮƷĻ| þþþרav| 51ƵƷȫ| þAV| 2048޾Ʒ| ѿٶ޵վ| һձƵѹۿ| ٸ36P| һëƬ߲Ųշ| ձһ|