⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbbackup.tcl

📁 开源备份软件源码 AMANDA, the Advanced Maryland Automatic Network Disk Archiver, is a backup system that a
💻 TCL
字号:
#!/opt/tcl8.3.0/bin/tclsh8.3#  .-------------.------------------------------------------------------.#  |  module     |  dbbackup.tcl                                        |#  `-------------^------------------------------------------------------'#  .--------------------------------------------------------------------.#  |  				Revisions				|#  |--------------------------------------------------------------------|#  |  07/25/96 (TMH) eliminated the need for a library file.		|#  |  02/10/97 (TMH) converted to tcl7.6, oratcl 2.4.			|#  |  12/02/98 (TMH) eliminate all pipes to /bin/sh for final release	| #  `--------------------------------------------------------------------'#  .--------------------------------------------------------------------.#  |            Copyright (c) 1998, Purdue University                   |#  |                     All rights reserved.                           |#  `--------------------------------------------------------------------'#  .--------------------------------------------------------------------.#  |  Redistribution and use in source and binary forms are permitted   |#  |  provided that:                                                    |#  |                                                                    |#  | (1) source distributions retain this entire copyright notice and   |#  |     comment, and                                                   |#  | (2) distributions including binaries display the following         |#  |      acknowledgement:                                              |#  |                                                                    |#  |   "This product includes software developed by Purdue University." |#  | in the documentation or other materials provided with the          |#  | distribution and in all advertising materials mentioning features  |#  | or use of this software.                                           |#  |                                                                    |#  |   The name of the University may not be used to endorse or promote |#  | products derived from this software without specific prior written |#  | permission.                                                        |#  |                                                                    |#  | THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR     |#  | IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED     |#  | WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR      |#  | PURPOSE.                                                           |#  `--------------------------------------------------------------------'package require -exact Oratcl 2.7set uidpswd /set df_dest /opt/oracle/backupset cf_dest [file join $df_dest "ctl$env(ORACLE_SID).ctl"]set cur {}set lda {}#  .--------------------------------------------------------------------.#  |  sysdate								|#  `--------------------------------------------------------------------'proc sysdate {} {	return [clock format [clock seconds] -format {%c}]}#  .-------------.------------------------------------------------------.#  |  procedure  |  ora_Connect						|#  |  date       |  (09/02/94)                                          |#  `-------------^------------------------------------------------------'proc ora_Connect {} {	global uidpswd	global cur	global lda	set retcode [catch {set lda [oralogon ${uidpswd}]}]	if {$retcode == 0} {		set cur [oraopen $lda]	}	return $retcode}#  .-------------.------------------------------------------------------.#  |  procedure  |  ora_Disconnect					|#  |  author     |  Todd M. Helfter                                     |#  |  date       |  (09/02/94)                                          |#  `-------------^------------------------------------------------------'proc ora_Disconnect {} {	global lda	return [catch {oralogoff $lda }]}#  .-------------.------------------------------------------------------.#  |  procedure  |  print_log						|#  `-------------^------------------------------------------------------'proc print_log {} {	global cur oramsg	set log_min {}	set log_max {}	set sql {select min(sequence#), max(sequence#) from v$log}	if {[catch {orasql $cur $sql}] == 0} {		orafetch $cur "set log_min @1; set log_max @2"	}	puts stdout [format "\nOldest online log sequence\t%s" $log_min]	puts stdout [format "Current log sequence\t\t%s\n" $log_max]	flush stdout}#  .-------------.------------------------------------------------------.#  |  procedure  |  ora_SQL						|#  `-------------^------------------------------------------------------'proc ora_SQL {sql_str} {	global cur oramsg	set dbret [catch {orasql $cur $sql_str}]	if {$dbret != 0} {		puts stdout $oramsg(errortxt)		flush stdout	} else {		orafetch $cur {			puts stdout @0			flush stdout		}	}}#  .--------------------------------------------------------------------.#  |  query_info							|#  `--------------------------------------------------------------------'proc query_info {} {	global cur ts_list df_list oramsg uidpswd	set ts_list {}	if {[ora_Connect] == 0} {		set sql0 "SELECT tablespace_name FROM sys.dba_tablespaces"		if {[catch {orasql $cur $sql0}] == 0} {			orafetch $cur {lappend ts_list @0}		}	} else {		puts stdout $oramsg(errortxt)		flush stdout		exit 1	}	foreach ts_name $ts_list {		set df_list($ts_name) {}		set sql1 "SELECT file_name FROM sys.dba_data_files \			where tablespace_name = '$ts_name'"		if {[catch {orasql $cur $sql1}] == 0} {			orafetch $cur {lappend df_list($ts_name) @0}		} else {			puts stdout $oramsg(errortxt)			flush stdout			exit 1		}	}}#  .--------------------------------------------------------------------.#  |  print_info							|#  `--------------------------------------------------------------------'proc print_info {} {	global ts_list df_list	foreach ts_name $ts_list {		puts stdout "ts_name : $ts_name"		flush stdout		foreach df_name $df_list($ts_name) {			puts stdout "  df_name : $df_name"			flush stdout		}	}}#  .--------------------------------------------------------------------.#  |  ora_Backup							|#  `--------------------------------------------------------------------'proc ora_Backup {} {	global ts_list df_list df_dest cf_dest	print_log	foreach ts_name $ts_list {		puts stdout "[sysdate] | begin online backup for : $ts_name"		flush stdout		ora_SQL "alter tablespace $ts_name begin backup"		foreach df_name $df_list($ts_name) {			puts stdout "[sysdate] | copying $df_name to $df_dest."			flush stdout			file copy -force -- $df_name $df_dest		}		puts stdout "[sysdate] | end online backup for : $ts_name"		flush stdout		ora_SQL "alter tablespace $ts_name end backup"	}	puts stdout "[sysdate] | switching logfile."	flush stdout	ora_SQL {alter system switch logfile}	print_log	puts stdout "[sysdate] | copying control file to $cf_dest."	flush stdout	ora_SQL "alter database backup controlfile to '$cf_dest' reuse"}#  .-------------.------------------------------------------------------.#  |  procedure  |  main                                                |#  |  purpose    |  scan database and report results to parent window  	|#  |  author     |  Todd M. Helfter                                     |#  |  date       |  (10/13/94)                                          |#  `-------------^------------------------------------------------------'proc main {} {	global cur uidpswd oramsg ts_list df_list	query_info	print_info	ora_Backup	ora_Disconnect}mainexit 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -