201705的厦门-老友记

跟几个老友好久没聚一起了,之前只是提议了一下今年去厦门玩,结果大家都来了。

胖子还是在发福,老涛都性格还是没变,老范发福了还带女朋友来。

一起住在曾厝垵,刚到的那天晚上就从街头吃到了结尾。一开始觉得曾厝垵有很多吃的,慢慢的才发现其实吃的大同小异,品种不是多。遗憾的是在鼓浪屿上面没有请导游,很多地方么有去看,就匆匆回来了。

这次一共玩了两天半,第三天就早上多想老涛跑去中山路买了虾粥、沙茶面,总算吃到一个正宗的厦门美食。

安装https的证书到java环境中

最近项目组有调用https的接口,所以在网上找了一圈关于linux下https证书的相关的文章。找到如下的步骤,自己真的使用,总结一下,方便以后查阅.

  1. 有些https需要安装证书,才可以调用,有些不安装也能调用。下面说必须安装证书时,怎么办。
  2. 执行java InstallCert 域名:端口,输入1,按下回车,在当前目录生成jssecacerts文件,他是keystore。该keystore的密码是空。
  3. 把jssecacerts放到$JAVA_HOME/jre/lib/security目录下,或者通过以下方式:
    System.setProperty(“javax.net.ssl.trustStore”, “你的jssecacerts证书路径”);

接下来对证书的操作
keytool -list -keystore jssecacerts 查看密钥库里面的证, 不出意外的话会有很多证书指纹
keytool -list -keystore jssecacerts | grep /i ***alias(名称)*** 查找我们自己的
keytool -export -alias ***alias(名称)*** -file Server.crt -keystore jssecacerts 会在当前目录生成Server.crt
导入到java的认证文件夹下keytool -import -file Server.cer -keystore “%JAVA_HOME%\jre\lib\security\cacerts” -alias server
使用如下命令可以看到结果:
keytool -list -keystore “%JAVA_HOME%\jre\lib\security\cacerts” | grep Server

到这里签名证书制作完成了就可以使用restful请求https服务了,

注意:因为是静态加载,所以要重新启动你的Web Server,证书才能生效。

=================================================

详细步骤:
把如下内容保存为InstallCert.java,执行javac InstallCert.java进行编译.

