⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmldatabase.java

📁 导出ORACLE数据库对象DDL语句的程序
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		String bdump="*.background_dump_dest=";
		String cdump="*.core_dump_dest=";
		if(this.getPlatform()==WINDOWS){
			controlfiles=controlfiles+"'"+this.DATA_DIR+"\\control01.ctl',";
			controlfiles=controlfiles+"'"+this.DATA_DIR+"\\control02.ctl',";
			controlfiles=controlfiles+"'"+this.DATA_DIR+"\\control03.ctl')";
			writer.write(controlfiles);
			writer.write("\n");
			writer.write(udump+"'"+this.ORACLE_BASE+"\\admin\\"+this.srvName+"\\udump'");
			writer.write("\n");
			writer.write(bdump+"'"+this.ORACLE_BASE+"\\admin\\"+this.srvName+"\\bdump'");
			writer.write("\n");
			writer.write(cdump+"'"+this.ORACLE_BASE+"\\admin\\"+this.srvName+"\\cdump'");
			writer.write("\n");
			
		}else{
			controlfiles=controlfiles+"'"+this.DATA_DIR+"/control01.ctl',";
			controlfiles=controlfiles+"'"+this.DATA_DIR+"/control02.ctl',";
			controlfiles=controlfiles+"'"+this.DATA_DIR+"/control03.ctl')";
			writer.write(controlfiles);
			writer.write("\n");
			writer.write(udump+"'"+this.ORACLE_BASE+"/admin/"+this.srvName+"/udump'");
			writer.write("\n");
			writer.write(bdump+"'"+this.ORACLE_BASE+"/admin/"+this.srvName+"/bdump'");
			writer.write("\n");
			writer.write(cdump+"'"+this.ORACLE_BASE+"/admin/"+this.srvName+"/cdump'");
			writer.write("\n");
		}
		
		
		writer.close();
	}
	
	/**
	 * For Oracle 8i
	 * @param datDir
	 * @throws Exception
	 */
	private void crInitFile8I(String datDir) throws Exception{
		this.crInitFile(datDir);
	}

