ORA-01795, limit on in clause

遇到问题: 实施过程中 oracle 报错 ORA-01795, limit on in clause, 发现是SQL IN 语句中的条件从ZZ表中拼接而成。 SELECT * FROM T1 WHERE T1.VAL in ('1111', '2222', ... more than 1000 here ); 相关调整方案: -- 1 子查询1 SELECT VAL FROM T1 WHERE T1. VAL IN ( SELECT VAL FROM T2 ); -- 2. 子查询2 SELECT VAL FROM ( SELECT DISTINCT VAL FROM T2 ) B WHERE B.VAL=A.VAL -- 3. JOIN SELECT VAL FROM ( SELECT DISTINCT VAL FROM T2 ) B JOIN A ON B.VAL=A.VAL -- 4. EXISTS SELECT VAL FROM T1 A WHERE EXISTS ( SELECT 1 FROM T2 WHERE A.VAL=VAL ); 使用IN还是EXISTS 以下引用oracle ASK TOM 中描述: ...

2019-05-29 · 1 min · 146 words

python多线程方式扫描开放端口

使用python多线程方式扫描某台机器开放端口 import socket import time import threading from queue import Queue socket.setdefaulttimeout(0.25) print_lock = threading.Lock() target = '127.0.0.1' def portscan(port): s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) try: con = s.connect_ex((target,port)) if con == 0: with print_lock: print('port', port, 'is open') con.close() except: pass def threader(): while True: worker = q.get() portscan(worker) q.task_done() q = Queue() startTime = time.time() for x in range(1000): t = threading.Thread(target=threader) t.daemon = True t.start() for worker in range(1,65536): q.put(worker) q.join() print('Time taken:', time.time()-startTime) 参考: ...

2019-05-20 · 1 min · 77 words

查看Linux分区和硬盘空间命令

常用的硬盘分区及空间信息查看命令 lsblk: 列出所有的block设备, 但是只显示大小不显示使用率,还可以显示为挂在的设备 [root@centosgpt grub2]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk ├─sda1 8:1 0 2M 0 part ├─sda2 8:2 0 1G 0 part /boot ├─sda3 8:3 0 59G 0 part │ ├─centos-root 253:0 0 50G 0 lvm / │ ├─centos-swap 253:1 0 4G 0 lvm [SWAP] │ └─centos-home 253:4 0 5G 0 lvm /home ├─sda5 8:5 0 1G 0 part │ └─md0 9:0 0 2G 0 raid5 │ └─raidvg-raidlv 253:2 0 1.5G 0 lvm /srv/raidlvm sdb 8:16 0 20G 0 disk ├─sdb1 8:17 0 1M 0 part ├─sdb2 8:18 0 1G 0 part └─sdb3 8:19 0 19G 0 part └─ubuntu--vg-ubuntu--lv 253:3 0 4G 0 lvm sr0 11:0 1 748M 0 rom blkid 列出设备的属性比如uuid或者使用文件系统类型 ...

2019-05-18 · 3 min · 569 words

shell中的 2>&1

使用说明: strace跟踪应用程序时,有标准输出和错误输出,需要将程序执行的输出标准输出和错误输出重定向到一个日志文件中。 strace ./gethostbyname www.baidu.com > gethostbyname.default.log 2>&1 重定向说明: 在shell命令执行前, 输入,输出可以通过特殊符号设置完成重定向(redirected), 重定向允许命令文件可以复制, 打开,关闭。 复制文件操作符号格式如下 [n]>&word 1. 如果 n没有指定默认为1 (标准输出) 2. 如果word没有指定,重定向报错; 3. 如果word设置 ‘-’ , 文件标识符 n关闭 4. 如果n忽略,word也不是数字或‘-’,标准输入,输出重定向都被重定向到word。 验证: 准备: echo “hello” >txt1 验证: 主要验证一下3,4 3. cat txt1 > cat.log >&- cat: standard output: Bad file descriptor 4. cat txt1 txt2 >&cat.log cat cat.log hello cat: txt2: No such file or directory 参考: GNU Redirections Understanding Shell Script’s idiom: 2>&1

2019-05-11 · 1 min · 71 words

linux 使用chage 设置密码永不过期

 vmware安装的虚拟机, 今天登录忽然提示“You must change your password now and login again!”, 密码过期了, 我登录设置了ssh免密登录, 输入原始密码,输入新密码后解决。修改成功登录后看了下,密码有效期60天。 通过chage 修改应用用户密码永不过期。 weida@vm-134:~$ chage -l weida Last password change : Apr 28, 2019 Password expires : Jun 27, 2019 Password inactive : Jul 07, 2019 Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 60 Number of days of warning before password expires : 7 设置密码永不过期: ...

2019-04-28 · 1 min · 127 words

initramfs 解压方法

最近在学习 鸟哥私房菜第19章,文章在分析Boot Loader 过程中, 提到到了虚拟档案系统(Initial RAM Disk或Initial RAM Filesystem), 1. CentOS7 initramfs CPIO解压方案: 用是cpio分解 initramfs文件, 处理过程如下(以CentOS7 为例): lsinitrd 查看initramfs文件内容;头部说明文档+需要加载内存的核心组件; cpio 算出头部文件占用的block , dd 命令将头部文件跳过, 输出压缩文件; 分解步骤: cpio -i -d --no-absolute-filenames -I /boot/initramfs-3.10.0-862.el7.x86_64.img 输出 26 blocks, 计算获得 512*26=13312bytes dd if=/boot/initramfs-3.10.0-862.el7.x86_64.img of=initramfs.gz bs=13312 skip=1 输出: 1620+1 records in 1620+1 records out 21576502 bytes (22 MB) copied, 0.0304529 s, 709 MB/s 再用gzip,cpio 解压 initramfs.gz。 具体步骤参考鸟哥私房菜 19.3.4 initramfs 的重要性与建立新initramfs 档案 2. 其他方法 google下面有两篇关于解压initramfs文件的文章。 CentOS / RHEL 7 : How to extract initramfs image and edit/view it ...

2019-04-23 · 1 min · 102 words