标签: mysql

Oracle通过Dblink实现与Mysql交互

dblink(Database Link)数据库链接顾名思义就是数据库的链接,就像电话线一样,是一个通道,当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。


实验环境:

win8 64位

oracle11g

mysql5.7

准备:

dg4odbc

MYSQL-ODBC-5.X

实验步骤:

一.MYSQL ODBC 配置

1.开始菜单-oracle-配置和移植工具-ODBC管理员

2.系统DSN 创建新数据源

名称mysqlodbc

 

二.配置ORACLE透明网关

位置:%ORACLE_HOME%/hs/admin/

创建:init(数据库名).ora

这里我们使用initmysqllink.ora

内容:

HS_FDS_CONNECT_INFO = mysqlodbc  #数据源名称
HS_FDS_SUPPORT_STATISTICS=FALSE
HS_FDS_TRACE_LEVEL = debug

 

三.配置TNSNAMES&LISTENER

tnsname.ora,连接端配置文件,主要内容是要访问的数据库的连接串的解释。也就是@后面的字符传的解释文件。这个主要出现的访问端(客户端),当然并不是说服务器端没有,因为服务器端也可以是访问端,比如服务器互相访问的dblink,以及服务器自己访问自己。类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应。

listener.ora,监听配置文件,接受远程对数据库的接入申请并转交给oracle的服务器进程。这个文件里面是监听的主要(重要)配置内容,也是监听在服务器端的主文件。

位置:%ORACLE_HOME%\NETWORK\ADMIN

1.tnsnames.ora增加

mysqllink =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SID = mysqllink)
    )
    (HS = OK)
  )

2.listener.ora SID_LIST_LISTENER增加

 (SID_DESC =     
	(SID_NAME = mysqllink)     
	(ORACLE_HOME =xxx)     
	(PROGRAM = dg4odbc)     
 )

3.重启监听服务并检查是否正常

lsnrctl reload
lsnrctl status
tnsping mysqllink

四.Oracle中创建Dblink连通Mysql

create database link mysqllink1 connect to "root" identified by "123456" using 'mysqllink';

五.Oracle与Mysql进行交互

查询

select * from “user”@mysqllink1;

插入

注意要commit

insert into "user"@mysqllink1 values(3,'oracledblink','test');
commit;

Mysql查询

添加成功

jsp写入中文到mysql乱码问题

记录一下写作业遇到的问题

纠结了很久,代码是用servlet来处理form

其中post传输用户信息时一直乱码,最后查了半天才找见解决方法

 

  1. 在jsp页面的<%@ page 位置加上 contentType=”text/html; charset=utf-8″ %>,<meta 的位置也是如此:content=”text/html;charset=utf-8″ />
  2. 建立一个mysql数据库,字符集采用utf-8,建表也是如此。
  3. 在getConnection的URL中加上:?useUnicode=true&characterEncoding=UTF-8″,如:url = “jdbc:mysql://localhost:3306/(此处为数据库名称)?useUnicode=true&characterEncoding=UTF-8″,也就是在(数据库名称)的后面  //其中问号不能丢
  4. 如果你不是在jsp页面里直接处理form,也是和我一样采用servlet来处理form的话,那么在还要增加一个过滤器,这主要是因为采用的是tomcat的web发布器,如果用resin的话,不会有这样的问题。
    package UserSystem.filter;
    
    /**
     * Created by Ruilin on 2017/12/19.
     */
    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletRequestWrapper;
    
    public class SetCharacterEncodingFilter implements Filter {
        class Request extends HttpServletRequestWrapper
        {
            public Request(HttpServletRequest request) {
                super(request);
            }
            public String toChi(String input) {
                try {
                    byte[] bytes = input.getBytes("ISO8859-1");
                    return new String(bytes, "utf-8");
                } catch (Exception ex) {
                }
                return null;
            }
            private HttpServletRequest getHttpServletRequest()
            {
                return (HttpServletRequest) super.getRequest();
            }
            public String getParameter(String name)
            {
                return
                        toChi(getHttpServletRequest().getParameter(name));
            }
            public String[] getParameterValues(String name)
            {
                String values[] =getHttpServletRequest().getParameterValues(name);
                if (values != null) {
                    for (int i = 0; i < values.length; i++) {
                        values[i] = toChi(values[i]);
                    }
                }
                return values;
            }
        }
        public void destroy() {
        }
        public void doFilter(ServletRequest request, ServletResponse
                response,FilterChain chain) throws IOException, ServletException {
            HttpServletRequest httpreq = (HttpServletRequest) request;
            if (httpreq.getMethod().equals("POST")) {
                request.setCharacterEncoding("utf-8");
            } else {
                request = new Request(httpreq);
            }
            chain.doFilter(request, response);
        }
        public void init(FilterConfig filterConfig) throws
                ServletException {
        }
    }

    然后在WEB-INF目录下的web.xml文件,配置下过虑器

        <filter>
            <filter-name>SetCharacterEncodingFilter</filter-name>
            <filter-class>UserSystem.filter.SetCharacterEncodingFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>SetCharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

     

 

参考:http://blog.sina.com.cn/s/blog_6c5ad3d10100ligv.html

 

Mac下mysql忘记密码后如何重置

今天上课装mysql遇到点坑,老师是用win告的,所以还得自己解决。
坑就是mac上装mysql会自动给个密码,但我一激动没记下来..wtf
然后就是百度了
第一步:
停止mysql服务
然后
第二步:
终端输入cd /usr/local/mysql/bin/
管理权限 sudo su
禁止mysql验证功能 ./mysqld_safe --skip-grant-tables &
第三步:
./mysql
然后
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的新密码');
ok