精华内容
下载资源
问答
  • oracle 存文件和图片

    2009-04-15 12:27:25
    存文件用VARCHAR 型的。存路径 存图片也用VARCHAR 的,存路径,显示图片用 [code="java"][/code]
    存文件用VARCHAR 型的。存路径 
    
    存图片也用VARCHAR 的,存路径,显示图片用
    <img border="0"
    src="${pageContext.request.contextPath}${tmTribe.logo2}"
    />
    展开全文
  • ORACLE存文件和大文件做法

    千次阅读 2007-03-18 14:17:00
    文件: private boolean loadFile(Connection con,String filename)...{ PreparedStatement pstmt=null; try...{ File file=new File(filename); FileInputStream 

    小文件:

     

    private   boolean  loadFile(Connection con,String filename) {
            
            PreparedStatement pstmt
    =null;
            
    try{
                File file
    =new File(filename);
                FileInputStream fin
    =new FileInputStream(file);
                
    long filesize=file.length();
              System.out.println(
    "存入文件:"+filename+" 长度:"+filesize);
                String sql
    ="insert into filelist (n_file_id,n_file_length,vc_file_name," +
                        
    "b_file,c_file)values(filelist_seq.nextval,?,?,empty_blob(),empty_clob())";
              
    //  String sql="insert into filelist (n_file_id,n_file_length,n_file_name) values (filelist_seq.nextval,?,?)";
                
                pstmt
    =con.prepareStatement(sql);
                pstmt.setLong(
    1,filesize);
                pstmt.setString(
    2,filename);
             
    //   pstmt.setObject(3,file,Types.BINARY);
               pstmt.setBinaryStream(3,fin,(int)filesize);
              
    // pstmt.setBinaryStream(4,fin,(int)filesize);
                return pstmt.execute();
                
                
            
    //    stmt.
                
                
            }
    catch(Exception e){
                e.printStackTrace();
            }
    finally{
                
    try {
                    pstmt.close();
                    con.close();
                
                }
     catch (SQLException e) {
                    
    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                
            }

            
            
            
            
            
    return true;
        }

     如上所示,用的是pstmt.setBinaryStream(3,fin,(int)filesize); 将文件的输入流直接当成参数传入,剩下的工作就交给

    statement来执行了!,仔细观察参数:,(int)filesize 表示要写入的字节数,是一个int型数据,int型数据最大也就65535,

    也就是说: 对于大文件,这样的方法是不可取的!

    下面是我抄来的大文件上传方法,总的来说,就是先插入空BLOB或空CLOB, 然后再用update 写入数据流

     

    package  admit.action;
    import  java.sql. *
    import  java.util.ArrayList;
    import  java.io. * ;
    import  oracle.sql. * ;
    public   class  WriteBlob 

      
    public static void main(String[] args) 
     
       

       
    try 
            DriverManager.registerDriver(
    new oracle.jdbc.driver.OracleDriver()); 
            Connection conn 
    = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.100:1521:adminsys","admit","wuyue"); 
            conn.setAutoCommit(
    false); 

            
            ReadPath readPath
    =new ReadPath();
            ArrayList list 
    = readPath.okpath();
    /*        String ff[]=new String[2];
            String fileName = "c://tupian.gif"; 
    */

     
            
    for(int i=0;i<list.size();i++){
             System.out.println(
    "路径名="+list.get(i).toString());
             File f 
    = new File(list.get(i).toString()); 
                FileInputStream fin 
    = new FileInputStream(f); 
                
                BLOB blob 
    = null

                PreparedStatement pstmt 
    = conn.prepareStatement("insert into javatest(name,context) values(?,empty_blob())"); 
                pstmt.setString(
    1,""+list.get(i).toString()+""); 
                pstmt.executeUpdate(); 
                pstmt.close(); 

                pstmt 
    = conn.prepareStatement("select context from javatest where name= ? for update"); 
                pstmt.setString(
    1,""+list.get(i).toString()+""); 
                ResultSet rset 
    = pstmt.executeQuery(); 
                
    if (rset.next()) blob = (BLOB) rset.getBlob(1); 

                pstmt 
    = conn.prepareStatement("update javatest set context=? where name=?"); 

                OutputStream out 
    = blob.getBinaryOutputStream(); 

                
    int count = -1, total = 0
                
    byte[] data = new byte[(int)fin.available()]; 
                fin.read(data); 
                out.write(data); 
                
    /* 
                byte[] data = new byte[blob.getBufferSize()];  另一种实现方法,节省内存 
                while ((count = fin.read(data)) != -1) { 
                  total += count; 
                  out.write(data, 0, count); 
                } 
                
    */
     

                
                fin.close(); 
                out.close(); 

                pstmt.setBlob(
    1,blob); 
                pstmt.setString(
    2,""+list.get(i).toString()+""); 
                pstmt.executeUpdate(); 
                
                pstmt.close(); 

      
             System.out.println(
    "插入成功!!!");
            }

            conn.commit(); 
            conn.close(); 
            
          }
     catch (SQLException e) 
            System.err.println(e.getMessage()); 
            e.printStackTrace(); 
          }
     catch (IOException e) 
            System.err.println(e.getMessage()); 
          }
     
        }
     
        


    }




    展开全文
  • 将大文件存Oracle数据库

    千次阅读 2019-08-09 10:35:47
    将大文件存Oracle数据库

    一、引言

    先描述一下需求:

    目前手中的项目是一个比较老的平台系统,一个单体应用,即所有的模块都打包在一个War包中发布到Tomcat。由于是国企单位的内网环境,公司没有独立的文件服务器,对于以前的老系统,文件的存储和访问,在一台服务器上,完全不是问题。

    但现在要将老系统的各个模块抽取出来,做成各个独立的微服务。在这种情况下,文件的存储和访问就会有问题,一个节点的资源,如何让其他节点访问?由于我对客观环境不是很清楚,给的建议是提供一个公共的文件服务,但领导说,条件不允许。因为在项目实施的时候,每个省公司都是内网环境,难道要让每个省公司都搭建一个文件服务器?成本太高……

    So,将文件存储数据库,就是讨论的结果。每次涉及文件上传,就将文件存到数据库,若其他节点发现自己本节点没有该文件,就去数据库中把文件拉去下来。用这种方法来实现文件共享存储。

    这种方式我是排斥的,但条件所限,没有办法……

    二、具体代码

    1、几点说明

    平台数据库:Oracle

    数据库字段:file_content为存储文件的字段

    在这里插入图片描述

    2、代码实现
    public class ResourceDao {
    
        private static final org.slf4j.Logger LOG = 
        				LoggerFactory.getLogger(ResourceDao.class);
    
        /**
         *  读取数据表中资源
         * @param fileSrcMd 文件路径的MD5值
         * @return boolean 读取成功/失败
         */
        public boolean readResourceFromDB(String fileSrcMd) {
    
            FileOutputStream fos = null;
            String fileSrc = "";
            InputStream in = null;
    
            try{
                //获得数据库连接
                Connection con = PoolManager.getPoolConnection();
                con.setAutoCommit(false);
                String querySql = "select file_src, file_content from " 
               		 + "t_file_content where file_src_md = ?";
                PreparedStatement ps = con.prepareStatement(querySql);
                ps.setString(1,fileSrcMd);
                ResultSet rs = ps.executeQuery();
    
                if (rs.next()) {
                    fileSrc = rs.getString("file_src");
                    java.sql.Blob blob = rs.getBlob("file_content");
                    in = blob.getBinaryStream();
                } else {
                    LOG.warn("no resource by md5: {}", fileSrcMd);
                    return false;
                }
    
                File file = new File(fileSrc);
                if (!file.getParentFile().exists()) {
                    boolean succ = file.getParentFile().mkdirs();
                    if (!succ) {
                        throw new Exception("mkdir failed: " 
                        	+ file.getParentFile().getAbsolutePath());
                    }
                }
                fos = new FileOutputStream(file);
                int len = 0;
                byte[] buf = new byte[1024];
                while ((len = in.read(buf)) != -1) {
                    fos.write(buf, 0, len);
                }
                fos.flush();
                con.commit();
                return true;
            } catch (Exception e) {
                LOG.error("readResourceFromDB异常:", e);
                return false;
            } finally {
                LOG.debug("readResourceFromDB() enter finally");
                if (null != fos) {
                    try {
                        fos.close();
                    } catch (IOException e) {
                    }
                }
    
                if (null != in) {
                    try {
                        in.close();
                    } catch (IOException e) {
                    }
                }
            }
        }
    
    
        /**
         * 将资源保存到数据库中
         * @param fileTid  文件id
         * @param fileSrc 文件路径
         * @throws Exception
         */
        public void saveResourceToDB(String fileTid, String fileSrc) 
        		throws Exception {
    
            OutputStream os = null;
            FileInputStream fis = null;
            // 文件路径MD5值
            String fileSrcMd = Md5Tool.getMd5(fileSrc);
            try {
                //获得数据库连接
                Connection con = PoolManager.getPoolConnection();
                con.setAutoCommit(false);
                String sql = "insert into t_file_content (file_tid, file_src_md,"
                + "file_src,file_content) values (?, ?, ?, empty_blob())";
                PreparedStatement ps = con.prepareStatement(sql);
                ps.setString(1,fileTid);
                ps.setString(2,fileSrcMd);
                ps.setString(3,fileSrc);
                //插入一个空对象empty_blob()
                ps.executeUpdate();
    
                ps.close();
                //锁定数据行进行更新,用for update加锁
                String querySql = "select file_content from t_file_content "
                	+ "where file_src_md = ? for update";
    
                ps = con.prepareStatement(querySql);
                ps.setString(1,fileSrcMd);
                ResultSet rs = ps.executeQuery();
                File file = new File(fileSrc);
                if(!file.exists()) {
                    return;
                }
                fis = new FileInputStream(file);
                byte[] buffer = new byte[1024];
    
                if (rs.next()) {
                    //得到java.sql.Blob对象后强制转换为oracle.sql.BLOB
                    oracle.sql.BLOB blob = (oracle.sql.BLOB) 
                    				rs.getBlob("file_content");
                    os = blob.getBinaryOutputStream();
                    int len = 0;
                    while ((len = fis.read(buffer)) != -1) {
                        os.write(buffer, 0, len);
                    }
                }
                os.flush();
                con.commit();
            }catch (Exception e){
                LOG.error("saveResourceToDB异常:", e);
                throw e;
            }finally {
                LOG.debug("saveResourceToDB enter finally");
                if (null != os) {
                    try {
                        os.close();
                    } catch (IOException e) {
                    }
                }
                if (null != fis) {
                    try {
                        fis.close();
                    } catch (IOException e) {
                    }
                }
            }
        }
    
    
        /**
         *  解决资源文件生成相同的MD5值,导致数据库插入失败。
         *  解决办法:重新生成新的文件名,最多MD5碰撞3次。
         *  此处要把文件的绝对路径返回,要不然,t_media_cotent、t_file_content 中
         *  路径不一致
         * @param fileTid
         * @param fileSrc
         * @throws Exception
         */
        public String saveResourceToDBWithNoCollision(String fileTid, 
        	String fileSrc) throws Exception {
            String fileUUid = "";
            Exception saveResourceException = null;
            File file = new File(fileSrc);
            for (int i = 0; i < 3; i++) {
                try {
                    saveResourceToDB(fileTid, file.getAbsolutePath());
                    return file.getAbsolutePath();
                } catch (Exception e) {
                    saveResourceException = e;
                    // 文件目录
                    String fileDir = file.getParentFile().getAbsolutePath();
    
                    // 文件绝对路径
                    String filePath = file.getAbsolutePath();
    
                    String fileType = filePath.substring(filePath.lastIndexOf('.'));
    
                    fileUUid = UUID.randomUUID().toString().replace("-", "");;
                    String fileName =  fileUUid + fileType;
    
                    File renameDestFile = null;
                    if(fileSrc.indexOf('/') > 0){
                        renameDestFile = new File(fileDir + "/"+ fileName);
                    }else{
                        renameDestFile = new File(fileDir + "\\" + fileName);
                    }
                    file.renameTo(renameDestFile);
                    file = renameDestFile;
                    continue;
                }
            }
            // 循环尝试插库3次不成功,抛出插库异常
            throw saveResourceException;
        }
    
    
    
    //    public static Connection getConnection(){
    //
    //        Connection conn = null;
    //        try {
    //            Class.forName("oracle.jdbc.driver.OracleDriver");
    //            String url="jdbc:oracle:thin:@192.168.200.124:1521:dev";
    //            conn = DriverManager.getConnection(url,"aaa","111111 ");
    //        } catch (Exception e) {
    //            e.printStackTrace();
    //        }
    //        return conn;
    //    }
    //
    //    //测试
    //    public static void main(String[] args) {
    //
    //        ResourceDao dao = new ResourceDao();
    //     入库
    //        String fileTid = Utility.newUUID();
    //        String fileSrc = "F:\\pic\\pic\\pc\\addr\\logo.png";
    //        String fileSrcMd = Md5Tool.getMd5(fileSrc);
    //
    //        System.out.println("fileTid:"+fileTid);
    //        System.out.println("fileSrc:"+fileSrc);
    //        System.out.println("fileSrcMd:"+fileSrcMd);
    //
    //
    //        try {
    //            dao.saveResourceToDBWithNoCollision(fileTid,fileSrc);
                dao.saveResourceToDB(fileTid,fileSrc);
    //        }catch (Exception e){
    //            System.out.println("EMPException:" + e);
    //        }
    
    
    //     --------------------------------------------------
    //     从库中取资源
    //        String fileSrc = "F:\\pic\\pic\\pc\\addr\\logo.png";
    //        String fileSrcMd = "9270d863bbbe6f13114fc9e2ce544c93";
    //
    //        System.out.println("fileSrc after md5 :" + Md5Tool.getMd5(fileSrc));
    //        System.out.println("fileSrcMd  :" + fileSrcMd);
    //
    //        try {
    //            dao.readResourceFromDB(fileSrcMd);
    //        }catch (Exception e){
    //            System.out.println("EMPException:" + e);
    //        }
    //     }
    
    
    
    }
    

    三、小结

    这里还要对上面的file_src_md的字段做一下说明:因为老系统和前端静态资源交互方式用的是路径,而不是统一的fileId,所以去数据库中查资源的时候,只能拿路径去查。因为路径长度不一,而且查询效率不高,所以就设计了将路径的MD5放入数据库中,作为查询字段。

    展开全文
  • 发现,如果BLOB中存储的是文本文件的话,就没问题,如果是二进制文件,传输就会有问题。 根据自己的经验,以及查阅了Oracle的官方文档,都是使用如下处理方法: 1.新建记录,插入BLOB数据  1.1首先新建记录的...

     

    package  common;

    import  java.io.File;
    import  java.io.FileInputStream;
    import  java.io.OutputStream;
    import  java.sql.Blob;
    import  java.sql.Connection;
    import  java.sql.PreparedStatement;
    import  java.sql.ResultSet;
    import  java.sql.SQLException;
    import  java.sql.Statement;

    import  java.sql.Types;

    public   class  StoreFile  extends  Thread  {
       
    private Connection con=null;
       
    private String filename=null;
        
    public StoreFile(Connection c,String name){
               
    this.con=c;
               
    this.filename=name;
            
        }

       
        
    public void run(){
            loadFile(con,filename);
            
        }

        
    private boolean loadFile(Connection con,String filename){
          
          


            PreparedStatement pstmt
    =null;
            
    try{
                con.setAutoCommit(
    false); 

                File file
    =new File(filename);
                FileInputStream fin
    =new FileInputStream(file);
                
    long filesize=file.length();
             System.out.println(
    " fin.available()="+fin.available());
             
    long key=getKEYfromSEQ(con);
             System.out.println(
    "存入文件:"+filename+" 长度:"+filesize+" 取得主键值:"+key);
              String sql
    ="insert into filelist (n_file_id,n_file_length,vc_file_name," +
                        
    "b_file,c_file)values("+key+",?,?,empty_blob(),empty_clob())";
              
    //  String sql="insert into filelist (n_file_id,n_file_length,n_file_name) values (filelist_seq.nextval,?,?)";
                
                pstmt
    =con.prepareStatement(sql);
                pstmt.setLong(
    1,filesize);
                pstmt.setString(
    2,filename);
             
    //   pstmt.setObject(3,file,Types.BINARY);
             
    //  pstmt.setBinaryStream(3,fin,(int)filesize);
             
    // pstmt.setBinaryStream(4,fin,(int)filesize);
                pstmt.execute();
                pstmt.close();
                
    //现在~再把它查询出来,填充二进制数据流,UPDATE
               String update="select b_file from filelist where n_file_id="+key+" for update"
                pstmt
    =con.prepareStatement(update);
                ResultSet set
    =pstmt.executeQuery();
                Blob blob
    =null;
             
    //   if(set.next()) blob=set.getBlob(1);
    //           OutputStream out=blob.setBinaryStream(0);
                
                
            
    //    stmt.
                
                
            }
    catch(Exception e){
                e.printStackTrace();
            }
    finally{
                
    try {
                    pstmt.close();
                    con.close();
                
                }
     catch (SQLException e) {
                    
    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                
            }

            
            
            
            
            
    return true;
        }


      
    private long getKEYfromSEQ(Connection con){
          Statement stmt
    =null;
          
    try {
            stmt
    =con.createStatement();
            ResultSet set
    =stmt.executeQuery("select filelist_seq.nextval from dual");
            
    if(set.next())return set.getLong(1);
            
        }
     catch (SQLException e) {
            
    // TODO Auto-generated catch block
            e.printStackTrace();
        }
    finally{
            
    try {
                stmt.close();
            }
     catch (SQLException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }

            
        }

            
    return -1;
      }

      
    }

     

    情况:

    当我一执行:

     String update="select b_file from filelist where n_file_id="+key+" for update";

    就报错,错误描述如下:

     

    java.sql.SQLException: ORA - 01002 : 读取违反顺序

        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:
    134 )
        at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:
    289 )
        at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:
    573 )
        at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:
    1891 )
        at oracle.jdbc.ttc7.TTC7Protocol.fetch(TTC7Protocol.java:
    1198 )
        at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:
    2400 )
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:
    2672 )
        at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:
    589 )
        at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:
    527 )
        at common.StoreFile.loadFile(StoreFile.java:
    54 )
        at common.StoreFile.run(StoreFile.java:
    25 )

     

    解决办法:

    Connection一定要先con.setAutoCommit(false);

    至于为什么?我现在不知道~~~~~~

    知道的请回答 ^_^

     

    下面是抄来的~~

    jdbc中如何处理Oracle BLOB字段

    为什么我要写这篇文章?

    在前段时间我所在的项目中,就碰到了这个问题,我花了2天的时间才将BLOB的问题搞定。我也尝试过网上所介绍的各种方法,那些方法所

    使用的原理都一致,但都写得不完整,我也按照网上介绍的方法做了,但都因为其中一些没有提到的小的细节而失败。希望看到这篇文章的人

    都不再走弯路。

    一般人会走哪些弯路?
    1.使用jdk中的方法进行传输。在ResultSet 中有getBlob()方法,在PreparedStatement中有setBlob()方法,所以大多数人都会尝试setBlob

    (),getBlob() 进行读写,或者两个数据库之间BLOB的传输。这种方法实际上是行不通的,据网上的一些资料介绍,说sun官方的文档有些方法

    都是错误的。
    2.使用ResultSet.getBinaryStream 和PreparedStatement.setBinaryStream对BLOB进行读写或两个数据库间的传输。这种方法我自己尝试过,

    发现,如果BLOB中存储的是文本文件的话,就没问题,如果是二进制文件,传输就会有问题。

    根据自己的经验,以及查阅了Oracle的官方文档,都是使用如下处理方法:
    1.新建记录,插入BLOB数据
     1.1首先新建记录的时候,使用oracle的函数插入一个空的BLOB,假设字段A是BLOB类型的:
      insert xxxtable(A,B,C) values(empty_blob(),'xxx','yyyy')
     1.2后面再查询刚才插入的记录,然后更新BLOB,在查询前,注意设置Connection的一个属性:
      conn.setAutoCommit(false);如果缺少这一步,可能导致fetch out of sequence等异常.
     1.3 查询刚才插入的记录,后面要加“ for update ”,如下:
      select A from xxxtable where xxx=999 for update ,如果缺少for update,可能出现row containing the LOB value is not locked

    的异常
     1.4 从查询到的 BLOB字段中,获取blob并进行更新,代码如下:
      BLOB blob = (BLOB) rs.getBlob("A");
      OutputStream os = blob.getBinaryOutputStream();
      BufferedOutputStream output = new BufferedOutputStream(os);

      后面再使用output.write方法将需要写入的内容写到output中就可以了。例如我们将一个文件写入这个字段中:
      BufferedInputStream input = new BufferedInputStream(new File("c://hpWave.log").toURL().openStream());
      byte[] buff = new byte[2048];  //用做文件写入的缓冲
      int bytesRead;
      while(-1 != (bytesRead = input.read(buff, 0, buff.length))) {
       output.write(buff, 0, bytesRead);
       System.out.println(bytesRead);
      }
      上面的代码就是从input里2k地读取,然后写入到output中。
     1.5上面执行完毕后,记得关闭output,input,以及关闭查询到的ResultSet
     1.6最后执行conn.commit();将更新的内容提交,以及执行conn.setAutoCommit(true); 改回Connction的属性
    2.修改记录,方法与上面的方法类似,
     2.1首先更新BLOB以外的其他字段
     2.2 使用1.3中类似的方法获取记录
     2.3 修改的过程中,注意以下:a 需要更新的记录中,BLOB有可能为NULL,这样在执行blob.getBinaryOutputStream()获取的值可能为

    null,那么就关闭刚才select的记录,再执行一次update xxxtable set A = empty_blob() where xxx, 这样就先写入了一个空的BLOB(不是null),然后再

    使用1.3,1.4中的方法执行更新记录.b 注意别忘了先执行setAutoCommit(false),以及"for update",以及后面的conn.commit();等。
    3.读取BLOB字段中的数据.
     3.1 读取记录不需要setAutoCommit(),以及 select ....for update.
     3.2 使用普通的select 方法查询出记录
     3.3 从ResultSet中获取BLOB并读取,如下:
      BLOB b_to = (BLOB) rs.getBlob("A");
      InputStream is = b_from.getBinaryStream();
      BufferedInputStream input = new BufferedInputStream(is);
      byte[] buff = new byte[2048];
      while(-1 != (bytesRead = input.read(buff, 0, buff.length))) {
       //在这里执行写入,如写入到文件的BufferedOutputStream里
       System.out.println(bytesRead);
      }
      通过循环取出blob中的数据,写到buff里,再将buff的内容写入到需要的地方
    4.两个数据库间blob字段的传输
    类似上面1和3的方法,一边获取BufferedOutputStream,另外一边获取BufferedInputStream,然后读出写入,需要注意的是写入所用的

    Connection要执行conn.setAutoCommit(false);以及获取记录时添加“ for update ”以及最后的commit();

    总结以上方法,其根本就是先创建空的BLOB,再获取其BufferedOutputStream进行写入,或获取BufferedInputStream进行读取

     

    展开全文
  • pb客户端oracle文件

    2018-12-24 11:20:41
    pb客户端oracle文件, oracle 11g pb9.0 - pb 12 数据库存连接 dll相关文件
  • Oracle 控制文件和日志文件

    千次阅读 2016-04-26 12:19:46
    管理控制文件Oracle数据库中,控制文件是一个很小(大小一般在10MB范围内)的二进制文件,含有数据库的结构信息,包括数据文件和日志文件的信息。可以将控制文件理解为物理数据库的一个元数据存储库。控制文件在...
  • Oracle数据库存储超大文件时、以流的方式分段读取和保存,避免内存溢出。本工具类提供两个方法: 1、读取文件保存到Oracle数据库Blob字段(支持超大文件) 2、从数据库中读出大字段到文件中(分块读取)
  • Oracle数据文件迁移

    千次阅读 2014-01-20 17:24:26
    (转)Oracle数据文件迁移 windows xp oracle 9. 2.0.1.0 sid:test 数据库安装在D盘,现在把D:\ORACLE\ORADATA\TEST下的控制文件,数据库文件,日志文件,临时文件移到F:\TEST\下。 先...
  • oracle密码文件使用

    2012-07-19 13:32:46
    本文在总结Oracle数据库安全管理工作的基础上,对Oracle数据库系统密码文件的创建、使用和维护作了详细的介绍,供大家参考。 关键词:Oracle数据库密码文件Oracle数据库系统中,用户如果要以特权用户身份...
  • Oracle数据库是由一个个表空间构成,表空间是由多个数据文件,数据文件又是区间构成,区由Oracle块构成。下图借鉴自:https://www.cnblogs.com/chengxiao/p/5904783.html 1.Oracle表空间数据文件大小的限制 ...
  • oracle文件处理工具包

    2009-08-03 12:07:36
    这个是小弟在ORACLE官网站上找到的专门用来出里文件存ORACLE LOB字段的工具包. 里面有原代码,直接在ORACLE中执行就可以生成PKG包.同时还有多种文件入库的例子. 包括二进制文件,XML文件以及所有带格式的文件的处理.
  • 在此之前搞清楚每个文件的作用,一定要掌握oracle的基本概念。 一、 基本文件的备份恢复 1、logfile多元化和备份恢复 日志查询 select * from v$logfile; select * from v$log; 手工切换日志 alter system ...
  • ORACLE口令文件及密码认证

    千次阅读 2012-06-17 11:21:31
    Oracle口令文件中存放sysdba/sysoper用户的用户名及口令,允许用户通过口令文件验证。 本文包括以下四部分: 1、使用orapwd创建口令文件 2、介绍口令文件的三种状态 3、在口令文件中添加用户 4、维护口令...
  • Bfile:存储在数据库外的操作系统文件,变二进制数据,不参与数据库事务操作 【Java面试题与答案】整理推荐 基础与语法 集合 网络编程 并发编程 Web 安全 设计模式 框架 算法与数据结构 异常...
  • oracle配置文件丢失恢复

    千次阅读 2013-08-22 16:47:44
    配置文件的主要作用记录各部分内存结构的值和控制文件的位置。 1、模拟服务器上的spfile、pfile丢失 [oracle@redhat4 dbs]$ rm spfilejiagulun.ora [oracle@redhat4 dbs]$ rm initjiagulun.ora 此时启动数据库报错...
  • 网上搜了好多都是连同数据文件连同表空间一起删除,通过自己学习,整理出一个删除表空间单个数据文件的方法,仅供参考。在没有数据写入表空间的时候操作比较好。 第一部、先创建一个零时的表空间,用来存放要移出的...
  •  但根本无法知道那些文件在数据库中不,那些文件在库里面,但不存在实体文件。  现在做了个程序,可以做到读取数据库文件列表,然后检查网上链接是否有效,也可以反向检查。   xmlns
  • ORACLE控制文件的重建

    2001-12-11 10:06:00
    数据库系统运行一段时间后有很多参数需要调整,有些参数可在$ORACLE_HOME/dbs/initXXX.ora文件中调整,而有些参数必须要在ORACLE的控制文件中调整。... 二种方法是只重建控制文件,因为数据文件个数的限制参数放在
  • Oracle 主要配置文件介绍

    热门讨论 2007-08-25 10:07:40
    initSID.ora 每个数据库实例都有一个初始化 参数文件 其缺省 存放的路径为 $ORACLE_BASE/admin/<SID>/pfile 其名称为 init<SID>.ora 如 cams 实 例 对 应 的 参 数 文 件 为 initcams.ora 缺 省 放 ...
  • oracle dmp文件导入 与 blob图片导出

    千次阅读 2013-07-22 16:27:41
    1、从 oracle 官网下载 11g 服务端版和客户端版。 2、在服务器上安装 服务端版,并导入 dmp 文件(从10g中导出。)。在控制台中使用imp命令,输入用户名/密码,除了 “要求dmp文件的地方要输入dmp文件的路径文件名”...
  • oracle口令文件研究以及db_name 研究

    千次阅读 2013-11-24 02:03:46
    oracle口令文件研究以及db_name 研究 今天是2013-11-24日,本来打算休息,但是在枕边烦了一下oracle的书籍,发现几个学习点,再次记录一下笔记内容。 第一:oracle口令文件研究: 先看一下官网介绍: ORAPWD ...
  •  公司的技术图纸文档全部保存在文件服务器某个文件夹中,通过AD域自动映射网络驱动器到用户PC上。随着公司多年数据积累越来走多,用户在该目录下,使用Windows搜索功能找出任务单需要的技术图纸越来越慢。为了提高...
  • Oracle密码文件的创建、使用和维护

    千次阅读 2011-07-14 12:17:58
    Oracle数据库系统中,用户如果要以特权用户身份(INTERNAL/SYSDBA/SYSOPER)登录Oracle数据库可以有两种身份验证的方法:即使用与操作系统集成的身份验证或使用Oracle数据库的密码文件进行身份验证。因此,管理...
  •  //xml文件  PreparedStatement ps = conn  .prepareStatement("INSERT INTO T_HUMAN_XML (cid,cpxml) values ('1',?)");  String inFile = "D:/test.xml";  //设定的是blob类型   // ps.setBlob...
  • Oracle数据库中的数据到XML文件

    千次阅读 2013-06-18 09:36:15
    Class.forName("oracle.jdbc.OracleDriver"); String url = "jdbc:oracle:thin:@localhost:1521:orcl"; String user = "scott"; String passwd = "tiger"; Connection conn = DriverManager.get...
  • oracle数据库中主要文件

    千次阅读 2017-12-15 21:04:42
    Oracle物理结构包含了数据文件、重做日志文件、控制文件、参数文件、密码文件、归档日志文件、备份文件、告警日志文件、跟踪文件等等;其中数据文件、控制文件、重做日志文件和参数文件是必须的,其他文件可选。 1...
  • 查看oracle 备份 dmp文件

    千次阅读 2018-06-11 10:33:31
    在工作中经常使用到别人提供过来的dmp文件,由于不知道...1、如果dmp文件比较小,用文本编辑器打开就可以了。 2、如果dmp特别大,可以通过toad工具打开。在database/export/exert file browse浏览要打开的dmp即可。...
  • ORACLE创建密码文件

    2009-12-30 16:29:00
    首先通过 select * from V$pwfile_users 查询密码文件是否,如果无记录返回,说明文件不存在,则通过ORAPWD创建。 D:\oracle\ora92\database>orapwd file=pwdcjh.ora password=cjh entries=2其中参数entries的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,713
精华内容 21,485
关键字:

oracle存文件