灿烂的阳光,苦涩的生活,认真做,你能行!

发布新日志

  • sql 使用dateADD函数 自增时间

    2009-12-18 16:36:43

    来自塞北云

    这两天又温习了一下SQL,好久没有动过了。。。人都锈竇了哦。

    第一种分钟自增:

    declare @i int,@a varchar(20),@c datetime
    set @i=0
    set @a='100100000'
    set @c='2009-9-11 10:06:01'
    while @i<=20
    begin

        insert T_create_time
         select left(@a,9)+right('000'+ltrim(@i),3),
                 dateadd(minute,1,@c)       
          set @i=@i+1
          set @c=dateadd(minute,1,@c)
    end

    =============运行结果如下

    100100000000       2009-9-11 10:07:01

    100100000001       2009-9-11 10:08:01

    100100000002       2009-9-11 10:09:01

    。。。。

    。。。。

    。。。。

     

    第二种分钟自增:

    declare @i int,@a varchar(20),@c datetime
    set @i=0
    set @a='100100000'
    set @c='2009-9-11 10:06:01'
    while @i<=20
    begin

        insert T_create_time
         select left(@a,9)+right('000'+ltrim(@i),3),
                 dateadd(minute,1,@c)       
          set @i=@i+1
          set @c=@c+1
    end

    =============运行结果如下

    100100000000       2009-9-12 10:07:01

    100100000001       2009-9-13 10:07:01

    100100000002       2009-9-14 10:07:01

    。。。。

    。。。。

    。。。。

    利用这种方法可以为数据库中的某个表插入大量数据库,可以做大数据量的测试工具打好前提,如果涉及多张表的话,可以考虑用触发器同时对多表进行操作。 :)

  • SQL中插入多行(包括列某部分自增)

    2009-09-09 17:43:22

    若表t_run_users中有字段user_no , user_name ,create_date 三字段,其中主键user_no中值为100100000000(12位),user_name的值为0000,(应该不为主键也可用此办法)

    declare @i int,@a varchar(20)
    set @i=1
    set @a='1001'
    while @i<=200
    begin
        insert T_Run_Users
         select left(@a,4)+right('00000000'+ltrim(@i),8),
                right('0000'+ltrim(@i),4), 
                '2009-09-08 09:22:39'
          set @i=@i+1
    end

    扫行出来的结果如下

    ------------------

    user_no              user_name         create_date

    100100000000         0000              2009-09-08 09:22:39

    100100000001         0001              2009-09-08 09:22:39

    100100000002         0002              2009-09-08 09:22:39

    .......

    .......

     

    :)  

  • MySQL 5.0 数据库备份与恢复:

    2009-09-28 12:20:44

    1,  用 mysqldump 命令进行备份:
        在命令提示符窗口(注意不是 MySQL 的 MySQL Command Line Client 窗口)中输入,
        C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqldump -hlocalhost -uroot -proot        temp  > temp_20071106.sql
        或:C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqldump -hlocalhost -u root -proot    temp > temp_20071106.sql
        或:C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqldump -h localhost -u root -proot  temp > temp_20071106.sql
        先进入到 MySQL安装目录的bin目录下(便于存放生成的*.sql文件,也可以直接打开命令提示符窗口,默认存放路径为"C:\Documents and Settings\Administrator>").其中-h,-u两个参数名与参数值之间可用或不用空格分隔, 但-p参数的参数名与参数值之间是一定不能加空格的,也可以这样输入:
        C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqldump -hlocalhost -uroot -p temp > temp_20071106.sql
        Enter password: root
        在后面再输入密码也可以成功.
        -h指出备份的数据库在本机,-u指出用户名,-p指出密码,temp为数据库名,后面可具体指定备份的数据表.
        结果生成的 temp_20071106.sql 文件会自动存在C:\Program Files\MySQL\MySQL Server 5.0\bin目录下.
       

    2,  用mysql 命令进行恢复:
        C:\Program Files\MySQL\MySQL Server 5.0\bin>mysql  -hlocalhost  -uroot  -proot          temp  < temp_20071106.sql
        输入此命令后,数据库中的数据将恢复到备份时的数据.
        注意:恢复时, temp 必须存在,数据库可空.恢复时会自动删除要恢复的表,再重新创建,插入数据.

     

  • 安装oracle时候遇到的问题,“指定的SID在本机上已经存在”

    2009-08-31 16:44:58

    前置条件:

    卸载oracle9i,安装oracle10.2.0版本。遇到问题“指定的SID在本机上已经存在”。

    分析:问题出在oracle9i的卸载上。

    解决办法:

    1、   开始->设置->控制面板->管理工具->服务   停止所有Oracle服务。  
      2、   开始->程序->Oracle   -   OraHome81->Oracle   Installation   Products->   Universal   Installer   卸装所有Oracle产品,但Universal   Installer本身不能被删除    
      5、   运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。    
      6、   运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动   这个列表,删除所有Oracle入口。    
      7、   运行refedit,   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,   删除所有Oracle入口。    
      8、   开始->设置->控制面板->系统->高级->环境变量   删除环境变量CLASSPATH和PATH中有关Oracle的设定    
      9、   从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标    
      10、   删除\Program   Files\Oracle目录    
      11、   重新启动计算机,重起后才能完全删除Oracle所在目录   12、   删除与Oracle有关的文件,选择Oracle所在的缺省目录C:\Oracle,删除这个入   口目录及所有子目录,并从Windows   2000目录(一般为C:\WINNT)下删除以下文   件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。   13、   WIN.INI文件中若有[ORACLE]的标记段,删除该段    
      14、   如有必要,删除所有Oracle相关的ODBC的DSN    
      15、   到事件查看器中,删除Oracle相关的日志   说明:   如果有个别DLL文件无法删除的情况,则不用理会,重新启动,开始新的安装,   安装时,选择一个新的目录,则,安装完毕并重新启动后,老的目录及文件就可以删除掉了。  

  • oracle10g中建立dns链接

    2009-06-16 16:28:46

    修改oracle配置文件

    文件的位置:c:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora

    建立的代码:

    MAHEE=

    (DESCRIPTION=

       (ADDRESS_LIST=

        (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.46)(PORT=1521))

        )

        (CONNECT_DATA=

          (SERVICE_NAME=pitts)

        )

    )

  • MySQL数据库中Show命令的用法

    2009-02-02 16:15:10

    MySQL中有很多的基本命令,show命令也是其中之一,在很多使用者中对show命令的使用还容易产生混淆,

    本文主要介绍了show命令的主要用法。

      a. show tables或show tables from database_name; -- 显示当前数据库中所有表的名称。

      b. show databases; -- 显示mysql中所有数据库的名称。

      c. show columns from table_name from database_name; 或show columns from database_name.table_name; -- 显示表中列名称。

      d. show grants for user_name; -- 显示一个用户的权限,显示结果类似于grant 命令。

      e. show index from table_name; -- 显示表的索引。

      f. show status; -- 显示一些系统特定资源的信息,例如,正在运行的线程数量。

      g. show variables; -- 显示系统变量的名称和值。

      h. show processlist; -- 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。

      i. show table status; -- 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间。

      j. show privileges; -- 显示服务器所支持的不同权限。

      k. show create database database_name; -- 显示create database 语句是否能够创建指定的数据库。

      l. show create table table_name; -- 显示create database 语句是否能够创建指定的数据库。

      m. show engies; -- 显示安装以后可用的存储引擎和默认引擎。

      n. show innodb status; -- 显示innoDB存储引擎的状态。

      o. show logs; -- 显示BDB存储引擎的日志。

      p. show warnings; -- 显示最后一个执行的语句所产生的错误、警告和通知。

      q. show errors; -- 只显示最后一个执行语句所产生的错误。

      r. show [storage] engines; --显示安装后的可用存储引擎和默认引擎。

  • oracle内存调优参数详解

    2009-01-06 10:12:18

    来源:
    http://blog.csdn.net/chenanlin1981/archive/2007/04/05/1553160.aspx

    Oracle内存参数调优技术详解 
    前言

    近来公司技术,研发都在问我关于内存参数如何设置可以优化oracle的性能,所以抽时间整理了这篇文档,以做参考.

    目的

    希望通过整理此文档,使大家对oracle内存结构有一个全面的了解,并在实际的工作中灵活应用,使oracle的内存性能达到最优配置,提升应用程序反应速度,并进行合理的内存使用.

    内容

    实例结构

    oracle实例=内存结构+进程结构

    oracle实例启动的过程,其实就是oracle内存参数设置的值加载到内存中,并启动相应的后台进程进行相关的服务过程。

    进程结构

    oracle进程=服务器进程+用户进程

    几个重要的后台进程:

    DBWR:数据写入进程.

    LGWR:日志写入进程.

    ARCH:归档进程.

    CKPT:检查点进程(日志切换;上一个检查点之后,又超过了指定的时间;预定义的日志块写入磁盘;例程关闭,DBA强制产生,表空间offline)

    LCKn(0-9):封锁进程.

    Dnnn:调度进程.

    内存结构(我们重点讲解的)

    内存结构=SGA(系统全局区)+PGA(程序全局区)

    SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写

     

    我们重点就是设置SGA,理论上SGA可占OS系统物理内存的1/2——1/3

    原则:SGA+PGA+OS使用内存<总物理RAM

    SGA=((db_block_buffers*blocksize)+(shared_pool_size+large_pool_size+java_pool_size+log_buffers)+1MB

    1、SGA系统全局区.(包括以下五个区)

    A、数据缓冲区:(db_block_buffers)存储由磁盘数据文件读入的数据。

    大小: db_block_buffers*db_block_size

             Oracle9i设置数据缓冲区为:Db_cache_size

             原则:SGA中主要设置对象,一般为可用内存40%。

    B、共享池:(shared_pool_size):数据字典,sql缓冲,pl/sql语法分析.加大可提速度。

    原则:SGA中主要设置对象,一般为可用内存10%

    C、日志缓冲区:(log_buffer)存储数据库的修改信息.

             原则:128K ---- 1M 之间,不应该太大

    D 、JAVA池(Java_pool_size)主要用于JAVA语言的开发.

             原则:若不使用java,原则上不能小于20M,给30M通常就够了
    E、 大池(Large_pool_size)  如果不设置MTS,主要用于数据库备份恢复管理器RMAN。

             原则:若不使用MTS,5---- 10M 之间,不应该太大

    SGA=. db_block_buffers*db_block_size+ shared_pool_size+ log_buffer+Java_pool+size+large_pool_size

           原则: 达到可用内存的55-58%就可以了.

    2、PGA程序全局区

    PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反PGA 是只被一个进程使用的区域,PGA 在创建进程时分配在终止进程时回收.

    A、Sort_area_size 用于排序所占内存

    B、Hash_area_size 用于散列联接,位图索引

    这两个参数在非MTS下都是属于PGA ,不属于SGA,是为每个session单独分配的,在我们的服务器上除了OS + SGA,一定要考虑这两部分
    原则:OS 使用内存+SGA+并发执行进程数*(sort_area_size+hash_ara_size+2M) < 0.7*总内存

    实例配置

    一:物理内存多大

    二:操作系统估计需要使用多少内存

    三:数据库是使用文件系统还是裸设备

    四:有多少并发连接

    五:应用是OLTP 类型还是OLAP 类型

    基本掌握的原则是, db_block_buffer 通常可以尽可能的大,shared_pool_size 要适度,log_buffer 通常大到几百K到1M就差不多了

         A、如果512M RAM 单个CPU   db_block_size 是8192 bytes
     SGA=0.55*512M=280M左右

    建议 shared_pool_size = 50M, db_block_buffer* db_block_size = 200M
    具体: shared_pool_size =52428800 #50M

    db_block_buffer=25600      #200M

    log_buffer = 131072         # 128k (128K*CPU个数)

                 large_pool_size=7864320      #7.5M

                 java_pool_size = 20971520    # 20 M

                 sort_area_size = 524288      # 512k (65k--2M)

                 sort_area_retained_size = 524288   # MTS 时 sort_area_retained_size = sort_area_size

    B、如果1G RAM     单个CPU   db_block_size 是8192 bytes
    SGA=0.55*1024M=563M左右
    建议 shared_pool_size = 100M , db_block_buffer* db_block_size = 400M
    具体: shared_pool_size=104857600    #100M

              db_block_buffer=51200         #400M

     log_buffer = 131072         # 128k (128K*CPU个数)

                   large_pool_size=15728640       #15M

              java_pool_size = 20971520    # 20 M

    sort_area_size = 524288      # 512k (65k--2M)

                  sort_area_retained_size = 524288   # MTS 时 sort_area_retained_size = sort_area_size

     

    C、如果2G     单个CPU   db_block_size 是8192 bytes

    SGA=0.55*2048M=1126.4M左右
    建议 shared_pool_size = 200M , db_block_buffer *db_block_size = 800M

           具体: shared_pool_size=209715200    #200M

              db_block_buffer=103192         #800M

     log_buffer = 131072            # 128k (128K*CPU个数)

                   large_pool_size= 31457280      #30M

              java_pool_size = 20971520      # 20 M

    sort_area_size = 524288         # 512k (65k--2M)

                  sort_area_retained_size = 524288   # MTS 时 sort_area_retained_size = sort_area_size

     

     

    假定64 bit ORACLE

    内存4G

    shared_pool_size = 200M , data buffer = 2.5G

     

    内存8G

    shared_pool_size = 300M , data buffer = 5G

     

    内存 12G

    shared_pool_size = 300M-----800M , data buffer = 8G

    参数更改方式

    oracle8i:

    主要都是通过修改oracle启动参数文件进行相关的配置

    参数文件位置:

    d:\oracle\admin\DB_Name\pfile\init.ora

    按以上修改以上参数值即可。

    Oracle9i:

    两种方式:第一种是修改oracle启动参数文件后,通过此参数文件再创建服务器参数文件

              第二种是直接运行oracle修改命令进行修改。

    SQL>alter system set db_cache_size=200M scope=spfile;

    SQL>alter system set shared_pool_size=50M scope=spfile;

  • 连接数据库报错

    2008-12-16 16:26:00

    连接数据库报错
    java.sql.SQLException:   The   Network   Adapter   could   not   establish   the   connection

    用sqlplus   连接数据库可以连上
    java连接时报错。
    用ip地址作连接,防火墙以关/

    管理工具--> 服务   中启动OracleOraDb10g_home1TNSListener服务后再刷新看该服务是否还显示为“已启动”。

    9i2我把C:\oracle\ora92\network\admin目录下的listener.ora和tnsnames.ora文件中的HOST全部改为:HOST   =   127.0.0.1   就好了,我以前遇见过这种情况。


    #   LISTENER.ORA   Network   Configuration   File:   C:\oracle\ora92\network\admin\listener.ora
    #   Generated   by   Oracle   configuration   tools.

    LISTENER   =
        (DEscrīptION_LIST   =
            (DEscrīptION   =
                (ADDRESS_LIST   =
                    (ADDRESS   =   (PROTOCOL   =   IPC)(KEY   =   EXTPROC0))
                )
                (ADDRESS_LIST   =
                    (ADDRESS   =   (PROTOCOL   =   TCP)(HOST   =   127.0.0.1)(PORT   =   1521))
                )
            )
        )

    SID_LIST_LISTENER   =
        (SID_LIST   =
            (SID_DESC   =
                (SID_NAME   =   PLSExtProc)
                (ORACLE_HOME   =   C:\oracle\ora92)
                (PROGRAM   =   extproc)
            )
            (SID_DESC   =
                (GLOBAL_DBNAME   =   tfpc)
                (ORACLE_HOME   =   C:\oracle\ora92)
                (SID_NAME   =   tfpc)
            )
        )

    **********************

    #   TNSNAMES.ORA   Network   Configuration   File:   C:\oracle\ora92\network\admin\tnsnames.ora
    #   Generated   by   Oracle   configuration   tools.

    TFPC   =
        (DEscrīptION   =
            (ADDRESS_LIST   =
                (ADDRESS   =   (PROTOCOL   =   TCP)(HOST   =   127.0.0.1)(PORT   =   1521))
            )
            (CONNECT_DATA   =
                (SERVER   =   DEDICATED)
                (SERVICE_NAME   =   tfpc)
            )
        )

    INST1_HTTP   =
        (DEscrīptION   =
            (ADDRESS_LIST   =
                (ADDRESS   =   (PROTOCOL   =   TCP)(HOST   =   127.0.0.1)(PORT   =   1521))
            )
            (CONNECT_DATA   =
                (SERVER   =   SHARED)
                (SERVICE_NAME   =   MODOSE)
                (PRESENTATION   =   http://HRService)
            )
        )

    EXTPROC_CONNECTION_DATA   =
        (DEscrīptION   =
            (ADDRESS_LIST   =
                (ADDRESS   =   (PROTOCOL   =   IPC)(KEY   =   EXTPROC0))
            )
            (CONNECT_DATA   =
                (SID   =   PLSExtProc)
                (PRESENTATION   =   RO)
            )
        )

    telnet   localhost   1521
    然后什么都不显示

    lz这样:开始--> 运行--> cmd--> netstat   -na
    找找里面有没有如下一行:
    TCP         127.0.0.1:1521                   0.0.0.0:0                             LISTENING

    嗯,不错,换成ip地址就没错了!
    真不明白是自己的ip地址和localhost或127.0.0.1有什么区别?

  • PLSQL导入导出数据库

    2008-11-04 16:20:16

    导出数据库

    建议使用plsql6.0,这样可以在导出sql文件的时候不记录原有表空间的名字

    步骤:

    1 tools --export user object:去除 include storage 选项,点击"export"按钮

    这里不要用export tables 这样就没法导出存储过程,只有表结构

    2 tools --export tables 导出dmp文件

    导入数据库

    步骤:

    1 tools--import tables 导入sql文件,然后再导入dmp文件

  • 数据统计

    • 访问量: 45050
    • 日志数: 144
    • 建立时间: 2008-10-07
    • 更新时间: 2013-06-01

    RSS订阅

    Open Toolbar