📄 xmldatabase.java
字号:
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 + -