(8.0.22)
-- テストオブジェクト準備
drop table tab1;
create table tab1(col1 int primary key);
insert into tab1 values(1);
select * from tab1;
drop view view1;
create view view1 as select * from tab1;
drop function func1;
create function func1() returns decimal deterministic
return 0;
drop procedure proc1;
delimiter //
create procedure proc1()
begin
commit;
end//
delimiter ;
show tables;
select * from tab1;
select routine_schema, routine_name, routine_type
from information_schema.routines
where routine_schema = database()
and routine_type in ('FUNCTION','PROCEDURE')
;
-- 動作確認
mysqldump -u root --quick --master-data=2 --flush-logs --single-transaction --triggers --routines --events --add-drop-database --databases test > bkup01.sql
mysql < bkup01.sql
対象DBは必ず再作成される
mysqldump -u root --quick --master-data=2 --flush-logs --single-transaction --triggers --routines --events --databases test > bkup02.sql
mysql < bkup02.sql
対象DBはなければ作成される
mysqldump -u root --quick --master-data=2 --flush-logs --single-transaction --triggers --routines --events test > bkup03.sql
mysql test < bkup03.sql
対象DBは作成されない
リストア対象DBに接続する必要あり
MySQLは接続しているDBに対してdrop database発行可能
デフォルトで--add-drop-tableがonとなっておりオブジェクトは常に再作成される
(19c)
-- テストオブジェクト準備
drop table tab1 purge;
create table tab1(col1 int primary key);
insert into tab1 values(1);
commit;
select * from tab1;
drop view view1;
create view view1 as select * from tab1;
drop sequence seq1;
create sequence seq1;
create or replace function func1 return number as
begin
return 0;
end;
/
create or replace procedure proc1 as
begin
commit;
end;
/
select table_name from user_tables;
select * from tab1;
select view_name from user_views;
select sequence_name from user_sequences;
select object_name,object_type from user_objects where object_type in ('FUNCTION','PROCEDURE');
-- 動作確認
expdp test/test@pdb1 directory=ORA_DIR dumpfile=a.dmp logfile=a.log schemas=test reuse_dumpfiles=yes
impdp test/test@pdb1 directory=ORA_DIR dumpfile=a.dmp logfile=a.log schemas=test table_exists_action=replace
ORA-31684: オブジェクト型USER:"TEST"はすでに存在します
ORA-31684: オブジェクト型SEQUENCE:"TEST"."SEQ1"はすでに存在します
ORA-31684: オブジェクト型FUNCTION:"TEST"."FUNC1"はすでに存在します
ORA-31684: オブジェクト型PROCEDURE:"TEST"."PROC1"はすでに存在します
ORA-31684: オブジェクト型VIEW:"TEST"."VIEW1"はすでに存在します
テーブル以外はパージオプションが存在せずインポート時に警告エラーとなる
(13)
-- テストオブジェクト準備
drop table tab1;
create table tab1(col1 int primary key);
insert into tab1 values(1);
select * from tab1;
drop view view1;
create view view1 as select * from tab1;
drop sequence seq1;
create sequence seq1;
drop function func1();
create function func1() returns numeric as $$
begin
return 0;
end;
$$ language plpgsql;
drop procedure proc1();
create procedure proc1() as $$
begin
commit;
end;
$$ language plpgsql;
\dt
select * from tab1;
\ds
\df
-- 動作確認
[1] テキストダンプの場合
pg_dump -Fp --clean --create test > bkup01.sql
psql postgres < bkup01.sql
リストア対象DB以外に接続する必要あり
pg_dump -Fp --clean test > bkup02.sql
psql test < bkup02.sql
リストア対象DBに接続する必要あり
pg_dump -Fp --create test > bkup03.sql
psql postgres < bkup03.sql
リストア対象DB以外に接続する必要あり
リストア前に対象DBを削除する必要あり
pg_dump -Fp test > bkup04.sql
psql test < bkup04.sql
リストア対象DBに接続する必要あり
リストア前に対象DBを再作成する必要あり
[2] バイナリダンプの場合
pg_dump -Fc test > bkup11.dmp
pg_restore --clean --create -d postgres bkup11.dmp
リストア対象DB以外に接続する必要あり
pg_restore --clean -d test bkup11.dmp
リストア対象DBに接続する必要あり
pg_restore --create -d postgres bkup11.dmp
リストア対象DB以外に接続する必要あり
リストア前に対象DBを削除する必要あり
pg_restore -d test bkup11.dmp
リストア対象DBに接続する必要あり
リストア前に対象DBを再作成する必要あり
(2019)
bcpコマンドは対象がテーブルのみでパージオプションなし