PDA

View Full Version : Copy database từ DB 8.1.5 sang 8.1.7



lanpttl
15-09-2003, 08:19
Chào các bạn,
Mình có 2 database Oracle trên 2 server Unix
Database 1: SID=ora1, database_name:ora1, version : 8.1.5
Database 2: SID=ora2, database_name:ora2, version : 8.1.7
với đường dẫn và tên file của controlfile, redologfile, datafile khác nhau, số file giống nhau. Mình muốn copy toàn bộ các file của máy 1 sang máy 2. Đây là cách làm của mình :
Bước 1: xóa toàn bộ các file của máy 2
Bước 2: copy redologfile và datafile của máy 1 vào đúng vị trí và tên của các file máy 2
Bước 3: sửa lại file init máy 2 với tham số roll_back_segments như máy 1
Bước 4: startup nomount, tạo lại controlfile bằng lệnh create controlfile với option : set database "ora2" và resetlogs
Bước 5 : open database resetlogs
Kết quả là dữ liệu của máy 1 đã chép sang máy 2 nhưng khi chạy bất kỳ một package nào trong database cũng bị báo lỗi :
ORA-06553 : PLS-707: unsupported construct or internal error [2603]
Error accessing package DBMS_APPLICATION_INFO
Khi chạy sqlplus cũng bị báo lỗi tương tự
Mình đã thử chạy lại file rdbms/admin/dbmsapin.sql nhưng lại bị báo lỗi
ORA-06544 : PL/SQL : internal error arguments : [2603], [ ], [ ], [ ], [ ], [ ], [ ], [ ]
Xin các bạn chỉ giúp mình cách khắc phục
Cảm ơn

phong_ld
16-09-2003, 08:22
Theo mình hai version quản trị này có những cái không tương thích nhau, nên tốt nhất là không nên copy file như vậy (việc copy file chỉ sử dụng khi khôi phục lại cơ sở dữ liệu thôi)
Còn giữa các version khác nhau thì bạn nên export ra rồi import lại, vừa không bị lỗi đồng thời cũng tối ưu lại database.

lanpttl
16-09-2003, 08:39
Mình thực sự cần làm như vậy vì máy 8.1.5 là máy đang chạy, máy 8.1.7 (máy 2) là máy dự phòng. Mình muốn khi máy 1 hư, mình có thể copy toàn bộ file của máy 1, recover từ các file archive rồi dùng máy 2 thay thế máy 1. Hiện tại mỗi ngày mình tạo một bản full backup của máy 1 vào cuối ngày rồi chép sang máy 2, nếu dùng exp, imp thì ngay khi máy 1 hư, mình chỉ có thể imp từ bản exp trước đó và không recover DB được. Theo bạn thì mình có thể áp dụng những cách nào khác không ? Làm cách nào để máy 2 có thể hiệu được file archive của máy 1 ?

dote
22-09-2003, 21:15
Neu ban muon dung che do backup thi nen dung co che Standby Database xem tai lieu "Oracle data gap". Day la co che ma Oracle cho rang "No data loss".

lanpttl
25-09-2003, 06:32
Vậy còn database replication thì sao ?
Mình vừa đọc được một tài liệu cho phép export và import data dictionary từ máy này sang máy khác, dùng lệnh exp với tham số transport_tablespace=y. nhưng mình chưa thực hiện được, cách này thực ra là như thế nào, có phải thích hợp với yêu cầu của mình không ?
Nhân tiện cho mình hỏi thêm, khi mình dùng lệnh trên, Oracle bắt buộc phải connect với 'AS SYSDBA' nhưng khi mình gõ lệnh sau :
exp sys/change_on_install as sysdba file= . . . .
thì Oracle báo lỗi tham số 'AS' không đúng. Mình đã thử cho phần 'sys/change_on_install' vào dấu nháy nhưng vẫn không được. Bạn có thể giúp mình cách khắc phục không ?

Bimbim2005
04-10-2003, 18:38
Neu muon copy database tu 8i sang 9 i thi lam nhu the nao . Ko nhe lai Import va Export a

lanpttl
06-10-2003, 12:37
Vậy bạn có cách nào không ? Chỉ cho mình với

ctr_alt_del
07-10-2003, 16:46
Chỉ nên recovery hai DB cùng release thôi chứ khác version thì đương nhiên là không được rồi vì ít nhiều cấu trúc của datafile, control file cũng khác nhau. Giải pháp tôt nhất là cứ cùng rel, cùng conf mà làm. Rep chỉ tổ làm down peformance mà thôi. Còn pass sysdba là tham số pass khi bạn chay orapwd ây.
To dote: dataguard 9i mới có mà.

lanpttl
08-10-2003, 06:06
Trong srvmgrl, mình có thể dùng lệnh như thế này:
connect sys/change_on_install as sysdba
thì connect được. Còn câu lệnh exp của mình như vầy:
exp sys/change_on_install as sysdba file=datadic.dmp transport_tablespace=y tablespaces=users
thì bị báo lỗi:
LRM-00108: invalid positional parameter value 'as'
Nếu dùng thêm dấu nháy :
exp 'sys/change_on_install as sysdba' file=datadic.dmp transport_tablespace=y tablespaces=users
thì vẫn báo lỗi như vậy
Nếu như mình đã dùng orapwd để sửa password của sys thì không thể connect trong svrmgrl như trên. Mình hiểu như vậy có đúng không ?

ctr_alt_del
09-10-2003, 08:14
bo chu as sysdba di, cho tat ca vao parfile, dung exp parfile='file_name'. chuc thanh cong

lanpttl
09-10-2003, 12:21
Mình đã làm được rồi, cảm ơn bạn rất nhiều
Cho mình hỏi thêm một câu nữa nha, nếu bạn nói rằng copy datafile giống như mình là không làm được nhưng thực ra mình thấy nó giống như upgrade database của mình lên version mới vậy thôi. Ví dụ trước đây máy mình cài Oracle 8.1.5, sau đó mình muốn cài lại thành 8.1.7, như vậy có được không ?
Thực ra là 2 cái máy Unix của mình người ta cài sẵn rồi, bây giờ muốn chuyển cái máy 8.1.7 trở lại 8.1.5 mình chưa biết cài. Vì vậy mình muốn có cách nào khả thi mà không cần cài lại nhưng xem ra khó quá. Chắc phải xem thêm tài liệu vậy

ctr_alt_del
09-10-2003, 13:32
Chuyển DB từ version cao về version thấp thì đọc tài liệu downgrade, chuyển từ thấp lên cao thì đọc upgrade, nhìn chung thì không khó lắm, phải recreate Dictionary. Tất nhiên không phải version nào cũng có thể chuyển sang version khác, có nhiều trường hợp phải chuyển qua version trung gian. Upgrade và downgrade có trong tài liệu migration.

lanpttl
13-10-2003, 12:25
Cảm ơn các bạn đã giúp đỡ mình, mình sẽ đọc tiếp tài liệu, có gì không hiểu, mong các bạn chỉ bảo thêm