如何在程序里面调用oracle的备份功能
我希望在程序里面调用oracle的备份成dmp的功能
我用的delphi开发的程序
如何实现
急
问题点数:100、回复次数:3Top
1 楼jiezhi(风满袖)回复于 2003-04-01 20:02:55 得分 80
unit Unit_XZDCMS;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, StdCtrls, ExtCtrls, Db, DBClient, ShellApi;
type
TForm_XZDCMS = class(TForm)
RadioGroup1: TRadioGroup;
cbUser: TComboBox;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
SpeedButton1: TSpeedButton;
cdsTemp: TClientDataSet;
SaveDialog1: TSaveDialog;
sbOK: TSpeedButton;
sbCancel: TSpeedButton;
procedure FormShow(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure sbOKClick(Sender: TObject);
procedure sbCancelClick(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
LogFileName: string;
end;
var
Form_XZDCMS: TForm_XZDCMS;
implementation
uses SystemDM, unit_pub, Unit_XZDCB;
{$R *.DFM}
procedure TForm_XZDCMS.FormShow(Sender: TObject);
var
strCurDir: string;
strFileName: string;
begin
with cdsTemp do
begin
Close;
CommandText := 'SELECT DISTINCT OWNER FROM ALL_TABLES';
Open;
while not Eof do
begin
cbUser.Items.Add(Fields[0].AsString);
Next;
end;
Close;
CommandText := ' SELECT USERNAME FROM USER_USERS';
Open;
cbUser.ItemIndex := cbUser.Items.IndexOf(Fields[0].AsString);
end;
strCurDir := ExtractFilePath(Paramstr(0));
strFileName := strCurDir + 'EXP' + DateTimeToStr(Date);
SaveDialog1.FileName := strFileName;
edit1.Text := strFileName;
end;
procedure TForm_XZDCMS.SpeedButton1Click(Sender: TObject);
begin
with SaveDialog1 do
if Execute then
begin
edit1.Text := FileName;
end;
end;
procedure TForm_XZDCMS.sbOKClick(Sender: TObject);
var
strCom: string;
user: variant;
sCommandLine: string;
bCreateProcess: boolean;
lpStartupInfo: TStartupInfo;
lpProcessInformation: TProcessInformation;
begin
// LogFileName := GetTmpFileName();
LogFileName := ChangeFileExt(edit1.Text, '.log');
user := DmSystem.SocketConnection.AppServer.GetUserAndPass;
case RadioGroup1.ItemIndex of
0:
begin
sCommandLine := 'EXP ' + user[0] + '/' + user[1] + '@LZRL FULL=Y CONSISTENT=Y FILE=' + Edit1.Text + ' LOG=' + LogFileName;
// ShellExecute(Self.Handle, nil, 'EXP', Pchar(strCom), nil, sw_shownormal);
end;
1:
begin
sCommandLine := 'EXP ' + user[0] + '/' + user[1] + '@LZRL OWNER=' + cbUser.Text + ' CONSISTENT=Y FILE=' + Edit1.Text + ' LOG=' + LogFileName;
end;
2:
begin
TForm_XZDCB.Create(self);
try
Form_XZDCB.UserName := cbUser.Text;
Form_XZDCB.ShowModal;
if Form_XZDCB.ModalResult = mrOK then
begin
sCommandLine := 'EXP ' + user[0] + '/' + user[1] + '@LZRL TABLES=(' + Form_XZDCB.Tables + ') CONSISTENT=Y FILE=' + Edit1.Text + ' LOG=' + LogFileName;
end;
finally
Form_XZDCB.Free;
end;
end;
end;
lpStartupInfo.dwFlags := STARTF_USESHOWWINDOW;
lpStartupInfo.wShowWindow := SW_SHOWNORMAL;
bCreateProcess := CreateProcess(nil,
PChar(sCommandLine), nil, nil, True,
HIGH_PRIORITY_CLASS, nil,
nil, lpStartupInfo, lpProcessInformation);
if bCreateProcess then
WaitForSingleObject(lpProcessInformation.hProcess, INFINITE);
ModalResult := mrOK;
end;
procedure TForm_XZDCMS.sbCancelClick(Sender: TObject);
begin
ModalResult := mrCancel;
end;
procedure TForm_XZDCMS.RadioGroup1Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex = 0 then
begin
Label1.Enabled := False;
cbUser.Enabled := False;
end
else
begin
Label1.Enabled := True;
cbUser.Enabled := True;
//DmSystem.SocketConnection.AppServer.
end;
end;
end.Top
2 楼jiezhi(风满袖)回复于 2003-04-01 20:05:53 得分 0
界面上就是让用户选择以何种方式导出:
全数据库、按用户、按表
如果按用户的话,下拉框里选择用户
最后点击确定,开始导出……Top
3 楼steel1991(首席潜水员)回复于 2003-04-02 08:48:44 得分 20
winexec(pchar('exp system/manager@serviceName file=c:\bak.dmp tables=tab1,tab2'),sw_show);Top




