emcc 捕获到的一个 plsql 匿名块

os: centos 7.6
db: oracle 19.3
emcc: 13

使用 emcc 13 捕获到的一个 plsql 匿名块,分享下.

-- ============================================================================================== --
-- This file is generated by EM Database Express.			                          --
-- The SQL bind variables, if any, will be declared below.                                        --
-- ============================================================================================== --

DECLARE

	l_last_complete_disk_backup    VARCHAR2(64);
	l_disk_recovery_window         NUMBER;
	l_disk_unprotected_data_window NUMBER;

	l_last_complete_sbt_backup     VARCHAR2(64);
	l_sbt_recovery_window          NUMBER;
	l_sbt_unprotected_data_window  NUMBER;

	l_zdlra_media_count            NUMBER := 0;

	TYPE data_cursor_type IS REF CURSOR;
	data_cursor data_cursor_type;
	
	v_db_version                   VARCHAR2(10);
	db_version_121                 CONSTANT VARCHAR2(10) := '12.1.0.0.0';
	
BEGIN
	SELECT LPAD(version, 10, '0') 
	  INTO v_db_version
	  FROM v$instance;

	SELECT COUNT (UNIQUE media)
	INTO l_zdlra_media_count
	FROM v$backup_piece_details p
		 ,(SELECT session_key
				, session_recid
				, session_stamp
			FROM (SELECT session_key
						, session_recid
						, session_stamp
					FROM v$rman_backup_job_details
					WHERE status LIKE 'COMPLETED%'
					  AND output_device_type IN ('SBT_TAPE', '*')
					ORDER BY end_time DESC)
			WHERE rownum = 1) j
	WHERE j.session_key = p.session_key
	AND j.session_recid = p.session_recid
	AND j.session_stamp = p.session_stamp
	AND p.media like '%Recovery Appliance%';

	BEGIN
		IF (v_db_version >= db_version_121) THEN
			EXECUTE IMMEDIATE
			'SELECT to_char(low_time, ''YYYY-MM-DD HH24:MI:SS'') as last_complete_disk_backup,
					ROUND((high_time-low_time)*24*60*60, 2) as disk_recovery_window,
					ROUND((sysdate-high_time)*24*60*60, 2) as disk_unprotected_data_window
			   FROM v$disk_restore_range rr1
			  WHERE rr1.high_time = (SELECT max(rr2.high_time)
					  	   	           FROM v$disk_restore_range rr2
									  WHERE rr1.db_id = rr2.db_id)'
			INTO l_last_complete_disk_backup,
			     l_disk_recovery_window, 
				 l_disk_unprotected_data_window;
				 
		END IF;
	EXCEPTION
		WHEN NO_DATA_FOUND THEN
			l_last_complete_disk_backup := NULL;
			l_disk_recovery_window := NULL;
			l_disk_unprotected_data_window := NULL;
		WHEN OTHERS THEN
			dbms_output.put_line(SQLERRM);
	END;

	BEGIN
		IF (v_db_version >= db_version_121 AND l_zdlra_media_count = 0) THEN
			EXECUTE IMMEDIATE
			'SELECT to_char(low_time, ''YYYY-MM-DD HH24:MI:SS'') as last_complete_sbt_backup,
					ROUND((high_time-low_time)*24*60*60, 2) as sbt_recovery_window,
					ROUND((sysdate-high_time)*24*60*60, 2) as sbt_unprotected_data_window
			   FROM v$sbt_restore_range rr1
			  WHERE rr1.high_time = (SELECT max(rr2.high_time)
									   FROM v$sbt_restore_range rr2
									  WHERE rr1.db_id = rr2.db_id)'
			INTO l_last_complete_sbt_backup,
			     l_sbt_recovery_window, 
				 l_sbt_unprotected_data_window;
				 
		END IF;
	EXCEPTION
		WHEN NO_DATA_FOUND THEN
			l_last_complete_sbt_backup := NULL;
			l_sbt_recovery_window := NULL;
			l_sbt_unprotected_data_window := NULL;
		WHEN OTHERS THEN
			dbms_output.put_line(SQLERRM);
	END;

	OPEN data_cursor FOR
	SELECT l_last_complete_disk_backup, 
		   l_disk_recovery_window,
		   l_disk_unprotected_data_window, 
		   l_last_complete_sbt_backup,
		   l_sbt_recovery_window, 
		   l_sbt_unprotected_data_window
	FROM dual;
	
	:1   := data_cursor;
END;

参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据库人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值