資料庫搬移表空間(從chicago server搬移到wilson server)
這是一個生產資料庫的實際操作
***按照一步步的仔細認真的操作 保證整個操作是成功的***
-- 檢視錶空間名稱、檢視資料檔案的路徑和資料檔名稱等
select t.NAME AS "tablespace_name",
f.NAME AS "filename",
f.STATUS,
t.BIGFILE,
f.BYTES
from v$tablespace t
inner join v$datafile f on t.TS# = f.TS#;
-- 檢視users表空間的資訊
select * from dba_tables where tablespace_name = 'USERS';
-- 檢視users表空間的使用者名稱
select distinct owner from dba_tables where tablespace_name = 'USERS';
-- 檢視users表空間的所有表
select count(*) from dba_tables where tablespace_name = 'USERS';
-- 檢視資料庫中正在使用的使用者名稱
select username, account_status
from dba_users
where account_status = 'OPEN';
-- 檢視資料庫的總大小
select round(sum(space)) all_space_m
from (select sum(bytes) / 1024 / 1024 space
from dba_data_files
union all
select nvl(sum(bytes) / 1024 / 1024, 0) space
from dba_temp_files
union all
select sum(bytes) / 1024 / 1024 space from v$log);
-- 檢視各個表空間的大小
select a.tablespace_name,
round((a.maxbytes / 1024 / 1024), 2) "sum MB",
round((a.bytes / 1024 / 1024), 2) "datafile MB",
round(((a.bytes - b.bytes) / 1024 / 1024), 2) "used MB",
round(((a.maxbytes - a.bytes + b.bytes) / 1024 / 1024), 2) "free MB",
round(((a.bytes - b.bytes) / a.maxbytes) * 100, 2) "percent_used"
from (select tablespace_name, sum(bytes) bytes, sum(maxbytes) maxbytes
from dba_data_files
where maxbytes != 0
group by tablespace_name) a,
(select tablespace_name, sum(bytes) bytes, max(bytes) largest
from dba_free_space
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
order by ((a.bytes - b.bytes) / a.maxbytes) desc;
/*
在遷移chicago伺服器上USERS表空間的時候由於該表空間下有一下使用者msxq,tony使用者;
移動的目標位於wilson伺服器上,由於該資料庫中存在USERS表空間 ,users表空間是資料庫預設表空間;
如果刪除users表空間會報錯;做一下處理:
如果表空間在某個使用者下,要建立相應的使用者
*/
-- 在wilson server上建立使用者
create user msxq identified by xinan;
create user tony identified by hangan;
grant dba, resource, connect to msxq, tony;
grant create view to msxq, tony;
-- 在wilson server上建立資料庫預設表空間
create tablespace bj datafile '/home/oracle/oracle/product/10.2.0/oradatawilson/bj.dbf'
size 10M extent management local autoallocate segment space management auto;
-- 在wilson server上修改資料庫的預設表空間為bj
alter database default tablespace bj;
-- 在wilson server上刪除users表空間 去表空間路徑下看相應的資料庫刪除沒有,如果沒有手動刪除
drop tablespace users including contents and datafiles;
rm –rf user01.dbf
-- 在chicago上執行移動users表空間的操作
/*
在搬移表空間之前,為了確保特定表空間集合可以被搬移,必須首先檢查表空間集合是否為自包含的,
通過執行包DBMS_TTS的過程TRANSPORT_SET_CHECK可以完成這項任務。當執行了該過程後,
系統會將違反自包含集合的資訊寫入到臨時表transport_set_violations中。查詢如果沒有任何資訊,
說明表空間集合是自包含的,否則會返回違反自包含表空間集合的詳細資訊。執行該過程,
必須有EXECUTE_CATALOG_ROLE角色。例項如下:
*/
execute sys.dbms_tts.transport_set_check('users', true);
-- 如果沒有任何輸出說明是自包含表空間,如果有輸出,請認真做處理
select * from transport_set_violations;
-- 生成要搬移的表空間集合。必須首先將所有要搬移的表空間轉變為只讀狀態,確保其內容不會發生任何改變
alter tablespace bj read only; -- 要求使用者具有SYSDBA許可權
-- 檢視目錄為:
[oracle@&& ~]pwd
/home/oracle
-- 匯出users表空間所有物件,需要轉義字元在Linux和Unix上
[oracle@&& ~]$ exp \'/ as sysdba\' TRANSPORT_TABLESPACE=y tablespaces= users file=/home/oracle/exp_users.dmp log=/home/oracle/exp_users_chicago.log
--進行打包
[oracle@&& ~]$ tar -zvcf exp_users.dmp.tar.gz exp_users.dmp
-- 傳送轉儲檔案和資料檔案到目標資料庫(從chicago傳送到wilson上)
[oracle@&& ~]$scp exp_users.dmp.tar.gz 192.168.132,11:/home/oracle/
[oracle@&& ~]$scp /路徑/user01.dbf 192.168.132.11:/home/oracle/oracle/product/10.2.0/oradata/wilson/
-- 在wilson上操作:
-- 解壓縮包
[oracle@&& ~]$tar -zvxf exp_users.dmp.tar.gz
--執行匯入操作:
[oracle@&& ~]$imp '/ as sysdba\' TRANSPORT_TABLESPACE = y file =/home/oracle/exp_users.dmp datafiles =/home/oracle/oracle/product/10.2.0/oradata/wilson/users01.dbf log=/home/oracle/imp_users_wilson.log
--如果執行DML或DDL操作,將資料檔案改為讀寫狀態(chicago server, wilson server都執行)
alter tablespace users read write;
--以上操作完畢
/*
執行上面的imp時出現 ORA - 12716 :Cannot ALTER DATABASE CHARACTER SET when CLOB data exists
說明兩個資料庫字符集不一致;做一下處理工作
*/
-- 檢視資料庫處於的平臺
SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
FROM V$TRANSPORTABLE_PLATFORM. tp, V$DATABASE d
WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;
-- 首先檢視chicago server, wilson server的資料庫的字符集
select *
from nls_database_parameters
where parameter in ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
-- 修改目標資料庫(wilson server)
shutdown immediate
startup mount
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 0;
ALTER SYSTEM SET AQ_TM_PROCESSES = 0;
alter database open;
alter database character set INTERNAL_USE 為"chicago資料庫的NLS_CHARACTERSET的value值";
shutdown immediate
startup
-- 在wilson server上執行匯入
[oracle@&& ~]$imp '/ as sysdba\' TRANSPORT_TABLESPACE = y file =/home/oracle/exp_users.dmp datafiles =/home/oracle/oracle/product/10.2.0/oradata/wilson/users01.dbf log=/home/oracle/imp_users_wilson.log
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25533574/viewspace-714714/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PostgreSQL:表空間-->資料庫-->表SQL資料庫
- 【資料庫資料恢復】SQL Server資料庫磁碟空間不足的資料恢復案例資料庫資料恢復SQLServer
- SQL Server 2008 空間資料庫 --- 空間索引概念及建立(取自幫助)SQLServer資料庫索引
- 在 SQL Server 2005 中使用表值函式來實現空間資料庫SQLServer函式資料庫
- 檢視資料庫表空間資料庫
- oracle清除資料庫表空間Oracle資料庫
- 刪除資料庫表空間資料庫
- ORACLE資料庫裡表匯入SQL Server資料庫Oracle資料庫SQLServer
- SQL SERVER 當前資料庫佔用Pool緩衝空間情況SQLServer資料庫
- 資料庫和表空間資料移動資料庫
- 檢視SQL SERVER表的空間使用情況SQLServer
- SQL Server檢視所有表大小,所佔空間SQLServer
- 改變資料庫undo表空間資料庫
- 資料庫物件遷移表空間資料庫物件
- 【資料庫資料恢復】磁碟空間不足導致sql server錯誤的資料恢復資料庫資料恢復SQLServer
- 在資料庫之間移動表空間資料庫
- SQL server 修改表資料SQLServer
- 檢視Oracle資料庫表空間大小,是否需要增加表空間的資料檔案Oracle資料庫
- 檢視SQL SERVER表的空間使用情況(續)SQLServer
- 同一個server內將資料從A資料庫導到B資料庫Server資料庫
- SQL Server資料庫安全SQLServer資料庫
- SQL Server 資料庫映象SQLServer資料庫
- SQL Server 資料庫索引SQLServer資料庫索引
- 資料庫映象 (SQL Server)資料庫SQLServer
- SQL Server 查詢資料庫中所有表資料條數SQLServer資料庫
- Sql Server系列:資料表操作SQLServer
- 如何檢視Oracle資料庫表空間大小(空閒、已使用),是否要增加表空間的資料檔案...Oracle資料庫
- DB2建立資料庫,建立表空間DB2資料庫
- mysql 資料庫或者表空間使用查詢MySql資料庫
- 資料庫表空間不夠,需要擴容資料庫
- 誤刪oracle資料庫表空間檔案Oracle資料庫
- 表空間級資料庫備份恢復資料庫
- Oracle資料庫設定預設表空間Oracle資料庫
- SQL server資料庫表碎片比例查詢語句SQLServer資料庫
- Sql Server中判斷表或者資料庫是否存在SQLServer資料庫
- Sql Server 匯入另一個資料庫中的表資料SQLServer資料庫
- Oracle資料庫表空間的資料檔案大小上限。Oracle資料庫
- 達夢資料庫表空間等空間大小查詢方法總結資料庫