js控制网页在特定iframe中打开

我们在编写系统管理后台时,很多时候会使用到iframe进行管理,但是有有个问题就是有些时候比较聪明的用户会绕过我们的iframe的父页面,而直接打开了iframe中src的内容,如果这样,重则给我们的系统带来破坏,轻则使我们系统的有些功能不能正常使用,今天用js写了一个控制脚本,可以让用户无法绕开iframe的父页而直接打开子页的内容进行浏览,主要通过在iframe在子父页面各加一段js脚本实现控制
父页面

function check_iframe() {
            var url = location.search;//包括?的参数
            if (url.indexOf("?")!=-1) {
                var str = url.substr(1); //传输过来的url
                document.getElementById("main").src = decodeURI(str);
            }
        }

说明:1、要使用onload或者类此这个事件加载该函数
2、main表示父页面中要显示子页面的iframe的id
3、传过来的url是通过get方式,使用encodeURI编码的
子页面

function check_page() {
    var iframe_url = document.referrer.toLowerCase();
    if (iframe_url == "") {
        document.location.href = "default.aspx?" + encodeURI(document.location.href);
    }
//防止在子页面中点击本页面自身超链时再次打开一个iframe
    else if (iframe_url.indexOf("default.aspx") == -1 && document.location.href.toLowerCase().indexOf(iframe_url) == -1) 
    { document.location.href = "default.aspx?" + encodeURI(document.location.href); }
}

说明:1、要使用onload或者类此这个事件加载该函数
2、supadmin.html表示是含有该页面显示的iframe的父页面
3、使用encodeURI对子页面的url进行了编码,使用get方式传送给父页面

mysql主从复制

1、分别在两台linux服务器上安装相同版本的mysql数据库
我使用的是最新的mysql 5.1.50 redhat版的
安装命令 rpm -ivh mysql.rpm
按照提示完成配置工作

2、建立复制账户
GRANT REPLICATION SLAVE ON *.* TO ‘mysql1’@’%’ IDENTIFIED BY ‘xifenfei’;

3、拷贝my-medium.cnf文件到/etc/my.cnf并修改相关参数
1)主服务器(确定这两个参数启动)
[mysqld]
log-bin
server-id=1

2)从服务器
server-id=2
方案一:
master-host =192.168.137.134
master-user =mysql1
master-password =xifenfei
master-port = 3306(默认可以不设置)
方案二:在mysql中执行
CHANGE MASTER TO
-> MASTER_HOST=’192.168.137.134′,
-> MASTER_USER=’mysql1′,
-> MASTER_PASSWORD=’xifenfei’,
-> MASTER_LOG_FILE=’recorded_log_file_name’,[可选]
-> MASTER_LOG_POS=recorded_log_position;[可选]

4、建立主服务器快照
可以使用拷贝文件实现
FLUSH TABLES WITH READ LOCK;
使用tar打包,复制到从服务器上
SHOW MASTER STATUS;–记录下当前快照是的日志文件情况
UNLOCK TABLES;
在从服务器上解压tar包到数据文件目录下

5、启动主从服务器
在从服务器上执行
SHOW MASTER STATUS;
查看状态,如果都和主服务器刚刚记录下来的一致表明配置成功,也可以通过修改主数据库数据,然后从数据库查看,测试是否成功!
SHOW PROCESSLIST\G查看主从服务器相关状态

注:如果从用方案二配置从服务器,在启动的时候,可以通过START SLAVE;启动从服务器线程。

6、总结
从总体说来看,mysql的主从复制同步,比oracle的data guard配置起来简单多了,但是同时也表现出来了,没有oracle的强大,这个只是相当于oracle中的逻辑复制功能。

达梦数据库命令行工具

1、数据库初始化工具 initdb

initdb -I c:\dmdb\dm.ini -P c:\dmdb\data -Es16 -PS 8 -SC Y -NU N -UC 1
其实就是通过修改安装目录下的dm.ini文件而已(基本没用,除了重试密码)

2、交互式工具 Isql

这个和sqlplus有几分相似,具体功能还没有测试,整体比较喜欢

3、backup和restore数据库备份与恢复工具
backup参数意义

backup c:\dmdbms\bin\dm.ini xifenfei xifenfei.bak
restore参数意义

restore c:\dmdbms\bin\dm.ini C:\dmdbms\data\xifenfei.bak
在恢复的过程中很多提示,不爽,不能在参数中全部指定吗?
总体感觉还可以,但是没有oracle中的rman灵活,而且只能进行冷备份,这个不爽

4、impdb和expdb导入和导出工具

expdb USERID=SYSDBA/xifenfei FILE=e:\back.bak LOG=e:\log.txt FULL=Y

impdb USERID=SYSDBA/xifenfei FILE=e:\back.bak LOG=e:\log.txt FULL=Y
总体来说,这个是命名基本上和oracle的exp/imp差不多,应该会喜欢

5、文本文件导入工具
命令参数

控制文件参数

和oracle中的loader工具非常相似,不过我想用的应该不会太多

oracle之data guard(2)——物理standby和primary切换

一、primary库上操作
1、查看primary库转换状态
select switchover_status from v$database
如果是TO STANDBY可以直接进入步骤3
如果是SESSIONS ACTIVE进入步骤2

2、强制把primary设置为standby模式
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
如果更加强制性,则使用
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN NOWAIT;

3、正常方式进入standby模式
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

4、重启数据库,置于mount状态
5、再次查看witchover_status状态
如果为TO PRIMARY ,表示primary切换成standby成功,如果不是请查看配置文件

二、在原standb库上配置
1、查看witchover_status状态
select switchover_status from v$database
如果是TO PRIMARY正常
如果是SESSIONS ACTIVE在2的命令后面加上 WITH SESSION SHUTDOWN ( nowait)

2、standby库切换为primary库
alter database commit to switchover to primary;

3、关闭再打开数据库
shutdown immediate;
startup;

三、测试
在现在的primary库上切换日志,在standby上查看
主库:alter system switch logfile;select name from v$archived_log;
备份库: select name from v$archived_log;
如果两者结果一致,表示切换成功

四、从MAXIMUM PERFORMANCE到MAXIMUM PROTECTION的切换
1、添加standby redo
数量:(maximum number of logfiles for each thread + 1) * maximum number of threads
alter database add standby logfile thread 1 ‘C:\oracle\product\10.2.0\oradata\orcl\redo04.log’ size 50m;
note:和redo log等大,数量每个thread比redo log多一个,最好standby和primary都添加,因为要转换

2、关闭数据库,置于mount状态
log_archive_dest_2修改为
alter system set log_archive_dest_2=’service=orcl lgwr sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=orcl’;
主要是: lgwr sync affirm

3、设置为maximize protection
alter database set standby database to maximize protection;

4、open数据库并测试
测试 主要是通过v$archived_log视图实现
使用select protection_mode from v$database;查看数据库保护状态

五、MAXIMUM PROTECTION模式下primary、standby 库的相互切换
1、在primary库上配置
1)关闭除本操作连接外的所有数据库连接
2)alter database commit to switchover to physical standby;
3)select t.PROTECTION_MODE,t.DATABASE_ROLE from v$database t;

如上图表示成功

2、在standby上操作
1)alter database commit to switchover to physical standby;
2)ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
3)shutdown immedate;startup mount;
4)alter system set log_archive_dest_2=’service=xff lgwr sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=xff’;(修改为同步传输)
5)alter database open;

如上图表示成功

oracle之data guard(1)——物理standby建立

一、primary数据库配置及相关操作
1、数据库启动强制归档模式
alter database force logging;
2、确保数据库是archivelog模式

--archive log list查看是否已经归档
--如果不是使用下面语句进行设置
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

3、创建standby 数据库控制文件
alter database create standby controlfile as ‘c:\orcl.ctl’;
4、修改初始化参数文件,并重新创建spfile

*.db_name='orcl'
db_unique_name='orcl'
log_archive_config='dg_config=(orcl,xff)'
*.log_archive_dest_1='location=C:\archive\orcl\ valid_for=(all_logfiles,all_roles) db_unique_name=orcl'
*.log_archive_dest_2='service=xff lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=xff'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
fal_server=xff
fal_client=orcl
db_file_name_convert='c:\xff\data\','C:\oracle\product\10.2.0\oradata\orcl'
log_file_name_convert='c:\xff\data\','C:\oracle\product\10.2.0\oradata\orcl'
standby_file_management=auto

5、配置listener 及net service names(我建议使用net manager)
最好 执行lsnrctl stop lsnrctl start重新启动监听程序
6、关闭数据库并备份。

二、Standby数据库配置及相关操作
1、创建进程和密码文件(注意密码要和primary中的sys的密码一致)
oradim -new -sid xff -intpwd oracle(密码为oracle)(当然也可以把primar中的密码文件改名拷贝过来)
2、创建文件夹,并拷贝备份的归档文件和数据库文件
3、修改初始化参数文件(使用刚刚修改的primary中的参数文件进行修改)

*.control_files='c:\xff\data\xff.ctl'
*.db_name='orcl'
db_unique_name='xff'
log_archive_config='dg_config=(orcl,xff)'
*.log_archive_dest_1='location=C:\archive\xff\ valid_for=(all_logfiles,all_roles) db_unique_name=xff'
*.log_archive_dest_2='service=orcl lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=orcl'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
fal_server=orcl
fal_client=xff
db_file_name_convert='C:\oracle\product\10.2.0\oradata\orcl','c:\xff\data\'
log_file_name_convert='C:\oracle\product\10.2.0\oradata\orcl','c:\xff\data\'
standby_file_management=auto
--注意修改一些dump文件路径

4、启动数据库到mount状态
startup mount;
5、启动redo 应用
alter database recover managed standby database disconnect from session;(redo apply)
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;(real-time apply)
三、检查配置结果
1、首先连接到primary 数据库
alter system switch logfile;
select name from v$archived_log;
2、连接到standby数据库
select name from v$archived_log;
如果和primary一致,再重复1、2操作,并且还是保持一致,说明配置成功
3、暂停redo应用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
4、执行read only状态
执行3只是暂时redo 应用,并不是停止Standby 数据库,standby 仍会保持接收只不过不会再应用
接收到的归档,直到你再次启动redo 应用为。
在暂停redo应用的状态中可以把数据库至于read only状态用于查询
alter database open read only;(在11g中没有这个限制)
5、解决redo 不能被读取或者不能正常open
把standby数据库至于mount状态,执行
recover standby database until cancel;
选择cancel
再alter database open确保数据库中的所有文件scn号一致
然后添加临时文件
alter tablespace temp add tempfile ‘c:\xff\data\tm.dbf’ size 5m reuse;
确保数据库可以进行一般正常的操作
虚拟机中的pfile配置文件