作者归档:鸡鸡哥的聪明伶俐的儿子

关于鸡鸡哥的聪明伶俐的儿子

嗜抽烟,嗜吃肉,常睡觉晚起,熬夜,看新闻,喜体育栏目,会操作电脑,会操作服务器,能做些别人不屑于做的事情。厌做饭,恶洗碗,不洗澡,不刷牙,不剃胡须,不喜逛超市,重压之下偶去之,无上进心,无恒心,无毅力。 1988-1998年,虚度人生 2001-2013年,懵懵懂懂忽然就有孩子有老婆有,匆匆间父亲去世,匆匆半个人生没有了 2013- 知道自己需要什么,知道自己该做什么,知道自己的是个什么样的人,重新上路,明明白白活自己。 ------鸡鸡哥 2013.02.28 老了,以后得改称老鸡鸡哥了,继续努力吧 -----鸡鸡哥 20150517

oracle的adg中的物理standby和逻辑standby

ORACLE的redo日志中存放的是数据变化向量,非SQL语句。

一、物理standby
物理standby是通过接收并应用primary数据库的redo log以介质恢复的方式(Redo Apply)实现同步。

优点:
1) 可保证standby和primary物理级别上的完全一致性,不丢失数据;
2) 效率高,因为是使用最底层的块级别上的复制。
缺点:
1) 在与primary同步时,standby不能open,无法分担primary上的负载。
11G后,可以同步的同时开启standby库用于查询。(ADG)

二、逻辑standby
逻辑standby是通过接收primary数据库的redo log并转换成sql语句,然后在standby数据库上执行SQL语句(SQL Apply)实现同步。

优点:
1) 在与primary同步时,standby处于open状态(read write),可分担primary上部分的查询和报表服务。
缺点:
1) standby和primary的物理结构不一致,且对某些数据和SQL语句有限制。
2) 效率较低,因为是执行SQL语句。

自己写的一个防止采集或CC或大量恶意访问的脚本

自己写的一个防止采集或CC或大量恶意访问的脚本

通过日志筛选ip

[root@xxxxx-web sh]# cat firewall_cron.sh
#!/bin/bash
#added by eugene@jjger.com —20240310

#定义脚本处理的ip文件,每天清理一次
firewall_cron_log=’/home/sh/firewall_cron.log’

#定义网站日志文件
logpath=’/data/log/nginx/access/’

arr_line=()
i=0

#while read line
#do
# arr_line[$i]=$line
# i=`expr $i + 1`
#done < $firewall_cron_log
#
#echo ${arr_line[*]}

while read line
do
if [ -z $ips ];then
ips=$line
else
ips=”$ips|$line”
fi
done < $firewall_cron_log

#echo $ips

#查找日志文件中的ip,$ips是已处理过的日志访问ip
if [ -z $ips ];then
max_visit=`grep -v ‘Googlebot’ $logpath/weblog.log | grep -v ‘baidu’ | grep -v ‘127.0.0.1’ |awk ‘{print $2}’ | sort -n | uniq -c | sort -n | tail -n 1`
else
max_visit=`grep -v ‘Googlebot’ $logpath/weblog.log | grep -v ‘baidu’ | grep -v ‘127.0.0.1’ | egrep -v $ips | awk ‘{print $2}’ | sort -n | uniq -c | sort -n | tail -n 1`
fi
#echo $?

#查看筛选出的ip,可注销下面这一行echo
echo $max_visit
#转化成数组后处理,默认处理5个,但后续更改为只处理一个ip,按计划任务轮训处理.
arr_max_visit=($max_visit)

if [ ${arr_max_visit[0]} -gt 2000 ]; then
iptables -L -n -v | grep ${arr_max_visit[1]}
if [ $? -eq 1 ];then
iptables -I INPUT -p tcp -s ${arr_max_visit[1]} -j DROP
echo ${arr_max_visit[1]} >> firewall_cron.log
fi
fi
exit
if [ ${arr_max_visit[2]} -gt 2000 ]; then
iptables -I INPUT -p tcp -s ${arr_max_visit[3]} -j DROP
fi
if [ ${arr_max_visit[4]} -gt 2000 ]; then
iptables -I INPUT -p tcp -s ${arr_max_visit[5]} -j DROP
fi
if [ ${arr_max_visit[6]} -gt 2000 ]; then
iptables -I INPUT -p tcp -s ${arr_max_visit[7]} -j DROP
fi
if [ ${arr_max_visit[8]} -gt 2000 ]; then
iptables -I INPUT -p tcp -s ${arr_max_visit[9]} -j DROP
fi

 

Linux的t权限位说明

程序的t属性表示粘着位,即告诉系统在程序完成后在内存中保存一份运行程序的备份,如该程序常用,可为系统 节省点时间,不用每次从磁盘加载到内存。由本人注明:是保存在虚拟内存中,而不是物理内存中。
目录的t属性,设置了目录的T属性后1000,由只有该目录的所有者及root才能删除该目录,
如/tmp目录就是drwxrwxrwt。

dmsetup命令详解

dmsetup命令详解

dmsetup命令是用于操纵设备映射的命令行工具,它可以用于创建、修改和删除设备映射。下面是dmsetup命令的详细说明:

1. 创建设备映射:使用dmsetup create命令可以创建一个设备映射。语法如下:
“`
dmsetup create <device name> [–table <table string>]
“`
– `<device name>`:要创建的设备映射的名称。
– `<table string>`:设备映射的配置表,可以使用线性、条带化、快照等不同的表类型来定义设备映射的行为。

2. 修改设备映射:使用dmsetup load命令可以修改一个已经创建的设备映射的配置表。语法如下:
“`
dmsetup load <device name> [–table <table string>]
“`
– `<device name>`:要修改的设备映射的名称。
– `<table string>`:新的配置表,用于替换原有的配置表。

3. 删除设备映射:使用dmsetup remove命令可以删除一个已经创建的设备映射。语法如下:
“`
dmsetup remove <device name>
“`
– `<device name>`:要删除的设备映射的名称。

4. 列出设备映射:使用dmsetup ls命令可以列出当前系统中所有已经创建的设备映射。语法如下:
“`
dmsetup ls [–tree]
“`
– `–tree`:以树形结构显示设备映射。

5. 查看设备映射的信息:使用dmsetup info命令可以查看指定设备映射的详细信息。语法如下:
“`
dmsetup info <device name>
“`
– `<device name>`:要查看的设备映射的名称。

6. 映射块设备:使用dmsetup map命令可以将一个块设备映射到一个设备映射。语法如下:
“`
dmsetup map <device name>
“`
– `<device name>`:要映射的设备映射的名称。

7. 解除映射块设备:使用dmsetup unmap命令可以解除一个块设备的映射关系。语法如下:
“`
dmsetup unmap <device name>
“`
– `<device name>`:要解除映射的设备映射的名称。

总结:dmsetup命令是Linux系统中用于操作设备映射的命令行工具,可以创建、修改和删除设备映射,以及查看设备映射的信息。

oracle 的块,区,段

1. 段区块是 Oracle 数据库的逻辑上的概念。块属于区,区属于段

2. Oracle 在创建表时,会分配一个段来装这个表。可以理解为一个表就是一个段。

3. 第 2 点说的不够准确。实际上, Oracle 在创建空表,在没有添加数据时,是不分配逻辑结构的(为了节省更多的空间),只有在添加数据的时候才会分配逻辑结构。当然,一个表还是一个段。

4. 区是由很多个连续的块组成。 Oracle 在创建好表,添加数据时,会产生一个新的区, Oracle 会往这些新的区中添加数据,这些区由很多个块组成。当这个区用完之后,会接着产生下一个区。

5. 块的大小默认是 8k, 可以修改。

6. Oracle 数据库是由很多个表组成,表又是由很多数据行来组成。

7. 每个块中会有多个数据行,一个数据行通常只能在一个块中。因为一个块是 8k, 一行数据肯定远小于这个数值,所以一个块可以装很多数据,够装了。

8. 块是 Oracle I/O 的最小单位。 I/O 是指从磁盘到内存的过程。数据是存放在磁盘上的。所以通常我们检索一行数据, Oracle 在磁盘中,不可能只调取一行数据,最少是调取一个块,也就是 8k 。比如我要读取的一行数据大小为 100 字节,但是 Oracle 每次读这行数据时,都会读取它所在的块,也就是 8k.

oracle的savepoint和OCP

一、基本概念

保存点savepoint是事务中的一点,通过rollback可以返回到某个保存点。一个事务中可以有多个保存点。一旦事务提交,该事务中的保存点会自动被删除,那么无论刚才做了多少个保存点,都统统没有了。

SQL> savepoint sp;

Savepoint created

SQL> delete from mytable;

15 rows deleted

SQL> rollback to sp;

Rollback complete

SQL> select count(*) from mytable;

COUNT(*)
———-
15

删除操作就被回退了。

 

二、详解

事务的几个重要操作
1 设置保存点 savepoint a
2 取消部分事务 rollback to a
3 取消全部事务 rollback
若执行SQL> commit;提交操作,则该事务中所有保存点都不存在了。如果没有手动执行commit而是exit会自动提交。

oracle的闪回区

闪回恢复区是为Oracle 数据库中所有与恢复相关的文件和活动提供的一个统一的存储位置。 将数据库从介质故障中完全恢复过来所需的全部文件都位于闪回恢复区中。 可以在闪回恢复区中创建的与恢复相关的文件包括:存档重做日志文件、控制文件、由Recovery Manager (RMAN) 创建的备份、闪回日志和更改跟踪文件。