RainbowBridg
===========================================================
mysql如何计算某一天所在周的第一天和最后一天
===========================================================

第一天:
date_add(now(),interval 7-DAYOFweek(now())+1 day)

最后一天:
date_add(now(),interval -DAYOFweek(now())+2 day)

某一天的所在月的第一天:
date_add(date_add(last_day('2008-02-01'),interval 1 day),interval -1 month)

某一天的所在月的最后一天:
last_day('2008-02-01')


rainbowbridg 发表于:2008.10.06 15:29 ::分类: ( mysql学习 ) ::阅读:(6次) :: 评论 (0)
===========================================================
innodb如何查看表空间是否已满
===========================================================

mysql> SHOW TABLE STATUS FROM ginf_db like 'ginf_users_01';
+---------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+-------------------------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
+---------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+-------------------------+
| ginf_users_01 | InnoDB | 10 | Compact | 0 | 0 | 16384 | 0 | 65536 | 0 | NULL | 2008-09-26 15:32:09 | NULL | NULL | utf8_general_ci | NULL | | InnoDB free: 2025472 kB |
+---------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+-------------------------+
1 row in set (0.00 sec)

InnoDB free: 2025472 kB 这部分可以看出该表空间所剩的空间,这个需要监控!


rainbowbridg 发表于:2008.09.26 16:58 ::分类: ( mysql学习 ) ::阅读:(8次) :: 评论 (0)
===========================================================
mysql如何批量update a表的某个值和b表的某个值同步
===========================================================

mysql> create table a (a int,b int);
Query OK, 0 rows affected (0.04 sec)

mysql> create table b (a int,b int);
Query OK, 0 rows affected (0.09 sec)

mysql>
mysql> insert into a values(1,3);
Query OK, 1 row affected (0.00 sec)

mysql> insert into b values(1,4);
Query OK, 1 row affected (0.00 sec)

update a,b set a.b=b.b where a.a=b.a;

http://hi.baidu.com/cmtu_net/blog/item/3290cdfdfb6f671209244d3d.html


rainbowbridg 发表于:2008.09.18 14:43 ::分类: ( mysql学习 ) ::阅读:(14次) :: 评论 (1)
===========================================================
面试问题
===========================================================

1、如何查看oracle rac节点是否存活?

2、gc rc request的问题如何解决?

3、高级复制冲突如何解决?


rainbowbridg 发表于:2008.09.08 09:51 ::分类: ( oracle学习 ) ::阅读:(199次) :: 评论 (1)
===========================================================
perl调用存储过程
===========================================================

PERL DB中的使用说明:

--一般调用方式:

$csr = $db->prepare(q{
BEGIN
PLSQL_EXAMPLE.PROC_NP;
END;
});
$csr->execute;

--带传入参数的调用
my $err_code = -20001;

$csr = $db->prepare(q{
BEGIN
PLSQL_EXAMPLE.PROC_IN(:err_code);
END;
});

$csr->bind_param(":err_code", $err_code);

eval {
$csr->execute;
};

--带传入,输出参数的调用
my $test_num = 5;
my $is_odd;

$csr = $db->prepare(q{
BEGIN
PLSQL_EXAMPLE.PROC_IN_INOUT(:test_num, :is_odd);
END;
});

# The value of $test_num is _copied_ here
$csr->bind_param(":test_num", $test_num);

$csr->bind_param_inout(":is_odd", $is_odd, 1);

# The execute will automagically update the value of $is_odd
$csr->execute;

my $sth=$dbh->prepare("BEGIN key_price_reset(?,?);END;");
$sth->bind_param( 1,$key);
$sth->bind_param_inout( 2, $update, 1000 );
$sth->execute();
这样就可以了,不明白!问题已解决!

rainbowbridg 发表于:2008.09.04 18:59 ::分类: ( mysql学习 ) ::阅读:(16次) :: 评论 (1)
===========================================================
perl 编译问题!
===========================================================
DBI:1.604
DBD::mysql:4.006
安装这2个版本的dbi和dbd,perl能编译!

rainbowbridg 发表于:2008.09.04 13:55 ::分类: ( mysql学习 ) ::阅读:(12次) :: 评论 (1)
===========================================================
mysql如何删除重复值
===========================================================

