把正式庫的最新資料全部遷移到測試庫上

mengzhaoliang發表於2009-08-07


1、先備份測試庫的資料,可以用exp匯出
可以用UNIX中的vi寫過簡單的腳步backup20090807.sh
內容:
$ cat backup20090807.sh
exp scott/scott  file=20090807.dump log=20090807.log
授權:
$chmod 777 .sh
執行上面的腳步即可

2、刪除測試庫的使用者及其管理的資料
SQL> drop user scott cascade;
drop user scott cascade
*
ERROR at line 1:
ORA-01940: cannot drop a user that is currently connected

3、如果有當前的資料庫使用者連線則不能刪除,踢掉當前的連線使用者
先查出當前線上的使用者資訊
SQL> select sid,serial# from v$session where username='scott';

       SID    SERIAL#
---------- ----------
       522          1
       527          3
       530          3

踢掉該資料庫使用者的連線:
alter system kill session  '522,1';

如果很多使用者連線的話,可以用下面查詢出來,形成腳步,一次踢掉所有連線的使用者session。
(其中' 可以用'''表示查詢出來,當第二個單引號充當轉義角色,第三個單引號被轉義,自然就缺少與第一個單引號匹配的單引號了,出現了孤立的單引號

select 'alter system kill session '''  || sid||','||serial# ||''';' from v$session where username='scott';

4、如果很多使用者在連線資料庫,資料庫執行關閉的話,可以先關閉資料庫,在刪除使用者。就不要踢掉那些線上使用者了。
關閉資料庫
SQL> shutdown abort   (為了節省時間,可以用shutdown abort,或者shutdown immediate)
ORACLE instance shut down.

SQL> startup restrict   (進入限制模式,普通使用者不能連線)
ORACLE instance started.

Total System Global Area 3221225472 bytes
Fixed Size                  2024304 bytes
Variable Size            1157631120 bytes
Database Buffers         2046820352 bytes
Redo Buffers               14749696 bytes
Database mounted.
Database opened.
SQL> drop user scott cascade;   (級聯刪除使用者)

刪除使用者後,可以關閉資料庫,在啟動到正常模式
SQL>shutdown abort;

SQL>startup;


5、在測試庫建立剛才刪除的使用者
create user scott
identified by scott
tablespace default PUB_NORM_SPACE;

6、授權
grant dba to scott;

7、把最新的正式庫資料匯入到測試中(如果是windows可以寫個.bat檔案,在unix或Linux寫個.sh檔案,把下面的腳步寫入檔案中)
imp  full=y rows=y ignore=yes grants=no file=E:\lhomsoraclebak\lhoms25.dump  log=F:\lhomsoraclebak\Imp40Database\20090807Imp.log

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12778571/viewspace-611639/,如需轉載,請註明出處,否則將追究法律責任。

相關文章