Scripts: 查询2019年新个人所得税
昨天发工资已经试用了新的税改办法,主要采用全年的累计预扣预缴,理解起来比以往稍微复杂点,咋一看了半天还没搞懂,闲时写了个sql计算
SQL版本
1 | with t as |
嗯 就是这样
Python版本
1 | #!/usr/bin/env python |
1 | D:\>python 1.py |
EXE版本
添加了一行os.system("pause")
,下载地址
1 | pyinstaller -F 1.py |
昨天发工资已经试用了新的税改办法,主要采用全年的累计预扣预缴,理解起来比以往稍微复杂点,咋一看了半天还没搞懂,闲时写了个sql计算
1 | with t as |
嗯 就是这样
1 | #!/usr/bin/env python |
1 | D:\>python 1.py |
添加了一行os.system("pause")
,下载地址
1 | pyinstaller -F 1.py |
11g以前,一般查询表空间都是通过DBA_DATA_FILE和DBA_FREE_SPACE两个视图来查询。但从11g开始,如果你习惯看EM的话,会发现表空间使用率跟我们以前的sql查出来的结果有出入。这是因为EM采用了新的视图dba_tablespace_usage_metrics,针对自动扩展的表空间,得出来的结果就会不一样。
dba_tablespace_usage_metrics的used_space是已经分配的空间,对应v$filespace_usage的allocated_space字段,而对于非自动扩展的表空间,使用DBA_TABLESPACE_USAGE_METRICS视图,与传统脚本使用的DBA_DATA_FILE和DBA_FREE_SPACE查询的结果是一致的。
1 | SYS@xb> select FILE_ID,TABLESPACE_NAME,AUTOEXTENSIBLE,MAXBLOCKS from dba_data_files; |
通过上面的结果可以看到,对于自动扩展的system表空间来说,查出来的结果差距接近13g,这是因为DBA_TABLESPACE_USAGE_METRICS视图中的tablespace_size是dba_data_files的最大的块数。也就是dba_tablespace_usage_metrics的tablespace_size是datafile能增长到的最大值。
先看下DBA_TABLESPACE_USAGE_METRICS视图的定义
1 | SYS@xb> set long 99999 |
这里tablespace_size跟dba_data_files的maxblock 并不一致
1 | SYS@xb> select FILE_ID,TABLESPACE_NAME,AUTOEXTENSIBLE,MAXBLOCKS,MAXBLOCKS*8192/1024/1024 "size(MB)" from dba_data_files; |
差异有点大,暂时不清楚是什么原因。个人认为最大block值应该约为32g比较准确,因为都是small file tablespace
关于临时表空间的使用,也许会碰到v$temp_space_header
的temp usage怎么大于v$tempseg_usage
(或v$sort_usage)的值呢?
1 | select tablespace_name, sum(bytes_used/1024/1024) "gb_used" |
视图v$sort_usage
或者v$tempseg_usage
(和v$sort_segment
)给出了sort segment分配的正确信息,我们应该通过使用这三个表来查询当前临时空间的确切使用情况的。
但是,v$temp_space_header
则是当临时空间使用最高的时候每个临时文件的多少块数,事实上,它展示了每个临时文件初始块的个数并非实际分配的块。v$sort_usage
/v$tempseg_usage
确切的反映了初始块中对每个事务分配了多少实际的sort extent。
另外,v$temp_space_header
的信息是持久化的,即便重启也不会改变;而V$sort_segment
and v$sort_usage
不是持久的。
正确查看表空间的语句
1 | SELECT /*+ first_rows */ |
安装脚本:
https://raw.githubusercontent.com/xblvesting/oracle-install/master/auto-install.sh
Readme
部分安装日志:
1 | [root@xb ~]# wget http://127.0.0.1/soft/auto-install.sh && chmod a+x auto-install.sh && ./auto-install.sh install_db |