Extend GRID Software
---Step 1:
[root@rac1]$ su - grid
[grid@rac1]$ export GRID_HOME=/u01/app/11.2.0/grid
[grid@rac1]$ $GRID_HOME/bin/cluvfy stage -post hwos -n rac2
----Step 2:
[grid@rac1]$ $GRID_HOME/bin/cluvfy comp peer -refnode rac1 -n rac2 -orainv oinstall -osdba dba -verbose
----Step 3:
Verify New Node (NEW NODE PRE)
$GRID_HOME/bin/cluvfy stage -pre nodeadd -n rac2 -fixup -verbose
----Step 4:
[grid@rac1]$ export IGNORE_PREADDNODE_CHECKS=Y
[grid@rac1]$ $GRID_HOME/oui/bin/addNode.sh -silent "CLUSTER_NEW_NODES={rac2}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={rac2-vip}"
----Step 5:
[root@rac2]$ /u01/app/oraInventory/orainstRoot.sh
[root@rac2]$ /u01/app/11.2.0/grid/root.sh
[grid@rac1]$ $GRID_HOME/bin/cluvfy stage -post nodeadd -n rac2 -verbose
Extend ORACLE DATABASE SOFTWARE
----Step 1:
[oracle@rac1]$ echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0/db_1
[oracle@rac1]$ $ORACLE_HOME/oui/bin/addNode.sh -silent "CLUSTER_NEW_NODES={rac2}"
----Step 2:
[root@rac2]$ /u01/app/oracle/product/11.2.0/db_1/root.sh
[oracle@rac2]$ $ORACLE_HOME/bin/cluvfy comp admprv -o db_config -d $ORACLE_HOME -n rac1,rac2 -verbose
----Step 3:Add Instance to Clustered Database
dbca -> Intance Management -> Add instance
Thứ Tư, 19 tháng 8, 2015
Thứ Năm, 6 tháng 8, 2015
Another way: To Create An Oracle Dataguard !
@@@@@@@@@@@@@PRIMARY@@@@@@@@@@@@@
1/ Backup RMAN full + Standby Controlfile:
RMAN> run {
2> allocate channel st1 device type disk;
3> allocate channel st2 device type disk;
4> backup as compressed backupset format '/setup/rman/%d_%U.rman' database plus archivelog;
5> backup format '/setup/rman/std_controlfile.ctl' current controlfile for standby;
6> release channel st1;
7> release channel st2;
8> }
2/ Backup spfile.ora
SQL> create pfile='/setup/rman/pfile.ora' from spfile;[backup]
3/ Set new parameters
SQL>ALTER SYSTEM SET DB_UNIQUE_NAME='EWALLET';
SQL>ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(EWALLET,EWALLET_DR)';
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/app/oracle/fast_recovery_area/EWALLET/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=EWALLET';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=EWALLET_DR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=EWALLET_DR';
ALTER SYSTEM SET DB_FILE_NAME_CONVERT='EWALLET','EWALLET' SCOPE=SPFILE;
ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='EWALLET','EWALLET' SCOPE=SPFILE;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
ALTER SYSTEM SET FAL_SERVER='EWALLET_DR';
ALTER SYSTEM SET FAL_CLIENT='EWALLET';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1=ENABLE;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
ALTER SYSTEM SET STANDBY_ARCHIVE_DEST='/home/oracle/app/oracle/fast_recovery_area/EWALLET/standbylog';
SQL> create pfile='/setup/rman/pfile_for_standby.ora' from spfile;
4/ Create standby logfile to use realtime apply log
SQL> alter database add standby logfile group 4 ('/home/oracle/app/oracle/oradata/EWALLET/standby1.rdo') size 200M;
SQL> alter database add standby logfile group 5 ('/home/oracle/app/oracle/oradata/EWALLET/standby2.rdo') size 200M;
SQL> alter database add standby logfile group 6 ('/home/oracle/app/oracle/oradata/EWALLET/standby3.rdo') size 200M;
SQL> alter database add standby logfile group 7 ('/home/oracle/app/oracle/oradata/EWALLET/standby4.rdo') size 200M;
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
5/ Create tnsnames by netmgr
EWALLET =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.159.20)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = EWALLET)
)
)
EWALLET_DR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.159.21)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = EWALLET_DR)
)
)
@@@@@@@@@@@@@DR@@@@@@@@@@@@@
6/ Copy all to DR
$scp /setup/rman/* oracle@192.168.159.21:/setup/rman
7/ set pfile_for_standby.ora:
*.db_unique_name='EWALLET_DR'
*.db_file_name_convert='EWALLET','EWALLET'
*.fal_client='EWALLET_DR'
*.fal_server='EWALLET'
*.log_archive_config='DG_CONFIG=(EWALLET,EWALLET_DR)'
*.log_archive_dest_1='LOCATION=/home/oracle/app/oracle/fast_recovery_area/EWALLET/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=EWALLET_DR'
*.log_archive_dest_2='SERVICE=EWALLET_DR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=EWALLET'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_file_name_convert='EWALLET','EWALLET'
*.standby_archive_dest='/home/oracle/app/oracle/fast_recovery_area/EWALLET/standbylog'
*.standby_file_management='AUTO'
8/ Create directories follow pfile_for_standby.ora:
9/ Create tnsnames by netmgr or copy from primary
EWALLET =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.159.20)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = EWALLET)
)
)
EWALLET_DR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.159.21)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = EWALLET_DR)
)
)
10/ Make standby
[oracle@dg02 ~]$ export ORACLE_SID=EWALLET
[oracle@dg02 ~]$ rman target /
RMAN> startup nomount pfile='/setup/rman/pfile_for_standby.ora'
RMAN> restore standby controlfile from '/setup/rman/stb_controlfile.ctl';
RMAN> alter database mount;
RMAN> restore database;
RMAN> recover database;
[oracle@dg02 ~]$ export ORACLE_SID=EWALLET
[oracle@dg02 ~]$ sqlplus / as sysdba
SQL> alter system register;
SQL> !lsnrctl status
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;
SQL> alter database add standby logfile group 4 ('/home/oracle/app/oracle/oradata/EWALLET/standby1.rdo') size 200M;
SQL> alter database add standby logfile group 5 ('/home/oracle/app/oracle/oradata/EWALLET/standby2.rdo') size 200M;
SQL> alter database add standby logfile group 6 ('/home/oracle/app/oracle/oradata/EWALLET/standby3.rdo') size 200M;
SQL> alter database add standby logfile group 7 ('/home/oracle/app/oracle/oradata/EWALLET/standby4.rdo') size 200M;
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
SQL> alter database recover managed standby database using current logfile disconnect from session;
SQL> create spfile='/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/spfileEWALLET' from pfile='/setup/rman/pfile_for_standby.ora';
11/ Check standby
SQL> select sequence#,applied,completion_time from v$archived_log;
SEQUENCE# APPLIED COMPLETIO
---------- --------- ---------
2 YES 16-JAN-15
12 YES 16-JAN-15
3 YES 16-JAN-15
4 YES 16-JAN-15
6 YES 16-JAN-15
5 YES 16-JAN-15
7 YES 16-JAN-15
8 YES 16-JAN-15
9 YES 16-JAN-15
10 YES 16-JAN-15
11 YES 16-JAN-15
SEQUENCE# APPLIED COMPLETIO
---------- --------- ---------
13 YES 16-JAN-15
14 YES 16-JAN-15
1/ Backup RMAN full + Standby Controlfile:
RMAN> run {
2> allocate channel st1 device type disk;
3> allocate channel st2 device type disk;
4> backup as compressed backupset format '/setup/rman/%d_%U.rman' database plus archivelog;
5> backup format '/setup/rman/std_controlfile.ctl' current controlfile for standby;
6> release channel st1;
7> release channel st2;
8> }
2/ Backup spfile.ora
SQL> create pfile='/setup/rman/pfile.ora' from spfile;[backup]
3/ Set new parameters
SQL>ALTER SYSTEM SET DB_UNIQUE_NAME='EWALLET';
SQL>ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(EWALLET,EWALLET_DR)';
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/app/oracle/fast_recovery_area/EWALLET/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=EWALLET';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=EWALLET_DR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=EWALLET_DR';
ALTER SYSTEM SET DB_FILE_NAME_CONVERT='EWALLET','EWALLET' SCOPE=SPFILE;
ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='EWALLET','EWALLET' SCOPE=SPFILE;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
ALTER SYSTEM SET FAL_SERVER='EWALLET_DR';
ALTER SYSTEM SET FAL_CLIENT='EWALLET';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1=ENABLE;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
ALTER SYSTEM SET STANDBY_ARCHIVE_DEST='/home/oracle/app/oracle/fast_recovery_area/EWALLET/standbylog';
SQL> create pfile='/setup/rman/pfile_for_standby.ora' from spfile;
4/ Create standby logfile to use realtime apply log
[(maximum number of logfiles for each
thread + 1) * maximum
number of threads]
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;SQL> alter database add standby logfile group 4 ('/home/oracle/app/oracle/oradata/EWALLET/standby1.rdo') size 200M;
SQL> alter database add standby logfile group 5 ('/home/oracle/app/oracle/oradata/EWALLET/standby2.rdo') size 200M;
SQL> alter database add standby logfile group 6 ('/home/oracle/app/oracle/oradata/EWALLET/standby3.rdo') size 200M;
SQL> alter database add standby logfile group 7 ('/home/oracle/app/oracle/oradata/EWALLET/standby4.rdo') size 200M;
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
5/ Create tnsnames by netmgr
EWALLET =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.159.20)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = EWALLET)
)
)
EWALLET_DR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.159.21)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = EWALLET_DR)
)
)
@@@@@@@@@@@@@DR@@@@@@@@@@@@@
6/ Copy all to DR
$scp /setup/rman/* oracle@192.168.159.21:/setup/rman
7/ set pfile_for_standby.ora:
*.db_unique_name='EWALLET_DR'
*.db_file_name_convert='EWALLET','EWALLET'
*.fal_client='EWALLET_DR'
*.fal_server='EWALLET'
*.log_archive_config='DG_CONFIG=(EWALLET,EWALLET_DR)'
*.log_archive_dest_1='LOCATION=/home/oracle/app/oracle/fast_recovery_area/EWALLET/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=EWALLET_DR'
*.log_archive_dest_2='SERVICE=EWALLET_DR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=EWALLET'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_file_name_convert='EWALLET','EWALLET'
*.standby_archive_dest='/home/oracle/app/oracle/fast_recovery_area/EWALLET/standbylog'
*.standby_file_management='AUTO'
8/ Create directories follow pfile_for_standby.ora:
9/ Create tnsnames by netmgr or copy from primary
EWALLET =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.159.20)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = EWALLET)
)
)
EWALLET_DR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.159.21)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = EWALLET_DR)
)
)
10/ Make standby
[oracle@dg02 ~]$ export ORACLE_SID=EWALLET
[oracle@dg02 ~]$ rman target /
RMAN> startup nomount pfile='/setup/rman/pfile_for_standby.ora'
RMAN> restore standby controlfile from '/setup/rman/stb_controlfile.ctl';
RMAN> alter database mount;
RMAN> restore database;
RMAN> recover database;
[oracle@dg02 ~]$ export ORACLE_SID=EWALLET
[oracle@dg02 ~]$ sqlplus / as sysdba
SQL> alter system register;
SQL> !lsnrctl status
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;
SQL> alter database add standby logfile group 4 ('/home/oracle/app/oracle/oradata/EWALLET/standby1.rdo') size 200M;
SQL> alter database add standby logfile group 5 ('/home/oracle/app/oracle/oradata/EWALLET/standby2.rdo') size 200M;
SQL> alter database add standby logfile group 6 ('/home/oracle/app/oracle/oradata/EWALLET/standby3.rdo') size 200M;
SQL> alter database add standby logfile group 7 ('/home/oracle/app/oracle/oradata/EWALLET/standby4.rdo') size 200M;
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
SQL> alter database recover managed standby database using current logfile disconnect from session;
SQL> create spfile='/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/spfileEWALLET' from pfile='/setup/rman/pfile_for_standby.ora';
11/ Check standby
SQL> select sequence#,applied,completion_time from v$archived_log;
SEQUENCE# APPLIED COMPLETIO
---------- --------- ---------
2 YES 16-JAN-15
12 YES 16-JAN-15
3 YES 16-JAN-15
4 YES 16-JAN-15
6 YES 16-JAN-15
5 YES 16-JAN-15
7 YES 16-JAN-15
8 YES 16-JAN-15
9 YES 16-JAN-15
10 YES 16-JAN-15
11 YES 16-JAN-15
SEQUENCE# APPLIED COMPLETIO
---------- --------- ---------
13 YES 16-JAN-15
14 YES 16-JAN-15
RMAN: Restoring a Database from INCREMENTAL Backup
BACKUP:
Backup incremental level 0:
RMAN> run {
allocate channel st1 device type disk;
allocate channel st2 device type
disk;
configure controlfile autobackup
on;
configure controlfile autobackup
format for device type disk to '/setup/rman/%F';
backup format
'/setup/rman/%d_%U.rman' incremental level 0 database;
sql 'alter system archive log
current';
backup format
'/setup/rman/%d_archivelog_%U.rman' archivelog all not backed up 1 times;
release channel st1;
release channel st2;
}
Backup incremental level 1:
RMAN> run{
allocate channel st1 device type
disk;
allocate channel st2 device type
disk;
backup format
'/setup/rman/%d_%U.rman' incremental level 1 database;
sql 'alter system archive log
current';
backup format
'/setup/rman/%d_archivelog_%U.rman' archivelog all not backed up 1 times;
release channel st1;
release channel st2;
}RESTORE and RECOVER:
export ORACLE_SID=RMANINCRE
[oracle@dg01 ~]$ rman target /
RMAN> startup nomount;
RMAN> set DBID=3750471372; =<Get second string from controfile_autobackup>
RMAN> run{
set CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO
'/setup/rman/%F';
restore controlfile from autobackup;
}
RMAN> alter database mount;
RMAN> list backup of archivelog all;
RMAN> restore archivelog all;
RMAN> run{
restore database;
recover database;
}
Getting Error:
archived log thread=1 sequence=8
RMAN-00571:
===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS
===============
RMAN-00571:
===========================================================
RMAN-03002: failure of recover command at 05/07/2015
01:05:48
RMAN-06054: media recovery requesting unknown archived log
for thread 1 with sequence 8 and starting SCN of 1274659
Check sequence archivelog backed up With sequence number restored.if they is equal then OK.
RMAN> list backup of archivelog all;
RMAN> alter database open resetlogs;
Chủ Nhật, 2 tháng 8, 2015
How to count number of rows in a cursor
create or replace function f_row_count_objects return number is
cursor c_var01 is select * from HieuPV;
rt_var02 c_var01%ROWTYPE;
var03 number;
begin
open c_var01;
if c_var01%ISOPEN then
loop
fetch c_var01 into rt_var02;
exit when c_var01%NOTFOUND;
end loop;
end if;
var03:= c_var01%ROWCOUNT;
close c_var01;
return var03;
end;
/
select f_row_count_objects() from dual;
cursor c_var01 is select * from HieuPV;
rt_var02 c_var01%ROWTYPE;
var03 number;
begin
open c_var01;
if c_var01%ISOPEN then
loop
fetch c_var01 into rt_var02;
exit when c_var01%NOTFOUND;
end loop;
end if;
var03:= c_var01%ROWCOUNT;
close c_var01;
return var03;
end;
/
select f_row_count_objects() from dual;
General Oracle Data on a table.
declare
i number(10);
begin
for i in 1..1000 loop
insert into hieupv values (i, i || ' HieuPV');
end loop;
commit;
end;
/
i number(10);
begin
for i in 1..1000 loop
insert into hieupv values (i, i || ' HieuPV');
end loop;
commit;
end;
/
Đăng ký:
Nhận xét (Atom)