/*
 * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *   - Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *
 *   - Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *
 *   - Neither the name of Sun Microsystems nor the names of its
 *     contributors may be used to endorse or promote products derived
 *     from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

import java.io.*;
import java.net.URL;

import java.security.*;
import java.security.cert.*;

import javax.net.ssl.*;

public class InstallCert {

    public static void main(String[] args) throws Exception {
	String host;
	int port;
	char[] passphrase;
	if ((args.length == 1) || (args.length == 2)) {
	    String[] c = args[0].split(":");
	    host = c[0];
	    port = (c.length == 1) ? 443 : Integer.parseInt(c[1]);
	    String p = (args.length == 1) ? "changeit" : args[1];
	    passphrase = p.toCharArray();
	} else {
	    System.out.println("Usage: java InstallCert [:port] [passphrase]");
	    return;
	}

	File file = new File("jssecacerts");
	if (file.isFile() == false) {
	    char SEP = File.separatorChar;
	    File dir = new File(System.getProperty("java.home") + SEP
		    + "lib" + SEP + "security");
	    file = new File(dir, "jssecacerts");
	    if (file.isFile() == false) {
		file = new File(dir, "cacerts");
	    }
	}
	System.out.println("Loading KeyStore " + file + "...");
	InputStream in = new FileInputStream(file);
	KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
	ks.load(in, passphrase);
	in.close();

	SSLContext context = SSLContext.getInstance("TLS");
	TrustManagerFactory tmf =
	    TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
	tmf.init(ks);
	X509TrustManager defaultTrustManager = (X509TrustManager)tmf.getTrustManagers()[0];
	SavingTrustManager tm = new SavingTrustManager(defaultTrustManager);
	context.init(null, new TrustManager[] {tm}, null);
	SSLSocketFactory factory = context.getSocketFactory();

	System.out.println("Opening connection to " + host + ":" + port + "...");
	SSLSocket socket = (SSLSocket)factory.createSocket(host, port);
	socket.setSoTimeout(10000);
	try {
	    System.out.println("Starting SSL handshake...");
	    socket.startHandshake();
	    socket.close();
	    System.out.println();
	    System.out.println("No errors, certificate is already trusted");
	} catch (SSLException e) {
	    System.out.println();
	    e.printStackTrace(System.out);
	}

	X509Certificate[] chain = tm.chain;
	if (chain == null) {
	    System.out.println("Could not obtain server certificate chain");
	    return;
	}

	BufferedReader reader =
		new BufferedReader(new InputStreamReader(System.in));

	System.out.println();
	System.out.println("Server sent " + chain.length + " certificate(s):");
	System.out.println();
	MessageDigest sha1 = MessageDigest.getInstance("SHA1");
	MessageDigest md5 = MessageDigest.getInstance("MD5");
	for (int i = 0; i < chain.length; i++) { X509Certificate cert = chain[i]; System.out.println (" " + (i + 1) + " Subject " + cert.getSubjectDN()); System.out.println(" Issuer " + cert.getIssuerDN()); sha1.update(cert.getEncoded()); System.out.println(" sha1 " + toHexString(sha1.digest())); md5.update(cert.getEncoded()); System.out.println(" md5 " + toHexString(md5.digest())); System.out.println(); } System.out.println("Enter certificate to add to trusted keystore or 'q' to quit: [1]"); String line = reader.readLine().trim(); int k; try { k = (line.length() == 0) ? 0 : Integer.parseInt(line) - 1; } catch (NumberFormatException e) { System.out.println("KeyStore not changed"); return; } X509Certificate cert = chain[k]; String alias = host + "-" + (k + 1); ks.setCertificateEntry(alias, cert); OutputStream out = new FileOutputStream("jssecacerts"); ks.store(out, passphrase); out.close(); System.out.println(); System.out.println(cert); System.out.println(); System.out.println ("Added certificate to keystore 'jssecacerts' using alias '" + alias + "'"); } private static final char[] HEXDIGITS = "0123456789abcdef".toCharArray(); private static String toHexString(byte[] bytes) { StringBuilder sb = new StringBuilder(bytes.length * 3); for (int b : bytes) { b &= 0xff; sb.append(HEXDIGITS[b >> 4]);
	    sb.append(HEXDIGITS[b & 15]);
	    sb.append(' ');
	}
	return sb.toString();
    }

    private static class SavingTrustManager implements X509TrustManager {

	private final X509TrustManager tm;
	private X509Certificate[] chain;

	SavingTrustManager(X509TrustManager tm) {
	    this.tm = tm;
	}

	public X509Certificate[] getAcceptedIssuers() {
	    throw new UnsupportedOperationException();
	}

	public void checkClientTrusted(X509Certificate[] chain, String authType)
		throws CertificateException {
	    throw new UnsupportedOperationException();
	}

	public void checkServerTrusted(X509Certificate[] chain, String authType)
		throws CertificateException {
	    this.chain = chain;
	    tm.checkServerTrusted(chain, authType);
	}
    }

}

执行:java InstallCert hostname,比如:

java InstallCert www.baidu.com

会看到如下信息:

Loading KeyStore jssecacerts...
Opening connection to www.baidu.com:443...
Starting SSL handshake...

javax.net.ssl.SSLException: java.lang.UnsupportedOperationException
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1904)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1862)
        at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1845)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1366)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)
        at InstallCert.main(InstallCert.java:87)
Caused by: java.lang.UnsupportedOperationException
        at InstallCert$SavingTrustManager.getAcceptedIssuers(InstallCert.java:171)
        at sun.security.ssl.AbstractTrustManagerWrapper.checkAlgorithmConstraints(SSLContextImpl.java:998)
        at sun.security.ssl.AbstractTrustManagerWrapper.checkAdditionalTrust(SSLContextImpl.java:944)
        at sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:886)
        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1428)
        at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:209)
        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:901)
        at sun.security.ssl.Handshaker.process_record(Handshaker.java:837)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1023)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)
        ... 2 more

Server sent 3 certificate(s):

 1 Subject CN=baidu.com, OU=service operation department., O="BeiJing Baidu Netcom Science Technology Co., Ltd", L=beijing, ST=beijing, C=CN
   Issuer  CN=Symantec Class 3 Secure Server CA - G4, OU=Symantec Trust Network, O=Symantec Corporation, C=US
   sha1    b5 02 43 62 75 c8 87 4f 10 23 db 92 e3 04 72 dd 59 71 59 e0 
   md5     b2 ac 71 df 1f d6 1d d9 a2 83 8d 86 ef 86 58 e4 

 2 Subject CN=Symantec Class 3 Secure Server CA - G4, OU=Symantec Trust Network, O=Symantec Corporation, C=US
   Issuer  CN=VeriSign Class 3 Public Primary Certification Authority - G5, OU="(c) 2006 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
   sha1    ff 67 36 7c 5c d4 de 4a e1 8b cc e1 d7 0f da bd 7c 86 61 35 
   md5     23 d5 85 8e bc 89 86 10 7c b7 ac 1e 17 f7 26 c5 

 3 Subject CN=VeriSign Class 3 Public Primary Certification Authority - G5, OU="(c) 2006 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
   Issuer  OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=US
   sha1    32 f3 08 82 62 2b 87 cf 88 56 c6 3d b8 73 df 08 53 b4 dd 27 
   md5     f9 1f fe e6 a3 6b 99 88 41 d4 67 dd e5 f8 97 7a 

Enter certificate to add to trusted keystore or 'q' to quit: [1]

输入1,回车,然后会在当前的目录下产生一个名为“ssecacerts”的证书。

将证书拷贝到$JAVA_HOME/jre/lib/security目录下,或者通过以下方式:
System.setProperty(“javax.net.ssl.trustStore”, “你的jssecacerts证书路径”);

执行如下命令生产证书文件

keytool -export -alias ***alias(名称)*** -file Server.crt -keystore jssecacerts

会在当前目录生成Server.crt,接着把证书添加的信任目录

keytool -import -file Server.crt -keystore “%JAVA_HOME%\jre\lib\security\cacerts” -alias server

会要求输入你的密码,直接输入123456两次后,在输入yes,提示安装成功

Enter keystore password:
 Re-enter new password:
 Owner: CN=baidu.com, OU=service operation department., O="BeiJing Baidu Netcom Science Technology Co., Ltd", L=beijing, ST=beijing, C=CN
 Issuer: CN=Symantec Class 3 Secure Server CA - G4, OU=Symantec Trust Network, O=Symantec Corporation, C=US
 Serial number: 1a00c5992a0a1426f751433bd5cbf
 Valid from: Mon Aug 15 08:00:00 CST 2016 until: Thu Aug 17 07:59:59 CST 2017
 Certificate fingerprints:
 MD5:  B2:AC:71:DF:1F:D6:1D:D9:A2:83:8D:86:EF:86:58:E4
 SHA1: B5:02:43:62:75:C8:87:4F:10:23:DB:92:E3:04:72:DD:59:71:59:E0
 SHA256: 55:60:63:D5:7A:25:A5:60:02:1B:22:DE:23:B6:7A:59:0F:D3:98:C0:B7:7D:DC:33:1E:79:D7:7F:4B:22:07:12
 Signature algorithm name: SHA256withRSA
 Version: 3

Extensions:

#1: ObjectId: 1.3.6.1.4.1.11129.2.4.2 Criticality=false
 0000: 04 81 F3 00 F1 00 77 00   DD EB 1D 2B 7A 0D 4F A6  ......w....+z.O.
 0010: 20 8B 81 AD 81 68 70 7E   2E 8E 9D 01 D5 5C 88 8D   ....hp......\..
 0020: 3D 11 C4 CD B6 EC BE CC   00 00 01 56 90 7E 47 3A  =..........V..G:
 0030: 00 00 04 03 00 48 30 46   02 21 00 93 2D 3C E8 DC  .....H0F.!..-<..
 0040: 36 2B D6 FD EA 83 0D F4   07 FD FB 1B 38 12 4F E8  6+..........8.O.
 0050: 97 A9 9B 56 8F 51 63 56   B6 B0 CD 02 21 00 CC 54  ...V.QcV....!..T
 0060: 7A BB A8 E9 B2 CB 9A 5A   AC 13 88 56 61 C0 CE BB  z......Z...Va...
 0070: C8 62 BC 92 B8 4D E7 D3   D4 D0 E1 6F 4E C3 00 76  .b...M.....oN..v
 0080: 00 A4 B9 09 90 B4 18 58   14 87 BB 13 A2 CC 67 70  .......X......gp
 0090: 0A 3C 35 98 04 F9 1B DF   B8 E3 77 CD 0E C8 0D DC  .<5.......w.....
 00A0: 10 00 00 01 56 90 7E 47   5A 00 00 04 03 00 47 30  ....V..GZ.....G0
 00B0: 45 02 20 1F 44 21 BD 58   62 8B 42 12 DC 3E 0E 43  E. .D!.Xb.B..>.C
 00C0: BF EF 0C A9 4B 25 1D E7   39 6B 03 3C 6A 14 C1 E1  ....K%..9k.<j...
 00D0: 8D 1D 77 02 21 00 8C EE   CB 42 41 52 C4 E6 93 E1  ..w.!....BAR....
 00E0: 20 E4 0A E8 6C FA A0 5D   81 5C D6 59 57 45 C7 98   ...l..].\.YWE..
 00F0: E2 E4 D9 88 04 99                                  ......
 #2: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
 AuthorityInfoAccess [
 [
 accessMethod: ocsp
 accessLocation: URIName: http://ss.symcd.com
 ,
 accessMethod: caIssuers
 accessLocation: URIName: http://ss.symcb.com/ss.crt
 ]
 ]

#3: ObjectId: 2.5.29.35 Criticality=false
 AuthorityKeyIdentifier [
 KeyIdentifier [
 0000: 5F 60 CF 61 90 55 DF 84   43 14 8A 60 2A B2 F5 7A  _`.a.U..C..`*..z
 0010: F4 43 18 EF                                        .C..
 ]
 ]

#4: ObjectId: 2.5.29.19 Criticality=false
 BasicConstraints:[
 CA:false
 PathLen: undefined
 ]

#5: ObjectId: 2.5.29.31 Criticality=false
 CRLDistributionPoints [
 [DistributionPoint:
 [URIName: http://ss.symcb.com/ss.crl]
 ]]

#6: ObjectId: 2.5.29.32 Criticality=false
 CertificatePolicies [
 [CertificatePolicyId: [2.23.140.1.2.2]
 [PolicyQualifierInfo: [
 qualifierID: 1.3.6.1.5.5.7.2.1
 qualifier: 0000: 16 17 68 74 74 70 73 3A   2F 2F 64 2E 73 79 6D 63  ..https://d.symc
 0010: 62 2E 63 6F 6D 2F 63 70   73                       b.com/cps

], PolicyQualifierInfo: [
 qualifierID: 1.3.6.1.5.5.7.2.2
 qualifier: 0000: 30 19 0C 17 68 74 74 70   73 3A 2F 2F 64 2E 73 79  0...https://d.sy
 0010: 6D 63 62 2E 63 6F 6D 2F   72 70 61                 mcb.com/rpa

]]  ]
 ]

#7: ObjectId: 2.5.29.37 Criticality=false
 ExtendedKeyUsages [
 serverAuth
 clientAuth
 ]

#8: ObjectId: 2.5.29.15 Criticality=true
 KeyUsage [
 DigitalSignature
 Key_Encipherment
 ]

#9: ObjectId: 2.5.29.17 Criticality=false
 SubjectAlternativeName [
 DNSName: *.baidu.com
 DNSName: *.baifubao.com
 DNSName: *.bdstatic.com
 DNSName: *.hao123.com
 DNSName: *.nuomi.com
 DNSName: *.bce.baidu.com
 DNSName: *.eyun.baidu.com
 DNSName: *.map.baidu.com
 DNSName: baidu.com
 DNSName: baifubao.com
 DNSName: www.baidu.cn
 DNSName: www.baidu.com.cn
 DNSName: click.hm.baidu.com
 DNSName: log.hm.baidu.com
 DNSName: cm.pos.baidu.com
 DNSName: wn.pos.baidu.com
 DNSName: update.pan.baidu.com
 DNSName: mct.y.nuomi.com
 ]
 Trust this certificate? [no]:  yes
 Certificate was added to keystore

注意:因为是静态加载,所以要重新启动你的应用,证书才能生效。9

JAVA反序列化漏洞weblogic临时解决方案

今天收到乌云上面的漏洞邮件,JAVA反序列化漏洞,可以进行任意命令执行.网上查询发现传得沸沸扬扬,颇有恐慌之势。

去weblogic官网发现没有修复补丁.

http://www.oracle.com/technetwork/topics/security/alert-cve-2015-4852-2763333.html

所以去网上找了半天发现有大神给出临时处理方案.

删掉项目中commons-collections-*.jar中“org/apache/commons/collections/functors/InvokerTransformer.class” 文件(删除前备份);

同时删除weblogic安装目录中“/oracle/Middleware/modules/com.bea.core.apache.commons.collections_*.jar”中“org/apache/commons/collections/functors/InvokerTransformer.class” 文件(删除前备份);

测试,OK!而后台会抛出异常信息:

java.lang.AssertionError: Exception creating response stream.

再让程序员查找整个程序是否有用到InvokerTransformer,确认没有用到后上线。不知道是否有其他影响,特此记录。

巽寮湾三角洲岛

公司组织的一次集体活动.早上7.20从深圳出发,去到惠东坐了渔船出海看渔民怎么捕鱼,感觉挺无聊,船开到一半开始撒网,之后让船慢慢飘,然后中途有帅哥上里推销你坐快艇,带你到两个岛屿进行拍照,但是需要另外收费.索性没有去坐快艇,一个时间不允许,二来下午我们也要坐快艇去三角洲岛.

再说三角洲岛是中国第一个拥有合法产权的私人海岛,海岛占地十六公顷,一向以“水清,石奇,沙幼”三绝著称于南海。它有“中国的马尔代夫”之美誉。从广州出发只需要一个半到两个小时的车程,这里没有冬天,是四季皆宜的亲海圣地。

上岛后才发现其实娱乐设施很缺乏,就只能玩玩水、玩玩沙.

2015111902

win7添加oracle数据源(ODBC)

今天有一个VB写的小程序出现了问题,连接是提示[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序.第一反应就是系统没有配置数据源。

20151118151807

在打开系统数据源(ODBC),添加发现并没有oracle的驱动程序。看来得先添加oracle驱动程序。去官网下载.地址:
http://www.oracle.com/technetwork/topics/winsoft-085727.html

instantclient-basiclite-nt-12.1.0.2.0.zip
instantclient-odbc-nt-12.1.0.2.0.zip

1.把下载的好的两个压缩包解压到同一目录下,如D:\instantclient_12_1
2.再创建tnsnames.ora文件
目录如下D:\instantclient_12_1\NETWORK\ADMIN\tnsnames.ora,目录NETWORK\ADMIN是不存在的目录,自己创建。

3.编辑tnsnames.ora文件,HOST 修改为自己的数据库ip,SERVICE_NAME修改为需要连接的数据库名字,格式如下:

barcode =
    (DESCRIPTION =
        (ADDRESS_LIST =
             (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
        )
        (CONNECT_DATA =
             (SERVICE_NAME = barcode)
        )
    )

4.添加系统环境变量TNS_ADMIN,值D:\instantclient_12_1\NETWORK\ADMIN,根据自己的具体情况创建.

5.双击instantclient_12_1目录下的odbc_install.exe进行安装.界面会一闪过。

6.打开控制面板\所有控制面板项\管理工具\数据源(ODBC),验证是否安装成功。

 

oracle表空间满

最近一段时间发现程序在晚上同步数据时会假死,程序没有输出异常信息,但是用浏览器访问后页面空白,重启后后正常了,一开始以为是程序晚上同步数据时有2万多个空指针,导致内存溢出,然后卡死,把异常数据清理后发现问题依旧。在同步数据时卡死,那么数据库也嫌疑犯之一。首先查看表空间的使用情况:

 SELECT tbs 表空间名,
       sum(totalM) 总共大小M,
       sum(usedM) 已使用空间M,
       sum(remainedM) 剩余空间M,
       sum(usedM) / sum(totalM) * 100 已使用百分比,
       sum(remainedM) / sum(totalM) * 100 剩余百分比
  FROM (SELECT b.file_id ID,
               b.tablespace_name tbs,
               b.file_name name,
               b.bytes / 1024 / 1024 totalM,
               (b.bytes - sum(nvl(a.bytes, 0))) / 1024 / 1024 usedM,
               sum(nvl(a.bytes, 0) / 1024 / 1024) remainedM,
               sum(nvl(a.bytes, 0) / (b.bytes) * 100),
               (100 - (sum(nvl(a.bytes, 0)) / (b.bytes) * 100))
          FROM dba_free_space a, dba_data_files b
         WHERE a.file_id = b.file_id
         GROUP BY b.tablespace_name, b.file_name, b.file_id, b.bytes
         ORDER BY b.tablespace_name)
 GROUP BY tbs

发现表空间USERS的表空间的已使用百分比是99%.再获取用户的默认表空间:

select username, DEFAULT_TABLESPACE
from dba_users
where username = 'scott';

scott用户的默认表空间刚好是USERS,找到表空间的物理路径:

select * from dba_data_files where tablespace_name ='USERS';

那就把这个表空间进行扩展:

alter database datafile 'D:\ORACLE\PRODUCT\ORADATA\TEST\USERS01.DBF' resize 5120M;

修改USERS表空间时较慢,花了4分多钟.修改完成后再次查询表空间的使用情况,再次查询看否执行成功。

他好像条狗阿!

依稀是2000年左右开始看星爷的电影,那时候买不起电影票,在小卖部看别人放的影碟(VCD),从百变星君、整蛊专家、算死草、大话西游、逃学威龙、唐伯虎点秋香、功夫等等,每一部都能笑到合不上嘴.

今天在朋友圈看到一位老友写了这句话,“他好像条狗啊!”还有这张截图,回想起了我所理解的大话,以及给我的感动.

记得第一次看大话的时候,腹背抽筋,龇牙咧嘴,什么都没看懂.直到2012年之后,再去看大话,开始笑不出来,发现脸上开始有泪水.当至尊宝带上紧箍咒前的话却那段刻骨铭心的台词时:

  曾经有一份真诚的爱情摆在我的面前,我没有珍惜,等到失去的时候才追悔莫及,人世间最痛苦的事情莫过于此。如果上天能够给我一个重新来过的机会,我会对那个女孩子说三个字:‘我爱你’。如果非要给这份爱加上一个期限,我希望是,一万年。”

心里总有一种莫名的心酸,有机会时嘻嘻哈哈,至尊宝第一次说这段台词是为了骗紫霞仙子,第二次在说是已经是大彻大悟,而却没有机会当着紫霞仙子的面说了.从至尊宝带上紧箍咒那一刻起,从此爱情将与他无关,从至尊宝到孙悟空的蜕变,也是见证了男孩到男人的历程,留在心底确是最深的伤痛.2015081802

最后的那个一句”我看得了,他好像条狗啊!”,紧箍咒往至尊宝头上扣的那一刻起,就决定了像条狗.用男人的思想,这是一个男人的无奈.

师傅的话:”等你明白了舍生取义的道理,你自然会回来和我唱这首歌的。”师傅是父母、老师的形象,那个男人都经历过他们的谆谆教导,而后青春年少的叛逆反抗,而后成为成熟成为男人以后,后由衷的感谢他们的教诲,抑或后悔当初没有他们的话.

牛魔王是一种无形的力量,他夺走了紫霞,夺走了晶晶,也夺走了至尊宝的快乐。从牛魔王的出现至尊宝就么有了无忧的时间,为了把找回晶晶,最爱的紫霞一度的把希望寄托在月光宝盒上面,希望可以通过时间穿越避开与牛魔王的正面交锋,找回自己的东西,在这个幻想一而再的破灭之后才醒悟,至尊宝没有这个能力,只有带上紧箍咒成为孙悟空,才有与牛魔王一战的实力。

这个像是一个极大的讽刺,想得到需要先放弃,不管选择至尊宝或者孙悟空都会失去,至尊宝快乐总是很短暂,孙悟空是无尽的痛苦,    这真是一个极大的讽刺。你想要得到吗?那么好吧,你先放弃吧。你必须做出选择,作至尊宝,那么快乐总是很短暂,作孙悟空,你就要忍受无尽的痛苦。
这个世界的规则好象是牛魔王制定的,那么恶毒,在它面前,那段经典的台词显得多么的苍白无力,只能成为一个男孩子蜕变成男人的时候留在心底最深的伤痛。
唐僧说话的方式从来就没有变过,只是在至尊宝醒悟的前后听来有完全不同的感受。那么至尊宝是自觉自愿的醒悟吗?不,他并不愿意,但是他必须拯救紫霞,必须化解人间的恨,他别无选择。虽然成为了孙悟空,成了大英雄,但他对自己的生存状态极度不满。片子的最后,孙悟空将他心中残存的至尊宝的影子幻化作一位夕阳武士,在对现实世界彻底失望后,只能构造一个虚幻的想象来了却这桩心愿,并借武士的口中表达了对自己生存状态的不满,活得好象是一条狗一样。唉,一个男人的悲怆和无奈。

 "生又何哀,死又何苦。"

很早就听说过,如果你能理解大话中,”他好象一条狗”那么你才是真正理解了《大话》
也许我还不能完全明白…………..喜欢大话喜欢那种明明相爱却又不能死守终生的遗憾和悲哀。我只能这样骗自己,
也许她也有她的苦衷。发现自己真的的接近于疯狂。大概是太过于同情怜悯自己了,才深深地喜欢着这个故事。

2015081801

Win7_x64_Oracle11G连接x32 PLSQL_Developer

前些天在CentOS里面搭了11G的环境。今天同事用在Win7_x64用PLSQL_Developer去连接时老是提示ORA-12151:无法处理服务名.解决了这个问题,连接进去一查询就提示

error01

一看就是当前连接用户没有对sys用户下的表v$session,v$sesstat,v$statname的select权限,在服务端以sysdba身份登录、授权:

grant select on v_$statname to username;
grant select on v_$sesstat to username;
grant select on v_$session to username;
grant select on v_$mystat to username;

执行了完事后,新问题:ORA-03114:未连接到ORACLE
error3
再查看本地的oracle客户端版本是81的精简客户端,感觉略老。在官网下了个11g的客户端,因为PLSQL_Developer(貌似这个软件并没有x64的)是x32的所以下了x32的版本。官网的下载地址如下:

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

下载完后解压到D盘根目录下: D:\instantclient_11_2 ,再目录下创建Tnsnames.ora文件:

TEST =
    (DESCRIPTION =
	(ADDRESS_LIST =
	     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.111)(PORT = 1521))
	)
	(CONNECT_DATA =
	   (SERVICE_NAME = TEST)
	)
     )

创建一批处理:

@echo off
set path=D:\instantclient_11_2
set ORACLE_HOME=D:\instantclient_11_2
set TNS_ADMIN=D:\instantclient_11_2
set NLS_LANG=AMERICAN_AMERICA.AL32UTF8
start plsqldev.exe

放到PLSQL根目录下执行,启动PLSQL后直接取消进去设置:

error2

应用、确定,关闭软件,再次打开软件登陆,问题解决.查询正常.把以下变量加系统变量里,不然查询中文会显示乱码.

NLS_LANG=AMERICAN_AMERICA.AL32UTF8

给页面添加标记指定IE的渲染方式

这次的项目有点郁闷,因为项目没有设置页面的渲染方式,让浏览器自动选择渲染的方式,IE11打开的页面却是用IE7的方式渲染,好多特效不起作用、布局都有些凌乱。索性在网上翻出了可以设置IE渲染方式的标记,在<head>中添加如下标记:

<meta http-equiv="X-UA-Compatible" content="IE=Edge">

设置ie以最高版本的方式渲染页面,页面正常了。这个标记有一个好处,可以直接指定IE的渲染方式解决很多不同版本的IE兼容性问题。当页面只兼容IE7的时候可以直接指定

<meta http-equiv="X-UA-Compatible" content="IE=IE7">

以达到不同版本IE打开都以指定版本渲染页面。