Lang's Blog

Keep writing, Keep loving

问题描述

使用windows上的tensorboard时,明明正确生成了graph,但是在logdir参数中赋上绝对路径后进入web板中没有任何数据显示

解决方案

1.打开命令行,cd到生成graph的目录 ==OR== 到目录下shift+右键菜单“在此处打开Powershell窗口”

2.命令框中直接输入
tensorboard --logdir="./"

简单暴力!

问题描述

嗯,校园网欠费了,但是宿舍这里无法登陆,显示欠费,实验室的电脑使用的网关是可以登陆正常上网的!不显示欠费!内网远程实验室桌面,没问题,是不是有点麻烦?既然能远程,那说明可以通过代理实现网络数据的转发!网络共享,自己动手丰衣足食!

问题抽象

同一局域网内,有一台电脑可以上网,想要通过这台电脑,使得其他电脑或者移动设备可以上网

适用环境

可以上网的电脑:Windows7及以上系统,或者能够部署HTTP代理服务器的皆可

其他电脑或移动设备:安装有支持全局HTTP网络代理功能的软件,系统自带支持全局亦可

我的实际环境

可以上网的电脑:Windows 10 1703 专业版

其他电脑或移动设备:Android & Windows 10 1703 专业版 & iPhone

支持全局HTTP的软件:

Android : 系统自带的WLAN中的HTTP代理 或 Adguard(或使用手机版SSR、v2ray等可以实现全局代理流量、支持转发sock或http的app)

iPhone : 系统自带的WLAN中的HTTP代理 或 支持HTTP全局代理即可(小飞机)

Windows : SStap | Adguard

代理服务器部署:CCproxy

实现步骤

① 完成相关软件的安装

② 配置CCproxy

img

img

img

img

③ 配置需要网络的电脑或移动设备的HTTP代理

服务器地址就是可上网电脑CCproxy中绑定的内网地址

端口是CCproxy中配置HTTP的端口号

用户密码若有则是CCproxy新建的用户名与密码

若无置空即可

④ 可以上网了

结语

当然以上通过CCproxy的HTTP代理实现的网络共享,同样也可在可上网的电脑上安装node.js搭建SSR服务器,通过SStap可实现SSR的连接,但某些情况下由于有UDP的转发,性能可能不太稳定

为了实现流量的特征提取

我使用scapy实现抓包数据的读取

1
2
3
4
from scapy.all import rdpcap

a = rdpcap('target.pcap')
print(a[3])

但是print的数据却很不人性化如下:

1
b'\x00\x0c)\n\xf1\r\x00PV\xc0\x00\x08\x08\x00E\x00\x00\xa2Z\t@\x00@\x06\xb8z\xc0\xa8S\x01\xc0\xa8S\x80,]#\x8cH_\xc5\xa4L\xed0=P\x18\x01\x00\xff\x8b\x00\x00POST /getname HTTP/1.1\r\nHOST: 192.168.83.128:9100\r\ncontent-type: application/json\r\ncontent-length: 17\r\n\r\n{"name":"kslaaa"}'

这哪是人看的

所以需要加上一个参数

mysummary,如下

1
2
3
4
from scapy.all import rdpcap

a = rdpcap('target.pcap')
print(a[3].mysummary)

print出来如下,咳咳,稍微有点人性化,至少可以处理了

1
<bound method Ether.mysummary of <Ether  dst=00:0c:29:0a:f1:0d src=00:50:56:c0:00:08 type=0x800 |<IP  version=4 ihl=5 tos=0x0 len=162 id=23049 flags=DF frag=0 ttl=64 proto=tcp chksum=0xb87a src=192.168.83.1 dst=192.168.83.128 |<TCP  sport=11357 dport=9100 seq=1214236068 ack=1290612797 dataofs=5 reserved=0 flags=PA window=256 chksum=0xff8b urgptr=0 |<Raw  load='POST /getname HTTP/1.1\r\nHOST: 192.168.83.128:9100\r\ncontent-type: application/json\r\ncontent-length: 17\r\n\r\n{"name":"kslaaa"}' |>>>>>

初次尝试编写的支持向量机实例
鸢尾花二属性支持向量分类也比较适合我这种新手
网上有人多写过,但是我尝试这写时才发现有一堆问题
不知是版本问题还是模块方法被废弃了
几经波折整理出能正常运行的python代码
环境为python3.7


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# -*- coding:utf-8 -*-

import numpy as np
from sklearn import svm
from sklearn.model_selection import train_test_split
import matplotlib as mpl
from matplotlib import colors
import matplotlib.pyplot as plt


def iris_type(s):
it = {b'Iris-setosa': 0, b'Iris-versicolor': 1, b'Iris-virginica': 2}
return it[s]


def show_accuracy(a, b, tip):
acc = a.ravel() == b.ravel()
print(tip + '正确率:', np.mean(acc))


path = 'iris.data'
data = np.loadtxt(path, dtype=float, delimiter=',', converters={4: iris_type})

# 将Iris分为训练集与测试集
# split(数据,分割位置,轴=1(水平分割) or 0(垂直分割))
x, y = np.split(data, (4,), axis=1)
# x取样本X的所有行和前两列,进行特征向量训练
x = x[:, :2]
# train_test_split(train_data,train_target,test_size=数字, random_state=0)
# train_data:所要划分的样本特征集
# train_target:所要划分的样本结果
# test_size:样本占比,如果是整数的话就是样本的数量
# random_state:是随机数的种子
x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=0.6, test_size=0.4, random_state=1)

# 训练svm分类器
# kernel='linear'时,为线性核,C越大分类效果越好,但有可能会过拟合(defaul C=1)。
# kernel='rbf'时(default),为高斯核,gamma值越小,分类界面越连续
# gamma值越大,分类界面越“散”,分类效果越好,但有可能会过拟合。
# ecision_function_shape='ovr'时,为one v rest
# 即一个类别与其他类别进行划分,
# decision_function_shape='ovo'时,为one v one
# 即将类别两两之间进行划分,用二分类的方法模拟多分类的结果。
clf = svm.SVC(C=0.8, kernel='rbf', gamma=20, decision_function_shape='ovr')
clf.fit(x_train, y_train.ravel())

# 计算svc分类器的准确率
print(clf.score(x_train, y_train)) # 精度
y_hat = clf.predict(x_train)
show_accuracy(y_hat, y_train, '训练集')
print(clf.score(x_test, y_test))
y_hat = clf.predict(x_test)
show_accuracy(y_hat, y_test, '测试集')

# print('decision_function:\n', clf.decision_function(x_train))
# print('\npredict:\n', clf.predict(x_train))

x1_min, x1_max = x[:, 0].min(), x[:, 0].max() # 第0列的范围
x2_min, x2_max = x[:, 1].min(), x[:, 1].max() # 第1列的范围
x1, x2 = np.mgrid[x1_min:x1_max:200j, x2_min:x2_max:200j] # 生成网格采样点
grid_test = np.stack((x1.flat, x2.flat), axis=1) # 测试点
grid_hat = clf.predict(grid_test) # 预测分类值
grid_hat = grid_hat.reshape(x1.shape)

# 指定默认字体
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False

# 绘制
cm_light = colors.ListedColormap(['#A0FFA0', '#FFA0A0', '#A0A0FF'])
cm_dark = colors.ListedColormap(['g', 'r', 'b'])
plt.pcolormesh(x1, x2, grid_hat, cmap=cm_light)
plt.scatter(x[:, 0], x[:, 1], c=np.squeeze(y), edgecolors='k', s=50, cmap=cm_dark) # 样本
plt.scatter(x_test[:, 0], x_test[:, 1], s=120, facecolors='none', zorder=10) # 圈中测试集样本
plt.xlabel(u'花萼长度', fontsize=13)
plt.ylabel(u'花萼宽度', fontsize=13)
plt.xlim(x1_min, x1_max)
plt.ylim(x2_min, x2_max)
plt.title(u'鸢尾花SVM二特征分类', fontsize=15)
plt.show()

