修改oracle 10g的字符集

修改数据库字符集为:ZHS16GBK
查看服务器端字符集SQL > select * from V$NLS_PARAMETERS
修改:$sqlplus /nolog
SQL>conn / as sysdba
若此时数据库服务器已启动,则先执行 SHUTDOWN IMMEDIATE 命令关闭数据库服务器,
然后执行以下命令:
SQL>shutdown immediate;
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;
ERROR at line 1:ORA-12721: operation cannot execute when other sessions are active
若出现上面的错误,使用下面的办法进行修改,使用INTERNAL_USE可以跳过超集的检查:
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP;

oracle修改字符集

MySQL的定时备份

环境:
服务器:Windows Server 2003
MySQL 安装位置:C:\MySQL
数据库名称为:testdb
MySQL root 密码:123456
数据库备份目的地:D:\db_backup\
脚本:
@echo off
mysqldump –opt -h localhost -u root –password=123456 testdb > D:\db_backup\testdb\%date:~0,10%.sql

将以上代码保存为backup_db.bat 然后使用Windows的“计划任务”定时执行该脚本即可。
(例如:每天凌晨5点执行back_db.bat)

mysql导入.sql文件

1.导出整个数据库

 mysqldump -u 用户名 -p 数据库名 > 导出的文件名

 mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql

2.导出一个表

 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

 mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql

3.导出一个数据库结构

 mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql

 -d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table

4.导入数据库

 常用source 命令

 进入mysql数据库控制台,

 如mysql -u root -p

 mysql>use 数据库

 然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

 mysql>source d:\wcnc_db.sql

ORA-01747: invaid user.table.column, table.column, or column specification错误

第一次尝试用子查询插入数据,结果发生了如标题的错误提示,从网上查了一下,说是因为里面的字段名可能用到了orcal的关键字
我懒得查orcal有哪些关键字,查到了还得一一对照查找,就用了一个办法来解决这个问题,就是将所有的字段名都用双引号括起来,如
insert into Table1(“id”,”title”) select id,title from Table2

如何用SQL注入攻击登陆界面

适用范围:

1. 如果一个系统是通过

SELECT * FROM accounts WHERE username=’admin’ and password = ‘password’这种显式的SQL来进行登陆校验,

也就是执行这个SQL语句,如果数据库中存在用户名为admin, password为password的用户,就登陆成功,否则就登陆失败。
2. 系统没有对用户输入进行全面的过滤

3. 系统后台使用的是MYSQL数据库

4. 系统中存在一个user name为admin的用户

攻击原理:

利用MYSQL的注释功能,也就是”/*”, mysql执行SQL脚本时,如果遇到/*标示符,就会把之以后的SQL当做注释而不会执行,

正常情况下用户在用户名框内输入”admin”,在password框内输入”password”, 后台执行的SQL语句就为

SELECT * FROM accounts WHERE username=’admin’ and password = ‘password’

但是如果在用户名框内输入”admin’ AND 1=1 /*”, 在密码框内输入任意字符串,那么后台执行的SQL就为

SELECT * FROM accounts WHERE username=’admin’ AND 1=1 /* and password = ‘aa’, 可以看到数据库实际执行的SQL为

SELECT * FROM accounts WHERE username=’admin’ AND 1=1, 而/*后面的SQL就被当做注释而忽略掉了,登陆成功!