Desenvolvi para a nossa conversão de DBF para Oracle este pequeno utilitário, qualquer bug por favor informem.
Código:
AdoOraDbf.prg
Código: Selecionar todos
*********************************************************************
* Programa : ADORADBF *
* Autor : Alexandre Simões *
* Data : 23/03/2012 *
* Descricao: Carga de uma tabela DBF no Oracle *
* Conexão via ADODB *
*********************************************************************
#include "hbcompat.ch"
#include "inkey.ch"
#include "setcurs.ch"
#include "error.ch"
#include "achoice.ch"
#include "fileio.ch"
#include "common.ch"
#include "dbinfo.ch"
#include "hbver.ch"
#include "hbdyn.ch"
#include "wvtwin.ch"
#include "hbgtinfo.ch"
#include "hbgtwvg.ch"
#include "wvgparts.ch"
#include "hbcompat.ch"
#include "windows.ch"
#include "directry.ch"
#include "adordd.ch"
#include 'set.ch'
#command SET OPTIMIZE <x:ON,OFF,&> => Set( _SET_OPTIMIZE, <(x)> )
#command SET AUTOPEN <x:ON,OFF,&> => Set( _SET_AUTOPEN, <(x)> )
#command SET DBFLOCKSCHEME TO <x> => Set( _SET_DBFLOCKSCHEME, <x> )
FUNCTION Main(cPastaDBF)
DEFAULT cPastaDBF TO ""
Carga_Oracle(cPastaDBF)
RETURN Nil
*-------------------------------------------------------------------------
FUNCTION Carga_Oracle(cPasta)
*-------------------------------------------------------------------------
PRIVATE cBancoOracle, cEsquemaOracle, cSenhaUsuarioOracle, oConnection
QualConexao()
oRecordSet:=Nil
CriaObjetoRecordSet(@oRecordSet)
oRecordSet:CursorType := adOpenDynamic
oRecordSet:ActiveConnection:=oConnection
oCommand:=IniciaCommand()
//MsgStatus(03,00,"A conexÆo no Oracle est ativa.")
SetCursor(0)
IF Empty(cPasta)
DO WHILE Empty(cPasta)
cPasta:=SelectFolder("Informe a pasta dos dbfs.")
IF Empty(cPasta)
IF MsgNaoSim("Nenhuma pasta foi selecionada, abandonar?")
QUIT
ENDIF
ELSE
IF MsgNaoSim("Confirma a pasta "+cPasta+ " para migra‡Æo?")
EXIT
ELSE
cPasta:=""
LOOP
ENDIF
ENDIF
ENDDO
ENDIF
SET DEFAULT TO &cPasta.
IF !MsgNaoSim("Inicia a carga?","Aten‡Æo")
QUIT
ENDIF
aDBF:={}
FErase("dbf2ora.txt")
aDir:=Directory(cPasta+HB_PS()+"*.DBF")
ASort( aDir ,,, {|x,y| y[1] > x[1] } )
IF Len(aDir) > 0
AEval(aDir,{|f| AAdd(aDBF,Upper(f[F_NAME]))})
ENDIF
IF Len(aDBF) > 0
@07,00 SAY PADR("Pasta dos dbfs",40)+": " COLOR "W+/N"
@07,42 SAY PADL(cPasta,MaxCol()-42) COLOR "W+/N"
@08,00 SAY PADR("Total de tabela(s)",40)+": " COLOR "W+/N"
@08,42 SAY PADL(Transform(Len(aDBF),"9999"),MaxCol()-42) COLOR "W+/N"
@09,00 SAY PADR("Hora inicio",40)+": " COLOR "W+/N"
@09,42 SAY PADL(Time(),MaxCol()-42) COLOR "W+/N"
@10,00 SAY PADR("Hora t‚rmino",40)+": " COLOR "W+/N"
@11,00 SAY PADR("Processando tabela n§",40)+": " COLOR "W+/N"
@12,00 SAY PADR("Criando e inserindo registros na tabela",40)+": " COLOR "W+/N"
@13,00 SAY PADR("Total de registros",40)+": " COLOR "W+/N"
@14,00 SAY PADR("Tempo decorrido",40)+": " COLOR "W+/N"
@15,00 SAY PADR("% realizado",40)+": " COLOR "W+/N"
@16,00 SAY PADR("Registro corrente",40)+": " COLOR "W+/N"
nSecIni:=Seconds()
TRY
cTheQuery:="DROP TABLE "+Alias()
oConnection:Execute( cTheQuery )
CATCH oErr
END
FOR nContadorTabela:=1 TO Len(aDBF)
cTabelaDBF:=aDBF[nContadorTabela]
cAlias:=StrTran(Upper(aDBF[nContadorTabela]),".DBF")
USE &(cAlias) ALIAS &cAlias.
aTheDBF := DbStruct()
@11,42 CLEAR TO 12,MaxCol()
@16,42 CLEAR TO 22,MaxCol()
@11,42 SAY PADL(Transform(nContadorTabela,"9999"),MaxCol()-42) COLOR "W+/N"
@12,42 SAY PADL(cAlias,MaxCol()-42) COLOR "W+/N"
TRY
cTheQuery:='DROP TABLE '+Alias()
oConnection:Execute( cTheQuery )
CATCH
END
//cTheQuery:='ALTER SESSION SET NLS_LANGUAGE = "PORTUGUESE"'
//oConnection:Execute( cTheQuery )
//cTheQuery:='ALTER SESSION SET NLS_TERRITORY = "BRAZIL"'
//oConnection:Execute( cTheQuery )
TRY
cTheQuery:="CREATE TABLE "+Alias()+ " ( "
nEspaco:=Len(cTheQuery)
FOR I:=1 TO Len(aTheDBF)
cNomeCampo:=Upper(aTheDBF[I,1])
IF AllTrim(cNomeCampo) == "DESC"
cNomeCampo:='"'+'DESC'+'"'
ENDIF
IF AllTrim(cNomeCampo) == "DATA"
cNomeCampo:='"'+'DATA'+'"'
ENDIF
DO CASE
CASE aTheDBF[I,2] = "C"
cTheQuery+=IF(I>1,Space(nEspaco),"")+PADR(cNomeCampo,10)+" varchar("+AllTrim(Str(aTheDBF[I,3]))+") NULL,"+HB_EOL()
CASE aTheDBF[I,2] = "N"
cTamanho:=AllTrim(Str(aTheDBF[I,3]))
cDecimal:=AllTrim(Str(aTheDBF[I,4]))
cTheQuery+=IF(I>1,Space(nEspaco),"")+PADR(cNomeCampo,10)+" number("+cTamanho+","+cDecimal+") NULL,"+HB_EOL()
CASE aTheDBF[I,2] = "D"
cTheQuery+=IF(I>1,Space(nEspaco),"")+PADR(cNomeCampo,10)+" date NULL,"+HB_EOL()
CASE aTheDBF[I,2] = "L"
cTheQuery+=IF(I>1,Space(nEspaco),"")+PADR(cNomeCampo,10)+" char(1) DEFAULT 'F' check("+aTheDBF[I,1]+" in ('F', 'T')) NOT NULL,"+HB_EOL()
CASE aTheDBF[I,2] = "M"
cTheQuery+=IF(I>1,Space(nEspaco),"")+PADR(cNomeCampo,10)+" clob NULL,"+HB_EOL()
ENDCASE
NEXT
nPosicaoVirgula:=RAT(',', cTheQuery)
cTheQuery:=SubStr(cTheQuery,1,nPosicaoVirgula - 1)+" )"
FErase("c:\temp\querytable.txt")
EscreveLinha(cTheQuery,"c:\temp\querytable.txt")
oConnection:Execute( cTheQuery ) // Cria a tabela se nÆo existe
CATCH oErr
END
TRY
cTheQuery:="TRUNCATE TABLE "+Alias()
oConnection:Execute( cTheQuery )
CATCH oErr
END
//TRY
nTotalRegistros:=0
&(Alias())->(DbEval({||nTotalRegistros++},{||!&(Alias())->(Deleted()) .AND. !&(Alias())->(Eof())}))
&(Alias())->(DbGoTop())
@13,42 SAY PADL(Transform(nTotalRegistros,"999999999"),MaxCol()-42) COLOR "W+/N"
cQueryLeft := "INSERT INTO "+Alias()+" ("
nEspaco:=Len(cQueryLeft)
FOR X:=1 TO Len(aTheDBF)
cNomeCampo:=Upper(aTheDBF[X,1])
IF AllTrim(cNomeCampo) == "DESC"
cNomeCampo:='"'+'DESC'+'"'
ENDIF
IF AllTrim(cNomeCampo) == "DATA"
cNomeCampo:='"'+'DATA'+'"'
ENDIF
cQueryLeft += IF(X>1,Space(nEspaco),"")+PADR(cNomeCampo,10) + ", "+HB_EOL()
NEXT
nPosicaoVirgula:=RAT(',', cQueryLeft)
cQueryLeft:=SubStr(cQueryLeft,1,nPosicaoVirgula - 1)+" ) VALUES ("
nEspaco:=Len(cQueryLeft)-RAT( " ) VALUES (", cQueryLeft )+33
nPosicaoVirgula:=RAT(',', cQueryLeft)
cValorInsert:=""
TermoEspecial(0,nTotalRegistros)
nTermo:=0
EscreveLinha("Tabela : "+PADL(Alias(),10)+" iniciado as: "+Time(),"c:\temp\dbf2ora.txt")
AbreLinha(1,"c:\temp\dbf2ora.txt")
DO WHILE !&(Alias())->(Eof())
TermoEspecial(++nTermo)
@16,42 SAY PADL(Transform(nTermo,"999999999"),MaxCol()-42) COLOR "W+/N"
cTheQuery := cQueryLeft
FOR X:=1 TO Len(aTheDBF)
@14,42 SAY PADL(TsTring(Seconds()-nSecIni),MaxCol()-42) COLOR "W+/N"
cNomeCampo:=Upper(aTheDBF[X,1])
IF AllTrim(cNomeCampo) == "DESC"
cNomeCampo:='"'+DESCR+'"'
ENDIF
IF AllTrim(cNomeCampo) == "DATA"
cNomeCampo:='"'+'DATA'+'"'
ENDIF
cTheValue := &(aTheDBF[X,1] )
IF aTheDBF[X,2] $ "NDCM"
IF Empty(cTheValue)
cTheValue:=Nil
ENDIF
ENDIF
cEspaco:=IF(X>1,Space(nEspaco),"")
DO CASE
CASE aTheDBF[X,2] = "N"
cTheQuery += "?, "
Param0 := oCommand:CreateParameter(cNomeCampo, adNumeric, adParamInput,aTheDBF[X,3],cTheValue)
oCommand:Parameters:Append( Param0)
CASE aTheDBF[X,2] = "D"
cTheQuery += "?, "
Param0 := oCommand:CreateParameter(cNomeCampo, adDate, adParamInput,aTheDBF[X,3],cTheValue)
oCommand:Parameters:Append( Param0)
CASE aTheDBF[X,2] = "L"
cTheQuery += "?, "
cTheValue:=IF(cTheValue,"T","F")
Param0 := oCommand:CreateParameter(cNomeCampo, adVarChar, adParamInput,aTheDBF[X,3],cTheValue)
oCommand:Parameters:Append( Param0)
CASE aTheDBF[X,2] = "C"
cTheQuery += "?, "
Param0 := oCommand:CreateParameter(cNomeCampo, adVarChar, adParamInput,aTheDBF[X,3],cTheValue)
oCommand:Parameters:Append( Param0)
CASE aTheDBF[X,2] = "M"
cTheQuery += "?, "
Param0 := oCommand:CreateParameter(cNomeCampo, adLongVarChar, adParamInput,Len(IF(cTheValue=Nil,aTheDBF[X,1],cTheValue)),cTheValue)
oCommand:Parameters:Append( Param0)
ENDCASE
NEXT
nPosicaoVirgula:=RAT(',', cTheQuery)
cTheQuery:=SubStr(cTheQuery,1,nPosicaoVirgula - 1)+" )"
FErase("c:\temp\queryvalor.txt")
FErase("c:\temp\queryinsert.txt")
EscreveLinha(cValorInsert,"c:\temp\queryvalor.txt")
EscreveLinha(cTheQuery,"c:\temp\queryinsert.txt")
oCommand:CommandText:= cTheQuery
oCommand:Execute()
oCommand:=IniciaCommand()
Param0:=Nil
&(Alias())->(DbSkip())
ENDDO
EscreveLinha("Tabela : "+PADL(Alias(),10)+" terminado as: "+Time(),"c:\temp\dbf2ora.txt")
AbreLinha(1,"c:\temp\dbf2ora.txt")
//CATCH oErr
// TONE(800,4)
// Info("NÆo foi possivel inserir registros na tabela "+Alias())
//END
@14,42 SAY PADL(TsTring(Seconds()-nSecIni),MaxCol()-42) COLOR "W+/N"
@15,42 SAY PADL(Transform((nContadorTabela/Len(aDBF))*100,"999.99"),MaxCol()-42) COLOR "W+/N"
&(Alias())->(DbCloseArea())
NEXT
@10,42 SAY PADL(Time(),MaxCol()-42) COLOR "W+/N"
Info("Carga concluida com sucesso.","Aten‡Æo")
ELSE
Pare("NÆo existe DBF para carga nesta pasta.","Aten‡Æo")
ENDIF
oConnection:=NIL
RETURN NIL
FUNCTION MsgStatus(nLinha,nColuna,cMensagem)
@nLinha,nColuna SAY PADR(cMensagem,MaxCol()+1)
RETURN Nil
INIT FUNCTION AppSetup()
ErrorBlock( { | oError | DefError( oError,"UTILITARIO" ) } )
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
HB_LANGSELECT("PT")
HB_CDPSELECT( "PT850" )
REQUEST HB_GT_GUI_DEFAULT
REQUEST HB_GT_WVG
REQUEST HB_GT_WVT
REQUEST HB_GT_WGU
SETMODE(25,80)
SET TYPEAHEAD TO 0
SET INTENSITY ON
SET SCOREBOARD OFF
SET DELETED ON
SET SAFETY OFF
SET DATE BRITI
SET ESCAPE ON
SET CENTURY ON
SET DELIMITERS TO
SET EXCLUSIVE OFF
SET WRAP ON
SET EPOCH TO 1920
SET OPTIMIZE ON
aIndFPT:=Directory("*.FPT")
IF Len(aIndFPT) > 0
REQUEST DBFCDX
RddSetDefault("DBFCDX")
ELSE
REQUEST DBFNTX
RddSetDefault("DBFNTX")
ENDIF
SET AUTOPEN ON
SET DBFLOCKSCHEME TO DB_DBFLOCK_DEFAULT
SET MESSAGE TO 24 CENTER
IniciaJanela()
RETURN Nil
FUNCTION IniciaJanela(nLi,nCi,nLf,nCf)
LOCAL oCrt
PUBLIC hWnd,;
cTituloJanela:="AdoraDbf - Utilit rio de Migra‡Æo DBF/Oracle VersÆo 2012.3",;
oDlgHabla,;
oTimer,;
cPrinter:= WIN_PrinterGetDefault() //GetDefaultPrinter()
DEFAULT nLi TO -1,;
nCi TO -2,;
nLf TO MaxRow(),;
nCf TO MaxCol()
oCrt := WvgCrt():New( , , { nLi,nCi }, { nLf,nCf}, , .T. )
oCrt:lModal := .F.
oCrt:icon := 'P:\GERAL\HARBOUR\HARB_WIN.ICO'
oCrt:create()
oCrt:resizable :=.F.
WVT_SetFont("Lucida Console")
WVT_SetTitle(cTituloJanela)
WVT_SetAltF4Close(.F. )
HB_gtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_MAXIMIZED )
hWnd:=HWG_FindWindow( ,cTituloJanela)
RETURN Nil
FUNCTION CriaObjetoConnection(oObjeto)
LOCAL oObjetoConnection:=Win_OleCreateObject( "ADODB.connection" )
IF oObjeto!=Nil
oObjeto:=Nil
ENDIF
oObjeto:=oObjetoConnection
RETURN oObjetoConnection
FUNCTION CriaObjetoCommand(oObjeto)
LOCAL oObjetoCommand:=Win_OleCreateObject( "ADODB.Command" )
IF oObjeto!=Nil
oObjeto:=Nil
ENDIF
oObjeto:=oObjetoCommand
RETURN oObjetoCommand
FUNCTION CriaObjetoRecordSet(oObjeto)
LOCAL oObjetoRecordSet:=Win_OleCreateObject( "ADODB.recordset" )
IF oObjeto!=Nil
oObjeto:=Nil
ENDIF
oObjeto:=oObjetoRecordSet
RETURN oObjetoRecordSet
FUNCTION IniciaCommand
oCommand:=Nil
oCommand:=CriaObjetoCommand(@oCommand)
oCommand:ActiveConnection:=oConnection
oCommand:CommandType:= adCmdText
RETURN oCommand
FUNCTION RetiraAcentos(cPalavra)
LOCAL i:=0,;
cAcento:= '',;
cRetiraAcento:= ''
FOR I = 1 To Len(cPalavra)
cAcento:=SUBST(cPalavra, I, 1)
DO CASE
CASE cAcento $ "µÇ¶·Ž"
cAcento = "A"
CASE cAcento $ "ÓÔÒ"
cAcento = "E"
CASE cAcento $ "ÖØÞ×"
cAcento = "I"
CASE cAcento $ "àåâ™"
cAcento = "O"
CASE cAcento $ "éëêš"
cAcento = "U"
CASE cAcento $ " ƃ…„"
cAcento = "a"
CASE cAcento $ "‚‰Šˆ"
cAcento = "e"
CASE cAcento $ "¡‹Œ"
cAcento = "i"
CASE cAcento = "¢ä“”"
cAcento = "o"
CASE cAcento $ "£—–"
cAcento = "u"
CASE cAcento $ "‡"
cAcento = "c"
CASE cAcento $ "€"
cAcento = "C"
CASE cAcento $ "õ"
cAcento = "§"
ENDCASE
cRetiraAcento += cAcento
NEXT
RETURN cRetiraAcento
FUNCTION MsgNaoSim(cMensagem,cTitulo)
DEFAULT cTitulo TO "Aviso do Sistema"
RETURN MsgNoYes(HB_OemToAnsi(cMensagem),Hb_OemToAnsi(cTitulo))
FUNCTION Info(cMensagem,cTitulo)
DEFAULT cTitulo TO "Aviso do Sistema"
RETURN MsgInfo(HB_OemToAnsi(cMensagem),Hb_OemToAnsi(cTitulo))
FUNCTION Pare(cMensagem,cTitulo)
DEFAULT cTitulo TO "Aviso do Sistema"
RETURN MsgStop(HB_OemToAnsi(cMensagem),Hb_OemToAnsi(cTitulo))
//FUNCTION EscreveLinha(cVar,cArq)
// StrFile(cVar,cArq,.T.)
//RETURN Nil
//FUNCTION AbreLinha(nLinha,cArq)
//LOCAL I
//DEFAULT nLinha TO 1
// FOR I:=1 TO nLinha
// StrFile(""+HB_EOL(),cArq,.T.)
// NEXT
//RETURN Nil
FUNCTION QualConexao()
LOCAL cNada:=""
cBancoOracle :=Space(10)
cEsquemaOracle :=Space(30)
cSenhaUsuarioOracle:=Space(20)
@00,00 SAY PADC(cTituloJanela,MaxCol()+1) COLOR "B/W*"
@01,00 TO 01,MaxCol() COLOR "B+/N"
@02,00 TO 06,MaxCol() COLOR "B+/N"
@23,00 TO 23,MaxCol() COLOR "B+/N"
TermoEspecial(0,0)
DO WHILE .T.
@03,01 SAY "Banco : " COLOR "W+/N"
@03,Col() GET cBancoOracle PICTURE "@!" VALID !Empty(cBancoOracle) COLOR "B+/W*,B/GR*,,,B/W*"
@04,01 SAY "Esquema : " COLOR "W+/N"
@04,Col() GET cEsquemaOracle PICTURE "@!" VALID !Empty(cEsquemaOracle) COLOR "B+/W*,B/GR*,,,B/W*"
@05,01 SAY "Senha : " COLOR "W+/N"
@05,Col() GET cSenhaUsuarioOracle PICTURE "@!" VALID !Empty(cSenhaUsuarioOracle) COLOR "B+/W*,B/GR*,,,B/W*"
ATAIL(GETLIST):READER := {|BL1|GETSEN(BL1)}
READ
IF LastKey() = 27
QUIT
ENDIF
cConexao:="Provider=OraOLEDB.Oracle;Data Source="+Trim(cBancoOracle)+";User ID="+Trim(cEsquemaOracle)+";Password="+Trim(cSenhaUsuarioOracle)+";FetchSize=100;CacheType=Memory;PLSQLRSet=True;"
TRY
oConnection:=Nil
CriaObjetoConnection(@oConnection)
oConnection:Open(cConexao)
@05,52 SAY PADL("Conectado ao Oracle... ",MaxCol()-52) COLOR "G+/N"
CATCH oErr
@05,52 SAY PADL(" ",MaxCol()-52) COLOR "G+/N"
TONE(800,4)
TONE(800,4)
Info(oErr:Operation + " ERRO DE CONEXÇO AO BANCO")
cSenhaUsuarioOracle:=Space(20)
LOOP
END
EXIT
ENDDO
RETURN Nil
PROCEDURE GETSEN(P1)
LOCAL L2, L3, L4
IF GETPREVALIDATE(P1)
P1:SETFOCUS()
P1:CARGO := ""
DO WHILE P1:EXITSTATE() == 0
IF P1:TYPEOUT()
P1:EXITSTATE := 5
ENDIF
DO WHILE P1:EXITSTATE() == 0
L2 := INKEY(0)
IF L2 >= 32 .AND. L2 <= 255
P1:CARGO := P1:CARGO() + CHR(L2)
GETAPPLYKEY(P1, 254)
ELSEIF L2 = 8
P1:CARGO := SUBSTR(P1:CARGO(), 1, LEN(P1:CARGO()) - 1)
GETAPPLYKEY(P1, L2)
ELSEIF L2 = 13 // Sai com tecla ENTER e retorna a
// senha digitada
GETAPPLYKEY(P1, L2)
ELSEIF L2 = 27 // Sai com Tecla ESC e retorna vazio
GETAPPLYKEY(P1, L2)
ENDIF
ENDDO
IF .NOT. GETPOSTVALIDATE(P1)
P1:EXITSTATE := 0
ENDIF
ENDDO
P1:KILLFOCUS()
ENDIF
IF P1:EXITSTATE() <> 7
P1:VARPUT(P1:CARGO())
ENDIF
RETURN
FUNCTION TermoEspecial
PARAMETERS C, D
LOCAL cPrint := SET( _SET_DEVICE, 'SCREEN' )
IF TYPE('_TERMOFIM') = 'U'
PUBLIC _TERMOFIM
_TermoFim:=0
ENDIF
IF D <> NIL
@24,00 CLEAR TO 24,MaxCol()
@24,00 SAY PADR('0 25 50 75 100',MaxCol()+1) COLOR "B/W*"
_TermoFim:=d
SET( _SET_DEVICE, cPrint )
RETURN .T.
ELSE
D:=0
PintaEspecial(24,00,24,MaxCol()+1,47,C,_TermoFim)
ENDIF
SET( _SET_DEVICE, cPrint )
RETURN Nil
FUNCTION PintaEspecial
PARAMETERS nLinIni, nColIni, nLinFim, nColFim, nChr, nRegistro, nTotalReg
LOCAL nPorcenta, nTamanho, cTecoTela, nPintar
DEFAULT nLinIni TO 0,;
nColIni TO 0,;
nLinFim TO 0,;
nChr TO 0,;
nRegistro TO 0
nPorcenta := (nRegistro / nTotalReg) * 100
nTamanho := 72
cTecoTela := ""
nPintar := Int(((nTamanho * nPorcenta) / 100) * 2)
@ nLinIni,MaxCol()-4 SAY Transform(nPorcenta,"999%") COLOR "R+/W*"
cTecoTela := SaveScreen(nLinIni,nColIni,nLinFim,nColFim)
cTecoTela := Transform(Left(cTecotela,nPintar),;
Replicate("X"+Chr(nChr),nPintar))+;
SubStr(cTecoTela,nPintar+1)
RestScreen(nLinIni,nColIni,nLinFim,nColFim,cTecoTela)
RETURN .T.
/*
* Observa‡äes da migra‡Æo DBF / ORACLE
* -----------------------------------------------------------------------------------------------
* Campos com o nome DESC devem ser renomeados para DESCR, DESC ‚ uma palavra reservada do ORACLE.
* -----------------------------------------------------------------------------------------------
* Instru‡Æo SQL para evitar o ORA-01653: unable to extend table in tablespace
* -----------------------------------------------------------------------------------------------
select
'alter database datafile '||
file_name||
' '||
' autoextend on;'
from
dba_data_files;
alter database datafile 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF' autoextend on;
alter database datafile 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF' autoextend on;
alter database datafile 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSAUX.DBF' autoextend on;
alter database datafile 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\UNDOTBS1.DBF' autoextend on;
alter database datafile 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF' autoextend on next 10000M MAXSIZE UNLIMITED;
select tablespace_name, file_name, bytes/1048576 File_Size_MB, autoextensible, increment_by from dba_data_files order by file_id
Criar TABLESPACE:
CREATE tablespace wiliam datafile 'C:\oraclexe\app\oracle\oradata\XE\asaprev.dbf'
size 100m
autoextend on
next 50m
maxsize 20g;
Aceitar caracteres acentuados da lingua portuguesa.
ALTER SESSION SET NLS_LANGUAGE = "PORTUGUESE";
ALTER SESSION SET NLS_TERRITORY = "BRAZIL";
OU
conn sys as sysdba;
SHUT;
STARTUP RESTRICT;
Alter database character set INTERNAL_USE WE8ISO8859P1;
SHUT;
STARTUP;
*/
Código: Selecionar todos
# ---------------------------------------------------------------------------------
# Script de construção do ADORADBF
# ---------------------------------------------------------------------------------
# Autor : Alexandre Simões
# Versão : 1.0
# Data : 20/03/2012
# Harbour : Harbour 3.1.0dev (Rev. 17207) Copyright (c) 1999-2012,
# http://harbour-project.org/
# Compilador: MinGW GNU C 4.6.1 (32-bit)
# ---------------------------------------------------------------------------------
# Nome do Execut vel
# ---------------------------------------------------------------------------------
-oadoradbf
# ---------------------------------------------------------------------------------
# Bibliotecas
# ---------------------------------------------------------------------------------
-lhwgui
-lprocmisc
-lhbct
-lhbgt
-lgtwvg
-lgtwvt
-lhbwin
-lhbnf
-lhbtip
-lxhb
-lhproc
-lhgac
# ---------------------------------------------------------------------------------
# Caminhos dos Includes e Lib
# ---------------------------------------------------------------------------------
-incpath=D:\HARBOUR32\INCLUDE;D:\HARBOUR32\HWGUI\INCLUDE
-LD:\HARBOUR32\HWGUI\LIB;
# ---------------------------------------------------------------------------------
# Outros Parâmetros
# ---------------------------------------------------------------------------------
-workdir=.\OBJ\
-gtgui
-head=full
-n
-nowarn
-inc
-b
-dHARBOUR
-icon=HARB_WIN.ICO
# ---------------------------------------------------------------------------------
# Prg(s) e Rc(s)
# ---------------------------------------------------------------------------------
adoradbf.prg