http://blog.csdn.net/yueliangdao0608/archive/2008/04/19/2306771.aspx

CREATE TABLE `test` (
`id` int(8) unsigned NOT NULL default '0',
`admin_id` int(11) NOT NULL default '0',
`permission_name` varchar(30) NOT NULL default '0',
PRIMARY KEY (`id`)
)

4 4 test
19 680 pcfg
11 684 userrole
17 683 pcfg
102 2 adagent
5 2 test

delete test as a from test as a,
(
select admin_id,permission_name,min(id) as id from test group by admin_id,permission_name having count(*) > 1
) as b
where a.admin_id = b.admin_id and a.permission_name = b.permission_name and a.id > b.id;


rainbowbridg 发表于:2008.08.19 15:20 ::分类: ( mysql学习 ) ::阅读:(32次) :: 评论 (1)
===========================================================
linux和solaris下的时间计算
===========================================================
在Linux系统中,可以采用如下方法:

1) 取之前的时间:

date -d "a day ago" +%Y%m%d 取出前1天的系统时间

date -d "2 days ago" +%Y%m%d 取出前2天的系统时间
2) 取之后的时间:

date -d "a day " +%Y%m%d 取出1天后的系统时间

date -d "2 days" +%Y%m%d 取出2天后的系统时间

在Solaris中,可以采用如下方法:

1)取之前的时间:yesterday=`TZ=$TZ+3; date +%Y%m%d`; echo $yesterday 取出前1天的系统时间
yesterday=`TZ=$TZ+27; date +%Y%m%d`; echo $yesterday 取出前2天的系统时间
2)取之后的时间:yesterday=`TZ=$TZ-22; date +%Y%m%d`; echo $yesterday 取出后1天的系统时间
yesterday=`TZ=$TZ-46; date +%Y%m%d`; echo $yesterday 取出后1天的系统时间
注意:

1)不能在命令行中直接执行TZ=$TZ-100; date +%Y%m%d,这样会修改当前terminal中的TZ和系统时间。
2)TZ=$TZ+3 需要加减多少小时才是前/后一天,和系统的$TZ有关。以上运算是在$TZ=PRC下进行的。

rainbowbridg 发表于:2008.08.06 14:58 ::分类: ( Linux学习 ) ::阅读:(40次) :: 评论 (1)
===========================================================
Mysql的error while loading shared libraries解决方法
===========================================================
找不到mysql的动态链接库,解决方法更新动态链接库文件如下
编辑/etc/profile
加入export MYSQL_PATH=/usr/local/mysql
在shell下执行
#echo '$MYSQL_PATH/lib/mysql' >> /etc/ld.so.conf
#ldconfig
将 libmysqlclient_r.so.16 和 libmysqlclient_r.so.16 拷贝到 /usr/lib下,然后ldconfig

rainbowbridg 发表于:2008.08.06 13:57 ::分类: ( mysql学习 ) ::阅读:(40次) :: 评论 (2)
===========================================================
数据升级到5.1所遇到的问题
===========================================================

这回数据库升级遇到了一下问题:

我们的数据库原来是mysql3.23.58想升级到5.1,因为这是大版本的升级,不能使用tar之类的来移植,所以只能用mysqldump来做,但出现了下面的问题

一. 字符集问题

由于3.23还不能设置表的字符集,但是升级到5.1要设为utf8,我用mysqldump导出数据后倒入,发现数据为乱码,找了很多资料发现要什么icov来转换什么的,后来发现需要设置几个参数就可以,参数如下:

mysql服务器启动时需要设置utf8的环境

my.inf

