这是一条颠覆常规的插入方法,一条INSERT语句可以完成向多张表的插入任务。小小地展示一下这种插入方法。
1.创建表T并初始化测试数据,此表作为数据源。
sec@ora10g> create table t (x number(10), y varchar2(10));
sec@ora10g> insert into t values (1,’a’);
sec@ora10g> insert into t values (2,’b’);
sec@ora10g> insert into t values (3,’c’);
sec@ora10g> insert into t values (4,’d’);
sec@ora10g> insert into t values (5,’e’);
sec@ora10g> insert into t values (6,’f’);
sec@ora10g> commit;
2.查看表T的数据
sec@ora10g> select * from t;
X Y
———- ———-
1 a
2 b
3 c
4 d
5 [...]
【数据库】分类文章列表
MySql数据库 使用一条INSERT语句完成多表插入
SQL Server中关于的checkpoint使用说明
在SQL Server中有一个非常重要的命令就是CheckPoint,它主要作用是把缓存中的数据写入mdf文件中。
其实在我们进行insert, update, delete时,数据并没有直接写入数据库对应的mdf文件中,而是写入了缓存里,这有点像电驴,因为过于频繁的写入会使磁盘的寿命大大减小。
从上图可以直观的看出。只有当发生checkpoint时,数据才会被写入mdf数据文件。
checkpoint的语法为:
CHECKPOINT [ checkpoint_duration ],其中checkpoint_duration 是个int类型的整数值且并且必须大于零,单位是秒,表示SQL Server 数据库引擎会在请求的持续时间内尝试执行检查点。如果省略该参数,SQL Server 数据库引擎将自动调整检查点持续时间,以便最大程度地降低对数据库应用程序性能的影响。
导致CheckPoint检查点的事件:
1.在数据库备份之前,数据库引擎会自动执行检查点,以便在备份中包含对数据库页的全部更改。
2.日志的活动部分超出了服务器在 recovery interval 服务器配置选项中指定的时间内可以恢复的大小。
3.日志的 70% 已满,并且数据库处于日志截断模式。
当下列条件都为 TRUE 时,数据库就处于日志截断模式:数据库使用的是简单恢复模式,并且在执行上一条引用数据库的 BACKUP DATABASE 语句后,发生下列事件之一:
在数据库中执行一项最小日志记录大容量复制操作或一条最条小日志记录的 WRITETEXT 语句。
执行一个在数据库中添加或删除文件的 ALTER DATABASE 语句。
4.停止服务器也会在服务器上的每个数据库中发出一个检查点命令。下列停止 SQL Server 的方法将为每个数据库执行检查点:
使用 SQL Server 配置管理器。
使用 SQL Server Management Studio。
使用 SHUTDOWN 语句。
SQL Server中备份文件累积的问题
你创建的每一个备份都是一个备份设备,关于它的细节信息都存储在msdb..backupset表中。一个备份设备可以被存储在单一文件,或是多个文件中。同样,一个文件也可以存储多个备份设备。
所以,假如你每次备份都使用相同的文件名,文件就会一直增长。一个普遍的误解是:如果你每次使用相同的文件名,那旧的备份设备就会被覆盖。但事实却不是这样的。
那我们怎么分辨一个文件中是否包括多个备份设备呢?你可以使用RESTORE HEADONLY命令来实现。
如上图,文件中的所有备份设备都被列了出来。你怎么还原一个指定的备份设备呢?你可以使用FILE参数,如下:
RESTORE DATABASE AdventureWorks FROM DISK = ‘g:\backups\AdventureWorks_full.bak’ WITH FILE = 3
上面的命令是从文件中的第三个备份设备中还原AdventureWorks数据库。
如果你不使用FILE参数会如何呢?SQL Server会使用第一个备份设备来还原数据库。
注意:假如你的用户总是抱怨他们还原的数据库不是他们备份的那个,那就有可能是因为备份文件包含多个备份设备,他们把错的设备还原了。
能不能从一个文件中删除某个指定的备份设备呢?答案是NO。有没有可能总是相使用相同的文件来备份,但是每次都覆盖旧的备份设备,以便使文件总是只包括最新的备份设备呢?这当然可以,只要在备份时使用INIT选项,如下:
BACKUP DATABASE AdventureWorks TO DISK = ‘G:\backups\full\AdventureWorks.bak’ WITH INIT
假如备份设备在创建时使用了EXPIREDATE或是RETAINDAYS选项,那么INIT选项就会在覆盖旧版本的备份设备时发生错误。当备份设备在创建时使用了EXPIREDATE的话,那这个日期之前的备份设备就不能被覆盖。同样,当一个备份设备在创建时使用了RETAINDAYS选项,那就暗示在它创建指定的天数内,它不能被覆盖。假如强行要覆盖备份设备的话,类似的消息会显示如下:
Server: Msg 4030, Level 16, State 1, Line 1
The medium on device ‘e:\temp\testdb.bak’ expires on Jun 23 2008 11:28:50:000PM and cannot be overwritten.
Server: Msg 3013, Level 16, State 1, Line 1
BACKUP LOG is terminating abnormally.
如果你依旧想覆盖那些使用了EXPIREDATE或是RETAINDAYS备份设备的话,可以使用FORMAT选项,如下:
BACKUP [...]
关于Mysql数据库中数据输入问题
关于数据库中数据输入问题
——————-SELECT … INTOOUTFILE 的 LOAD DATA INFILE 的逆操作问题.
一般我们都用insert into table_name values();来给数据表添加记录.这是一种方法. 当然也可以使用mysqlimport实用程序装载数据文件.其实它也是发送local data infile命令到服务器
而在输入大量数据的时候 ,我们可以用load data infile 语法来实现.
之前,我们需要先编辑一个文本文件.录入我们的数据.
load data infile的语法如下:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE ‘file_name.txt’ [REPLACE | IGNORE] INTO TABLE tbl_name
[FIELDS
[TERMINATED BY ' '] (‘ ’为制表符)
[[OPTIONALLY] ENCLOSED BY ”] 说明不包括在任何字符里面.
[ESCAPED BY '\' ] 表明无转义字符
]
[LINES TERMINATED BY '
'] 这也是它的缺省状态了
[IGNORE number LINES]
[(col_name,...)]
注:local关键字没有被指定的时候 ,文件必须在服务器上.而local被指定时,则可以从客户端读取文件.(在 MySQL 3.23.49 和 MySQL [...]
如何在UNIX下自动备份Oracle数据库
相信为数不少的系统治理员天天都在做着同一样的工作——对数据进行备份。一旦哪一天疏忽了,而这一天系统又恰恰发生了故障,需要进行数据恢复,那么此时就无能为力了。假如天天设定一个固定的时间,系统自动进行备份,那该多好啊!下面笔者结合实践经验,谈一谈UNIX环境下Oracle数据库的自动备份,以起到抛砖引玉的作用。
我们计划让数据库在晚上23点做eXPort导出备份,在凌晨2点将备份文件拷贝到磁带上,在凌晨4点将备份文件拷贝到另一台UNIX机器上,为此我们可进行如下操作:
一、导出数据库
export命令将数据库中的数据备份成一个二进制文件,它通常有三种模式:用户模式、表模式和整个数据库模式。本文拟采用用户模式,备份之前,应先建立一个备份目录,以容纳备份文件,比如可建一个/backup目录。接着我们可在UNIX的Oracle目录下(也可以是其它目录)分别建立两个文件ora—backup,tar—backup。需要说明的是,前一个文件需要对Oracle的参数进行初始化,为了方便起见,我们不妨将初始化命令放到一个文件中(文件名姑且定为ora—env),再由第一个文件调用它。
1. ora—env文件对Oracle的参数进行初始化,其内容如下:
ORACLE—HOME=$ORACLE—HOME;export ORACLE—HOME
ORACLE—SID=ora73;export ORACLE—SID
ORACLE—TERM=sun;export ORACLE—TERM
LD—LIBRARY—PATH=$ORACLE—HOME/lib;export LD—LIBRARY—PATH
ORA—NLS32=$ORACLE—HOME/ocommon/nls/admin/data;export ORA—NLS
PATH=.:/usr/ccs/bin:/usr/UCb:$ORACLE—HOME/bin:$PATH;export PATH
DISPLAY=host1:0;export DISPLAY
NLS—LANG=american—america.zhs16cgb231280;export NLS—LANG
2. ora—backup文件对数据库做export导出,导出的文件名可以任意定,本文定为字母“xx”加当天日期,即假如当天日期是12月10号,则导出的文件名为“xx1210.dmp”,以区别于其它日期的备份文件。
ora—backup文件内容:
./oracle/ora—env
#初始化Oracle数据库
rq=′date +″%m%d″ ′
#把当天日期赋予变量rq
rm /backup/
# 清空 /backup目录
exp test/test file=/backup/xx$rq.dmp log=/backup/xx$rq.log
本命令用于在$提示符下,导出test用户的数据(其口令亦为test),导出文件及日志均放在/backup目录下。
二、磁带备份
tar—backup文件将用export命令导出的数据文件拷贝到磁带上。
tar—backup文件内容:
tar rvf /dev/rmt/0n/backup/
本命令可将/backup目录下当天产生的文件备份到磁带上。本文件中,tar命令使用了三个参数,其中r选项表示向磁带上拷入文件而不破坏磁带原来内容,v选项表示在拷贝过程中显示文件信息,f选项后面加上磁带设备名,指定文件向何处拷贝,n选项表示磁带机不倒带。/dev/rmt/0表示UNIX主机第一个磁带驱动器,同理,/dev/rmt/1则表示UNIX主机第二个磁带驱动器,依此类推。
ora—env、ora—backup、tar—backup文件编写完成后,分别使用下述命令:
chmod 755 ora—env
chmod 755 ora—backup
chmod 755 tar—backup
这样,三个文件就都变成了可执行文件。
三、异地备份
我们知道,通常可用FTP命令在两台主机间传输数据,但一般是通过交互方式实现的,即需要手工输入目标主机的IP地址、用户名、口令等。显然,这不符合自动备份的要求。所幸的是,我们可以通过编写一个.netrc的文件来达到目标。这一文件必须命名为.netrc,且必须存放在启动FTP命令的机器上的用户注册目录中,该文件的权限应禁止组内或其它用户进行读访问。这样,当用户使用FTP命令的时候,系统将会在该用户的注册目录中寻找.netrc文件,假如能够寻找到,将会首先执行该文件,否则,会交互式地提示用户输入用户名、口令等。
在使用FTP命令之前,应先在另一台作备份用的UNIX机器上建一目录,以容纳备份文件,本文建的目录是/pub 。需要指出的是,为了加快备份速度,两台主机之间的传输速率应尽可能的高,最好位于同一局域网上。
.netrc文件内容如下:
machine host2
# host2为作备份用的主机名
login oracle
#oracle为备份主机上的一个用户
passWord oracle
#oracle用户的口令为oracle
macdef init
#定义一个名为init的宏,它将在自动注册进程的最后被执行
bin
#文件的传输方式设为二进制
lcd /backup
# 进入本地工作目录/backup
cd /pub
# 进入备份主机目录/pub
mput
# 将/backup目录下的所有文件传输至备份主机
bye
#退出FTP会话进程
.netrc文件编写完成后,使用下述命令:
chmod 600 .netrc
这样,.netrc文件就只能被该用户所访问。
四、启动备份进程
Cron是一个永久进程,它由/etc/rc.local启动执行。Cron检查/var/spool/cron/crontabs/目录中的文件,找到所要执行的任务和执行任务的时间。
Crontab文件的每一行由六个域(minutes、hours、day of month、month、day of week、 command)组成,域之间用空格或Tab分开,其中:
minutes:分钟域,值的范围是0到59
hours:小时域,值的范围是0到23
day of month:日期,值的范围是1到31
month:月份,值的范围是1到12
day of week:星期,值的范围是0到6,星期日值为0
command:所要运行的命令
假如一个域是,表明命令可以在该域所有可能的取值范围内执行。
假如一个域是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行(包括两个数字本身)。
假如一个域是由逗号隔开的一系列值组成的,表明命令可以在这些值组成的范围内执行。
假如日期域和星期域都有值,则这两个域都有效。
现在,我们编写一个文件,用以启动自动备份进程。值得注重的是,该文件只能在Oracle用户名下用crontab -e 命令来编辑,否则将不会被定时执行,文件名定为Oracle,文件将放在/var/spool/cron/crontabs 目录下。编辑完成后,可以在Oracle的$提示符下,用crontab -l命令来查看。
Oracle文件内容:
0 23 /oracle/ora—backup
# 天天23点对数据库执行备份
0 2 /oracle/tar—backup
# 天天2点将文件备份到磁带上
0 4 [...]
Linux操作系统下Oracle主要监控工具介绍
1.top
top命令可实时地显示Linux系统的进程、CPU、内存、负载等的信息。它是我们了解系统整体状态最好的工具。
top命令的运行状态是一个实时的显示过程,我们可在这个界面监控系统运行情况。我们可通过几个按键来控制top命令,如按q可退出top命令状态,按s可输入信息的更新频率等。这些命令可按h帮助键查询。
2.Ps
ps命令可查询系统的进程状态,常用的命令参数是ps -aux,该命令可显示所有用户的进程,如果进程的命令太长,则显示的进程信息会不全。我们可用ps -auxw命令来加长显示,w参数可多加几个,最多可加三个,以显示更长的进程信息。
3.Kill
kill命令可终止进程,后接进程号即可。
4.Free
free可显示系统的内存使用情况。-b、-k、-m三个参数表示以bytes,kilobytes和megabytes为单位显示内存的使用情况。
5.Vmstat
使用vmstat 2 命令可每隔2秒显示一行系统信息,这些信息包括CPU占用效、内存使用情况和磁盘IO等。通过它我们可实时监控系统的资源使用情况,进行系统优化。
6.sar
sar工具可帮我们收集动态的系统信息,它的参数很丰富,功能强大。sar工具的特点是可通过计数器和计数间隔来定期、定量地输出系统状态信息。
7.watch
watch命令可重复执行某个命令,监控命令的执行状态。下面这个命令可让我们监控Z2.log文件的大小变化。
debian:~# watch -n 3 du /home/Jims/zope/log/Z2.log
-n 3表示每隔3秒执行一次du /home/Jims/zope/log/Z2.log。
8.Sysctl
使用sysctl -a可显示所有运行中的内核参数,用sysctl -w fs.file-max=10240 命令可修改fs.file-max内核参数的值,并使参数马上生效。但重启系统后,参数设置会失效,因为命令行只能修改运行中的内核参数。如果我们要把参数设置固定下来,可把内核参数写入/etc/sysctl.conf文件。该文件的格式如下:
# /etc/sysctl.conf – Configuration file for setting system variables
# See sysctl.conf (5) for information.
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core [...]
经典SQL语句收集(ORACLE)
1、经典的查询语句
2、经典的字定义函数
3、经典的与业务相关的存储过程
等等
抛砖引玉:备注本人彩票迷
(有点缺陷)
create or replace function f_ssqrandom(priornum in integer,endnum in integer)
return varchar2
is
v_prior_rand integer :=0;
v_end_rand integer;
v_string string(32000):=’红色球’;
begin
for v in 1..5 loop
for v_count in 1..3 loop
v_prior_rand:=floor(dbms_random.value(1,priornum));
v_end_rand:=v_prior_rand;
< <random>>
v_prior_rand:=floor(dbms_random.value(1,priornum));
if v_prior_rand!=v_end_rand then
v_string:=v_string||’,’||v_prior_rand||’,’||v_end_rand;
else
goto random;
end if;
dbms_output.put_line(v_string);
end loop;
v_string:=v_string||’ 蓝色球, ‘||floor(dbms_random.value(1,endnum))||’ 红色球’;
end loop;
return v_string;
end f_ssqrandom
获取SQL Server元数据的几种方法
元数据 (metadata) 最常见的定义为”有关数据的结构数据”,或者再简单一点就是”关于数据的信息”,日常生活中的图例、图书馆目录卡和名片等都可以看作是元数据。
在Access 2007中保护 Access密码和进行加密
Microsoft Access 2007推出了一个用于存储Access数据库信息的新的文件格式。这个文件格式可以由任何以.ACCDB结尾的文件识别。虽然Microsoft Access2007仍然支持.MDB的文件类型,但是未来的Access将围绕.ACCDB格式来建立