ダモンデータベース8の論理エクスポート「バックアップリストア」導入に関する検証


ダモン・データベースの論理バックアップ・ツールでは、ローカル・データベースまたはリモート・データベースのデータベース・レベル、モード・レベル、およびテーブル・レベルの論理バックアップを実行できます.バックアップの内容は非常に柔軟で、インデックス、データ行、権限をバックアップするかどうか、さまざまな制約(外部キー制約、非空制約、一意制約など)を無視するかどうかを選択できます.バックアップの前にログファイルを生成し、バックアップのプロセスを記録して表示できます.この文書の内容は、関連するテストスクリプトを提供することです.
コメント:
1.データベースのインストールパス/home/dmdba;
2.インスタンスパスは/home/dmdba/dmdbms/dataである.
3.新しいフォルダをdmpFilesにする必要がある場合、dmpファイルとログファイルを統一的に配置し、具体的な経路は/home/dmdba/dmdbms/data/DAMENG/dmpFilesである.
一.ライブラリレベルのインポートのエクスポート
表を建て、ユーザーを建てる.データベース・レベルのエクスポートを実行します.テーブルを削除します.フルデータベースインポートを実行します.テーブルデータの問合せ
spool /home/dmdba/dmdbms/test.sql
set autocommit on;
set lineshow off;
set linesize 800;
CONN SYSDBA/SYSDBA;
CREATE USER U1 IDENTIFIED BY "Liaotao941103";
create table U1.t1 as select * from dba_objects;
host cd /home/dmdba/dmdbms/bin/
host ./dexp USERID=SYSDBA/SYSDBA FILE=db_full.dmp LOG=db_full.log FULL=Y DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles
drop table U1.t1 purge;
host cd /home/dmdba/dmdbms/bin/
host ./dimp USERID=SYSDBA/SYSDBA FILE=db_full.dmp LOG=db_full_imp.log FULL=Y DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles TABLE_EXISTS_ACTION=REPLACE
select count(1) from U1.t1 ;
spool off;

二.モードレベルのインポートのエクスポート
表を建て、ユーザーを建てる.モードレベルのエクスポートを実行します.テーブルを削除します.モードレベルのインポートを実行します.テーブルデータの問合せ
spool /home/dmdba/dmdbms/test.sql
set autocommit on;
set lineshow off;
set linesize 800;
CONN SYSDBA/SYSDBA;
CREATE USER U1 IDENTIFIED BY "Liaotao941103";
create table U1.t1 as select * from dba_objects;
host cd /home/dmdba/dmdbms/bin/
host ./dexp USERID=SYSDBA/SYSDBA FILE=schema_u1.dmp LOG=schema_u1_exp.log schemas=u1 DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles
drop table U1.t1 purge;
host cd /home/dmdba/dmdbms/bin/
host ./dimp USERID=SYSDBA/SYSDBA FILE=schema_u1.dmp LOG=schema_u1_imp.log schemas=u1 DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles TABLE_EXISTS_ACTION=REPLACE
select count(1) from U1.t1 ;
spool off;

三.ユーザー・レベルのインポートのエクスポート
表を建て、ユーザーを建てる.ユーザーレベルのエクスポートを実行します.ユーザーとそのテーブル・オブジェクトを削除します.ユーザーを作成し、ユーザーレベルのインポートを実行します.ユーザー・モードでのテーブル・データの問合せ
spool /home/dmdba/dmdbms/test.sql
set autocommit on;
set lineshow off;
set linesize 800;
CONN SYSDBA/SYSDBA;
CREATE USER U1 IDENTIFIED BY "Liaotao941103";
create table U1.t1 as select * from dba_objects;
host cd /home/dmdba/dmdbms/bin/
host ./dexp USERID=SYSDBA/SYSDBA FILE=owner_u1.dmp LOG=owner_u1_exp.log owner=u1 DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles
drop table U1.t1 purge;
host cd /home/dmdba/dmdbms/bin/
host ./dimp USERID=SYSDBA/SYSDBA FILE=owner_u1.dmp LOG=owner_u1_imp.log owner=u1 DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles TABLE_EXISTS_ACTION=REPLACE
select count(1) from U1.t1 ;
spool off;

