oracle日常运维

创建数据库

使用DB Config Assistant创建数据库后执行

1
2
3
4
5
6
7
8
9
sqlplus sys/mypasswd@sid as sysdba

CREATE TABLESPACE myspace DATAFILE 'E:\myspace\myspace01.DBF' SIZE 15G AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

create user myuser identified by mypasswd default tablespace myspace temporary tablespace temp quota unlimited on myspace;
grant create session to myuser;
grant Resource to myuser;
grant connect to myuser;
grant DBA to myuser;

导入导出数据库

  1. 使用expimp导入导出

    1
    2
    3
    4
    5
    # 导出数据
    exp system/passwd@sid file=d:\dump\test.dmp full=y;

    # 导入数据
    imp username/passwd@sid full=y file=D:/dump/test.dmp ignore=y;
  2. 使用expdbimpdb导入导出

    1
    2
    3
    4
    5
    6
    7
    8
    9
    sqlplus system/mypasswd@sid as sysdba
    # 查看目录
    select * from dba_directories;
    # 如果没有合适的目录,则创建一个
    create directory dump_dir as 'D:\dump';
    # 导出scheme
    expdp system/manage@sid DIRECTORY=dump_dir schemas=orguser dumpfile=dump.dmp
    # 导入scheme
    impdp system/manage@sid directory=dump_dir dumpfile=dump.dmp schemas=orguser remap_schema=orguser:newuser remap_tablespace=orgtable:newtable table_exists_action=replace logfile=impdp.log;

查看进程执行的sql

1
2
3
4
5
6
7
8
SELECT sql_text FROM v$sqltext a WHERE (a.hash_value, a.address) IN
(SELECT DECODE (sql_hash_value,0, prev_hash_value,sql_hash_value ),
DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)
FROM v$session b
WHERE b.paddr =
(SELECT addr FROM v$process c WHERE c.spid='$pid'
)
) ORDER BY piece ASC;

查看资源消耗最多的sql

1
2
3
4
5
6
7
select b.username username,a.disk_reads reads,
a.executions exec,a.disk_reads/decode(a.executions,0,1,a.executions) rds_exec_ratio,
a.sql_text Statement
from v$sqlarea a,dba_users b
where a.parsing_user_id=b.user_id
and a.disk_reads > 100000
order by a.disk_reads desc;

查看磁盘消耗最多的sql

1
2
3
4
5
6
select disk_reads,sql_text
from (select sql_text,disk_reads,
dense_rank() over
(order by disk_reads desc) disk_reads_rank
from v$sql)
where disk_reads_rank <=5;

参考
Oracle exp/expdp imp/impdp导入导出数据

文件下载默认保存名

在前端使用a标签下载文件,浏览器会自动打开文件预览。可以使用html5的download属性来实现下载。
如:

1
<a href="xx.pdf" download>下载</a>

如果需要指定文件名,则可以写成:

1
<a href="xx.pdf" download="filename">下载</a>

如果需要修改后缀,则可以写成:

1
<a href="xx.pdf" download="filename.doc">下载</a>

问题:

如果跨域了,在chorme浏览器下,可以下载,但是下载的文件名设置无效,如:

1
<a href="xx.pdf" download="filename.doc">下载</a>

下载下来的文件名仍然为xx.pdf,解决文件名问题有2个方法:

sublime总结

序列号

直接输入注册码就可以了

1
2
3
4
5
6
7
8
9
10
11
12
13
----- BEGIN LICENSE -----
Andrew Weber
Single User License
EA7E-855605
813A03DD 5E4AD9E6 6C0EEB94 BC99798F
942194A6 02396E98 E62C9979 4BB979FE
91424C9D A45400BF F6747D88 2FB88078
90F5CC94 1CDC92DC 8457107A F151657B
1D22E383 A997F016 42397640 33F41CFC
E1D0AE85 A0BBD039 0E9C8D55 E1B89D5D
5CDB7036 E56DE1C0 EFCC0840 650CD3A6
B98FC99C 8FAC73EE D2B95564 DF450523
------ END LICENSE ------

快捷键

ctrl+p  搜索文件
esc  退出弹出的窗口
ctrl+N 新建标签页
ctrl+shift+N 新建窗口
ctrl+W 关闭标签页
ctrl+O 打开当前文件的目录
ctrl+G跳转到多少行
ctrl+M 匹配括号
ctrl+shift+p 打开命令窗口
ctrl+· 打开控制台,python
ctrl+F 搜索单文件
ctrl+shift+F 搜索多文件
shift+鼠标右键(window)  option+鼠标左键 (mac)  选择多行
ctrl+; (win)  commad+p 搜索字符
ctrl+R(win)  commad+R(mac)    查找函数或者类
ctrl+X  或 ctrl+shift+k 删除一行
ctrl+KK 删除光标到行尾的字符
ctrl+k+backspace  删除光标到行头
ctrl+enter 在当前行之后插入新行
ctrl+shift+enter 在当前行之前插入行
ctrl+shift+up或者down  将当前行向上或者向下移动
ctrl+L 选择一行
ctrl+D 选择一个单词
ctrl+【  和ctrl+】 缩进
ctrl+shift+D 复制一行
ctrl+/ 注释
ctrl+shift+/ 多行注释
ctrl+J  合并多行
ctrl+shift+v 缩进粘贴

OSX下VMware虚拟网络ip设置

虚拟机的网络访问方式分NAT模式和桥接模式。
NAT模式即使用的物理机的ip访问外部网络,通过虚拟网卡做nat转换,在window下可以通过界面直接修改虚拟ip设置。OSX下如果不使用dhcp自动分配虚拟机ip,则需要把虚拟机的ip设置到192.168.71.0网段下,网关设置成192.168.71.2。如果想自己指定网段,则需要修改:

1
2
3
# sudo vi /Library/Preferences/VMware\ Fusion/networking
# sudo vi /Library/Preferences/VMware\ Fusion/networking/vmnet8/dhcpd.conf
# sudo vi /Library/Preferences/VMware\ Fusion/networking/vmnet8/nat.conf

桥接模式相对简单,即使用物理主机同网段的ip即可。选择桥接模式,虚拟机的网关和物理机网关设置成一样,ip设置到物理机的同网段下。

svn之服务器镜像同步

如果同步,需要在服务器上,如果是备份,则在安装svn客服端的机器即可。
1.建立新项目

1
svnadmin create svn_repos

2.执行(如果windows,需要将pre-revprop-change改成pre-revprop-change.bat)

1
2
3
4
cp /var/svndata/svn_repos/hooks/pre-revprop-change.tmpl /var/svndata/svn_repos/hooks/pre-revprop-change
chmod a+x /var/svndata/svn_repos/hooks/pre-revprop-change
svnsync init file:///var/svndata/svn_repos https://showmecode.cn/code/svn_repos --sync-username user_svnsync --sync-password svnsync
svnsync sync --non-interactive file:///var/svndata/svn_repos

FAQ

如果在镜像服务器不小心提交了代码,会导致镜像服务器无法同步。

1
2
svnsync: E000022: Destination HEAD (15904) is not the last merged revision (1590
3); have you committed to the destination without using svnsync?

解决方法:

1
svn propset --revprop -r0 svn:sync-last-merged-rev 15904 file:///D:/csvn/data/repositories/projectname

参考
window下给svn域做镜像
使用svnsync实现已有版本库的镜像

shell基础语法

基本语法

变量

赋值

变量赋值时,如果值(字符串)中包含空格,则必须使用单引号或者双引号括起来,如果不包含空格,可不使用单引号或双引号。

等号两边一定不能出现空格,切记!

1
2
3
myvar=Hello
myvar="Hello Wolrd"
myvar='Hello World'

使用变量

使用$加变量名使用变量,\$则无法使用变量,在单引号里的也将无法使用变量。

1
2
3
4
5
6
7
myvar="Hello World"

echo $myvar #Hello World
echo "$myvar" #Hello World
echo ${myvar} #Hello World
echo '$myvar' #$myvar
echo \$myvar #$myvar

vim总结

记录vim使用过程中遇到的问题和小tip。

安装

centos升级vim

1
2
3
rpm -qa | grep vim  
yum remove vim vim-enhanced vim-common vim-minimal
yum -y install vim*

窗口外观

文件操作

1
2
3
4
5
6
" 跳转当前光标所对应的文档
gf
" 从跳转的文档回退
<C-o>
" 从跳转的文档回退
:bf

键盘映射

将 CapsLock 键映射成 Esc键

1.linux系统下,在~/.profile文件里添加

1
xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'

2.windows系统下,将下面代码保存为 capslock2esc.reg:

1
2
3
4
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,3a,00,01,00,01,00,3a,00,00,00,00,00

然后双击写入注册表,重启系统。

参考
Vim技巧——将 CapsLock 键映射成 Esc键

gvim相关

1
2
3
4
5
" 设置gvim在window下窗口最大化
autocmd GUIEnter * simalt ~x

" gvim nerdtree 切换盘符
:NERDTREE D:\

你应该知道的10个vim小技巧

我想你应该知道下面10条vim的小技巧

1. 星号*和井号#

在normal模式下,可以使用*#查找当前光标位置的单词。*是向前查找,#是向后查找。

2. 在任何文档中简单补全

在插入模式使用<C-n><C-p>即可在当前文档中查找单词进行补全。<C-n>向后查找单词,<C-p>向前查找。

3. .

输入.重复上一次改动。

4. %

在编程中,常需要匹配括号。此时可以使用%键在2个括号上来回跳动。

5. 使用===对代码做缩进

对于单行代码缩进,可以在normal模式下,使用==缩进代码。
需要缩进多行代码,可以使用visual模式,选择代码,再使用=进行缩进。