方式一: lsb_release -a
如果显示未找到命令使用命令安装:yum install -y redhat-lsb
方式二:cat /etc/redhat-release (适用于RedHat、CentOS)
方式三:cat /etc/issue

查看防火墙状态 :firewall-cmd --state
注:running——开启,not running ——关闭
开启防火墙:systemctl start firewalld.service
关闭防火墙:systemctl stop firewalld.service
关闭开机启动:systemctl disable firewalld.service
开启开机启动:systemctl enable firewalld.service
service方式:
查看防火墙状态:service iptables status
开启防火墙:service iptables start
关闭防火墙: service iptables stop
iptables方式:
先进入init.d目录,命令如下:
[root@centos6 ~]# cd /etc/init.d/ [root@centos6 init.d]#
查看防火墙状态:
[root@centos6 init.d]# /etc/init.d/iptables status
暂时关闭防火墙:
[root@centos6 init.d]# /etc/init.d/iptables stop
重启iptables:
[root@centos6 init.d]# /etc/init.d/iptables restart
sync && echo '1' > /proc/sys/vm/drop_caches
sync && echo '2' > /proc/sys/vm/drop_caches
sync && echo '3' > /proc/sys/vm/drop_caches
sync: 将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。否则在释放缓存的过程中,可能会丢失未保存的文件
0 – 不释放
1 – 释放页缓存
2 – 释放dentries和inodes
3 – 释放所有缓存
将日志文件中的某个时间段的日志输出到新的文件
sed -n '/2019-04-22 16:10:/,/2019-04-22 16:20:/p' log.log > bbb.txt
查找某个日志文件中关键字的前后多少行
cat filename | grep 关键字 -C10 -C:显示前后多少行 -A:显示后多少行 -B:显示前多少行
-- 查看端口情况
netstat -tnulp | grep 26379
-- linux 查看端口占用情况
netstat -anp | grep 80
-- 当前环境已经使用了的端口信息
netstat -nultp
-- 未找到该命令使用下面的安装
yum -y install net-tools
#linux定时任务:
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看crontab服务状态
#安装crond
yum -y install vixie-cron yum -y install crontabs
#加入开机启动
chkconfig –level 345 crond on
#重启rsyslog
#重启cronlog(没有日志输出用这个)
sudo service rsyslog restart
日志位置: /var/log/cronXXX
#查看任务
crontab -l
#编辑任务
crontab -e
命令时间格式 : * * * * * command 分 时 日 月 周
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列表示月份1~12 第5列标识号星期0~6(0表示星期天) 第6列要运行的命令
一些Crontab定时任务例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart #每晚的21:30 重启apache
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart #每月1、10、22日的4 : 45重启apache
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart #每周六、周日的1 : 10重启apache
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart #每天18 : 00至23 : 00之间每隔30分钟重启apache
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart #每星期六的11 : 00 pm重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart #晚上11点到早上7点之间,每隔一小时重启apache
* */1 * * * /usr/local/etc/rc.d/lighttpd restart #每一小时重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart #每月的4号与每周一到周三的11点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart #一月一号的4点重启apache
*/30 * * * * /usr/sbin/ntpdate cn.pool.ntp.org #每半小时同步一下时间
0 */2 * * * /sbin/service httpd restart #每两个小时重启一次apache
50 7 * * * /sbin/service sshd start #每天7:50开启ssh服务
50 22 * * * /sbin/service sshd stop #每天22:50关闭ssh服务
0 0 1,15 * * fsck /home #每月1号和15号检查/home 磁盘
1 * * * * /home/bruce/backup #每小时的第一分执行/home/bruce/backup这个文件
00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \; #每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
30 6 */10 * * ls #每月的1、11、21、31日是的6:30执行一次ls命令
# 查看挂载配置文件
cat /etc/fstab
# 重新挂载配置文件中的所有挂载
mount -a
# 手动挂载
mount -t nfs 192.168.0.3:/u01/upload /u01/upload
# 查看共享信息
shoumount -e ip
# 设置配置文件生效
exportfs -r
#检查NFS服务是否向rpc注册端口信息
rpcinfo -p localhost
# 安装时间同步软件
yum install -y ntp
# 选择主服务器地址,设为基准时间服务器
00 23 * * * /sbin/ntpdate 主ip
#同步网络服务器NTP时间
ntpdate -u cn.pool.ntp.org
#同步网络服务器NTP时间
ntpdate -u ntp1.aliyun.com 阿里云NTP服务器
ulimit -a 查看文件句柄 查看进程被限制使用的资源
vim /etc/security/limits.conf
# 添加如下的内容
* soft nproc 11000
* hard nproc 11000
* soft nofile 65535
* hard nofile 65535
修改完重启服务器
1、输入命令: id ,查看登录用户信息;
2、若修改root自己的密码,直接输入 passwd . 输入两遍,新密码即可;
3、若修改其他用户,如oracle的密码,可直接输入passwd oracle,输入两遍性新密码即可;这样既可修改成功;
ll | awk '{split($9,a,".");print a[1]}' | xargs -i mv {}.PDF {}.pdf
#删除20天前的日志
方法一:在“/etc/rc.local”文件中添加自启动命令“/usr/./hello.sh”或“cd /opt && ./hello.sh”。

netstat -anp 显示所有已开放端口
netstat -tunlp 列出正在侦听的所有 TCP 或 UDP 端口,包括使用端口和套接字状态的服务,
netstat -an 查看哪些IP连接本机
查看TCP连接数
1)统计80端口连接数
netstat -nat|grep -i "80"|wc -l
2)统计httpd协议连接数
ps -ef|grep httpd|wc -l
3)、统计已连接上的,状态为“established
netstat -na|grep ESTABLISHED|wc -l
4)、查出哪个IP地址连接最多,将其封了.
netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n
netstat -na|grep SYN|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n
TCP连接状态详解
LISTEN: 侦听来自远方的TCP端口的连接请求
SYN-SENT: 再发送连接请求后等待匹配的连接请求
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED: 代表一个打开的连接
FIN-WAIT-1: 等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2: 从远程TCP等待连接中断请求
CLOSE-WAIT: 等待从本地用户发来的连接中断请求
CLOSING: 等待远程TCP对连接中断的确认
LAST-ACK: 等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT: 等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED: 没有任何连接状态
ps -ef | grep java | grep -v grep | awk '{print $2}' | xargs kill -9
启动docker: systemctl start docker
停止docker: systemctl stop docker
重启docker: systemctl restart docker
查看docker状态: systemctl status docker
开机启动: systemctl enable docker
查看docker概要信息: docker info
查看docker总体帮助文档: docker --help
列出主机上得镜像:docker images
-a :列出本地所有的镜像(含历史映像层)
-q :只显示镜像ID。
查找镜像:docker search 某个XXX镜像名字
--limit : 只列出N个镜像,默认25个
例:docker search --limit 5 redis
查看镜像状态:docker ps
查看镜像/容器/数据卷所占的空间:docker system df
日志查看语法:
docker logs [OPTIONS] CONTAINER
OPTIONS说明:
-f : 跟踪日志输出
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志
查看日志命令:docker logs -f 容器ID
实时查看最后500条日志:docker logs -f --tail=500 容器ID
查看最近30分钟的日志:docker logs --since 30m 容器ID
查看某时间之后的日志的最新500条日志:docker logs --since="2021-11-30" --tail=500 容器ID
查看某时间之后的日志:docker logs -t --since="2021-11-30T00:00:00" 容器ID
查看某时间段日志:docker logs -t --since="2021-11-30T00:00:00" --until "2021-12-30T00:00:00" 容器ID
# 导出镜像到文件中
$ docker save -o nginx-alpine.tar nginx:alpine
# 导入镜像
$ docker load -i nginx-alpine.tar
#安装vim命令
apt-get install -y vim
#安装telnet命令
apt-get install -y telnet
#安装ifconfig命令
apt-get install -y net-tools
#安装ping命令
apt-get install -y iputils-ping
#安装curl命令
apt install -y curl
-- 删除指定镜像
docker rmi --force [-f] $(docker images | grep tarzan-mes | grep "7 months"| awk '{print $3}')
-- 删除没有打标签的镜像
docker rmi [-f] $(docker images -q | awk '/^<none>/ { print $3 }')
--删除所有镜像
docker rmi [-f] $(docker images -qa)
这类无标签镜像也被称为 虚悬镜像(dangling image) ,可以用下面的命令专门显示这类镜像:
docker image ls -f dangling=true
一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除。
docker rmi $(docker images -q -f dangling=true)
docker build . -t hzero-register:v200 -f ./../src/main/docker/Dockerfile
docker tag hzero-register:v200 k8s1.cluster.local:5000/hzero-register:v200
docker push k8s1.cluster.local:5000/hzero-register:v200
# 进入容器内部
docker exec -it 容器ID /bin/bash
docker exec -it 容器ID redis-cli
# 将容器内部文件cp到宿主机
docker cp 容器ID:容器内路径 目的主机路径
* 0 * * * docker image prune -a --force --filter "until=120h" >> /tmp/clear.log
我们可以先执行 kubectl get pod -n namespace (namespace 填写想要进入的 pod 所在的命名空间)来进行查看当前命名空间上部署的 pod
然后执行: kubectl exec -it podName -n namespace -- /bin/sh 命令,即可进入部署的 pod!
kubectl exec:在容器中执行命令(可以阅读 k8s 参考文档来进行 kubectl 一些命令学习podName:想要进入的 pod 的名字,上一个步骤查看中会列举出来namespace:pod 对应的命名空间-it:-i(将控制台输入发送到容器)和 -t(将标准输入控制台作为容器的控制台输入)结合bin/sh:一个 shell command
查看某个pod上一个版本日志:kubectl logs -p -n mes-pro tarzan-mes-6bd4bf5b79-xmkgk
查看pod上次退出详细:kubectl describe pod tarzan-mes-864bcbcd46-gw5zm -n mes-pro
k8s节点安装arthas :
kubectl -n uat exec mes-interface-7bbf6d64c9-88dhw -- wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar 1
备注:最后的1是进程号
将pod中的日志复制到宿主机
kubectl exec -n service tarzan-mes-c75587bfc-jpjp9 -- tar cf - data/tarzan/mes/tarzan-mes-2022-05-15.0.log | tar xf - -C /tmp
apt update
apt install telnet
apt-get install telnet -y
--查看所有pod
kubectl get po -A
--查看所有nodes
kubectl get nodes
--查看所有pod的ip网段
kubectl get pod -A -o wide
--查看nodes状态
kubectl describe nodes wmsdevelapp
kubectl describe po xxx
-- 查看事件
kubectl get events -A
kubectl scale deployment -n mes admin --replicas=0
kubectl scale deployment -n mes admin --replicas=2
备注 :replicas后面的数字代表几个pod
kubectl exec -it [NAME] -n [NAMESPACE] -- /bin/bash
例:
kubectl exec -n service tarzan-mes-744565d544-sx978 -- tar cf - /data/tarzan/mes/tarzan-mes.log | tar xf - -C /tmp
退出代码 0:一般为容器正常退出
退出代码 1:由于容器中 pid 为 1 的进程错误而失败
退出代码 137:由于容器收到 SIGKILL 信号而失败(手动执行或“oom-killer” [OUT-OF-MEMORY])
= 退出代码 139:由于容器收到 SIGSEGV 信号而失败
退出代码 143:由于容器收到 SIGTERM 信号而失败
网上对137的解释:一般为pod容器内存达到资源限制(resources.limits)或者宿主机本身内存不够了。
我们知道,oom被kill是可以在系统日志里看到的:
ubuntu 的系统日志在 /var/log/syslog,centos 的系统日志在 /var/log/messages
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
SELECT * FROM information_schema.INNODB_TRX;
select * from information_schema.`PROCESSLIST`(show processlist;)
kill 线程id
show status like 'innodb_row_lock%';
对于各个状态说明如下:
Innodb_row_lock_current_waits:当前正在等待锁的数量;
Innodb_row_lock_time:从系统启动到现在锁定总时间长度;
Innodb_row_lock_time_avg:每次等待所花平均时间;
Innodb_row_lock_time_max:从系统启动到现在等待最长的一次所花的时间长度;
Innodb_row_lock_waits:系统启动到现在总共等待的次数;
对于这5个状态变量,比较重要的是:
Innodb_row_lock_time_avg,Innodb_row_lock_waits,Innodb_row_lock_time。
尤其是当等待次数很高,而且每次等待时长也很大的时候,我们就要分析系统中为什么有这么多的等待,然后根据分析结果来制定优化。
select @a1:=VARIABLE_VALUE as a1
from information_schema.GLOBAL_STATUS
where VARIABLE_NAME='innodb_os_log_written'
union all
select sleep(60)
union all
select @a2:=VARIABLE_VALUE as a2
from information_schema.GLOBAL_STATUS
where VARIABLE_NAME='innodb_os_log_written';
select round((@a2-@a1)/1024/1024/@@innodb_log_files_in_group) as MB;
--------------------
SELECT
p2.`HOST` Blockedhost,
p2.`USER` BlockedUser,
r.trx_id BlockedTrxId,
r.trx_mysql_thread_id BlockedThreadId,
TIMESTAMPDIFF(
SECOND,
r.trx_wait_started,
CURRENT_TIMESTAMP
) WaitTime,
r.trx_query BlockedQuery,
l.lock_table BlockedTable,
m.`lock_mode` BlockedLockMode,
m.`lock_type` BlockedLockType,
m.`lock_index` BlockedLockIndex,
m.`lock_space` BlockedLockSpace,
m.lock_page BlockedLockPage,
m.lock_rec BlockedLockRec,
m.lock_data BlockedLockData,
p.`HOST` blocking_host,
p.`USER` blocking_user,
b.trx_id BlockingTrxid,
b.trx_mysql_thread_id BlockingThreadId,
b.trx_query BlockingQuery,
l.`lock_mode` BlockingLockMode,
l.`lock_type` BlockingLockType,
l.`lock_index` BlockingLockIndex,
l.`lock_space` BlockingLockSpace,
l.lock_page BlockingLockPage,
l.lock_rec BlockingLockRec,
l.lock_data BlockingLockData,
IF (p.COMMAND = 'Sleep', CONCAT(p.TIME,' seconds'), 0) idel_in_trx
FROM
information_schema.INNODB_LOCK_WAITS w
INNER JOIN information_schema.INNODB_TRX b ON b.trx_id = w.blocking_trx_id
INNER JOIN information_schema.INNODB_TRX r ON r.trx_id = w.requesting_trx_id
INNER JOIN information_schema.INNODB_LOCKS l ON w.blocking_lock_id = l.lock_id AND l.`lock_trx_id`=b.`trx_id`
INNER JOIN information_schema.INNODB_LOCKS m ON m.`lock_id`=w.`requested_lock_id` AND m.`lock_trx_id`=r.`trx_id`
INNER JOIN information_schema. PROCESSLIST p ON p.ID = b.trx_mysql_thread_id
INNER JOIN information_schema. PROCESSLIST p2 ON p2.ID = r.trx_mysql_thread_id
ORDER BY
WaitTime DESC;
--------------
00:0c:29:b3:b7:36 brd ff:ff:ff:ff:ff:ff
SELECT
p2.`HOST` 被阻塞方host,
p2.`USER` 被阻塞方用户,
r.trx_id 被阻塞方事务id,
r.trx_mysql_thread_id 被阻塞方线程号,
TIMESTAMPDIFF(
SECOND,
r.trx_wait_started,
CURRENT_TIMESTAMP
) 等待时间,
r.trx_query 被阻塞的查询,
l.lock_table 阻塞方锁住的表,
m.`lock_mode` 被阻塞方的锁模式,
m.`lock_type` "被阻塞方的锁类型(表锁还是行锁)",
m.`lock_index` 被阻塞方锁住的索引,
m.`lock_space` 被阻塞方锁对象的space_id,
m.lock_page 被阻塞方事务锁定页的数量,
m.lock_rec 被阻塞方事务锁定行的数量,
m.lock_data 被阻塞方事务锁定记录的主键值,
p.`HOST` 阻塞方主机,
p.`USER` 阻塞方用户,
b.trx_id 阻塞方事务id,
b.trx_mysql_thread_id 阻塞方线程号,
b.trx_query 阻塞方查询,
l.`lock_mode` 阻塞方的锁模式,
l.`lock_type` "阻塞方的锁类型(表锁还是行锁)",
l.`lock_index` 阻塞方锁住的索引,
l.`lock_space` 阻塞方锁对象的space_id,
l.lock_page 阻塞方事务锁定页的数量,
l.lock_rec 阻塞方事务锁定行的数量,
l.lock_data 阻塞方事务锁定记录的主键值,
IF (p.COMMAND = 'Sleep', CONCAT(p.TIME,' 秒'), 0) 阻塞方事务空闲的时间
FROM
information_schema.INNODB_LOCK_WAITS w
INNER JOIN information_schema.INNODB_TRX b ON b.trx_id = w.blocking_trx_id
INNER JOIN information_schema.INNODB_TRX r ON r.trx_id = w.requesting_trx_id
INNER JOIN information_schema.INNODB_LOCKS l ON w.blocking_lock_id = l.lock_id AND l.`lock_trx_id`=b.`trx_id`
INNER JOIN information_schema.INNODB_LOCKS m ON m.`lock_id`=w.`requested_lock_id` AND m.`lock_trx_id`=r.`trx_id`
INNER JOIN information_schema. PROCESSLIST p ON p.ID = b.trx_mysql_thread_id
INNER JOIN information_schema. PROCESSLIST p2 ON p2.ID = r.trx_mysql_thread_id
ORDER BY
等待时间 DESC;
-------------------------------------------------------------------
View Codeselect
r.trx_id waiting_trx_id,
r.trx_mysql_thread_id waiting_thread,
r.trx_query waiting_query,
b.trx_id blocking_trx_id,
b.trx_mysql_thread_id blocking_thread,
b.trx_query blocking_query
from
information_schema.innodb_lock_waits w
inner join information_schema.innodb_trx b on b.trx_id = w.blocking_trx_id
inner join information_schema.innodb_trx r on r.trx_id = w.requesting_trx_id;
View Codeselect
b.trx_state,
e.state,
e.time,
d.state as block_state,
d.time as block_time,
a.requesting_trx_id,
a.requested_lock_id,
b.trx_query,
b.trx_mysql_thread_id,
a.blocking_trx_id,
a.blocking_lock_id,
c.trx_query as block_trx_query,
c.trx_mysql_thread_id as block_trx_mysql_tread_id
from
information_schema.innodb_lock_waits a
left join information_schema.innodb_trx b on a.requesting_trx_id = b.trx_id
left join information_schema.innodb_trx c on a.blocking_trx_id = c.trx_id
left join information_schema.processlist d on c.trx_mysql_thread_id = d.id
left join information_schema.processlist e on b.trx_mysql_thread_id = e.id
order by
a.requesting_trx_id;
View Code–mysql 5.6
select
a.trx_id,
a.trx_state,
a.trx_started,
a.trx_query,
b.id,
b.user,
b.db,
b.command,
b.time,
b.state,
b.info,
c.processlist_user,
c.processlist_host,
c.processlist_db,
d.sql_text
from
information_schema.innodb_trx a
left join information_schema.processlist b on a.trx_mysql_thread_id = b.id
and b.command = 'sleep'
left join performance_schema.threads c on b.id = c.processlist_id
left join performance_schema.events_statements_current d on d.thread_id = c.thread_id;
–mysql 5.5
select
a.trx_id,
a.trx_state,
a.trx_started,
a.trx_query,
b.id,
b. user,
b. host,
b.db,
b.command,
b.time,
b.state,
b.info
from
information_schema.innodb_trx a
left join information_schema.processlist b on a.trx_mysql_thread_id = b.id
where
b.command = 'sleep';
View Codeselect
trx_id,
trx_started,
trx_mysql_thread_id
from
information_schema.innodb_trx
where
trx_started < date_sub(now(), interval 1 minute)
and trx_operation_state is null
and trx_query is null;
select * from information_schema.`PROCESSLIST` where info is not null ORDER BY time desc;
show variables like "%slow_query_log%";
方法一:
select table_schema db, table_name, data_free, engine
from information_schema.tables
where table_schema not in ('information_schema', 'mysql') and data_free > 0;
方法二:
SELECT TABLE_NAME,(DATA_LENGTH+INDEX_LENGTH)/1024/1024 size_mb,data_free/1024/1024 free_mb,TABLE_ROWS
FROM information_schema.tables where table_schema not in ('information_schema', 'mysql')
and data_free/1024/1024>=1 order by free_mb desc;
View Code
方法1
alter table 表名 engine=InnoDB
alter table tableName engine=InnoDB;
#方法2
optimize table 表名
optimize table tableName;
Select t.table_schema,t.table_name,t.engine,t.table_rows
From information_schema.tables as t
Left join information_schema.table_constraints as tc
On tc.table_schema=t.table_schema
And tc.table_name=t.table_name
And tc.constraint_type='PRIMARY KEY'
Where t.table_type='BASE TABLE'
And tc.constraint_type is null
And t.table_schema not in ('mysql','performance_schema','information_schema');
View Code
more /etc/my.cnf
show variables like '%slow%';
show variables like '%long%';
set global slow_query_log=off;
set global slow_query_log=on;
set @@long_query_time=10;
清理前注意事项:
1) 查看主库和从库正在使用的binlog是哪个文件
主库执行命令:show master status
从库执行命令:show slave status\G
2) 在删除binlog日志之前,首先对binlog日志备份,以防万一
手动清理方法:
方法一:删除指定日期以前的日志索引中binlog日志文件
purge master logs before '2016-09-01 17:20:00';
方法二: 删除指定日志文件的日志索引中binlog日志文件
purge master logs to'<span style='color:rgb(244,67,54)' >mysql</span>-bin.000022';
SELECT * FROM mysql.user WHERE user='root'
查看监听状态
lsnrctl status
启动监听
lsnrctl start
关闭监听
lsnrctl stop
手动注册监听
alter system register;
查询默认的密码保存时间:
SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
修改为不限期,若有定期更换密码的需求,则可以设置为每个密码更换周期所需的天数(如:30:,表示每过30天就需要重置一次密码)
不限期:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
30天的密码有效期:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 30;
数据库闪回
1.查看闪回区
SQL> show parameter db_recovery;
归档日志相关
查看归档日志路径
archive log list
查询归档日志大小以及信息
select * from v$recovery_file_dest
rman模式操作
crosscheck archivelog all;
删除过期日志
delete noprompt expired archivelog all;
删除所有日志
DELETE EXPIRED archivelog all;
删除三天以前日志
delete archivelog until time 'sysdate -3';
可用性状态
select INSTANCE_NUMBER,INSTANCE_NAME,STARTUP_TIME,STATUS from gv$instance;
SELECT d.tablespace_name "Name", d.status "Status",
TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), '99,999,990.90') "Size (M)",
TO_CHAR (NVL (a.BYTES - NVL (f.BYTES, 0), 0) / 1024 / 1024,
'99999999.99'
) USE,
TO_CHAR (NVL ((a.BYTES - NVL (f.BYTES, 0)) / a.BYTES * 100, 0),
'990.00'
) "Used %"
FROM SYS.dba_tablespaces d,
(SELECT tablespace_name, SUM (BYTES) BYTES
FROM dba_data_files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM (BYTES) BYTES
FROM dba_free_space
GROUP BY tablespace_name) f
WHERE d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = f.tablespace_name(+)
AND NOT (d.extent_management LIKE 'LOCAL' AND d.CONTENTS LIKE 'TEMPORARY')
UNION ALL
SELECT d.tablespace_name "Name", d.status "Status",
TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), '99,999,990.90') "Size (M)",
TO_CHAR (NVL (t.BYTES, 0) / 1024 / 1024, '99999999.99') USE,
TO_CHAR (NVL (t.BYTES / a.BYTES * 100, 0), '990.00') "Used %"
FROM SYS.dba_tablespaces d,
(SELECT tablespace_name, SUM (BYTES) BYTES
FROM dba_temp_files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM (bytes_cached) BYTES
FROM v$temp_extent_pool
GROUP BY tablespace_name) t
WHERE d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = t.tablespace_name(+)
AND d.extent_management LIKE 'LOCAL'
AND d.CONTENTS LIKE 'TEMPORARY';
View Code
select(1-(sum(decode(name,'physical reads',value,0))/(sum(decode(name,'db block gets',value,0))
+sum(decode(name,'consistent gets',value,0)))))*100"Hit Ratio"
from gv$sysstat;
select(1-(sum(getmisses)/sum(gets)))*100"Hit Ratio"from gv$rowcache;
selectSum(Pins)/(Sum(Pins)+Sum(Reloads))*100"Hit Ratio"from gV$LibraryCache;
select a.INST_ID,a.NAME,a.value "Disk Sorts", b.value "Memory Sorts",round((100*b.value)/decode((a.value+b.value),0,1,(a.value+b.value)),2)"Pct Memory Sorts"from gv$sysstat a, gv$sysstat b where a.name ='sorts (disk)'and b.name ='sorts (memory)';
备注:这些值在98% 以上比较好
USED_MB:表示对象已使用大小
FRAG_MB:表示碎片所占大小
FRAGMENT_PER:表示碎片率百分比
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
/*set lines 220 pages 300
col owner for a30
col TABLE_NAME for a50
col SEGMENT_TYPE for a20*/
SELECT /*+ parallel(b 4)*/ OWNER,
TABLE_NAME,
tablespace_name,
SEGMENT_TYPE,
segment_space_management MANAGEMENT,
TABLE_MB USED_MB,
ROUND(WASTE_PER * TABLE_MB /100,2) FRAG_MB,
WASTE_PER fragment_per,
LAST_ANALYZED
FROM (SELECT OWNER,
SEGMENT_NAME TABLE_NAME,
LAST_ANALYZED,
SEGMENT_TYPE,
GREATEST(ROUND(100*(NVL(HWM - AVG_USED_BLOCKS,0)/ GREATEST(NVL(HWM,1),1)),2),0) WASTE_PER,
ROUND(BYTES / POWER(1024,2),2) TABLE_MB,
NUM_ROWS,
BLOCKS,
EMPTY_BLOCKS,
HWM HIGHWATER_MARK,
AVG_USED_BLOCKS,
CHAIN_PER,
EXTENTS,
MAX_EXTENTS,
ALLO_EXTENT_PER,
DECODE(GREATEST(MAX_FREE_SPACE - NEXT_EXTENT,0),0,'N','Y') CAN_EXTEND_SPACE,
NEXT_EXTENT,
MAX_FREE_SPACE,
O_TABLESPACE_NAME TABLESPACE_NAME,
block_size,
segment_space_management
FROM (SELECT A.OWNER OWNER,
A.SEGMENT_NAME,
A.SEGMENT_TYPE,
A.BYTES,
B.NUM_ROWS,
A.BLOCKS BLOCKS,
B.EMPTY_BLOCKS EMPTY_BLOCKS,
A.BLOCKS - B.EMPTY_BLOCKS -1 HWM,
DECODE(ROUND((B.AVG_ROW_LEN * NUM_ROWS *(1+(PCT_FREE /100)))/ dt.block_size,0),0,1,
ROUND((B.AVG_ROW_LEN * NUM_ROWS *(1+(PCT_FREE /100)))/ dt.block_size,0))+2 AVG_USED_BLOCKS,
ROUND(100*(NVL(B.CHAIN_CNT,0)/ GREATEST(NVL(B.NUM_ROWS,1),1)),
2) CHAIN_PER,
ROUND(100*(A.EXTENTS / A.MAX_EXTENTS),2) ALLO_EXTENT_PER,
A.EXTENTS EXTENTS,
A.MAX_EXTENTS MAX_EXTENTS,
B.NEXT_EXTENT NEXT_EXTENT,
B.TABLESPACE_NAME O_TABLESPACE_NAME,
B.LAST_ANALYZED,
dt.block_size,
DT.segment_space_management
FROM SYS.DBA_SEGMENTS A,
SYS.DBA_TABLES B,
dba_tablespaces dt
WHERE A.OWNER = B.OWNER
and SEGMENT_NAME = TABLE_NAME
and dt.segment_space_management ='AUTO'
and B.tablespace_name in('TS_RPT_DATA','IX_RPT_DATA','PERFSTAT')
and dt.tablespace_name = a.tablespace_name
and b.last_analyzed > to_date('20210501','yyyymmdd')
union all
SELECT A.OWNER OWNER,
SEGMENT_NAME ||'.'|| B.PARTITION_NAME,
SEGMENT_TYPE,
BYTES,
B.NUM_ROWS,
A.BLOCKS BLOCKS,
B.EMPTY_BLOCKS EMPTY_BLOCKS,
A.BLOCKS - B.EMPTY_BLOCKS -1 HWM,
DECODE(ROUND((B.AVG_ROW_LEN * B.NUM_ROWS *(1+(B.PCT_FREE /100)))/ dt.block_size,0),0,1,
ROUND((B.AVG_ROW_LEN * B.NUM_ROWS *(1+(B.PCT_FREE /100)))/ dt.block_size,0))+2 AVG_USED_BLOCKS,
ROUND(100*(NVL(B.CHAIN_CNT,0)/ GREATEST(NVL(B.NUM_ROWS,1),1)),2) CHAIN_PER,
ROUND(100*(A.EXTENTS / A.MAX_EXTENTS),2) ALLO_EXTENT_PER,
A.EXTENTS EXTENTS,
A.MAX_EXTENTS MAX_EXTENTS,
B.NEXT_EXTENT,
B.TABLESPACE_NAME O_TABLESPACE_NAME,
d.last_analyzed,
dt.block_size,
DT.segment_space_management
FROM SYS.DBA_SEGMENTS A,
SYS.DBA_TAB_PARTITIONS B,
SYS.DBA_TABLES D,
dba_tablespaces dt
WHERE A.OWNER = B.TABLE_OWNER
and SEGMENT_NAME = B.TABLE_NAME
and SEGMENT_TYPE ='TABLE PARTITION'
and dt.segment_space_management ='AUTO'
and B.tablespace_name in('TS_RPT_DATA','IX_RPT_DATA','PERFSTAT')
and dt.tablespace_name = a.tablespace_name
AND D.OWNER = B.TABLE_OWNER
AND D.TABLE_NAME = B.TABLE_NAME
AND A.PARTITION_NAME = B.PARTITION_NAME
AND D.last_analyzed > to_date('20210501','yyyymmdd')),
(SELECT TABLESPACE_NAME F_TABLESPACE_NAME,
MAX(BYTES) MAX_FREE_SPACE
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME)
WHERE F_TABLESPACE_NAME = O_TABLESPACE_NAME
AND GREATEST(ROUND(100*(NVL(HWM - AVG_USED_BLOCKS,0)/GREATEST(NVL(HWM,1),1)),2),0)>12
AND OWNER notin('SYS','SYSMAN')
AND BLOCKS > POWER(1024,2)/ block_size) b
where ROUND(WASTE_PER * TABLE_MB /100,2)>100
ORDER BY 7 DESC;
View Code
SELECT distinct SESS.SID,
SESS.SERIAL#,
LO.ORACLE_USERNAME "登录用户",
LO.OS_USER_NAME "机器用户名",
AO.OBJECT_NAME "被锁对象名",
LO.LOCKED_MODE "锁模式",
SESS.logon_time "登录时间",
'ALTER SYSTEM KILL SESSION ''' || SESS.SID || ',' ||
SESS.SERIAL# || ''' immediate;',
SESS.STATUS
FROM GV$LOCKED_OBJECT LO, DBA_OBJECTS AO, GV$SESSION SESS, Gv$process p
WHERE AO.OBJECT_ID = LO.OBJECT_ID
AND LO.SESSION_ID = SESS.SID
and SESS.paddr = p.addr;
--查询被锁的包
SELECT 'alter system kill session ' || '''' || sid || ',' || serial# || '''immediate;',
logon_time,
a.*,
ss.paddr
FROM dba_ddl_locks a, v$session ss
WHERE a.name LIKE upper('%包名%')
AND a.session_id = ss.sid
Sql一:
SELECT VS.SID || ',' || VS.SERIAL# || ',@' || VS.INST_ID AS INST_SID_INFO,
EVENT,
WAIT_CLASS,
VS.MACHINE || ' -> ' || VS.OSUSER OS_USER_INFO,
VS.USERNAME || ' -> ' || VS.PROGRAM || '(' || VS.MODULE || ')' USER_PROGRAM_INFO,
STATUS,
VS.SQL_ID,
(SELECT SL.SQL_FULLTEXT
FROM V$SQL SL
WHERE VS.SQL_ID = SL.SQL_ID
AND ROWNUM = 1) SQL_FULLTEXT,
VS.PREV_SQL_ID,
(SELECT SL.SQL_FULLTEXT
FROM V$SQL SL
WHERE VS.PREV_SQL_ID = SL.SQL_ID
AND ROWNUM = 1) PREV_SQL_FULLTEXT
FROM GV$SESSION VS
WHERE WAIT_CLASS# <> 6
order by WAIT_CLASS#;
Sql 二:
/*set linesize 200
col name format a40
col value format a40
set pagesize 2000*/
select name,value from v$parameter where isdefault='FALSE' order by 1;
· 200 OK,表示从客户端发来的请求在服务器端被正确处理
· 204 No content,表示请求成功,但响应报文不含实体的主体部分
· 206 Partial Content,进行范围请求
· 301 moved permanently,永久性重定向,表示资源已被分配了新的 URL
· 302 found,临时性重定向,表示资源临时被分配了新的 URL
· 303 see other,表示资源存在着另一个 URL,应使用 GET 方法丁香获取资源
· 304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况
· 307 temporary redirect,临时重定向,和302含义相同
· 400 bad request,请求报文存在语法错误
· 401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息
· 403 forbidden,表示对请求资源的访问被服务器拒绝
· 404 not found,表示在服务器上没有找到请求的资源
· 500 internal sever error,表示服务器端在执行请求时发生了错误
· 503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求
总体来说,返回403状态码就是,拒绝或者禁止访问。但是,服务器虽然拒绝或者禁止访问,但是它已经理解了你的请求。具体原因有以下多种:
错误代码:403.1
HTTP
403.1
禁止访问:禁止可执行访问
Internet
信息服务
原因是执行权限不够,解决的方法是:
打开“管理工具”的“Internet
信息服务”,右键选择“WEB站点属性”的“主目录”选项卡,把“执行许可”的选项从“无”改为“纯脚本”就好了。
错误代码:403.2
403.2错误是由于"读取"访问被禁止而造成的。导致此错误是由于没有可用的默认网页并且没有对目录启用目录浏览,或者要显示的
HTML
网页所驻留的目录仅标记为"可执行"或"脚本"权限。
错误代码:403.3
403.3错误是由于"写入"访问被禁止而造成的,当试图将文件上载到目录或在目录中修改文件,但该目录不允许"写"访问时就会出现此种错误。
错误代码:403.4
403.4错误是由于要求SSL而造成的,您必须在要查看的网页的地址中使用"https"。
错误代码:403.5
403.5错误是由于要求使用128位加密算法的Web浏览器而造成的,如果您的浏览器不支持128位加密算法就会出现这个错误,您可以连接微软网站进行浏览器升级。
错误代码:403.6
403.6错误是由于IP
地址被拒绝而造成的。如果服务器中有不能访问该站点的IP地址列表,并且您使用的IP地址在该列表中时您就会返回这条错误信息。
错误代码:403.7
403.7错误是因为要求客户证书,当需要访问的资源要求浏览器拥有服务器能够识别的安全套接字层
(SSL)客户证书时会返回此种错误。
错误代码:403.8
403.8错误是由于禁止站点访问而造成的,若服务器中有不能访问该站点的DNS名称列表,而您使用的
DNS名称在列表中时就会返回此种信息。请注意区别403.6与403.8错误。
错误代码:403.9
403.9错误是由于连接的用户过多而造成的,由于Web服务器很忙,因通讯量过多而无法处理请求时便会返回这条错误。
错误代码:403.10
403.10错误是由于无效配置而导致的错误,当您试图从目录中执行CGI、ISAPI或其他可执行程序,但该目录不允许执行程序时便会返回这条错误。
错误代码:403.11
403.11错误是由于密码更改而导致无权查看页面。
错误代码:403.12
403.12错误是由于映射器拒绝访问而造成的。若要查看的网页要求使用有效的客户证书,而您的客户证书映射没有权限访问该Web站点时就会返回映射器拒绝访问的错误。
错误代码:403.13
403.13错误是由于需要查看的网页要求使用有效的客户证书而使用的客户证书已经被吊销,或者无法确定证书是否已吊销造成的。
错误代码:403.15
403.15错误是由于客户访问许可过多而造成的,当服务器超出其客户访问许可限制时会返回此条错误。
错误代码:403.16
403.16错误是由于客户证书不可信或者无效而造成的。
错误代码:403.17
403.17错误是由于客户证书已经到期或者尚未生效而造成的。
以下三个是IIS6.0专用:
403.18-在当前的应用程序池中不能执行所请求的URL。
403.19-不能为这个应用程序池中的客户端执行CGI。
403.20-Passport登录失败
View Code
jmap -heap 30378 生成线程堆转储快照
jstat -gcutils 30378 1000 1000 查看gc情况
jmap -histo 30378 | head -20 就可以查看某个应用pid的java服务占用内存排名前20的类
jmap -dump:format=b,file=mydump.hprof 30378
查看JAVA应用线程情况:ps p 30378 -L -o pcpu,pmem,pid,tid,time,tname,cmd
PS: 30378是JAVA进程ID
ulimit -a 查看文件句柄 查看进程被限制使用的资源
1.jmap 还有一个指令可以把整个内存情况转成文件形式保存下来,如下:
jmap -dump:format=b,file=mydump.hprof 30378
2.在JVM启动时设置,如果发生OOM,则dump出文件。命令如下:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/mydump.hprof
如果快照文件不大,可以下载到本地,然后通过 MAT 分析,也可以在线分析( https://fastthread.io/ );如果快照文件很大,可以在服务器上直接分析,使用的命令是:
jhat mydump.hprof
3.jvm日志分析-使用jhat命令
jhat也是jdk内置的工具之一。主要是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言
例子:jhat mydump.hprof
常用命令:
git init |
初始化仓库 |
git clone |
拷贝一份远程仓库,也就是下载一个项目。 |
git add |
添加文件到暂存区 |
git status |
查看仓库当前的状态,显示有变更的文件。 |
git diff |
比较文件的不同,即暂存区和工作区的差异。 |
git commit |
提交暂存区到本地仓库。 |
git reset |
回退版本。 |
git rm |
将文件从暂存区和工作区中删除。 |
git mv |
移动或重命名工作区文件。 |
git log |
查看历史提交记录 |
git blame <file> |
以列表形式查看指定文件的历史修改记录 |
git remote |
远程仓库操作 |
git fetch |
从远程获取代码库 |
git pull |
下载远程代码并合并 |
git push |
上传远程代码并合并 |
创建分支命令:
git branch (branchname)
切换分支命令:
git checkout (branchname)
合并分支命令:
git merge
system-view进入系统视图quit退到系统视图sysname交换机命名vlan20创建vlan(进入vlan20)displayvlan显示vlanundovlan20删除vlan20displayvlan20显示vlan里的端口20Interfacee1/0/24进入端口24portlink-typeaccessvlan20把当前端口放入vlan20undoporte1/0/10删除当前VLAN端口10displaycurrent-configuration显示当前配置02配置交换机支持TELNETinterfacevlan1进入VLAN1ipaddress192.168.3.100
SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手
文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景 最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。 在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记
【动态规划】一、背包问题1.背包问题总结1)动规四部曲:2)递推公式总结:3)遍历顺序总结:2.01背包1)二维dp数组代码实现2)一维dp数组代码实现3.完全背包代码实现4.多重背包代码实现一、背包问题1.背包问题总结暴力的解法是指数级别的时间复杂度。进而才需要动态规划的解法来进行优化!背包问题是动态规划(DynamicPlanning)里的非常重要的一部分,关于几种常见的背包,其关系如下:在解决背包问题的时候,我们通常都是按照如下五部来逐步分析,把这五部都搞透了,算是对动规来理解深入了。1)动规四部曲:(1)确定dp数组及其下标的含义(2)确定递推公式(3)dp数组的初始化(4)确定遍历顺
1,Camera基本工作原理答案:光线通过镜头Lens进入摄像头内部,然后经过IRFilter过滤红外光,最后到达sensor(传感器),senor分为按照材质可以分为CMOS和CCD两种,可以将光学信号转换为电信号,再通过内部的ADC电路转换为数字信号,然后传输给DSP(如果有的话,如果没有则以DVP的方式传送数据到基带芯片baseband,此时的数据格式RawData,后面有讲进行加工)加工处理,转换成RGB、YUV等格式输出。数据流是如何从sensor到APP的?上述描述结束后,在ISP处理后面的阶段,数据会进行分流,分为capture,preview,video等以供后续动作使用。例如
📢博客主页:https://blog.csdn.net/dxt19980308📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由肩匣与橘编写,首发于CSDN🙉📢生活依旧是美好而又温柔的,你也是✨目录🔴线性表1.1顺序表1.1.1顺序表定义1.1.2顺序表基本操作1.2单链表1.2.1单链表节点定义1.2.2单链表基本操作1.3双链表1.3.1双链表节点定义1.3.2双链表基本操作1.4静态链表🟠栈和队列2.1栈2.1.1顺序栈2.1.2链式栈2.2队列2.2.1顺序队列2.2.2链式队列2.3应用🟡串3.1串的定义与实现3.2串的模式匹配🟢树与二叉树4.1二叉树4.1.1二叉树的概念4.1.2
目录MyBatisPlusMP特点MP框架结构MP使用准备导入依赖springboot整合mybatisplus配置文件定义好实体类User后编辑mapper接口@Mapper与@MapperScan("包名")区别MP基本操作新增操作删除操作通过id删除用户通过map作为条件删除通过多个id实现删除更新用户通过id进行用户更新查询用户 根据id查询用户根据多个id查询用户根据map集合作为条件查询用户通用Service接口一些操作 查询总记录数批量添加数据MP常用注解雪花算法前言垂直分表水平分表条件构造器继承结构使用条件构造器实现查询操作查询所有用户根据构造器查询主键字段集合根据条件构造器查
本文总结了在以太坊智能合约中使用Solidity在合约内创建合约以及引用其他合约的方法,包括了如何使用mochai进行测试的方法。在这之前先明白一个比较:Contract{}相当于面向对象语言的类当部署后获得到address后,address相当于对象,address0x.......本身就类似指针地址然后我们讨论下Solidity代码中对合约类,合约对象的操作。Solidity首先区分下三种写法:import'ContractB.sol';ConractBB=newConractB(arg1,arg2...);ContractBB=ContractB(Baddress);functionse
智慧医院不良事件精细化管理平台——微信小程序总结一、实现的功能二、项目收获三、总结(经历分享)一、实现的功能到目前为止,微信小程序开发,到此就算是结束了,其中实现了不少功能,如下:1.1角色与权限(后端同学实现的,写这个方便介绍后面的功能)平台可以配置不同的用户角色并授予其不同的操作权限。每个用户在使用平台时都需要指定一个角色。1.2可视范围——根据角色绑定的权限菜单全体职工可以查看自己上报的事件(待审核、已通过、被驳回)。质控人员可以查看所有的事件(待审核、待评价、已通过、已驳回、已评价)。职能人员可以查看自己/自己部门负责的事件(待整改、待评价、已评价)。各科室医务人员可以查看本科室相关的
gitclonehttp:www.git.com.cn........ 克隆git项目gitbranch 查看分支gitbranch-r查看远程分支gitpushorigin--delete分支名 删除远程分支tmpgitcheckout切换分支gitcheckout-b切换并创建分支gitcheckout-b分支名origin/分支名(如果远程分支已存在最好用此命令,在创建分支时会把远程分支最新代码一并拉下来,不会把原分支代码带过来)gitbranch-D删除分支gitpushorigin--delete分支名gitpush--set-upstreamorigin分支名 推送本地分支到远端g