方便没有数据的小伙伴,以下数据直接复制到iris.data中即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa
5.0,3.6,1.4,0.2,Iris-setosa
5.4,3.9,1.7,0.4,Iris-setosa
4.6,3.4,1.4,0.3,Iris-setosa
5.0,3.4,1.5,0.2,Iris-setosa
4.4,2.9,1.4,0.2,Iris-setosa
4.9,3.1,1.5,0.1,Iris-setosa
5.4,3.7,1.5,0.2,Iris-setosa
4.8,3.4,1.6,0.2,Iris-setosa
4.8,3.0,1.4,0.1,Iris-setosa
4.3,3.0,1.1,0.1,Iris-setosa
5.8,4.0,1.2,0.2,Iris-setosa
5.7,4.4,1.5,0.4,Iris-setosa
5.4,3.9,1.3,0.4,Iris-setosa
5.1,3.5,1.4,0.3,Iris-setosa
5.7,3.8,1.7,0.3,Iris-setosa
5.1,3.8,1.5,0.3,Iris-setosa
5.4,3.4,1.7,0.2,Iris-setosa
5.1,3.7,1.5,0.4,Iris-setosa
4.6,3.6,1.0,0.2,Iris-setosa
5.1,3.3,1.7,0.5,Iris-setosa
4.8,3.4,1.9,0.2,Iris-setosa
5.0,3.0,1.6,0.2,Iris-setosa
5.0,3.4,1.6,0.4,Iris-setosa
5.2,3.5,1.5,0.2,Iris-setosa
5.2,3.4,1.4,0.2,Iris-setosa
4.7,3.2,1.6,0.2,Iris-setosa
4.8,3.1,1.6,0.2,Iris-setosa
5.4,3.4,1.5,0.4,Iris-setosa
5.2,4.1,1.5,0.1,Iris-setosa
5.5,4.2,1.4,0.2,Iris-setosa
4.9,3.1,1.5,0.1,Iris-setosa
5.0,3.2,1.2,0.2,Iris-setosa
5.5,3.5,1.3,0.2,Iris-setosa
4.9,3.1,1.5,0.1,Iris-setosa
4.4,3.0,1.3,0.2,Iris-setosa
5.1,3.4,1.5,0.2,Iris-setosa
5.0,3.5,1.3,0.3,Iris-setosa
4.5,2.3,1.3,0.3,Iris-setosa
4.4,3.2,1.3,0.2,Iris-setosa
5.0,3.5,1.6,0.6,Iris-setosa
5.1,3.8,1.9,0.4,Iris-setosa
4.8,3.0,1.4,0.3,Iris-setosa
5.1,3.8,1.6,0.2,Iris-setosa
4.6,3.2,1.4,0.2,Iris-setosa
5.3,3.7,1.5,0.2,Iris-setosa
5.0,3.3,1.4,0.2,Iris-setosa
7.0,3.2,4.7,1.4,Iris-versicolor
6.4,3.2,4.5,1.5,Iris-versicolor
6.9,3.1,4.9,1.5,Iris-versicolor
5.5,2.3,4.0,1.3,Iris-versicolor
6.5,2.8,4.6,1.5,Iris-versicolor
5.7,2.8,4.5,1.3,Iris-versicolor
6.3,3.3,4.7,1.6,Iris-versicolor
4.9,2.4,3.3,1.0,Iris-versicolor
6.6,2.9,4.6,1.3,Iris-versicolor
5.2,2.7,3.9,1.4,Iris-versicolor
5.0,2.0,3.5,1.0,Iris-versicolor
5.9,3.0,4.2,1.5,Iris-versicolor
6.0,2.2,4.0,1.0,Iris-versicolor
6.1,2.9,4.7,1.4,Iris-versicolor
5.6,2.9,3.6,1.3,Iris-versicolor
6.7,3.1,4.4,1.4,Iris-versicolor
5.6,3.0,4.5,1.5,Iris-versicolor
5.8,2.7,4.1,1.0,Iris-versicolor
6.2,2.2,4.5,1.5,Iris-versicolor
5.6,2.5,3.9,1.1,Iris-versicolor
5.9,3.2,4.8,1.8,Iris-versicolor
6.1,2.8,4.0,1.3,Iris-versicolor
6.3,2.5,4.9,1.5,Iris-versicolor
6.1,2.8,4.7,1.2,Iris-versicolor
6.4,2.9,4.3,1.3,Iris-versicolor
6.6,3.0,4.4,1.4,Iris-versicolor
6.8,2.8,4.8,1.4,Iris-versicolor
6.7,3.0,5.0,1.7,Iris-versicolor
6.0,2.9,4.5,1.5,Iris-versicolor
5.7,2.6,3.5,1.0,Iris-versicolor
5.5,2.4,3.8,1.1,Iris-versicolor
5.5,2.4,3.7,1.0,Iris-versicolor
5.8,2.7,3.9,1.2,Iris-versicolor
6.0,2.7,5.1,1.6,Iris-versicolor
5.4,3.0,4.5,1.5,Iris-versicolor
6.0,3.4,4.5,1.6,Iris-versicolor
6.7,3.1,4.7,1.5,Iris-versicolor
6.3,2.3,4.4,1.3,Iris-versicolor
5.6,3.0,4.1,1.3,Iris-versicolor
5.5,2.5,4.0,1.3,Iris-versicolor
5.5,2.6,4.4,1.2,Iris-versicolor
6.1,3.0,4.6,1.4,Iris-versicolor
5.8,2.6,4.0,1.2,Iris-versicolor
5.0,2.3,3.3,1.0,Iris-versicolor
5.6,2.7,4.2,1.3,Iris-versicolor
5.7,3.0,4.2,1.2,Iris-versicolor
5.7,2.9,4.2,1.3,Iris-versicolor
6.2,2.9,4.3,1.3,Iris-versicolor
5.1,2.5,3.0,1.1,Iris-versicolor
5.7,2.8,4.1,1.3,Iris-versicolor
6.3,3.3,6.0,2.5,Iris-virginica
5.8,2.7,5.1,1.9,Iris-virginica
7.1,3.0,5.9,2.1,Iris-virginica
6.3,2.9,5.6,1.8,Iris-virginica
6.5,3.0,5.8,2.2,Iris-virginica
7.6,3.0,6.6,2.1,Iris-virginica
4.9,2.5,4.5,1.7,Iris-virginica
7.3,2.9,6.3,1.8,Iris-virginica
6.7,2.5,5.8,1.8,Iris-virginica
7.2,3.6,6.1,2.5,Iris-virginica
6.5,3.2,5.1,2.0,Iris-virginica
6.4,2.7,5.3,1.9,Iris-virginica
6.8,3.0,5.5,2.1,Iris-virginica
5.7,2.5,5.0,2.0,Iris-virginica
5.8,2.8,5.1,2.4,Iris-virginica
6.4,3.2,5.3,2.3,Iris-virginica
6.5,3.0,5.5,1.8,Iris-virginica
7.7,3.8,6.7,2.2,Iris-virginica
7.7,2.6,6.9,2.3,Iris-virginica
6.0,2.2,5.0,1.5,Iris-virginica
6.9,3.2,5.7,2.3,Iris-virginica
5.6,2.8,4.9,2.0,Iris-virginica
7.7,2.8,6.7,2.0,Iris-virginica
6.3,2.7,4.9,1.8,Iris-virginica
6.7,3.3,5.7,2.1,Iris-virginica
7.2,3.2,6.0,1.8,Iris-virginica
6.2,2.8,4.8,1.8,Iris-virginica
6.1,3.0,4.9,1.8,Iris-virginica
6.4,2.8,5.6,2.1,Iris-virginica
7.2,3.0,5.8,1.6,Iris-virginica
7.4,2.8,6.1,1.9,Iris-virginica
7.9,3.8,6.4,2.0,Iris-virginica
6.4,2.8,5.6,2.2,Iris-virginica
6.3,2.8,5.1,1.5,Iris-virginica
6.1,2.6,5.6,1.4,Iris-virginica
7.7,3.0,6.1,2.3,Iris-virginica
6.3,3.4,5.6,2.4,Iris-virginica
6.4,3.1,5.5,1.8,Iris-virginica
6.0,3.0,4.8,1.8,Iris-virginica
6.9,3.1,5.4,2.1,Iris-virginica
6.7,3.1,5.6,2.4,Iris-virginica
6.9,3.1,5.1,2.3,Iris-virginica
5.8,2.7,5.1,1.9,Iris-virginica
6.8,3.2,5.9,2.3,Iris-virginica
6.7,3.3,5.7,2.5,Iris-virginica
6.7,3.0,5.2,2.3,Iris-virginica
6.3,2.5,5.0,1.9,Iris-virginica
6.5,3.0,5.2,2.0,Iris-virginica
6.2,3.4,5.4,2.3,Iris-virginica
5.9,3.0,5.1,1.8,Iris-virginica

额,这个问题之前也遇到几次,后来莫名其妙变好了

我就没深究


最近写代码又出现了这种情况

就是敲了个快捷键,就变成

img

后来发现是IDE的快捷键和输入法快捷键冲突了


解决方法:

按一下 shift+空格键 就好啦~

前提:

1、虚拟机中已成功安装Oracle数据库

2、配置了监听器

3、下载安装PLSQL

好了,直接进入正题

第一步:安装instantclient

安装甲骨文提供的instantclient作为本地电脑的配置客户端

这里也提供一个官网的传送门下载页面 ,可以根据需要下载

该客户端解压即可用

第二步:配置instantclient

我提供的资源则直接修改配置即可,从官网down下来的客户端是没有network文件夹的

需要在文件夹中新建一个network文件夹以及子文件夹admin(也可以不建)

从安装了oracle数据库的服务端目录product\11.2.0\client_1\network\admin中拷贝一份tnsnames.ora文件

tnsnames.ora文件放入network文件夹中

以下是我的tnsnames.ora配置仅供参考:

1
2
3
4
5
6
7
8
9
10
11
12
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0.4/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.128)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)

以文本格式打开tnsnames.ora,前面两行注释不用管,

PROTOCOL是远程监听器的协议类型,

HOST是远程服务器地址,PORT自然是端口

SERVICE_NAME则是你远程数据库的实例名称,默认安装的话是ORCL

如果是安装在虚拟机中的数据库,连接时记得关闭虚拟机防火墙

到这里instantclient就配置完了

第三步:配置PLSQL

打开PLSQL,关闭登录界面直接进入软件界面

Configure > Preferences > 连接

找到右侧面板中的Oracle主目录名和OCI

Oracle主目录名中填入instantclient的解压地址

OCI库则是填入instantclient的解压地址/oci.dll,也就是定位到OCI类库

类似于我这样:

20181025114415144

确认并重启PLSQL

此时的登录界面就可以检测到在tnsnames.ora中配置的数据库实例了

输入对应的用户名密码即可登录数据库,收工!

最近开始学习python,使用Pycharm编辑器进行学习过程中却发现:

打开一个新的py文件,我的光标处于加粗状态,也就是编程软件经常出现的insert插入编辑模式,我就点击了一下insert按键,退出了这个模式,但是我每次打开都是会处于这种模式,并且选中的文字无法通过键盘输入直接替换或删除,只能一个一个删除再写。。。

img

于是闲着无聊时,去翻了翻前辈们的博文,终于发现,是那个第一次安装Pycharm时推荐我安装的仿Vim插件搞的鬼~~

所以如果遇到以上情况只要跑去工具栏中,把Tools下的Vim Emulator勾选状态去掉即可,我的天,这算是给自己挖的坑吗。。。

上一节已经应该熟悉了终端的基本操作,这一节将执行更多的命令。

1 添加用户组与用户

接着上一节,首先完成用户组和用户的添加,以root账号登陆系统,打开终端,输入以下命令

1
2
3
4
groupadd oinstall
groupadd dba
useradd -g oinstall -g dba -m oracle
passwd oracle #该命令会让你两次确认密码

然后创建相关目录,并给用户赋予访问修改权限

1
2
3
4
mkdir  -p  /data/app/oracle/product/11.2.0.1
mkdir -p /home/{OracleData,OracleArch/ArchiveLog,OracleBack/{rmanbak,expdpbak,ArchiveLogBak}}
chown -R oracle:oinstall /data/app/ /home/Oracle*
chmod -R 775 /data/app/ /home/Oracle*

