資料庫停機遷移oracle10g 執行個體,遷移oracle10g
1 原資料庫的操作1.1 查看原有配置1.1.1 查看使用者權限
查看使用者系統許可權:
SQL> select * from user_sys_privs;
查看使用者擁有的角色
SQL> select * from user_role_privs;
查看當前會話的許可權
SQL> select * from session_privs;
PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
1.1.2 查看錶
查看使用者下所有的表
SQL>select * from user_tables;
查看某表的建立時間
select object_name,created from user_objects
查看某表的大小
select sum(bytes)/(1024*1024) size_M,segment_name from user_segments group by segment_name;
查看放在ORACLE的記憶體區裡的表
SQL> select table_name,cache from user_tables where instr(cache,'Y')>0;
1.1.3 查看視圖,索引
查看使用者的視圖
Select * from user_views;
查看使用者的索引
SQL> select * from user_indexes;
查看索引個數和類別
SQL>select index_name,index_type,table_name from user_indexes order by table_name;
查看索引被索引的欄位
SQL>select * from user_ind_columns where index_name=upper(‘&index_name’);
查看索引的大小
SQL>select sum(bytes)/(1024*1024) as “size(M)” from user_segments
where segment_name=upper(‘&index_name’);
1.1.4 查看預存程序
查看函數和過程的狀態
SQL>select object_name,status from user_objects where object_type=’FUNCTION’;
SQL>select object_name,status from user_objects where object_type=’PROCEDURE’;
查看函數和過程的原始碼
SQL>select text from all_source where owner=user and name=upper(‘&plsql_name’);
1.1.5查看序號
select * from user_sequences;
1.1.6查看同義字
select * from user_synonyms;
1.1.7查看某表的約束條件
SQL> select constraint_name, constraint_type,search_condition, r_constraint_name
2 from user_constraints
3 where table_name ='FAMILY';
1.2 資料的匯出
建立Dump路徑
SQL> connect / as sysdba
Connected.
SQL> create directory dump_dir as '/oracle';
SQL> grant read,write on directory dump_dir to u1;
按照使用者匯出,可以匯出預存程序,資料,視圖,索引等。
expdp system/oracle schemas=u1 dumpfile='u1.dump' directory=dump_dir version=10.2.0.1.0
2 目標資料庫操作2.1 建立資料表空間和使用者
SQL> create tablespace u1
2 logging
3 datafile '/home/oracle/oradata/db1/u1.dbf'
4 size 30m
5 autoextend on
6 next 32m
7 maxsize 100m
8 extent management local;
SQL> create user u1 identified by tiger default tablespace u1;
grant resource,connect to u1;
2.2 按照使用者匯入
建立Dump路徑
SQL> connect / as sysdba
Connected.
SQL> create directory dump_dir as '/oracle';
SQL> grant read,write on directory dump_dir to u1;
impdp system/oracle schemas=u1 dumpfile='u1.dump' directory=dump
3. 其他參數3.1 按照版本匯出
[oracle@host2 ~]$ expdp system/oracle tablespaces=u1 dumpfile='u1_version.dump' directory=dump_dir version=10.2.0.1.0
[oracle@host2 oracle]$ impdp system/oracle tablespaces=u1 directory=dump dumpfile='u1_version.dump' version=10.2.0.1.0
3.2 匯出定義
expdp system/oracle tablespaces=u1 dumpfile='u1_all.dump' directory=dump_dir version=10.2.0.1.0 CONTENT=ALL
3.3 只匯出預存程序
PROCEDURE也可以換成其它對象如:INDEX,TABLE,FUNCTION,VIEW,DATABASE LINK,SYNONYM,PACKAGE BODY,SEQUENCE,LOB,PACKAGE,PROCEDURE
[oracle@host2 oracle]$ expdp system/oracle schemas=u1 dumpfile='u1_p.dump' directory=dump_dir version=10.2.0.1.0 include=PROCEDURE
oracle10G資料移轉問題
用得著toad嗎
用dba帳戶登入
insert into A.tb_a
select id,name,pwd from B.tb_a;
commit;
不就行了
遷移ORACLE資料庫的方法
直接使用ORACLE命令列工具就可以,首先使用export匯出資料,然後在目標伺服器使用import命令匯入,這兩個語句特別是跨平台遷移以及資料量比較大的時候非常有效,採用excel方式資料行不能大於65535,並且效率比較低。