Post Jobs

其他功能,R2新特性之备份和可用性特性

Oracle 的自身备份

转自php中文用户5. 其他杂项 5.1 生成图像
PHP可以操作处理图像。如果你已经安装了GD库,你甚至可以利用PHP生成图像。
? Header(“Content-type: image/gif”); $string=implode($argv,” “); $im =
imagecreatefromgif(“images/button1.gif”); $orange =
ImageColorAllocate($im, 220, 210, 60); $px =
(imagesx($im)-7.5*strlen($string))/2;
ImageString($im,3,$px,9,$string,$orange); ImageGif($im);
ImageDestroy($im); ? 这段代码在其他页面中通过以下标记img
src=”button.php3?text”调用,然后以上的那段button.php3代码取得text值并在另外取得的图像文件中加上该值–在以上的代码中该图像文件是images/button1.gif–最后输出到浏览器。假如你想在表单域中使用图像按钮,但是又不希望在每次按钮上的文字改变后不得不重新生成新的图像,就可以利用这样简单的方法动态生成图像文件。
5.2 Cookies
PHP支持基于HTTP的cookies。在需要时你可以像使用一般变量一样方便的使用cookie。Cookies是浏览器保存于客户端的一些信息片段,由此你可以知道是否一台特定PC上的任何人都访问过你的站点,浏览者者在你的站点上的踪迹等等。使用cookies的典型例子就是对浏览者偏好的甄别。Cookies由函数setcookie()设定。与输出HTTP标头的函数header()一样,setcookie()必须在任何实际内容杯输出到浏览器之前调用。以下是一个简单例子:
? if (empty($VisitedBefore)) { //
如果没有设定cookie,为cookie赋上当前时间值 //
函数中的最后一个参数声明了该cookie保存的时间 // 在这个例子中是1年 //
time()函数返回自1970年1月1日以来的以秒数计的时间
SetCookie(“VisitedBefore”,time(), time()+(60*60*24*365)); } else { //
欢迎浏览者再次光临 echo “Hello there, welcome backBR”; //
读取cookie并判断 if ( (time() – $VisitedBefore) = “(60*60*24*7)” )
echo “Why did you take a week to come back. You should be here more
often!? “; } ? 5.3 基于HTTP验证
基于HTTP验证当PHP以CGI模式运行时不能实现。我们可以使用函数header()发送HTTP标头强制验证,客户端浏览器则弹出供输入用户名和密码的对话框。这两个变量被储存在$PHP_AUTH_USER和$PHP_AUTH_PW中,你可以使用这两个变量验证合法并允许进入。以下的例子通过用户名称/密码对为tnc/nature的验证一名用户的登录:
? if(!isset($PHP_AUTH_USER)) { Header(“WWW-Authenticate: Basic
realm=”My Realm””); Header(“HTTP/1.0 401 Unauthorized”); echo “Text to
send if user hits Cancel button”; exit; } else { if (
!($PHP_AUTH_USER==”tnc” $PHP_AUTH_PW==”nature”) ) { //
如果是错误的用户名称/密码对,强制再验证 Header(“WWW-Authenticate: Basic
realm=”My Realm””); Header(“HTTP/1.0 401 Unauthorized”); echo “ERROR :
$PHP_AUTH_USER/$PHP_AUTH_PW is invalid.”; exit; } else { echo
“Welcome tnc!”; } ?
事实上再实际引用中不大可能如上面使用代码段明显的用户名称/密码对,而是利用数据库或者加密的密码文件存取它们。
5.4 文件上传
你可以利用PHP实现文件的功能,注意客户端的浏览器应该是Netscape3以上或者IE3以上。以下就是该功能的简单演示:
( upload.html ): HTML HEAD TITLEUpload Your File/TITLE /HEAD BODY FORM
ACTION=”receiver.php3″ ENCTYPE=”multipart/form-data” METHOD=POST INPUT
TYPE=”HIDDEN” NAME=”MAX_FILE_SIZE” VALUE=”2000000″ INPUT TYPE=”FILE”
NAME=”uploadfile” SIZE=”24″ MAXLENGTH=”80″ BRBR INPUT TYPE=”SUBMIT”
VALUE=”Upload File!” NAME=”sendit” INPUT TYPE=”SUBMIT” VALUE=”Cancel”
NAME=”cancelit”BR /FORM IFONT SIZE=”2″(You may notice a slight delay
while we upload your file.)/FONT/I /BODY /HTML 下面是处理上传的文件: (
receiver.php3 ): ? function do_upload () { global $uploadfile,
$uploadfile_size; global $local_file, $error_msg; if ( $uploadfile ==
“none” ) { $error_msg = “You did not specify a file for uploading.”;
return; } if ( $uploadfile_size 2000000 ) { $error_msg = “Sorry, your
file is too large.”; return; } $the_time = time (); //
你需要对以下目录有写权限 $upload_dir = “/local/uploads”; $local_file =
“$upload_dir/$the_time”; if ( file_exists ( $local_file ) ) { $seq =
1; while ( file_exists ( “$upload_伟德体育,dir/$the_time$seq” ) ) { $seq++; }
$local_file = “$upload_dir/$the_time$seq”; }; rename ( $uploadfile,
$local_file ); display_page (); } function display_page () { //
这里是你的页面内容 } HTML HEAD TITLEphp3 Receiving Script/TITLE /HEAD
BODY ? if ( $error_msg ) { echo “B$error_msg/BBRBR”; } if ( $sendit )
{ do_upload (); } elseif ( $cancelit ) { header ( “Location:
$some_other_script” ); exit; } else { some_other_func (); } ? /BODY
/HTML 5.5 常用函数 我们简单来看看一些常用的函数。 数组 array – 生成数组
count – 数组元素个数 sort – 数组排序,另有其他几种排序函数可供使用 list –
列出数组元素 each – 返回下一个key/value对 current – 返回当前数组元素
next,prev – 传回当前数组元素前后指针 日期和时间 checkdate –
验证日期/时间格式 date – 生成日期/时间格式 time – 当前时间信息 strftime

在系统时间基础上延迟5秒

到现在为止,许多开发人员已经认识到 RMAN
的潜力以及它作为数据库备份工具的实用性。 您可能还记得 RMAN
可以将数据直接备份到磁盘和磁带。 当涉及磁带解决方案时,RMAN
使用名为介质管理库 (MML) 的 API 来操纵磁带子系统。

  • 格式化日期/时间 目录、文件系统 chdir – 改变目录 dir – 目录类别
    opendir, readdir, closedir – 开启、读取、关闭目录 fopen, fclose –
    开启、关闭文件 fgets, fgetss – 逐行读取内容 file –
    将整个文件读入一个数组变量中 正则表达式 ereg – 匹配正则表达式 eregi –
    大小写非敏感匹配正则表达式 ereg_replace -匹配正则表达式并替换
    eregi_replace -大小写非敏感匹配正则表达式并替换 split –
    依规则切开字符串并以数组形势存储 字符串 AddSlashes –
    加上斜杠后使用字符串 echo – 输出一个或多个字符串 join, implode –
    将数组元素合并为字符串 htmlentities, htmlspecialchars –
    将HTML特殊字符转换为HTML标记形式 split –
    依规则切开字符串并以数组形势存储 5.6 扩展我们的范例主页
    我们将使用以上提到的一些函数和思想为我们的范例主页添加更多的动态内容。我们可以在每个页面的顶部加上导航栏,同时使得当前页自动的不被链接显示;同时还可以添加一个用户验证表单以便上传音乐、图像等文件并自动更新页面。
    导航栏
    实际上就是在footer.inc文件中加上一段代码。假设你的web站点中所有后缀为.php3的文件都会出现在导航栏中,以下就是被存为include/navbar.inc的代码:
    ? /* 输出该导航栏,链接所有除当前页的站内.php3文件 */ # 读取目录 $d
    = dir(“./”); echo “P ALIGN=”CENTER” | “; while($entry = $d-read()) { //
    忽略无文件情况 if ( !is_file($entry) ) continue; /*
    将文件名与扩展名分开。由于.是正则表达式特殊字符,应该用引出 */
    list($filenm, $fileext) = split(“.”,$entry, 2); // 忽略非.php3文件情况
    if( $fileext != “php3″ ) continue; /*
    现在我们已经把.php3文件都选出,下面搜寻文件中的第一行
    类似$title=”something”; 并将以上标题内容分开,用作链接文字 */ $linknm =
    “”; $fp=fopen($entry,”r”); while($buffer=fgets($fp, 4096)) { $buffer =
    trim($buffer); // 我们已经把每个文件的标题放在文件的第一行以便搜索 //
    但是当你改变变量名称时可能会带来大麻烦 if (ereg(“title *= *””,
    $buffer)) { /* 我们已经取得了标题内容并可以在此基础上
    进行去除空格等处理。 必须以PHP代码方式处理,比如$title = “blah blah” */
    eval($buffer); // 然后将链接文字显示为标题文字 $linknm = $title; break;
    } } fclose($fp); if ( $entry == basename($PHP_SELF) ) echo “$linknm”;
    else echo “A HREF=”$entry”$linknm/A”; echo ” | “; } $d-close(); echo ”
    /P”; ? 照片收藏夹
    我们将引用基于HTTP的验证、文件系统函数和文件上传功能维护放置图像文件的目录。
    同时我们需要建立一个可以列出在该目录下所有照片的页面。 文件上传 ?
    include(“include/common.inc”); // 我们在这里再做一次用户验证
    if(!isset($PHP_AUTH_USER)) { Header(“WWW-Authenticate: Basic
    realm=”$MySiteName””); Header(“HTTP/1.0 401 Unauthorized”); echo “Sorry,
    you are not authorized to upload files”; exit; } else { if (
    !($PHP_AUTH_USER==$MyName $PHP_AUTH_PW==$MyPassword ) ) { //
    如果是错误的用户名称/密码对,强制再次认证 Header(“WWW-Authenticate:
    Basic realm=”My Realm””); Header(“HTTP/1.0 401 Unauthorized”); echo
    “ERROR : $PHP_AUTH_USER/$PHP_AUTH_PW is invalid.P”; exit; } } if (
    $cancelit ) { // 当浏览者按下”取消”按钮则转向首页面 header ( “Location:
    front_2.php3” ); exit; } function do_upload () { global $userfile,
    $userfile_size, $userfile_name, $userfile_type; global $local_file,
    $error_msg; global $HTTP_REFERER; if ( $userfile == “none” ) {
    $error_msg = “You did not specify a file for uploading.”; return; } if
    ( $userfile_size 2000000 ) { $error_msg = “Sorry, your file is too
    large.”; return; } // Wherever you have write permission below…
    $upload_dir = “photos”; $local_file = “$upload_dir/$userfile_name”;
    if ( file_exists ( $local_file ) ) { $error_msg = “Sorry, a file with
    that name already exists”; return; }; //
    你还可以由此检查文件名称/类型对以确定是何种文件:gif,jpg,mp3…
    rename($userfile, $local_file); echo “The file is uploadedBR”; echo “A
    HREF=”$HTTP_REFERER”Go Back/ABR”; } $title = “Upload File”;
    include(“include/header.inc”); if (empty($userfile) ||
    $userfile==”none”) { // 输出以下表单 ? FORM ACTION=”? echo
    “$PHP_SELF”; ?” ENCTYPE=”multipart/form-data” METHOD=POST INPUT
    TYPE=”HIDDEN” NAME=”MAX_FILE_SIZE” VALUE=”2000000″ INPUT TYPE=”FILE”
    NAME=”userfile” SIZE=”24″ MAXLENGTH=”80″ BRBR INPUT TYPE=”SUBMIT”
    VALUE=”Upload File!” NAME=”sendit” INPUT TYPE=”SUBMIT” VALUE=”Cancel”
    NAME=”cancelit”BR /FORM IFONT SIZE=”2″(You may notice a slight delay
    while we upload your file.)/FONT/I ? } else { if ( $error_msg ) { echo
    “B$error_msg/BBRBR”; } if ( $sendit ) { do_upload (); } }
    include(“include/footer.inc”); ? 照片图库 ?
    include(“include/common.inc”); $title = “Gallery”;
    include(“include/header.inc”); ? P Here are some of our family photos.
    This PHP script can really be made better, by splitting into multiple
    pages. /P ? $d = dir(“photos”); while($entry = $d-read()) { if
    (is_file(“photos/$entry”)) echo “IMG SRC=”photos/$entry””; }
    $d-close(); ? ? include(“include/footer.inc”); ?
    另外,你可以在文件上传的表单中加上一个输入元素去描述该上传的文件。这个元素将被存储在文件中,然后被以上的照片图库的那段代码所读出并显示出来。

sysdate+(5/24/60/60)

此 MML 特定于所涉及的磁带管理系统和硬件。 尽管 RMAN
是数据库引擎的一个特性,但 MML
不是引擎的一部分,而是由别人提供的;实际上,其价格可能相当高。
此外,如果您的主要目的是备份 Oracle 数据库,则在 MML
方面进行额外的投资就显得不适当了。

在系统时间基础上延迟5分钟

在 Oracle 数据库 10g 第 2 版中,一个名为 Oracle Secure Backup (OSB)
的新工具代替了特定于第三方磁带管理系统的
MML,从而使此要求变得更容易接受。 OSB
可以直接备份到磁带库,因此您不需要任何其他介质管理层。
而其最大的优点是,OSB 与数据库引擎紧密集成,因此可以通过 Oracle
Enterprise Manager 对它进行控制和管理。

sysdate+5/24/60

但其他非数据库备份以及其他重要文件)又如何呢?
您可能会问,这些备份不需要备份工具吗?

在系统时间基础上延迟5小时

回答是不需要。就像任何独立工具一样,OSB 也可以执行文件系统备份。
显而易见,无需使用 MML 来进行 RMAN
备份再加上备份文件系统这一功能提供了一个低成本和简化的备份和恢复方法。

sysdate+5/24

下面介绍如何在 Oracle Enterprise Manager 中使用 MML 组件。 首先,在
Oracle Enterprise Manager GUI 中选择 Maintenance 选项卡:

在系统时间基础上延迟5天

从以上菜单中,选择标题为Configure Backup
Settings的超链接,随即将显示一个如下所示的屏幕:

sysdate+5

注意此屏幕上的Tape Settings部分,您将在该部分中配置 Oracle Backup 工具。

在系统时间基础上延迟5月

Oracle Backup Administrative
软件可以在一台独立的主机上运行,在此主机中,该软件通过数据服务器上运行的代理进行管理。
在本示例中,Administrative 主机安装在主机 proliback.proligence.com
上并在其上运行,且 Oracle Backup 工具已经安装到 /bin/obt 目录中。

add_months(sysdate,-5)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图