四.表レベルのインポートのエクスポート
テーブルを作成し、データを挿入します.表レベルのエクスポートを実行します.テーブルを削除します.テーブル・レベルのクエリー・テーブル・データのインポートの実行
spool /home/dmdba/dmdbms/test.sql
set autocommit on;
set lineshow off;
set linesize 800;
CONN SYSDBA/SYSDBA;
CREATE USER U1 IDENTIFIED BY "Liaotao941103";
create table U1.t1 as select * from dba_objects;
host cd /home/dmdba/dmdbms/bin/
host ./dexp USERID=SYSDBA/SYSDBA FILE=tables_t1.dmp LOG=tables_t1_exp.log TABLES=u1.t1 DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles
drop table U1.t1 purge;
host cd /home/dmdba/dmdbms/bin/
host ./dimp USERID=SYSDBA/SYSDBA FILE=tables_t1.dmp LOG=tables_t1_imp.log TABLES=u1.t1 DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles TABLE_EXISTS_ACTION=REPLACE
select count(1) from U1.t1 ;
spool off;

五.テーブルのサブセットエクスポートインポート
テーブルを作成し、データを挿入します.テーブル・レベルのエクスポートを実行し、クエリー条件を満たす結果セットをエクスポートします.テーブルを削除します.テーブル・レベルのクエリー・テーブル・データのインポートの実行
spool /home/dmdba/dmdbms/test.sql
set autocommit on;
set lineshow off;
set linesize 800;
CONN SYSDBA/SYSDBA;
CREATE USER U1 IDENTIFIED BY "Liaotao941103";
create table U1.t1 as select * from dba_objects;
host cd /home/dmdba/dmdbms/bin/
host ./dexp USERID=SYSDBA/SYSDBA FILE=tables_t1_where.dmp LOG=tables_t1_where_exp.log TABLES=u1.t1 DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles QUERY="WHERE OWNER='SYSDBA'"
drop table U1.t1 purge;
host cd /home/dmdba/dmdbms/bin/
host ./dimp USERID=SYSDBA/SYSDBA FILE=tables_t1_where.dmp LOG=tables_t1_where_imp.log TABLES=u1.t1 DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles TABLE_EXISTS_ACTION=REPLACE
select count(1) from U1.t1 a where a.OWNER='SYSDBA';
spool off;

六.コンストレイントエクスポートインポート
コンストレイント付きテーブルを作成し、データを挿入します.テーブルレベルのエクスポートを実行し、テーブルの制約をエクスポートします.テーブルを削除します.テーブル・レベルのインポートの実行、テーブルの制約クエリー・テーブル定義のインポート
spool /home/dmdba/dmdbms/test.sql
CONN SYSDBA/SYSDBA;
set autocommit on;
set lineshow off;
set linesize 800;
create table tab5 (id int, name char(10) unique);
alter table tab5 add constraint con_id primary key(id);
insert into tab5 values (1,'TEST1'),(2,'TEST2');
select a.TABLE_NAME,a.CONSTRAINT_TYPE,a.CONSTRAINT_NAME from USER_CONSTRAINTS a where a.TABLE_NAME='TAB5';
host cd /home/dmdba/dmdbms/bin/
host ./dexp USERID=SYSDBA/SYSDBA FILE=tab5.dmp LOG=tab5_exp.log TABLES=tab5 DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles
drop table tab5 purge;
host cd /home/dmdba/dmdbms/bin/
host ./dimp USERID=SYSDBA/SYSDBA FILE=tab5.dmp LOG=tab5_imp.log TABLES=tab5 DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles TABLE_EXISTS_ACTION=REPLACE
select count(1) from tab5 a;
select a.TABLE_NAME,a.CONSTRAINT_TYPE,a.CONSTRAINT_NAME from USER_CONSTRAINTS a where a.TABLE_NAME='TAB5';
spool off;

七.インデックスエクスポートインポート
テーブルを作成してデータを挿入し、インデックスを作成します.テーブル・レベルのエクスポートを実行し、テーブルのインデックスをエクスポートします.テーブルを削除します.テーブル・レベルのインポートを実行します.インポートされたテーブルのインデックスは、クエリー・システムのテーブルを介してテーブル上のインデックスのIDと定義をクエリーします.
spool /home/dmdba/dmdbms/test.sql
CONN SYSDBA/SYSDBA;
set autocommit on;
set lineshow off;
set linesize 800;
create table tab5 (id int, name char(10));
create index inx_name on tab5(name);
select a.INDEX_NAME from USER_INDEXES a where a.TABLE_NAME='TAB5' and a.INDEX_NAME='INX_NAME';
host cd /home/dmdba/dmdbms/bin/
host ./dexp USERID=SYSDBA/SYSDBA FILE=tab5.dmp LOG=tab5_exp.log TABLES=tab5 DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles
drop table tab5 purge;
host cd /home/dmdba/dmdbms/bin/
host ./dimp USERID=SYSDBA/SYSDBA FILE=tab5.dmp LOG=tab5_imp.log TABLES=tab5 DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles TABLE_EXISTS_ACTION=REPLACE
select a.INDEX_NAME from USER_INDEXES a where a.TABLE_NAME='TAB5' and a.INDEX_NAME='INX_NAME';
spool off;