接下来就是这一节的主要部分了,首先要知道的是,当通过vi命令打开文件后,按 i 可以进入编辑状态

当编辑完要退出时,先按键盘左上方Esc键,然后输入冒号,再输入wq完成编辑保存退出

例如:

1
2
vi test.txt   #进入编辑模式
:wq 回车 保存编辑的文件

2 配置Oracle相关参数

2.1 设置用户安全参数

打开root终端输入以下命令

vim /etc/security/limits.conf

在文件末尾添加

1
2
3
4
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 4096
oracle hard nofile 65536

2.2 将用户安全参数添加到会话执行中

root终端输入以下命令

vim /etc/pam.d/login

在文件末尾添加

1
2
session required /lib64/security/pam_limits.so
session required pam_limits.so

2.3 配置用户参数初始化逻辑

root终端输入以下命令

vim /etc/profile

在文件末尾的done后添加如下

1
2
3
4
5
6
7
8
if [ $USER = "oracle" ];then
if [ $SHELL = "/bin/ksh" ];then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

保存退出后执行以下命令,完成加载配置

source /etc/profile

2.4 配置oracle用户的环境变量

在终端使用su oracle命令可以实现终端用户的转换

oracle终端输入以下命令

vim ~/.bash_profile

在文件末尾添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#alias sqlplus='rlwrap sqlplus'  
#alias rman='rlwrap rman'
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/data/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.1
export EDITOR=/usr/bin/vim
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:/usr/bin:$PATH
export PATH=$PATH:/usr/bin/:/bin:/usr/bin/X11:/usr/local/bin
export PATH=$PATH:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib:/usr/local/lib:$ORACLE_HOME/oracm/lib:$ORACLE_HOME/lib
export LIBPATH=$LIBPATH:$ORA_CRS_HOME/lib:$ORACLE_HOME/lib
export CLASSPATH=$CLASSPATH:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/jlib:$ORACLE_HOME/network/jlib:$ORACLE_HOME/JRE

保存退出后执行source ~/.bash_profile命令,完成加载配置

2.5 修改系统标识

由于oracle默认是不可以安装到centos系统上的,所以需要修改centos的系统标识

可修改成redhat-7

root终端输入

vi /etc/redhat-release

修改原系统标识并保存退出

2.6 完成Oracle依赖包的下载

首先确保centos连接上了网络(默认连接配置即可,及虚拟机使用NAT模式,centos连接使用DHCP自动获取,windows网络适配器打开了网络共享,并且共享网络指向VM8网络适配器),你问我网络在哪儿看?下图所示,拿走不谢,记住是鼠标右击那个网络图标,至于如何知道连没连上网,终端输入ping www.baidu.com,能获取到信息就是连上了,不管连上没连上记得按 ctrl+c 退出ping的状态,不然会一直执行的

img

root终端输入以下命令

1
yum -y install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc gcc-c++ libaio-devel libaio libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel pdksh numactl-devel glibc-headers

img

到这里依赖包就全下载完成了,可以考虑更改成网络连接状态了

3 网络桥接的实现

3.1 创建桥接

先要保证网络适配器中有桥接网络的存在,虚拟机工具栏中点开编辑选项,选中下拉菜单中的虚拟网络编辑器(推荐先关闭虚拟机在进行操作,开着虚拟机操作时网络桥接是无法选中自动选项的)

img

如果你的虚拟网络适配器有桥接模式,可以直接跳过虚拟机的相关设置

img

赋予管理员权限之后就可以执行添加网络的操作了,添加一个网络,并在VMnet信息那一块选中桥接模式,桥到的复选框选择自动(关闭了虚拟机进行设置,默认是自动),然后点击确认即可

然后就在虚拟机设置中修改网络适配器的连接方式为桥接模式即可

3.2 centos网络配置

3.2.1 了解windows上的IPv4、DNS

windows下启动控制台,输入ipconfig/all 查看网络信息,以下是我的以太网适配器的IPv4信息
img

所以我的虚拟机网络设置要和windows处于同一个网段,也就是说必须是192.168.1.*,至于网关我推荐一致就行,以下是我的网络连接的设置,仅供参考

192.168.1.120 255.255.255.0 192.168.1.1 DNS:192.168.1.1
img

设置完成后使用centos中的终端和windows终端都ping一下看看是否都能连接

img

img

到这里网络设置,呸,到这里网络设置刚刚开始

设置完以上的连接信息后,/etc/sysconfig/network-scripts目录下的ifcfg-eth0文件中的ONBOOT属性默认就是yes了,不需要再去修改了

3.2.2 关闭防火墙

root终端中输入以下命令

1
2
service  iptables  stop  
chkconfig iptables off
3.2.3 关闭selinux

这里我也不清楚为啥要关闭,不过大家都关了,我也就关了,中国式扎堆嘛

root终端输入以下命令

vim /etc/selinux/config

按 i 键进入编辑状态,将SELINUX属性设为disabled

3.2.4 设置centos的host文件

root终端输入以下命令

vim /etc/hosts

在host文件中插入一行,用于DNS解析主机地址,前面的地址是centos的IPv4地址,后面的centos是之前安装系统时设定的主机名,这样设置可以使oracle的监听器启动的更快

192.168.1.120 centos

img

3.2.5 添加主机连接参数

root终端输入以下命令

vim /etc/sysctl.conf

在文件末尾添加

1
2
3
4
5
6
7
8
9
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

img

保存退出后,使用命令sysctl -p完成加载配置,到这里网络配置就算结束了

4.解压安装包,运行安装程序

4.1 解压安装包

注销当前root账户,切换到oracle账户进行登录

通过拖拽,将windows中下载的linux版的两个oracle数据库压缩包传输到/home/oracle/soft目录下(soft当然是自己建的文件夹啊),使用unzip命令进行解压

打开oracle终端输入以下命令

1
2
3
cd /home/oracle/soft
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip

执行完成后soft文件夹中会有一个database文件夹,推荐解压完重启虚拟机

重启完成后先输入xhost +,如果出现提示access control disabled, clients can connect from any host,则切换到

oracle终端进行操作

4.2 运行安装程序

为防止中文乱码,使用英文模式执行安装程序,oracle终端输入以下命令

1
2
3
cd database
export LANG=en_us
./runInstaller

如果之前的分区按照我的推荐来的话,不会因为内存问题卡在这里,就会显示Please wait

然后就是常规的安装数据库了,指定数据库安装路径时如下图即可

img

接着就是一路根据需要选择,一路next了,遇到第18步时勾上Ignore All即可,因为我们安装的包版本是新的,而第18步只认版本不认包,所以忽略就行

img

当然了安装到最后时需要在终端执行两行命令,就是遇到下图的弹窗时:

img

而执行的命令就是弹窗中显示的那两行

打开终端切换到root终端,输入以下命令

1
2
/data/app/oraInventory/orainstRoot.sh
/data/app/oracle/product/11.2.0.1/root.sh

到这里安装就完成了

接下来配置监听器,终端输入以下命令

1
2
export LANG=en_us
netca

img

img

img

img

img

img

然后点击next,最后点击finish退出配置监听器界面,完成配置

测试监听器:

打开监听器:lsnrctl start (默认启动监器LISTENER,如果启动非LISTENER则使用lsnrctl start XXXX命令,XXXX是监听器名字)

查看1521接口侦测情况:netstat -ant|grep 1521

连接:sql /nolog

连接权限:connect / as sysdba

立即关闭服务:shutdown immediate

启动服务:startup

退出SQL:exit

关闭监听器:lsnrctl stop

功能测试无误,这一次记录到此完结,至于在windows上使用PLSQL连接到虚拟机中的该Oracle的指导记录,如果有空闲的话会考虑写一篇文章的。

此记录+教学的文章中用到的很多命令都是我在网上学习借鉴的,再次感谢前辈大神们的文章,此文中也包含了许多我个人的理解,如果有错,多多包涵。

只要跟着我的步骤一步一步来,是肯定可以搭建成功的,最容易出问题的是忽视了root终端与oracle终端的切换,细节决定成败!祝你们好运!

百般折腾后(我会说我装了不下5遍的系统吗0.0),终于在CentOS 6.5上成功搭建了Oracle11g数据库,感动到自己想哭,在此记录下搭建和安装过程,在此首先感谢,各个论坛大佬的博客。我第一次发技术文章,如果有问题,还请多多包涵,哈哈~
好了进入正题。

1 安装VMware虚拟机

安装一个VMware虚拟机,安装过程网上一大把。

2 安装centos

在虚拟机上安装CentOS6.5,系统映像我是去官网下载的。
这里我也给出6.5链接:点击打开链接

下载bt,用下载工具下载就行了,下载下来是两个镜像,使用DVD1镜像安装即可。

2.1 配置虚拟机








上处由于要安装oracle的依赖包,要用到yum进行联网下载,所以目前以NAT模式连接主机网络,之后要改成桥接网络,然后点击完成就可以启动虚拟机了

2.2 安装centos6.5








这里先不配置网络,直接点击下一步


如果设定的密码位数低于8位,会出现密码不安全的提醒,不用管他,直接下一步就行

此处我选择自定义布局即手动分区,以下是我的分区结构,仅供参考,可以不同,但是推荐swap分区分配3GB以上的空间,不然安装Oracle时会出现swap空间不足的问题

创建分区时选择默认的标准即可



完成分区后确认无误,点击下一步->格式化->将修改写入磁盘,分区工作就算完成了


接下来就是选择安装的内容了,我所选择的都只是为装oracle做准备的,仅供参考,可以根据需要选择安装



oracle数据库的英文安装界面不会出现乱码问题,系统选择中文有可能出现乱码,可以采用命令的方式进行英文界面安装命令如下:
export LANG=en_us
完成安装选择后就可以点击下一步进行安装了,安装完成后点击重新引导,会进入账号创建界面

一路点击确认,最后重启

到这里,centos6.5就算是安装完成了
重启后进入登录界面,点击其他,输入超级管理员账号root与之前第一次设定的密码进行登录,成功登陆就可以进入桌面了。

3 Oracle数据库安装的前提准备

在进行安装之前,需要做好事前工作,如下:

3.1 下载

① linux版的oracle,附上官网下载地址:点击打开链接,官网需要注册才能下载,邮箱注册一下就可以了,还得点击上方的我同意,具体如下:

3.2 安装VMware Tools

安装了VMware Tools之后将能够将windows中的文件直接通过鼠标拖拽的方式传输到虚拟机中,方便传输linux版的数据库压缩文件
点击虚拟机上方工具栏中的虚拟机按钮(如果窗口缩太小则在上方工具栏的Workstation的二级菜单中),下拉框中找到安装VMwaretools
此时目录中的文件是在media中的,无法直接执行安装操作 所需要将目录中的所有文件拷贝到mnt目录(桌面双击计算机->文件系统->mnt)中的VMware tools文件夹中(什么,你跟我说没有这个文件夹,当然没有啦,我是自己建的),当然直接选中拖拽过去也是可以的,效果如下图。

然后就是敲命令的时间了,打开终端(你问我终端在哪里?截图如下,拿走不谢)

在终端输入命令:

cd /mnt/VMware\ tools/

注:在终端中和很多编写网页的软件似的,只要你编写的命令不错,在敲目录中时可以使用tab建,根据你已写的目录路径实现自动补全(前提是你已写目录没有错误,且目录中有匹配的文件或文件夹,如果你不清楚目录情况,可以通过ls命令查询目录下的所有文件,ll命令可以查询当前目录下附带详细信息的所有文件)

然后输入命令解压文件,

tar -xzf 要解压的文件名



进入到解压出来的文件中,然后安装 VMware Tools,命令如下:

1
2
cd vmware-tools-distrib\
./vmware-install.pl


安装过程中会有一堆询问的提示,一路无脑enter就行了,enter就是选择默认属性,安装完成后重启就可以拖拽文件到centos的桌面了

3.3 配置

在centos中添加新的群组和账号,以及赋予账号安装执行oracle数据库的权限,这留到下一节中写上。

0%