//	public void setDefaultEnv(int type){
//		if(type==WINDOWS){
//			ORACLE_HOME="%ORACLE_HOME%";
//			ORACLE_BASE="%ORACLE_BASE%";
//			DATA_DIR="%ORACLE_BASE%\\"+this.srvName+"\\oradata";
//		}else{
//			ORACLE_HOME="$ORACLE_HOME";
//			ORACLE_BASE="$ORACLE_BASE";		
//			DATA_DIR="$ORACLE_BASE/"+this.srvName+"/oradata";
//		}		
//	}
	
	
	/**
	 * 设置导入环境的各类环境变量
	 * @param home 设置ORACLE_HOME参数
	 * @param base 设置ORACLE_BASE参数
	 * @param datDir 设置数据文件目录
	 * */
	public void setEnv(String home,String base,String datDir){
		ORACLE_HOME=home;
		ORACLE_BASE=base;
		DATA_DIR=datDir;		
	}
	
	private void crWindowsBat(String datDir) throws IOException{
		//String fileName=this.srvName+".bat";
		File fileName=new File(datDir,this.srvName+".bat");
		FileWriter writer=new  FileWriter(fileName);			
		//FileWriter writer=new  FileWriter(fileName);			
		writer.write("set ORACLE_SID="+this.srvName+"\n");
		writer.write("set ORACLE_HOME="+this.ORACLE_HOME+"\n");
		writer.write("set ORACLE_BASE="+this.ORACLE_BASE+"\n");
		writer.write(""+"\n");

		writer.write("mkdir %ORACLE_BASE%\\admin\\%ORACLE_SID%\\bdump"+"\n");
		writer.write("mkdir %ORACLE_BASE%\\admin\\%ORACLE_SID%\\cdump"+"\n");
		writer.write("mkdir %ORACLE_BASE%\\admin\\%ORACLE_SID%\\create"+"\n");
		writer.write("mkdir %ORACLE_BASE%\\admin\\%ORACLE_SID%\\pfile"+"\n");
		writer.write("mkdir %ORACLE_BASE%\\admin\\%ORACLE_SID%\\udump"+"\n");
		//writer.write("mkdir %ORACLE_BASE%\\oradata\\%ORACLE_SID%"+"\n");
		//writer.write("mkdir %ORACLE_HOME%\\database"+"\n");
		writer.write("mkdir %ORACLE_BASE%\\oradata\\%ORACLE_SID%"+"\n");
//		writer.write("mkdir "+this.DATA_DIR+"\n");
		writer.write(""+"\n");
		
		writer.write("%ORACLE_HOME%\\bin\\oradim.exe -new  -sid %ORACLE_SID% -startmode m "+"\n");
		writer.write("%ORACLE_HOME%\\bin\\oradim.exe -edit  -sid %ORACLE_SID% -startmode a "+"\n");
		writer.write("%ORACLE_HOME%\\bin\\orapwd.exe file=%ORACLE_HOME%\\database\\PWD%ORACLE_SID%.ora password=change_on_install"+"\n");
		writer.write("%ORACLE_HOME%\\bin\\sqlplus /nolog @"+CreateDB+"\n");
		writer.write("%ORACLE_HOME%\\bin\\sqlplus /nolog @"+CreateDBFiles+"\n");
		writer.write("%ORACLE_HOME%\\bin\\sqlplus /nolog @"+CreateDBCatalog+"\n");
		writer.write("%ORACLE_HOME%\\bin\\sqlplus /nolog @"+postDBCreation+"\n");
		
		writer.close();
		
	}
	
	/**
	 * For Oracle 8i
	 * @param datDir
	 * @throws IOException
	 */
	private void crWindowsBat8I(String datDir) throws IOException{
		this.crWindowsBat(datDir);
	}
	
	private void crUnixShell(String datDir) throws IOException{
		
		File fileName=new File(datDir,this.srvName+".sh");
		FileWriter writer=new  FileWriter(fileName);			
		writer.write("#!/bin/sh"+"\n");
		writer.write(""+"\n");
		writer.write("ORACLE_SID="+this.srvName+"\n");
		writer.write("ORACLE_BASE="+this.ORACLE_BASE+"\n");
		writer.write("ORACLE_HOME="+this.ORACLE_HOME+"\n");
		writer.write(""+"\n");
		writer.write("export ORACLE_SID"+"\n");
		writer.write("export ORACLE_BASE"+"\n");
		writer.write("export ORACLE_HOME"+"\n");
		writer.write(""+"\n");

		writer.write("mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/bdump"+"\n");
		writer.write("mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/cdump"+"\n");
		writer.write("mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/create"+"\n");
		writer.write("mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/pfile"+"\n");
		writer.write("mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/udump"+"\n");
		//writer.write("mkdir $ORACLE_BASE/oradata/$ORACLE_SID"+"\n");
		//writer.write("mkdir $ORACLE_HOME/dbs"+"\n");
		writer.write("mkdir -p $ORACLE_BASE/oradata/$ORACLE_SID"+"\n");
//		writer.write("mkdir "+this.DATA_DIR+"\n");
		writer.write(""+"\n");

		writer.write("echo Add this entry in the oratab: $ORACLE_SID:$ORACLE_HOME:Y"+"\n");
		writer.write("$ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=change_on_install"+"\n");
		writer.write("$ORACLE_HOME/bin/sqlplus /nolog @"+CreateDB+"\n");
		writer.write("$ORACLE_HOME/bin/sqlplus /nolog @"+CreateDBFiles+"\n");
		writer.write("$ORACLE_HOME/bin/sqlplus /nolog @"+CreateDBCatalog+"\n");
		writer.write("$ORACLE_HOME/bin/sqlplus /nolog @"+postDBCreation+"\n");
		writer.close();
				
	
	}
	
	/**
	 * For Oracle 8i
	 * @param datDir
	 * @throws IOException
	 */
	private void crUnixShell8I(String datDir) throws IOException{
		this.crUnixShell(datDir);
	}
	
	
	private void crCreateDBSql(String datDir) throws IOException, NodeException{
		File fileName=new File(datDir,CreateDB);
		FileWriter writer=new  FileWriter(fileName);			
		writer.write("connect SYS/change_on_install as SYSDBA"+"\n");
		writer.write("set echo on"+"\n");
		writer.write("spool CreateDB.log"+"\n");
		writer.write("startup nomount\n");		
		writer.write(""+"\n");
		
		writer.write("CREATE DATABASE "+this.srvName+"\n");
		writer.write("MAXINSTANCES 1"+"\n");
		writer.write("MAXLOGHISTORY 1"+"\n");
		writer.write("MAXLOGFILES 5"+"\n");
		writer.write("MAXLOGMEMBERS 3"+"\n");
		writer.write("MAXDATAFILES 100"+"\n");
		//writer.write(""+"\n");
		
		String str=this.getSystemTbs();
		if(str==null){
			throw new NodeException("Can't get infomation of system tablespace.");
		}else writer.write(str+"\n");
		
		str=this.getTempTbs();
		if(str==null){
			throw new NodeException("Can't get infomation of default temporary tablespace.");
		}else writer.write(str+"\n");
		
		if(this.getVersion() == XMLDatabase.VERSION_ORACLE9I){
			str=this.getUndoTbs();
			if(str==null){
				throw new NodeException("Can't get infomation of undo tablespace.");
			}else writer.write(str+"\n");
		}
		
		str=this.getCharacterSet();
		if(str==null){
			throw new NodeException("Can't get character set.");
		}else writer.write(str+"\n");
		
		str=this.getNationalCharacterSet();
		if(str==null){
			throw new NodeException("Can't get national character set.");
		}else writer.write(str+"\n");
		
		str=this.getLogs();
		if(str==null){
			throw new NodeException("Can't get log files.");
		}else writer.write(str+"\n");
				
		
		writer.write(";"+"\n");
		
		writer.write(""+"\n");
		writer.write("spool off"+"\n");
		writer.write("exit"+"\n");
		writer.write(""+"\n");		

		writer.close();
	}
	
	/**
	 * For Oracle 8i
	 * @param datDir
	 * @throws IOException
	 * @throws NodeException
	 */
	private void crCreateDBSql8I(String datDir) throws IOException, NodeException{
		this.crCreateDBSql(datDir);
	}

	private void crCreateDBFilesSql(String datDir) throws IOException{
		File fileName=new File(datDir,CreateDBFiles);
		FileWriter writer=new  FileWriter(fileName);			

		writer.write("connect SYS/change_on_install as SYSDBA"+"\n");
		writer.write("set echo on"+"\n");
		writer.write("spool CreateDBFiles.log"+"\n");
		writer.write(""+"\n");		

		XMLTablespaces tbss=(XMLTablespaces)this.getDirectChildren(XMLNode.XML_STORAGE,XMLStorage.NAME).getDirectChildren(XMLNode.XML_TABLESPACES,XMLTablespaces.NAME);		
		Hashtable hash=tbss.getDirectChildren(XMLNode.XML_TABLESPACE);

		Enumeration enum=hash.elements();
		while(enum.hasMoreElements()){
			XMLTablespace tbs=(XMLTablespace)enum.nextElement();		
			if(tbs.getName().equals(this.tempTbsName)||tbs.getName().equals(this.undoTbsName)||tbs.getName().equals(systemTbsName)) continue;
			writer.write("CREATE TABLESPACE "+tbs.getName()+" "+this.getTbsDatFiles(tbs)+";\n");			
		}
		/**
		writer.write("CREATE TABLESPACE INDX  LOGGING "+this.getTbsDatFiles("INDX")+";\n");
		writer.write("CREATE TABLESPACE TOOLS LOGGING "+this.getTbsDatFiles("TOOLS")+";\n");
		writer.write("CREATE TABLESPACE USERS LOGGING "+this.getTbsDatFiles("USERS")+";\n");
		**/
		writer.write("spool off"+"\n");
		writer.write("exit"+"\n");

		writer.close();
	
	}
	
	/**
	 * For Oracle 8i
	 * @param datDir
	 * @throws IOException
	 */
	private void crCreateDBFilesSql8I(String datDir) throws IOException{
		this.crCreateDBFilesSql(datDir);
	}

	private void crCreateDBCatalogSql(String datDir) throws IOException{
		File fileName=new File(datDir,CreateDBCatalog);
		FileWriter writer=new  FileWriter(fileName);			
		
		writer.write("spool CreateDBCatalog.log"+"\n");
		writer.write(""+"\n");
		writer.write("connect SYS/change_on_install as SYSDBA"+"\n");
		writer.write("set echo on"+"\n");
		writer.write("@?/rdbms/admin/catalog.sql"+"\n");
		writer.write("@?/rdbms/admin/catexp7.sql"+"\n");
		writer.write("@?/rdbms/admin/catblock.sql"+"\n");
		writer.write("@?/rdbms/admin/catproc.sql"+"\n");
		writer.write("@?/rdbms/admin/catoctk.sql"+"\n");
		if(this.getVersion() == XMLDatabase.VERSION_ORACLE9I)
			writer.write("@?/rdbms/admin/owminst.plb"+"\n");
		writer.write("connect SYSTEM/manager"+"\n");
		writer.write("@?/sqlplus/admin/pupbld.sql"+"\n");
		writer.write("spool off"+"\n");

		writer.write("spool sqlPlusHelp.log"+"\n");
		writer.write("connect SYSTEM/manager"+"\n");
		writer.write("@?/sqlplus/admin/help/hlpbld.sql helpus.sql"+"\n");
		writer.write("spool off"+"\n");
		writer.write("exit"+"\n");
		
		writer.close();
	}
	
	/**
	 * For Oracle 8i
	 * @param datDir
	 * @throws IOException
	 */
	private void crCreateDBCatalogSql8I(String datDir) throws IOException{
		this.crCreateDBCatalogSql(datDir);
	}
		
	
	private void crPostDBCreation(String datDir) throws IOException{
		File fileName=new File(datDir,postDBCreation);
		FileWriter writer=new  FileWriter(fileName);			

		writer.write("connect SYS/change_on_install as SYSDBA"+"\n");
		writer.write("set echo on"+"\n");
		writer.write("spool postDBCreation.log"+"\n");
		writer.write("@?/rdbms/admin/utlrp.sql"+"\n");
		writer.write("shutdown immediate "+"\n");
		writer.write("create spfile FROM pfile;"+"\n");
		writer.write("startup"+"\n");
		writer.write("spool off"+"\n");
		writer.write("exit"+"\n");
		
		writer.close();
	}
	
	/**
	 * For Oracle 8i
	 * @param datDir
	 * @throws IOException
	 */
	private void crPostDBCreation8I(String datDir) throws IOException{
		
		File fileName=new File(datDir,postDBCreation);
		FileWriter writer=new  FileWriter(fileName);			

		writer.write("connect SYS/change_on_install as SYSDBA"+"\n");
		writer.write("set echo on"+"\n");
		writer.write("spool postDBCreation.log"+"\n");
		writer.write("@?/rdbms/admin/utlrp.sql"+"\n");
		writer.write("");
		
		XMLUndoSegs rolsegs=(XMLUndoSegs)this.getDirectChildren(XMLNode.XML_STORAGE,XMLStorage.NAME).getDirectChildren(XMLNode.XML_UNDO_SEGS,XMLUndoSegs.NAME);
		if(rolsegs == null){
			Logger.log(Logger.DEBUG,"系统无手工创建回滚段!");
			return;
		}else{
			Hashtable hash = rolsegs.getDirectChildren(XMLNode.XML_UNDO_SEG);
	
			Enumeration enum=hash.elements();
			while(enum.hasMoreElements()){
				XMLUndoSeg rolseg=(XMLUndoSeg)enum.nextElement();	
				if(!rolseg.name.toUpperCase().equals("SYSTEM"))
					writer.write(rolseg.getSqlDDL());
			}
		}
		
		writer.write("\n");
		writer.write("spool off"+"\n");
		writer.close();
	}

	public void expDBSQL(File expFile) throws Exception{
		Logger.log(Logger.DEBUG,"start to exp database creation sql");
		
		Logger.log(Logger.DEBUG,"set platform");
		setPlatform();
		Logger.log(Logger.DEBUG,"set version");
		setVersion();
		if(this.getVersion() == XMLDatabase.VERSION_ORACLE9I){
		
			if(getPlatform()==XMLDatabase.WINDOWS){
				System.out.println("create bat file");
				crWindowsBat(expFile.toString());
			}else{
				System.out.println("create shell file");
				crUnixShell(expFile.toString());
			}
			
			System.out.println("create initial file");
			crInitFile(expFile.toString());
			
			System.out.println("create db sql");
			crCreateDBSql(expFile.toString());
	
			System.out.println("create db files sql");
			crCreateDBFilesSql(expFile.toString());
			
			System.out.println("create db catalog sql");
			crCreateDBCatalogSql(expFile.toString());
			
			System.out.println("create post db creation sql");
			crPostDBCreation(expFile.toString());	
		
		}else{
			
			if(getPlatform()==XMLDatabase.WINDOWS){
				System.out.println("Oracle8i create bat file");
				crWindowsBat8I(expFile.toString());
			}else{
				System.out.println("Oracle8i create shell file");
				crUnixShell8I(expFile.toString());
			}
			
			System.out.println("Oracle8i create initial file");
			crInitFile8I(expFile.toString());
			
			System.out.println("Oracle8i create db sql");
			crCreateDBSql8I(expFile.toString());
	
			System.out.println("Oracle8i create db files sql");
			crCreateDBFilesSql8I(expFile.toString());
			
			System.out.println("Oracle8i create db catalog sql");
			crCreateDBCatalogSql8I(expFile.toString());
			
			System.out.println("Oracle8i create post db creation sql");
			crPostDBCreation8I(expFile.toString());	

		}
	}	

	
	protected String getLogs(){
		JDBCPool cnn=null;
		ResultSet rs=null;
		String logs="";
		try {
			if(JDBCPoolManager.getInstance().isDebug()) 
				System.out.println(this.getClass().toString());
				
			cnn=this.getConnPool();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -