2018年7月

设置SQL Server最大内存使用量

SQLServer2008版本默认安装以后内存最大使用量为2147483647,基本会把系统内存耗尽,查看当前内存使用情况:

SELECT 
  physical_memory_in_use_kb/1024 AS sql_physical_memory_in_use_MB, 
    large_page_allocations_kb/1024 AS sql_large_page_allocations_MB, 
    locked_page_allocations_kb/1024 AS sql_locked_page_allocations_MB,
    virtual_address_space_reserved_kb/1024 AS sql_VAS_reserved_MB, 
    virtual_address_space_committed_kb/1024 AS sql_VAS_committed_MB, 
    virtual_address_space_available_kb/1024 AS sql_VAS_available_MB,
    page_fault_count AS sql_page_fault_count,
    memory_utilization_percentage AS sql_memory_utilization_percentage, 
    process_physical_memory_low AS sql_process_physical_memory_low, 
    process_virtual_memory_low AS sql_process_virtual_memory_low
FROM sys.dm_os_process_memory;  

SQL.png
设置当前最大内存使用量为16G

sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE;  
GO  
sp_configure 'max server memory', 16384;  
GO  
RECONFIGURE;  
GO

直接在SQL查询器里面执行即可,一般根据系统内存大小设置,至少保留2--3G内存给操作系统使用;
参考:https://docs.microsoft.com/zh-cn/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-2017
也可以在登陆SQLServer以后,右键服务器属性--内存,选择使用AWE分配内存、最小服务器内存、最大服务器内存等参数,如下图,最后确定即可;
memery.png

CentOS下TIME_WAIT过多-问题处理方法

TIME_WAIT状态原理
当客户端主动关闭连接时,会发送最后一个ack,然后会进入TIME_WAIT状态,再停留2个MSL时间(约1-4分钟),进入CLOSED状态。
TCP三次握手四次挥手.png
CentOS6/7.x默认没有对系统参数进行设置,当大量TIME_WAIT产生的时候会影响系统性能,
统计TIME_WAIT状态数量

netstat -ano | grep TIME_WAIT | wc -l

查看系统当前连接状态:

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TIME_WAIT 352
ESTABLISHED 900
CLOSING 58

解决方法如下:
修改内核配置vim /etc/sysctl.conf ,加入以下内容:

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

然后执行

/sbin/sysctl -p

让参数生效。

参数说明:

net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1  表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout  修改系統默认的 TIMEOUT 时间

更多参考:https://www.unixso.com/Linux/TIME_WAIT.html

Zabbix3.4.11使用Orabbix插件监控Oracle 11g R2

Orabbix简介
Orabbix是设计用来为zabbix监控Oracle的数据库的插件,它提供多层次的监控,包括可用性和服务器性能的指标。
Orabbix监控的内容:

  1、数据库版本
  2、归档日志与生产趋势
  3、触发器,表/过程命中率
  4、逻辑IO性能
  5、物理IO性能
  6、PGA
  7、SGA
  8、共享池
  9、Session
  10、数据库大小

安装步骤如下:
1、JAVA环境配置
若是没有java 需要安装JDK环境:
jdk官方下载地址 http://download.oracle.com/otn/java/jdk/7u80-b15/jdk-7u80-linux-x64.tar.gz

mkdir /usr/lib/jvm/
tar -xvf jdk-7u80-linux-x64.tar.gz -C /usr/lib/jvm/
echo "export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80" >>  /etc/profile
source /etc/profile
echo "export JRE_HOME=${JAVA_HOME}/jre" >>  /etc/profile
source /etc/profile
echo "export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib" >>  /etc/profile
echo "export PATH=${JAVA_HOME}/bin:$PATH" >>  /etc/profile
source /etc/profile
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_80/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_80/bin/javac 300

安装完毕查看版本:

[root@dbnode1 opt]# java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

2、Orabbix插件的下载安装
http://www.smartmarmot.com/product/orabbix/download/
也可以直接搜索下载,目前最新版本为1.2.3

创建一个目录作为orabbix的源地址:
mkdir -p /usr/local/orabbix
解压缩插件:
unzip -n orabbix-1.2.3.zip -d /usr/local/orabbix/

3、更改配置文件:

cd /usr/local/orabbix/
cp conf/config.props.sample conf/config.props
添加系统启动脚本:
cp init.d/orabbix /etc/init.d/orabbix
并修改路径:
vim /etc/init.d/orabbix
orabbix=/usr/local/orabbix

给启动脚本加执行权限

chmod +x /usr/local/orabbix/run.sh
chmod +x /etc/init.d/orabbix

修改配置文件内如如下

cat /usr/local/orabbix/conf/config.props | grep -v "^$"|grep -v "^#"

ZabbixServerList=ZabbixServer1

ZabbixServer1.Address=192.168.3.209
ZabbixServer1.Port=10051


OrabbixDaemon.PidFile=./logs/orabbix.pid
OrabbixDaemon.Sleep=300
OrabbixDaemon.MaxThreadNumber=100

DatabaseList=dbnode1

DatabaseList.MaxActive=10
DatabaseList.MaxWait=100
DatabaseList.MaxIdle=1

dbnode1.Url=jdbc:oracle:thin:@192.168.2.110:1521:ORCL
dbnode1.User=zabbix
dbnode1.Password=xxxxxxxx
dbnode1.MaxActive=10
dbnode1.MaxWait=100
dbnode1.MaxIdle=1
dbnode1.QueryListFile=./conf/query.props

4、使用DBA账号登陆oracle控制台,创建zabbix用户并赋权

CREATE USER ZABBIX IDENTIFIED BY ZABBIX2018 DEFAULT TABLESPACE SYSTEM TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK;

GRANT ALTER SESSION TO ZABBIX;
GRANT CREATE SESSION TO ZABBIX;
GRANT CONNECT TO ZABBIX;
GRANT RESOURCE TO ZABBIX;
ALTER USER ZABBIX DEFAULT ROLE ALL;
GRANT SELECT ON V_$INSTANCE TO ZABBIX;
GRANT SELECT ON DBA_USERS TO ZABBIX;
GRANT SELECT ON V_$LOG_HISTORY TO ZABBIX;
GRANT SELECT ON V_$PARAMETER TO ZABBIX;
GRANT SELECT ON SYS.DBA_AUDIT_SESSION TO ZABBIX;
GRANT SELECT ON V_$LOCK TO ZABBIX;
GRANT SELECT ON DBA_REGISTRY TO ZABBIX;
GRANT SELECT ON V_$LIBRARYCACHE TO ZABBIX;
GRANT SELECT ON V_$SYSSTAT TO ZABBIX;
GRANT SELECT ON V_$LATCH TO ZABBIX;
GRANT SELECT ON V_$PGASTAT TO ZABBIX;
GRANT SELECT ON V_$SGASTAT TO ZABBIX;
GRANT SELECT ON V_$LIBRARYCACHE TO ZABBIX;
GRANT SELECT ON V_$PROCESS TO ZABBIX;
GRANT SELECT ON DBA_DATA_FILES TO ZABBIX;
GRANT SELECT ON DBA_TEMP_FILES TO ZABBIX;
GRANT SELECT ON DBA_FREE_SPACE TO ZABBIX;
GRANT SELECT ON V_$SYSTEM_EVENT TO ZABBIX;
GRANT SELECT ANY TABLE TO ZABBIX;
GRANT SELECT ANY DICTIONARY TO ZABBIX;
GRANT UNLIMITED TABLESPACE TO ZABBIX;

以下授权需要使用sysdba账号登陆
GRANT SELECT ON V_$LOG_HISTORY TO ZABBIX;
GRANT SELECT ON SYS.DBA_AUDIT_SESSION TO ZABBIX;
GRANT SELECT ON V_$LIBRARYCACHE TO ZABBIX;
GRANT SELECT ON DBA_DATA_FILES TO ZABBIX;
GRANT SELECT ON DBA_TEMP_FILES TO ZABBIX;
GRANT SELECT ON DBA_FREE_SPACE TO ZABBIX;
GRANT SELECT ON V_$SYSTEM_EVENT TO ZABBIX;
GRANT SELECT ON V_$SESSION TO ZABBIX; 
exec dbms_network_acl_admin.create_acl(acl => 'resolve.xml',description => 'resolve acl', principal =>'ZABBIX', is_grant => true, privilege => 'resolve');
exec dbms_network_acl_admin.assign_acl(acl => 'resolve.xml', host =>'*');
COMMIT;

5、启动orabbix服务、加入开机启动:

/etc/init.d/orabbix start
chkconfig orabbix on

6、查看日志

tail -f /usr/local/orabbix/logs 
 2018-07-17 11:36:36,662 [pool-1-thread-1] ERROR Orabbix - Error on DBEnquiry on query=archive on database=dbnode1 Error returned is java.lang.IllegalArgumentException: null value for key 'archive'
 2018-07-17 11:36:36,664 [pool-1-thread-1] WARN  Orabbix - Error while executing ->audit- on database ->dbnode1- Exception received ORA-00942: table or view does not exist

 2018-07-17 11:36:36,665 [pool-1-thread-1] WARN  Orabbix - Error while executing ->dbblockgets- on database ->dbnode1- Exception received ORA-00942: table or view does not exist

 2018-07-17 11:36:36,665 [pool-1-thread-1] ERROR Orabbix - Error on DBEnquiry on query=dbblockgets on database=dbnode1 Error returned is java.lang.IllegalArgumentException: null value for key 'dbblockgets
'
 2018-07-17 11:36:36,666 [pool-1-thread-1] WARN  Orabbix - Error while executing ->dbconsistentgets- on database ->dbnode1- Exception received ORA-00942: table or view does not exist

 2018-07-17 11:36:36,666 [pool-1-thread-1] ERROR Orabbix - Error on DBEnquiry on query=dbconsistentgets on database=dbnode1 Error returned is java.lang.IllegalArgumentException: null value for key 'dbcons
istentgets'
 2018-07-17 11:36:36,667 [pool-1-thread-1] WARN  Orabbix - Error while executing ->dbhitratio- on database ->dbnode1- Exception received ORA-00942: table or view does not exist

 2018-07-17 11:36:36,667 [pool-1-thread-1] ERROR Orabbix - Error on DBEnquiry on query=dbhitratio on database=dbnode1 Error returned is java.lang.IllegalArgumentException: null value for key 'dbhitratio'
 2018-07-17 11:36:36,668 [pool-1-thread-1] WARN  Orabbix - Error while executing ->dbphysicalread- on database ->dbnode1- Exception received ORA-00942: table or view does not exist

 2018-07-17 11:36:36,668 [pool-1-thread-1] ERROR Orabbix - Error on DBEnquiry on query=dbphysicalread on database=dbnode1 Error returned is java.lang.IllegalArgumentException: null value for key 'dbphysic
alread'
 2018-07-17 11:36:36,670 [pool-1-thread-1] WARN  Orabbix - Error while executing ->dbversion- on database ->dbnode1- Exception received ORA-00942: table or view does not exist

如果有以上类似的报错,基本都是zabbix用户权限不够导致,参考赋权;
正常log如下:

 2018-07-20 17:06:16,915 [pool-1-thread-47] INFO  Orabbix - Done with dbJob on database dbnode1 QueryList elapsed time 18537 ms
 2018-07-20 17:06:58,428 [pool-1-thread-48] INFO  Orabbix - Done with dbJob on database dbnode1 QueryList elapsed time 48 ms
 2018-07-20 17:08:16,967 [pool-1-thread-49] INFO  Orabbix - Done with dbJob on database dbnode1 QueryList elapsed time 18586 ms
 2018-07-20 17:08:58,418 [pool-1-thread-50] INFO  Orabbix - Done with dbJob on database dbnode1 QueryList elapsed time 35 ms
 2018-07-20 17:10:17,033 [pool-1-thread-51] INFO  Orabbix - Done with dbJob on database dbnode1 QueryList elapsed time 18648 ms
 2018-07-20 17:10:58,418 [pool-1-thread-52] INFO  Orabbix - Done with dbJob on database dbnode1 QueryList elapsed time 31 ms
 2018-07-20 17:12:17,225 [pool-1-thread-53] INFO  Orabbix - Done with dbJob on database dbnode1 QueryList elapsed time 18836 ms
 2018-07-20 17:12:58,426 [pool-1-thread-54] INFO  Orabbix - Done with dbJob on database dbnode1 QueryList elapsed time 35 ms
 2018-07-20 17:14:17,013 [pool-1-thread-55] INFO  Orabbix - Done with dbJob on database dbnode1 QueryList elapsed time 18621 ms
 2018-07-20 17:14:58,429 [pool-1-thread-56] INFO  Orabbix - Done with dbJob on database dbnode1 QueryList elapsed time 35 ms
 2018-07-20 17:16:17,087 [pool-1-thread-57] INFO  Orabbix - Done with dbJob on database dbnode1 QueryList elapsed time 18691 ms

/usr/local/orabbix下面有个template目录,里面是zabbix模板,将这些模板copy到本地机器上,然后登陆zabbix,把模板导入进去,就可以配置机器了,zabbix是3.x以上版本的话直接导入不进去,只能先导入2.x版本,然后再导出,然后导入3.x
或者直接用修改后Zabbix3.x可以直接使用的模板
zabbix_oracle_orabbix.zip
导入,并添加对应模板即可,完成以后效果如下:
1.png
2.png
3.png
4.png
5.png
10.png
VIA: http://www.smartmarmot.com/wiki/index.php?title=Orabbix
https://blog.csdn.net/tianhua79658788/article/details/77969426

修改oracle数据库SGA和PGA大小

SGA的大小:一般物理内存20%用作操作系统保留,其他80%用于数据库。
SGA普通数据库可以分配40%-60%之间,PGA可以分配20%-40%之间。

1、以dba身份登录
并查看SGA信息:

SQL>show parameter sga;

查看PGA信息:

SQL>show parameter pga;

2、修改sga_target

SQL>alter system set sga_target=436M;

3、修改sga_max_size

SQL> alter system set sga_max_size=436M scope=spfile;

4、重启数据库使其生效:

SQL>shutdown immediate;

注意,重启前一定先完成上述两部操作,且sga_target不得大于sga_max_size,一般保持两者相等,否则可能导致数据库无法启动。

SQL>startup

5、查看SGA是否生效:

SQL>show parameter sga
NAME                                 TYPE        VALUE
------------------------------------ ----------- -----
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 436M
sga_target                           big integer 436M

Zabbix3.4.11使用自带模板监控MySQL

Zabbix默认的agentd模板里面有一个userparameter_mysql.conf配置文件,修改文件内容如下:

[root@c75 zabbix_agentd]# cat /usr/local/zabbix/conf/zabbix_agentd/userparameter_mysql.conf 
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/usr/local/zabbix/conf/ mysql -N | awk '{print $$2}'
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/usr/local/zabbix/conf/ mysql -N'
UserParameter=mysql.ping,netstat -ntpl |grep 3306 |grep mysql |wc|awk '{print $1}'
UserParameter=mysql.version,mysql -V
UserParameter=mysql.vars[*],echo "show variables where Variable_name='$1';" | HOME=/usr/local/zabbix/conf/ mysql -N | awk '{print $$2}'

做下MySQL的软连接:

ln -s /usr/local/mysql/bin/mysql /bin/

修改zabbix_agentd.conf文件,增加

Include=/usr/local/zabbix/conf/zabbix_agentd/*.conf

登陆MySQL控制台创建只读用户:

GRANT SELECT ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'xxxxxx';

在/usr/local/zabbix/conf创建.my.cnf文件,内容如下:

[root@c75 conf]# cat /usr/local/zabbix/conf/.my.cnf 
# Zabbix Agent
[mysql]
host=localhost
user=zabbix
password="xxxxxx"
socket=/data/mysql/mysql.sock
[mysqladmin]
host=localhost
user=zabbix
password="xxxxxx"
socket=/data/mysql/mysql.sock

重启zabbix-agentd

killall -9 zabbix_agentd
/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.conf

在zabbix-server机器上检测

[root@monitor ~]# zabbix_get -s 192.168.3.244 -p 10050 -k mysql.version
mysql  Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using  EditLine wrapper
[root@monitor ~]# zabbix_get -s 192.168.3.244 -p 10050 -k mysql.ping
1

注意:如果测试的时候报错:sh: mysql: command not found,sh: mysqladmin: command not found,
修改userparameter_mysql.conf中mysql,mysqladmin命令的路径,使用绝对路径或者做下软连接即可;
如果报错

(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.

执行的脚本中执行

chmod +s /bin/netstat

来解决chmod +s 的意思是:为了方便普通用户执行一些特权命令,SUID/SGID程序允许普通用户以root身份暂时执行该程序,并在执行结束后再恢复身份
给要监控的主机添加MySQL模板,最后效果如下图:
1.png
2.png

zabbix 客户端执行netstat -p 报错

zabbix_get执行的脚本中含有netstat -lantup命令报错,原因是-p参数需要root用户才能使用

zabbix_get执行脚本时报错:

(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.

解决该问题的办法有两种:

通过配置vi /etc/sudoers 

Cmnd_Alias MONITORING = /bin/netstat,/sbin/sudo   
%monitor        ALL=(root) NOPASSWD:MONITORING

然后在修改userparameter_script.conf文件,利用sudo执行脚本即可

通过在执行的脚本中执行

chmod +s /bin/netstat

chmod +s 的意思是
为了方便普通用户执行一些特权命令,SUID/SGID程序允许普通用户以root身份暂时执行该程序,并在执行结束后再恢复身份

SVN数据迁移Linux到Windows机器

VN版本信息:
Linux: Subversion版本 1.6.11 (r934486)

Windows : VisualSVN Server Manager 2.7.6

使用工具
Putyy
WinScp

1.从Linux系统备份仓库

使用Putty连接到Linux,进入到SVN仓库目录,

执行命令进行备份:

svnadmin dump /home/subversion/repos > svnback20141114
/home/subversion/repos 要备份的仓库
svnback20141114 备份文件名

备份过程需要等待一会。

2.将仓库备份导入到Windows
备份完成以后使用WinScp将备份文件(svnback20141114)拷贝到Windows中。
打开cmd,进入仓库目录
执行命令创建新仓库:

svnadmin create 200SVN

执行命令将备份导入新仓库:
svnadmin load 200SVN < c:\svnback20141114

200SVN 导入的仓库名

c:ssvnback20141114 备份文件
漫长的等待后迁移完毕!
一般或者说大部分都是Windows到Linux,但是也有部分奇葩,是从L到W;
VIA: https://my.oschina.net/calvin6/blog/344693

Oracle 查看表空间大小及使用情况

1、查看表空间的名称及大小

SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size 
FROM dba_tablespaces t, dba_data_files d 
WHERE t.tablespace_name = d.tablespace_name 
GROUP BY t.tablespace_name; 

2、查看表空间物理文件的名称及大小

SELECT tablespace_name, 
file_id, 
file_name, 
round(bytes / (1024 * 1024), 0) total_space 
FROM dba_data_files 
ORDER BY tablespace_name; 

3、查看回滚段名称及大小

SELECT segment_name, 
tablespace_name, 
r.status, 
(initial_extent / 1024) initialextent, 
(next_extent / 1024) nextextent, 
max_extents, 
v.curext curextent 
FROM dba_rollback_segs r, v$rollstat v 
WHERE r.segment_id = v.usn(+) 
ORDER BY segment_name; 

4、查看控制文件

SELECT NAME FROM v$controlfile;

5、查看日志文件

SELECT MEMBER FROM v$logfile; 

6、查看表空间的使用情况

SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name 
FROM dba_free_space 
GROUP BY tablespace_name; 
SELECT a.tablespace_name, 
a.bytes total, 
b.bytes used, 
c.bytes free, 
(b.bytes * 100) / a.bytes "% USED ", 
(c.bytes * 100) / a.bytes "% FREE " 
FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c 
WHERE a.tablespace_name = b.tablespace_name 
AND a.tablespace_name = c.tablespace_name; 

7、查看数据库库对象

SELECT owner, object_type, status, COUNT(*) count# 
FROM all_objects 
GROUP BY owner, object_type, status; 

8、查看数据库的版本

SELECT version 
FROM product_component_version 
WHERE substr(product, 1, 6) = 'Oracle'; 

9、查看数据库的创建日期和归档方式

SELECT created, log_mode, log_mode FROM v$database; 

--1G=1024MB
--1M=1024KB
--1K=1024Bytes
--1M=11048576Bytes
--1G=1024*11048576Bytes=11313741824Bytes
10、查看表空间大小、使用大小、使用率等

SELECT a.tablespace_name "表空间名", 
total "表空间大小", 
free "表空间剩余大小", 
(total - free) "表空间使用大小", 
total / (1024 * 1024 * 1024) "表空间大小(G)", 
free / (1024 * 1024 * 1024) "表空间剩余大小(G)", 
(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)", 
round((total - free) / total, 4) * 100 "使用率 %" 
FROM (SELECT tablespace_name, SUM(bytes) free 
FROM dba_free_space 
GROUP BY tablespace_name) a, 
(SELECT tablespace_name, SUM(bytes) total 
FROM dba_data_files 
GROUP BY tablespace_name) b 
WHERE a.tablespace_name = b.tablespace_name 

Nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in nginx.conf解决之热更新

Nginx如果未开启SSL模块,配置Https时提示错误

nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf

是因为nginx缺少http_ssl_module模块,编译安装的时候带上--with-http_ssl_module参数
Nginx开启SSL模块步骤:
安装openssl支持

yum install openssl openssl-devel -y

查看nginx原有的模块

/usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.14.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) 
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx 

增加--with-http_ssl_module参数

/usr/local/nginx/sbin/nginx --prefix=/usr/local/nginx --with-http_ssl_module
make

这里不要进行make install,否则就是覆盖安装
备份原有已安装好的nginx

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

复制源码目录下的 objs/nginx 覆盖/usr/local/nginx/sbin/nginx

cp ./objs/nginx /usr/local/nginx/sbin/

对新安装的进行语法测试,显示successfully表示成功

/usr/local/nginx/sbin/nginx -t  
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

重启nginx

/usr/local/nginx/sbin/nginx -s reload  重新加载,实现平滑升级

查看是否已经加入成功新编译的参数:

/usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.14.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-zlib=/opt/zlib-1.2.11 --with-pcre=/opt/pcre-8.42 --with-http_stub_status_module --with-http_realip_module --with-http_gzip_static_module --with-http_ssl_module

Oracle查询所有DBA账号及其他账号

查询所有DBA账号

select * from dba_role_privs where granted_role='DBA';
或者
select * from (select distinct connect_by_root grantee username,granted_role from dba_role_privs connect by prior granted_role =grantee ) a where a.granted_role='DBA';

查看所有用户:

  select * from dba_users;
  select * from all_users;
  select * from user_users;

查看用户对象权限:

  select * from dba_tab_privs;
  select * from all_tab_privs;
  select * from user_tab_privs;

查看所有角色:

select * from dba_roles;

查看用户或角色所拥有的角色:

  select * from dba_role_privs;
  select * from user_role_privs;

查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)

SQL> select * from V$PWFILE_USERS;

USERNAME                       SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS                            TRUE  TRUE  FALSE

查看RESOURCE具有那些权限

SQL> SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';
GRANTEE                        PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
RESOURCE                       CREATE TRIGGER                           NO
RESOURCE                       CREATE SEQUENCE                          NO
RESOURCE                       CREATE TYPE                              NO
RESOURCE                       CREATE PROCEDURE                         NO
RESOURCE                       CREATE CLUSTER                           NO
RESOURCE                       CREATE OPERATOR                          NO
RESOURCE                       CREATE INDEXTYPE                         NO
RESOURCE                       CREATE TABLE                             NO
 
已选择8行。

查看角色(DBA)被赋予的角色权限

select * from role_role_privs t where t.role = 'DBA';

查看角色(DBA)被赋予的对象权限

select * from role_tab_privs t1  where t1.role = 'DBA';

Oracle exp导出加where指定条件

exp username/password@192.168.x.x/orcl file = F:\nc\bd_corp.dmp tables="(bd_corp)" query = \"where PK_CORP IN(1015,1156) AND TS < '2017-12-31 23:59:59' AND TS > '2015-01-01 00:00:00' \"

另导入数据时加上 ignore=y 会忽略掉错误信息

exp system/123456 file=test.dmp tables=table1,table2,table3 log=test.log

或者

exp system/123456 file=test.dmp tables="(table1,table2,table3)" log=test.log

多个tables要加上双引号,
将数据库完全导出,设置full选项

exp system/manager@orcl file=d:\db.dmp full=y

导出数据库结构,不导出数据,设置rows选项
exp system/manager@orcl file=d:\db.dmp rows=n full=y

当导出数据量较大时,可以分成多个文件导出,设置filesize选项
exp system/manager@orcl file=d:\db1.dmp,d:\db2.dmp filesize=50M full=y

将数据库中system用户与sys用户的表导出,设置owner选项
exp system/manager@orcl file=d:\Test_bak.dmp owner=(system,sys)

将数据库中的表t_result,t_khtime导出,设置tables选项
exp system/manager@orcl file= d:\Test_bak.dmp tables=(t_result,t_khtime)

将数据库中的表T_SCORE_RESULT中updatedate日期字段大于某个值的数据导出,设置query选项
exp kpuser/kpuser@orcl file=d:\Test_bak.dmp tables=(T_SCORE_RESULT) query=\" where updatedate>to_date('2016-9-1 18:32:00','yyyy-mm-dd hh24:mi:ss')\"

如果使用了tables就不能用owner,如果用了owner就不能用tables否则回报错;
当需要导入/导出的数据量比较大时,这个过程需要的时间是比较长的,我们可以用一些方法来优化exp的操作。
1)使用直接路径 direct=y,oracle会避开sql语句处理引擎,直接从数据库文件中读取数据,然后写入导出文件
2)如果没有使用直接路径,必须保证buffer参数的值足够大.

Oracle sql日期比较及函数

oracle sql日期比较:

在今天之前:

select * from abtable where TS < to_date('2018-07-03 00:00:00','yyyy-mm-dd hh24:mi:ss') AND TS <= to_date('2018-07-03 00:00:00','yyyy-mm-dd hh24:mi:ss')

在今天之后:

select * from abtable where TS > to_date('2018-07-03 00:00:00','yyyy-mm-dd hh24:mi:ss') AND TS >= to_date('2018-07-03 00:00:00','yyyy-mm-dd hh24:mi:ss')

如果TS字段为

 ts CHAR(19) default to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),

可以直接用日期查询:

select * from bd_corp where PK_CORP IN(1015,1156) AND TS < '2017-12-31 23:59:59' AND TS > '2015-01-01 00:00:00'

精确时间:

select * from TESTTB where CREATE = to_date('2018-07-03 00:00:00','yyyy-mm-dd hh24:mi:ss')

between 操作符

-- 在where 子句中使用,选取介于两个值之间的数据范围,这些值可以是数字,文本,日期
------- 不同的数据库对 BETWEEN...AND 操作符的处理方式是有差异的。
------- 某些数据库会列出介于 "Adams" 和 "Carter" 之间的人,但不包括 "Adams" 和 "Carter" ;
------- 某些数据库会列出介于 "Adams" 和 "Carter" 之间并包括 "Adams" 和 "Carter" 的人;
------- 而另一些数据库会列出介于 "Adams" 和 "Carter" 之间的人,包括 "Adams" ,但不包括 "Carter" 。

在某段时间内:

select * from TESTTB where CREATE between to_date('2018-07-03 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date('2018-07-03 00:00:00','yyyy-mm-dd hh24:mi:ss')
select * from up_date where update < to_date('2018-07-03 00:00:00','yyyy-mm-dd hh24:mi:ss') and update > to_date('2018-07-03 00:00:00','yyyy-mm-dd hh24:mi:ss')
或者
select * from bd_corp where PK_CORP IN(1015,1156) AND TS < '2017-12-31 23:59:59' AND TS > '2015-01-01 00:00:00'

Oracle 获取当前日期及日期格式

获取系统日期:  SYSDATE()
格式化日期:
TO_CHAR(SYSDATE(),'YY/MM/DD HH24:MI:SS)
或 TO_DATE(SYSDATE(),'YY/MM/DD HH24:MI:SS)

格式化数字:
TO_NUMBER
注: TO_CHAR 把日期或数字转换为字符串

TO_CHAR(number, '格式') 
TO_CHAR(salary, '$99,999.99') 
TO_CHAR(date, '格式')
TO_DATE  把字符串转换为数据库中的日期类型
TO_DATE(char, '格式')
TO_NUMBER  将字符串转换为数字 
TO_NUMBER(char, '格式')

返回系统日期:

SQL> select sysdate from dual;

SYSDATE
--------------
03-7月 -18

mi是分钟

SQL> select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS'
--------------------------------------
2018-07-03 11:15:59

mm会显示月份

SQL> select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;

TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MM:SS'
--------------------------------------
2018-07-03 11:07:39
SQL> select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual  ;

TO_CHAR(SYSDATE,'YY-MM-DDHH24:MI:S
----------------------------------
18-07-03 11:17:09
转换的格式:
表示 year 的:y 表示年的最后一位 、
                     yy 表示年的最后2位 、 
                     yyy 表示年的最后3位 、
                     yyyy 用4位数表示年

表示month的: mm 用2位数字表示月 、
                       mon 用简写形式, 比如11月或者nov 、
                       month 用全称, 比如11月或者november

表示day的:dd  表示当月第几天 、
                  ddd 表示当年第几天 、
                  dy  当周第几天,简写, 比如星期五或者fri 、
                  day 当周第几天,全称, 比如星期五或者friday

表示hour的:hh   2位数表示小时 12进制、 
                   hh24 2位数表示小时 24小时

表示minute的:mi 2位数表示分钟

表示second的:ss 2位数表示秒 60进制

表示季度的:q 一位数 表示季度 (1-4)

另外还有ww 用来表示当年第几周 w用来表示当月第几周。

24小时制下的时间范围:00:00:00-23:59:59
12小时制下的时间范围:1:00:00-12:59:59

数字格式:  9  代表一个数字 
               0  强制显示0 
               $  放置一个$符 
               L  放置一个浮动本地货币符 
               .  显示小数点 
               ,  显示千位指示符
当前时间减去7分钟的时间 
select sysdate,sysdate - interval '7' MINUTE from dual; 
当前时间减去7小时的时间 
select sysdate - interval '7' hour from dual; 
当前时间减去7天的时间 
select sysdate - interval '7' day from dual; 
当前时间减去7月的时间 
select sysdate,sysdate - interval '7' month from dual; 
当前时间减去7年的时间 
select sysdate,sysdate - interval '7' year from dual; 
时间间隔乘以一个数字 
select sysdate,sysdate - 8*interval '7' hour from dual;

含义解释: 
  Dual伪列
      Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的select语句块中。
      不同系统可能返回日期的格式不一样。
      返回当前连接的用户:select user from dual;
1、上月末天:
SQL> select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from dual;

LASTDAY
--------------------
2018-06-30

2、上月今天
SQL> select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual;

PRETODAY
--------------------
2018-06-03

3、上月首天
SQL> select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') firstDay from dual;

FIRSTDAY
--------------------
2018-06-01

4、按照每周进行统计
SQL> select to_char(sysdate,'ww') from dual group by to_char(sysdate,'ww');

TO_C
----
27

5、按照每月进行统计
SQL> select to_char(sysdate,'mm') from dual group by to_char(sysdate,'mm');

TO_C
----
07

6、按照每季度进行统计
SQL> select to_char(sysdate,'q') from dual group by to_char(sysdate,'q');

TO
--
3

7、按照每年进行统计
SQL> select to_char(sysdate,'yyyy') from dual group by to_char(sysdate,'yyyy');

TO_CHAR(
--------
2018

8、要找到某月中所有周五的具体日期 
SQL> select to_char(t.d,'YY-MM-DD') from (
  2  select trunc(sysdate, 'MM')+rownum-1 as d
  3  from dba_objects
  4  where rownum < 32) t
  5  where to_char(t.d, 'MM') = to_char(sysdate, 'MM') --找出当前月份的周五的日期
  6  and trim(to_char(t.d, 'Day')) = '星期五'
  7  ;

TO_CHAR(T.D,'YY-
----------------
18-07-06
18-07-13
18-07-20
18-07-27
如果把where to_char(t.d, 'MM') = to_char(sysdate, 'MM')改成sysdate-90,即为查找当前月份的前三个月中的每周五的日期。

查看oracle数据库(database)的版本命令

sqlplus或控制台中下输入以下任意一个语句

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production


SQL> select version from v$instance;

VERSION
----------------------------------
11.2.0.1.0


SQL> Select version FROM Product_component_version   Where SUBSTR(PRODUCT,1,6)='Oracle';

VERSION
--------------------------------------------------------------------------------
11.2.0.1.0

最新

分类

归档

评论

  • Liang: 贴下编译参数和步骤,...
  • shao3911: 您好,为什么我在编译...
  • aliang: 先看是yum安装还是...
  • aliang: 将原来的nginx安...
  • yen: 3、如果要回滚的话,...
  • yen: 刚好需要升级ngin...
  • 文雨: 一些新的method...
  • aliang: 默认不屏蔽估计开发团...
  • 山野愚人居: PHP既然允许直接使...
  • aliang: 最下面有github地址·

其它