[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
default-collation=utf8_general_ci

然后倒入数据,发现数据显示正确

二. 作为客户端连接mysql数据库时,将字符集设置成utf8
建立连接后,先执行以下语句:

SET NAMES utf8;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;

每次数据库重连,以上语句需要重设
修改 includes/database.php 文件:
查找
CODE:[Copy to clipboard]$this->_table_prefix = $table_prefix;
在该行代码下面添加以下三行代码:
CODE:[Copy to clipboard]mysql_query("SET NAMES 'utf8'", $this->_resource);

CODE:[Copy to clipboard]mysql_query("SET CHARACTER SET utf8", $this->_resource);

CODE:[Copy to clipboard]mysql_query("SET COLLATION_CONNECTION='utf8_general_ci'", $this->_resource);

http://www.hackhome.com/InfoView/Article_151991_2.html

二. 安装的问题

由于我安装的时候希望数据文件和软件分离到不同的路径,所以在configure时加了datadir和localstatedir,但是由于这2个参数不一致,发现后面bin/mysql_install_db --user=mysql 会去找localstatedir指定的目录,但是2个路径不一致,发现始终都有问题,后将2个参数的路径改为一样就可以了

 查看全文

rainbowbridg 发表于:2008.07.18 17:01 ::分类: ( mysql学习 ) ::阅读:(26次) :: 评论 (0)
===========================================================
如何在建表的时候指定当前时间为缺省时间
===========================================================

CREATE TABLE test(
id int NOT NULL AUTO_INCREMENT,
name varchar(20) NULL,
reg_time timestamp DEFAULT now(),
primary key(id)
);

CREATE TABLE test(
id int NOT NULL AUTO_INCREMENT,
name varchar(20) NULL,
reg_time timestamp DEFAULT CURRENT_TIMESTAMP,
primary key(id)
);

这2种方法都是可以的!


rainbowbridg 发表于:2008.07.18 15:09 ::分类: ( mysql学习 ) ::阅读:(17次) :: 评论 (0)
===========================================================
vmwar for sloaris共享磁盘设置
===========================================================

disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"

scsi(X).sharedBus = "virtual"

http://bbs.vmware.cn/thread-8409-1-1.html

1. 创建共享磁盘柜
在虚拟机软件的安装目录下,有个vmware-vdiskmanager.exe文件(老版本用plainmaker.exe),把它复制到共享磁盘柜目录下,创建共享磁盘(老版本共享磁盘文件的扩展名为.pln)
F:虚拟机共享磁盘柜>vmware-vdiskmanager.exe -c -s 200Mb -a lsilogic -t 2 quorum.vmdk
F:虚拟机共享磁盘柜>vmware-vdiskmanager.exe -c -s 4Gb -a lsilogic -t 0 sharedisk.vmdk
[color=Blue]-t 2的意思是预分配磁盘空间,可以用-t 0选项,这样就不会占用空间了,实际用多少就多少[/color]
创建完毕后,目录下有四个新文件
quorum-flat.vmdk
quorum.vmdk
sharedisk-flat.vmdk
sharedisk.vmdk
2. 配置虚拟机
在虚拟机器界面选择“Edit virtual machine settings”à添加硬盘,选“Use a existing virtual disk”,分别添加quorum.vmdk、sharedisk.vmdk
[attach]245001[/attach][indent][/indent]

双击新加的磁盘,在弹出的磁盘属性窗选“advance”,为新加的硬盘选择虚拟设备节点:quorum.vmdk选订“SCSI 0:1”, sharedisk.vmdk选定“SCSI 1:1”。如图所示:
[attach]245002[/attach][indent][/indent]

分别打开两台虚拟机目录中的vmx文件,在最后一行添加:
disk.locking="FALSE"
scsi0:1.SharedBus="Virtual"
scsi1:1.SharedBus="Virtual"

3. 配置Solaris10操作系统
启动两台虚拟机(主机名分别为clustera,clusterb)
a. [color=Blue][b]在clustera[/b][/color]运行以下命令:
clustera# devfsadm
clustera# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c1t0d0 <DEFAULT cyl 4092 alt 2 hd 128 sec 32>
/pci@0,0/pci1000,30@10/sd@0,0
1. c1t1d0 <DEFAULT cyl 196 alt 2 hd 64 sec 32>
/pci@0,0/pci1000,30@10/sd@1,0
2. c2t1d0 <DEFAULT cyl 2044 alt 2 hd 128 sec 32>
/pci@0,0/pci15ad,790@11/pci1000,30@2/sd@1,0
对disk 1和disk 2分别执行fdisk操作,创建100% solaris分区。然后再执行以下操作
# newfs /dev/rdsk/c2t1d0s2
# mkdir /oracle
# mount /dev/dsk/c2t1d0s2 /oracle
# touch /oracle/first.txt
b. [b][color=Blue]在另外一台[/color][/b]虚拟机clusterb运行以下命令
clusterb# devfsadm
clusterb# mkdir /oracle
clusterb# mount /dev/dsk/c2t1d0s2 /oracle
clusterb# ls /oracle
first.txt lost+found
在clusterb上可以访问在clustera上创建的文件,共享磁盘创建完毕,剩下的就是安装CLUSTER软件了,希望对大家有所帮助。

http://bbs.chinaunix.net/archiver/tid-926561.html

 查看全文
rainbowbridg 发表于:2008.07.11 13:45 ::分类: ( Solaris学习 ) ::阅读:(21次) :: 评论 (1)
===========================================================
expdp的问题
===========================================================

今天使用expdp来备份数据发现了一些问题(10.1.0.2 on solaris10):

1。DBMS_DM_MODEL_EXP:schema_callout: DM models not found in schema IMPS

发现dmsys用户被锁了,解开该用户,然后没出现这个问题

2. ORA-06512: at "SYS.DBMS_METADATA", line 5339
ORA-39127: unexpected error from call to status := SYS.DBMS_JAVA.START_EXPORT('chkSpecNumber','IMPS',0,29,...)
ORA-01031: insufficient privileges

这个需要打补丁:3470641

因为有java存储过程在里面,不能备份,打上补丁才能

3。exclude和include的语法问题

expdp scott/tiger directory=dumpdir dumpfile=scott.dmp exclude=TABLE:"IN ('SMSMSG','USERS')" logfile=scott.log schemas=scott

请注意我的exclude后面跟的东东:

TABLE:"IN ('SMSMSG')"

凡是

"
(
'
,
)

都要使用转义字符才能备份成功,但是expdp -help的帮助却是:

exclude=table:tablename1,tablename2

使用的时候会出现问题!

需要注意!!


rainbowbridg 发表于:2008.06.24 16:02 ::分类: ( oracle备份 ) ::阅读:(31次) :: 评论 (0)
===========================================================
Linux iptables应用手册
===========================================================
http://hi.baidu.com/tiandi921/blog/item/1da5a2002f582c12738b6513.html
rainbowbridg 发表于:2008.06.23 13:15 ::分类: ( Linux学习 ) ::阅读:(25次) :: 评论 (0)
===========================================================
mysql类似merge的操作
===========================================================

mysql> truncate `200702`;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from `200702`;
Empty set (0.01 sec)

mysql> insert into `200702` (`domain`, `2nd_domain`, `tld`, `query_ns1`, `query_ns2`, `report_date`) values ('dnspod.com', 'dnspod', 'com', 1000, 2000, '2007-02-04') ON DUPLICATE KEY UPDATE `query_ns1` = `query_ns1` + 1000, `query_ns2` = `query_ns2` + 2000;
Query OK, 1 row affected (0.00 sec)

mysql> select * from `200702`;
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+
| id | domain | 2nd_domain | tld | query_ns1 | query_ns2 | query_ns3 | query_ns4 | report_date |
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+
| 1 | dnspod.com | dnspod | com | 1000 | 2000 | 0 | 0 | 2007-02-04 |
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+
1 row in set (0.00 sec)

mysql> insert into `200702` (`domain`, `2nd_domain`, `tld`, `query_ns1`, `query_ns2`, `report_date`) values ('dnspod.com', 'dnspod', 'com', 1000, 2000, '2007-02-04') ON DUPLICATE KEY UPDATE `query_ns1` = `query_ns1` + 1000, `query_ns2` = `query_ns2` + 2000;
Query OK, 2 rows affected (0.01 sec)

mysql> select * from `200702`;
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+
| id | domain | 2nd_domain | tld | query_ns1 | query_ns2 | query_ns3 | query_ns4 | report_date |
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+
| 1 | dnspod.com | dnspod | com | 2000 | 4000 | 0 | 0 | 2007-02-04 |
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+
1 row in set (0.01 sec)

mysql>

当然,建表的时候,千万别忘记了给domain做一个unique
UNIQUE KEY `domain` (`domain`,`report_date`)

ref:http://hi.baidu.com/digibread/blog/item/c359d017afb01e0bc83d6d14.html


rainbowbridg 发表于:2008.05.28 14:00 ::分类: ( mysql学习 ) ::阅读:(58次) :: 评论 (0)
切换风格
新闻聚合
博客日历
文章归档...
最新发表...
博客统计...
Blog信息
网站链接...