八.権限エクスポートインポート
  • 表を作成し、データを挿入します.
  • ユーザーを構築し、テーブルのクエリーと挿入権限を付与する
  • データベースレベルのエクスポートを実行し、権限をエクスポートします.
  • 削除テーブル;
  • データベースレベルのインポートを実行し、インポート権限
  • .
  • ユーザログイン実行テーブルのクエリーと挿入操作
  • spool /home/dmdba/dmdbms/test.sql
    CONN SYSDBA/SYSDBA;
    set autocommit on;
    set lineshow off;
    set linesize 800;
    create table tab5 (id int, name char(10));
    create user liaotao IDENTIFIED by "Liaotao941103";
    grant select,UPDATE ON tab5 TO liaotao;
    SELECT GRANTEE,GRANTOR,TABLE_NAME,PRIVILEGE FROM DBA_TAB_PRIVS WHERE GRANTEE = 'LIAOTAO';
    host cd /home/dmdba/dmdbms/bin/
    host ./dexp USERID=SYSDBA/SYSDBA FILE=TEST01.dmp LOG=TEST01_exp.log FULL=Y DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles
    drop table tab5 purge;
    host cd /home/dmdba/dmdbms/bin/
    host ./dimp USERID=SYSDBA/SYSDBA FILE=TEST01.dmp LOG=TEST01_imp.log FULL=Y DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles TABLE_EXISTS_ACTION=REPLACE
    SELECT GRANTEE,GRANTOR,TABLE_NAME,PRIVILEGE FROM DBA_TAB_PRIVS WHERE GRANTEE = 'LIAOTAO';
    spool off;

    九.トリガエクスポートインポート
    テーブルを構築し、テーブルレベルのトリガを構築します.テーブルを構築し、イベントトリガを構築します.データベース・レベルのエクスポートを実行し、トリガをエクスポートします.トリガとテーブルを削除します.データベース・レベルのインポートを実行し、トリガをインポートします.テーブル・レベルのトリガとイベント・トリガが正常にインポートされたかどうかを確認します.
    spool /home/dmdba/dmdbms/test.sql
    CONN SYSDBA/SYSDBA;
    set autocommit on;
    set lineshow off;
    set linesize 800;
    -- ;
    create table employees
    (
    employee_id dec(6) not null,
    employee_name varchar(20) not null,
    salary dec(8,2),
    primary key(employee_id)
    );
    create table change_table
    (
    old_salary dec(8,2),
    new_salary dec(8,2)
    );
    create or replace trigger trigger1
    before update of salary on employees
    for each row
    begin
    insert into change_table values(old.salary,:new.salary);
    END;
    /
    -- ;
    create table tab1( name varchar(20), time1 date);
    create or replace trigger trigger2
    after drop on database
    begin
    insert into tab1 values(user,sysdate);
    end;
     /
    -- , ;
    host cd /home/dmdba/dmdbms/bin/
    host ./dexp USERID=SYSDBA/SYSDBA FILE=db_full_0722.dmp LOG=db_full_0722_exp.log FULL=Y DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles
    -- 
    drop trigger trigger1;
    drop trigger trigger2;
    drop table employees purge;
    drop table change_table purge;
    drop table tab1 purge;
    -- , ;
    host cd /home/dmdba/dmdbms/bin/
    host ./dimp USERID=SYSDBA/SYSDBA FILE=db_full_0722.dmp LOG=db_full_0722_imp.log FULL=Y DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles 
    -- 
    insert into employees values(1, ' ',  1000),(2, ' ',  2000);
    commit;
    select * from change_table;
    update  employees set salary=888;
    commit;
    select * from change_table;
    create table t (id int);
    drop table t purge;
    select * from tab1;
    spool off;

    十.データ圧縮のエクスポート
    表を作成し、10万件のデータを挿入する.全ライブラリ論理エクスポート、圧縮データオプションなし;全ライブラリ論理エクスポート、圧縮データオプション付き;非圧縮で生成されたファイルと圧縮で生成されたファイルのサイズを比較します.テーブルを削除します.圧縮で生成されたファイルでインポートを実行します.テーブルおよびデータのインポートに成功したかどうかを確認
    spool /home/dmdba/dmdbms/test.sql
    CONN SYSDBA/SYSDBA;
    set autocommit on;
    set lineshow off;
    set linesize 800;
    create table test_tab as
    select
            sys_guid() bh                                                                         ,
            substr(sys_guid(), 1, 20) sfzhm                                                       ,
            sys_guid() xm                                                                         ,
            case when mod(to_number(trunc(dbms_random.value(0, 2))), 2)=0 then 'M' else 'F' end xb,
            SYSDATE shengri                                                                       ,
            dbms_random.value(10000, 9999999) dhhm                                                ,
            dbms_random.value(1, 999) xz                                                          ,
            trunc(dbms_random.value(10000, 10000222))
            ||'@qq.com' email           ,
            null zhaopian               ,
            'what' jianli               ,
            dbms_random.value(1, 999) c1,
            dbms_random.value(1, 999) c2,
            sysdate c3                  ,
            sysdate c4
    from
            dual connect by rownum<=100000;
    host cd /home/dmdba/dmdbms/bin/
    host ./dexp USERID=SYSDBA/SYSDBA FILE=db_full_nocompress.dmp LOG=db_full_nocompress_exp.log FULL=Y DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles COMPRESS=N  
    host cd /home/dmdba/dmdbms/bin/
    host ./dexp USERID=SYSDBA/SYSDBA FILE=db_full_compress.dmp LOG=db_full_compress_exp.log FULL=Y DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles COMPRESS=Y  
    drop table test_tab purge;
    host cd /home/dmdba/dmdbms/bin/
    host ./dimp USERID=SYSDBA/SYSDBA FILE=db_full_compress.dmp LOG=db_full_compress_imp.log FULL=Y DIRECTORY=/home/dmdba/dmdbms/data/DAMENG/dmpFiles table_exists_action=replace
    select count(1) from test_tab;
    spool off;