精华内容
下载资源
问答
  • ubuntu下修改只读文件或文件夹方法

    千次阅读 2020-08-03 11:12:04
    三位的每一位都表示一个用户类型的权限设置。取值是0~7,即二进制的[000]~[111]。 这个三位的二进制的每一位分别表示读、写、执行权限。 如000表示三项权限均无,而100表示只读。这样,我们

    ubuntu下修改只读文件或文件夹方法

    1.用terminal修改只读文件权限

    sudo chmod 777 ××× (每个人都有读和写以及执行的权限)

    其中xxx为文件或文件夹名。

    chmod整个命令的形式的用法如下:
    sudo chmod -(代表类型)×××(所有者)×××(组用户)×××(其他用户)
    三位数的每一位都表示一个用户类型的权限设置。取值是0~7,即二进制的[000]~[111]。
    这个三位的二进制数的每一位分别表示读、写、执行权限。
    如000表示三项权限均无,而100表示只读。这样,我们就有了下面的对应:

    0 [000] 无任何权限

    4 [100] 只读权限

    6 [110] 读写权限

    7 [111] 读写执行权限

    特别说明:
    设置为Set-UID程序:
    sudo chown root xxx
    sudo chmod 4755 xxx
    (顺序不能更改,因为更改拥有者将重置Set-UID比特)

    2.用terminal修改只读文件夹及其子文件权限

    chmod -R 777 Document/

    其中document为文件夹名
    -R为表示递归的参数,该命令将修改文件夹以及其子文件的权限

    3.用terminal改变文件或文件夹拥有者

    chown users xxx
    chown 命令将修改文件夹或文件夹的所有者,users为用户名,xxx为文件或文件夹名
    若要修改整个目录内文件的所有者,则可以使用chown -R users xxx
    修改所有者后,右键要修改权限的文件或文件夹,在properties->permissions中即可修改权限

    展开全文
  • mysql 创建只读账号

    千次阅读 2019-06-27 15:46:33
    GRANT Select ON *.* TO reader@192.168.1.123 IDENTIFIED BY "123456" ...创建了一个账户名为“reader" , 密码”123456“ 只可以从192.168.1.123发起访问 读取数据库的账号 reader@"%" 则表示所有的ip都可以...

    GRANT Select ON *.* TO reader@192.168.1.123  IDENTIFIED BY "123456"

    GRANT  可以立刻生效

    在mysql 5.6下似乎要重启mysql才生效

    创建了一个账户名为“reader" , 密码”123456“ 只可以从192.168.1.123发起访问   读取数据库的账号

    reader@"%"    则表示所有的ip都可以访问

    参考:

    http://linux.chinaitlab.com/MYSQL/919856.html

    http://linux.chinaitlab.com/MYSQL/919856_2.html

    一.权限查看

      mysql> show grants for ‘root’@'localhost’ ;

      +——————————————————————————-+

      | Grants for root@localhost |

      +——————————————————————————-+

      | GRANT ALL PRIVILEGES ON *.* TO ‘root’@'localhost’ WITH GRANT OPTION |

      +——————————————————————————-+

      二.权限设置

      1.创建账号或者赋予权限

      GRANT privileges (columns) ON what TO user IDENTIFIED BY "password" WITH GRANT OPTION

      GRANT语句的语法看上去像这样:

      GRANT privileges (columns) ON what TO user IDENTIFIED BY "password" WITH GRANT OPTION

      要使用该语句,你需要填写下列部分:

      privileges 授予用户的权限,下表列出可用于GRANT语句的权限指定符:

      权限指定符 权限允许的操作

      Alter       修改表和索引

      Create      创建数据库和表

      Delete      删除表中已有的记录

      Drop    抛弃(删除)数据库和表

      INDEX      创建或抛弃索引

      Insert      向表中插入新行

      REFERENCE   未用

      Select     检索表中的记录

      Update      修改现存表记录

      FILE       读或写服务器上的文件

      PROCESS    查看服务器中执行的线程信息或杀死线程

      RELOAD     重载授权表或清空日志、主机缓存或表缓存。

      SHUTDOWN   关闭服务器

      ALL       所有;ALL PRIVILEGES同义词

      USAGE     特殊的“无权限”权限

      上表显示在第一组的权限指定符适用于数据库、表和列,第二组数管理权限。一般,这些被相对严格地授权,因为它们允许用户影响服务器的操作。第三组权限特殊,ALL意味着“所有权限”,UASGE意味着无权限,即创建用户,但不授予权限。

      columns   权限运用的列,它是可选的,并且你只能设置列特定的权限。如果命令有多于一个列,应该用逗号分开它们。

      what   权限运用的级别。权限可以是全局的(适用于所有数据库和所有表)、特定数据库(适用于一个数据库中的所有表)或特定表的。可以通过指定一个columns字句是权限是列特定的。

      user    权限授予的用户,它由一个用户名和主机名组成。在MySQL中,你不仅指定谁能连接,还有从哪里连接。这允许你让两个同名用户从不同地方连接。 MySQL让你区分他们,并彼此独立地赋予权限。MySQL中的一个用户名就是你连接服务器时指定的用户名,该名字不必与你的Unix登录名或 Windows名联系起来。缺省地,如果你不明确指定一个名字,客户程序将使用你的登录名作为MySQL用户名。这只是一个约定。你可以在授权表中将该名 字改为nobody,然后以nobody连接执行需要超级用户权限的操作。

      password    赋予用户的口令,它是可选的。如果你对新用户没有指定IDENTIFIED BY子句,该用户不赋给口令(不安全)。对现有用户,任何你指定的口令将代替老口令。如果你不指定口令,老口令保持不变,当你用IDENTIFIED BY时,口令字符串用改用口令的字面含义,GRANT将为你编码口令,不要你用SET PASSWORD 那样使用password()函数。

      WITH GRANT OPTION子句是可选的。如果你包含它,用户可以授予权限通过GRANT语句授权给其它用户。你可以用该子句给与其它用户授权的能力。

      注意:用户名、口令、数据库和表名在授权表记录中是大小写敏感的,主机名和列名不是。

      一般地,你可以通过询问几个简单的问题来识别GRANT语句的种类:

      谁能连接,从那儿连接?

      用户应该有什么级别的权限,他们适用于什么?

      用户应该允许管理权限吗?

      下面就讨论一些例子。

      1.1 谁能连接,从那儿连接?

      你可以允许一个用户从特定的或一系列主机连接。有一个极端,如果你知道降职从一个主机连接,你可以将权限局限于单个主机:

      GRANT ALL ON samp_db.* TO boris@localhost IDENTIFIED BY "ruby"

      GRANT ALL ON samp_db.* TO fred@res.mars.com IDENTIFIED BY "quartz"

      (samp_db.*意思是“samp_db数据库的所有表)另一个极端是,你可能有一个经常旅行并需要能从世界各地的主机连接的用户max。在这种情况下,你可以允许他无论从哪里连接:

      GRANT ALL ON samp_db.* TO max@% IDENTIFIED BY "diamond"

      “%”字符起通配符作用,与LIKE模式匹配的含义相同。在上述语句中,它意味着“任何主机”。所以max和max@%等价。这是建立用户最简单的方法,但也是最不安全的。

      其中,你可以允许一个用户从一个受限的主机集合访问。例如,要允许mary从snake.net域的任何主机连接,用一个%.snake.net主机指定符:

      GRANT ALL ON samp_db.* TO mary@.snake.net IDENTIFIED BY "quartz";

      如果你喜欢,用户标识符的主机部分可以用IP地址而不是一个主机名来给定。你可以指定一个IP地址或一个包含模式字符的地址,而且,从MySQL 3.23,你还可以指定具有指出用于网络号的位数的网络掩码的IP号:

      GRANT ALL ON samp_db.* TO boris@192.168.128.3 IDENTIFIED BY "ruby"

      GRANT ALL ON samp_db.* TO fred@192.168.128.% IDENTIFIED BY "quartz"

      GRANT ALL ON samp_db.* TO rex@192.168.128.0/17 IDENTIFIED BY "ruby"

      第一个例子指出用户能从其连接的特定主机,第二个指定对于C类子网192.168.128的IP模式,而第三条语句中,192.168.128.0/17指定一个17位网络号并匹配具有192.168.128头17位的IP地址。

      1.2 用户应该有什么级别的权限和它们应该适用于什么?

    你可以授权不同级别的权限,全局权限是最强大的,因为它们适用于任何数据库。要使ethel成为可做任何事情的超级用户,包括能授权给其它用户,发出下列语句:

      GRANT ALL ON *.* TO ethel@localhost IDENTIFIED BY "coffee" WITH GRANT OPTION

      ON子句中的*.*意味着“所有数据库、所有表”。从安全考虑,我们指定ethel只能从本地连接。限制一个超级用户可以连接的主机通常是明智的,因为它限制了试图破解口令的主机。

      有些权限(FILE、PROCESS、RELOAD和SHUTDOWN)是管理权限并且只能用"ON *.*"全局权限指定符授权。如果你愿意,你可以授权这些权限,而不授权数据库权限。例如,下列语句设置一个flush用户,他只能发出flush语句。 这可能在你需要执行诸如清空日志等的管理脚本中会有用:

      GRANT RELOAD ON *.* TO flushl@localhost IDENTIFIED BY "flushpass"

      一般地,你想授权管理权限,吝啬点,因为拥有它们的用户可以影响你的服务器的操作。

      数据库级权限适用于一个特定数据库中的所有表,它们可通过使用ON db_name.*子句授予:

      GRANT ALL ON samp_db TO bill@racer.snake.net INDETIFIED BY "rock" GRANT Select ON samp_db TO ro_user@% INDETIFIED BY "rock"

      第一条语句向bill授权samp_db数据库中所有表的权限,第二条创建一个严格限制访问的用户ro_user(只读用户),只能访问samp_db数据库中的所有表,但只有读取,即用户只能发出Select语句。

      你可以列出一系列同时授予的各个权限。例如,如果你想让用户能读取并能修改现有数据库的内容,但不能创建新表或删除表,如下授予这些权限:

      GRANT Select,Insert,Delete,Update ON samp_db TO bill@snake.net INDETIFIED BY "rock"

      对于更精致的访问控制,你可以在各个表上授权,或甚至在表的每个列上。当你想向用户隐藏一个表的部分时,或你想让一个用户只能修改特定的列时,列特定权限非常有用。如:

      GRANT Select ON samp_db.member TO bill@localhost INDETIFIED BY "rock"

      GRANT Update (expiration) ON samp_db. member TO bill@localhost

      第一条语句授予对整个member表的读权限并设置了一个口令,第二条语句增加了Update权限,当只对expiration列。没必要再指定口令,因为第一条语句已经指定了。

      如果你想对多个列授予权限,指定一个用逗号分开的列表。例如,对assistant用户增加member表的地址字段的Update权限,使用如下语句,新权限将加到用户已有的权限中:

      GRANT Update (street,city,state,zip) ON samp_db TO assistant@localhost

      1.3 用户应该被允许管理权限吗?

      你可以允许一个数据库的拥有者通过授予数据库上的所有拥有者权限来控制数据库的访问,在授权时,指定WITH GRANT OPTION。例如:如果你想让alicia能从big.corp.com域的任何主机连接并具有sales数据库中所有表的管理员权限,你可以用如下 GRANT语句:

      GRANT ALL ON sales.* TO alicia@%.big.corp.com INDETIFIED BY "applejuice" WITH GRANT OPTION

      在效果上WITH GRANT OPTION子句允许你把访问授权的权利授予另一个用户。要注意,拥有GRANT权限的两个用户可以彼此授权。如果你只给予了第一个用户Select权 限,而另一个用户有GRANT加上Select权限,那么第二个用户可以是第一个用户更“强大”。

      常见语句:

      常见账号,并赋予权限

      GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON db1.* TO 'linpp'@'192.168.40.111'IDENTIFIED BY 'qq';

      进一步赋予权限

      GRANT SELECT ON db2.* TO 'linpp'@'192.168.40.111';

      2.撤权并删除用户

      要取消一个用户的权限,使用REVOKE语句。REVOKE的语法非常类似于GRANT语句,除了TO用FROM取代并且没有INDETIFED BY和WITH GRANT OPTION子句:

      REVOKE privileges (columns) ON what FROM user

      user部分必须匹配原来GRANT语句的你想撤权的用户的user部分。privileges部分不需匹配,你可以用GRANT语句授权,然后用REVOKE语句只撤销部分权限。

      REVOKE语句只删除权限,而不删除用户。即使你撤销了所有权限,在user表中的用户记录依然保留,这意味着用户仍然可以连接服务器。要完全删除一个用户,你必须用一条Delete语句明确从user表中删除用户记录:

      %mysql -u root mysqlmysql>Delete FROM user ->Where User="user_name" and Host="host_name";mysql>FLUSH PRIVILEGES;

      从ip为 * 以后限制ip 可先删除账号,在构建有ip限制的用户,用户权限不会改变,或者直接修改user表的host

      Delete语句删除用户记录,而FLUSH语句告诉服务器重载授权表。(当你使用GRANT和REVOKE语句时,表自动重载,而你直接修改授权表时不是。)

      常见语句:

      REVOKE UPDATE ON db1.* FROM 'linpp'@'192.168.40.111';

      三.mysql 修改密码

      use mysql

      update user set password=password('你的密码') where User='root';

      flush privileges;

      四.涉及到账号和权限的表

      User

      每一行就是一个用户账号以及用户的全部权限

      Db

      每一行包含了某些用户在数据库级权限

      Host

      每一行包含了用户从指定主机登陆过来时它在一个数据库里的所有权限,这个条目会与db表里的条目合并起来使用。虽然它是作为授权表罗列出来的,但是你无法使用grant,revoke等命令修改这个主机表,你只能手动添加和删除其中的条目。

      建议你不要动这张表。

      Tables_priv

      每一行宝航了指定用户和表的表级别上的权限,也包括了视图和权限在内。

      Columms_priv

      每一行指定了用户和列的列的级别上的权限。

      Procs_priv

      每一行包含了指定用户和存储程序的权限。


     

    展开全文
  • Ubuntu系统文件只读权限修改

    千次阅读 2020-08-09 21:29:45
    Ubuntu系统文件只读权限修改 Ubuntu 更改文件夹bai权限及chmod详细用法如下du: 、常用方法如下:(其中×××指文件名zhi(也可以是文件夹名,不过要在chmod后加dao-ld)。...三位的每位都表

    Ubuntu系统文件只读权限修改

    Ubuntu 更改文件夹bai权限及chmod详细用法如下du:
    一、常用方法如下:(其中×××指文件名zhi(也可以是文件夹名,不过要在chmod后加dao-ld)。)
    sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)

    sudo chmod 777 ××× (每个人都有读和写以及执行的权限)

    二、chmod整个命令的形式的用法如下:
    sudo chmod -(代表类型)×××(所有者)×××(组用户)×××(其他用户)
    三位数的每一位都表示一个用户类型的权限设置。取值是0~7,即二进制的[000]~[111]。
    这个三位的二进制数的每一位分别表示读、写、执行权限。
    如000表示三项权限均无,而100表示只读。这样,我们就有了下面的对应:

    0 [000] 无任何权限

    4 [100] 只读权限

    6 [110] 读写权限

    7 [111] 读写执行权限
    三、查询文件(或文件夹)权限的命令:
    ls -l 文件名称 (文件夹将-l改为-ld)。

    四、chmod命令详细用法 :
    指令名称 : chmod 使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [–help] [–version] mode file… 说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。

    展开全文
  • 只读表空间的备份与恢复

    千次阅读 2011-07-30 13:40:58
     使用一个备份的控制文件时    下面对表空间tbs1置为只读后对比前后生成的重建控制文件的脚本  SQL> alter database backup controlfile to trace as '/tmp/rectl1.sql'; SQL> alter tablespace tbs...
    --======================
    --  只读表空间的备份与恢复
    --======================


    一、只读表空间的特性
        使用只读表空间避免对静态数据的频繁备份
        当使用alter tablespace tbs read only时,数据文件会执行检查点进程(将所有脏缓冲区的内容写至磁盘),
            当前的SCN号会被标注,同时存储了SCN的数据文件头部被冻结.控制文件内也会记录该数据文件的冻结信息。
        可以清除只读表空间的对象
        
    二、只读表空间的备份
        一般情况下,只读表空间只需要进行一次备份,即当表空间状态发生改变时应立即进行备份
        可以使用OS系统cp命令来备份或RMAN进行备份只读表空间
        使用RMAN时建议启用备份优化选项
            RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
            
        只读表空间不支持热备
        SQL> alter tablespace tbs1 begin backup;
        alter tablespace tbs1 begin backup
        *
        ERROR at line 1:
        ORA-01642: begin backup not needed for read only tablespace 'TBS1'

    三、只读表空间的还原与恢复
        还原与恢复只读表空间的问题在于控制文件如何控制只读表空间,分为下列三种情况:    
        ---------  ---------------  ----------------  -------------------------------------
        case           backup 1     crash status                   recovery
        ---------  ---------------  ----------------  -------------------------------------
        case 1        Read-Only        Read-Only      将备份的只读表空间复制到目的地(Restore)
        case 2        Read-Only        Read-Write     先Restore backup1,后recover(applied log )
        case 3        Read-Write       Read-only       先Restore backup1,后recover(applied log )

        只读表空间恢复时需要考虑的问题
            重建一个控制文件时
            重命名数据文件时
            使用一个备份的控制文件时
        
        下面对表空间tbs1置为只读后对比前后生成的重建控制文件的脚本       
    SQL> alter database backup controlfile to trace as '/tmp/rectl1.sql';  
                                                                           
    SQL> alter tablespace tbs1 read only;                                  
                                                                           
    SQL> alter database backup controlfile to trace as '/tmp/rectl2.sql';  
                                                                           
    SQL> ho diff /tmp/rectl1.sql /tmp/rectl2.sql                           
    69,70c69                                                               
    <   '/u01/app/oracle/oradata/orcl/example01.dbf',                      
    <   '/u01/app/oracle/oradata/orcl/tbs01.dbf'                           
    ---                                                                    
    >   '/u01/app/oracle/oradata/orcl/example01.dbf'                       
    97a97,102                                                              
    > -- Files in read-only tablespaces are now named.                     
    > ALTER DATABASE RENAME FILE 'MISSING00006'                            
    >   TO '/u01/app/oracle/oradata/orcl/tbs01.dbf';                       
    >                                                                      
    > -- Online the files in read-only tablespaces.                        
    > ALTER TABLESPACE "TBS1" ONLINE;                                      
    
        对比两者
            1.使用create controlfile命令时,datafile中未列出只读表空间的数据文件
            2.成功创建控制文件并打开后,使用alter database rename file命令重命名只读表空间的数据文件
            3.使用alter tablespace readonly_tablespacename online 将只读表空间联机

    四、演示只读表空间变化的恢复过程        
        1. 演示整个过程为只读表空间的情况(对应前面描述的case 1)       
    SQL> create table scott.tb1 tablespace tbs1                         
      2  as select * from scott.emp;                                    
                                                                        
    SQL> commit;                                                        
                                                                        
    SQL> alter tablespace tbs1 read only;                               
                                                                        
    SQL> select file#,name,enabled from v$datafile where file#=6;       
                                                                        
    	 FILE# NAME                                          ENABLED      
    ---------- --------------------------------------------- ---------- 
    				 6 /u01/app/oracle/oradata/orcl/tbs01.dbf       READ ONLY   
                                                                        
    SQL> ho cp /u01/app/oracle/oradata/orcl/tbs01.dbf /tmp/tbs01.dbf	  
    	                                                                  
    SQL> insert into scott.tb1(empno,ename) values(3333,'Thomas');      
                                                                        
    SQL> update scott.tb1 set sal=sal*1.2 where ename='SCOTT';          
                                                                        
    SQL> delete from scott.tb1 where ename='SCOTT';                     
    --执行上述三条命令,收到下列同样的错误提示                          
    ORA-00372: file 6 cannot be modified at this time                   
    ORA-01110: data file 6: '/u01/app/oracle/oradata/orcl/tbs01.dbf'    
    
            从上面的演示可以看出对只读表空间内的数据作任何DML操作均不可用
            在 Oracle 表空间与数据文件    一文中,可以对只读表空间作delete操作(版本是10.2.0.1.0),应该是数
            据库补丁的问题,    此版本为10.2.0.4.0。       
    --使用vim 打开?/oradata/orcl/tbs01.dbf文件做任意操作来模拟破坏该只读表空间的数据文件    
    --重启数据库后收到下面的错误提示                                                        
    ORA-01157: cannot identify/lock data file 6 - see DBWR trace file                       
    ORA-01110: data file 6: '/u01/app/oracle/oradata/orcl/tbs01.dbf'	                      
                                                                                            
    SQL> ho cp /tmp/tbs01.dbf /u01/app/oracle/oradata/orcl/tbs01.dbf                        
                                                                                            
    SQL> alter database open;                                                               
                                                                                            
    SQL> select count(1) from scott.tb1;                                                    
                                                                                            
      COUNT(1)                                                                              
    ----------                                                                              
    		16                                                                                  
    
        2. 演示由只读变为读写后发生损坏且只有只读备份的恢复情况(对应前面描述的case 2)      
    SQL> alter tablespace tbs1 read write;                                                             
                                                                                                       
    SQL> insert into scott.tb1(empno,ename) values(3333,'Thomas');                                     
                                                                                                       
    SQL> commit;                                                                                       
                                                                                                       
    --使用vim 打开/u01/app/oracle/oradata/orcl/tbs01.dbf文件做任意操作来模拟破坏该读写表空间的数据文件 
    --重启数据库后未收到错误提示                                                                       
    		                                                                                               
    SQL> insert into scott.tb1(empno,ename) values(4444,'Jackson');                                    
    insert into scott.tb1(empno,ename) values(4444,'Jackson')                                          
    				  *                                                                                        
    ERROR at line 1:                                                                                   
    ORA-00376: file 6 cannot be read at this time                                                      
    ORA-01110: data file 6: '/u01/app/oracle/oradata/orcl/tbs01.dbf'                                   
                                                                                                       
    SQL> select * from v$recover_file;                                                                 
                                                                                                       
    	 FILE# ONLINE  ONLINE_ ERROR               CHANGE# TIME                                          
    ---------- ------- ------- ---------------- ---------- ---------                                   
    		 6 OFFLINE OFFLINE FILE NOT FOUND            0	                                               
    		                                                                                               
    SQL> ho cp /tmp/tbs01.dbf /u01/app/oracle/oradata/orcl/tbs01.dbf                                   
                                                                                                       
    SQL> recover datafile 6;                                                                           
    Media recovery complete.                                                                           
                                                                                                       
    SQL> alter tablespace tbs1 online;                                                                 
                                                                                                       
    Tablespace altered.                                                                                
    SQL> select * from scott.tb1 where ename='Thomas';                                                 
                                                                                                       
    	 EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO                
    ---------- ---------- --------- ---------- --------- ---------- ---------- ----------              
    	  3333 Thomas                                                                                    
    
        3. 演示由读写表空间变为只读表空间,且仅有读写表空间备份的恢复(对应前面描述的case 3)      
    SQL> select file#,name,enabled from v$datafile where file#=6;                         
                                                                                          
    	 FILE# NAME                                          ENABLED                        
    ---------- --------------------------------------------- ----------                   
    		 6 /u01/app/oracle/oradata/orcl/tbs01.dbf        READ WRITE                       
                                                                                          
    SQL> alter tablespace tbs1 begin backup;                                              
                                                                                          
    SQL> ho cp /u01/app/oracle/oradata/orcl/tbs01.dbf /tmp/tbs01.dbf                      
                                                                                          
    SQL> alter tablespace tbs1 end backup;                                                
                                                                                          
    SQL> delete from scott.tb1 where empno=3333;                                          
                                                                                          
    SQL> commit;                                                                          
                                                                                          
    SQL> alter tablespace tbs1 read only;                                                 
                                                                                          
    --使用vim 打开?/oradata/orcl/tbs01.dbf文件做任意操作来模拟破坏该只读表空间的数据文件  
    --重启数据库后收到下面的错误提示                                                      
                                                                                          
    ORA-01157: cannot identify/lock data file 6 - see DBWR trace file                     
    ORA-01110: data file 6: '/u01/app/oracle/oradata/orcl/tbs01.dbf'                      
                                                                                          
    SQL> ho cp /tmp/tbs01.dbf /u01/app/oracle/oradata/orcl/tbs01.dbf                      
                                                                                          
    SQL> recover datafile 6;                                                              
                                                                                          
    SQL> alter database open;                                                             
                                                                                          
    SQL> select * from scott.tb1 where ename='Thomas';                                    
                                                                                          
    no rows selected                                                                      
    
        4. 演示数据文件状态发生多次变化且在变化时没有任何备份的恢复处理(实际上使用日志来重新构造该数据文件)      
    SQL> select file#,name,enabled from v$datafile where file#=6;                      
                                                                                       
    	 FILE# NAME                                          ENABLED                     
    ---------- --------------------------------------------- ----------                
    		 6 /u01/app/oracle/oradata/orcl/tbs01.dbf        READ WRITE                    
                                                                                       
    SQL> drop table scott.tb1;                                                         
                                                                                       
    SQL> commit;                                                                       
                                                                                       
    SQL> alter tablespace tbs1 read only;                                              
                                                                                       
    SQL> alter tablespace tbs1 read write;                                             
                                                                                       
    SQL> create table scott.tb2 tablespace tbs1 as select * from scott.emp;            
                                                                                       
    SQL> commit;                                                                       
                                                                                       
    SQL> alter system checkpoint;                                                      
                                                                                       
    [oracle@oradb orcl]$tail -n 50 $ORACLE_BASE/admin/orcl/bdump/alert_orcl.log        
    Errors in file /u01/app/oracle/admin/orcl/bdump/orcl_ckpt_4064.trc:                
    ORA-01171: datafile 6 going offline due to error advancing checkpoint              
    ORA-01122: database file 6 failed verification check                               
    ORA-01110: data file 6: '/u01/app/oracle/oradata/orcl/tbs01.dbf'                   
    ORA-01251: Unknown File Header Version read for file number 6                      
                                                                                       
    SQL> select * from v$recover_file;                                                 
                                                                                       
    	 FILE# ONLINE  ONLINE_ ERROR              CHANGE# TIME                           
    ---------- ------- ------- --------------- ---------- ---------                    
    		 6 OFFLINE OFFLINE FILE NOT FOUND           0		                               
                                                                                       
    SQL> select file#,name,status from v$datafile where file#=6;                       
                                                                                       
    	 FILE# NAME                                          STATUS                      
    ---------- --------------------------------------------- -------                   
    		 6 /u01/app/oracle/oradata/orcl/tbs01.dbf        RECOVER                       
                                                                                       
    SQL> alter database create datafile 6;                                             
                                                                                       
    SQL> recover datafile 6;                                                           
    Media recovery complete.                                                           
                                                                                       
    SQL> alter database datafile 6 online;                                             
                                                                                       
    SQL> select count(1) from scott.tb2;                                               
                                                                                       
      COUNT(1)                                                                         
    ----------                                                                         
    		16		                                                                         
    
        5. 演示删除只读表空间上的对象     
    SQL> select file#,name,enabled from v$datafile where file#=6;                       
                                                                                        
    	 FILE# NAME                                          ENABLED                      
    ---------- --------------------------------------------- ----------                 
    		 6 /u01/app/oracle/oradata/orcl/tbs01.dbf       READ ONLY                       
    		                                                                                
    SQL> select segment_name,segment_type,tablespace_name,owner from dba_segments where 
      2  tablespace_name='TBS1' and segment_name='TB2';                                 
                                                                                        
    SEGMENT_NAME         SEGMENT_TYPE       TABLESPACE_NAME                OWNER        
    -------------------- ------------------ ------------------------------ ----------   
    TB2                  TABLE              TBS1                           SCOTT        
                                                                                        
    SQL> drop table scott.tb2;                                                          
                                                                                        
    Table dropped.                                                                      
    
    五、总结
        1. 表空间置为只读后将减少数据的备份量
        2. 表空间置为只读后,不能对其中的对象执行任何DML操作
        3. 只读表空间内的对象可以被清除,因为drop命令更新了数据字典,而不更新对象本身
        4. 当表空间的状态发生变化时,应立即备份该表空间,以减少恢复工作
        5. 对于状态多次发生改变且未及时备份的情况,日志未损坏时,可以使用联机重做、归档日志来进行恢复
            使用下列命令来实现:
                删除受损的数据文件(rm dbfile.dbf)
                重建受损的数据文件(alter database create datafile n)
                进行介质恢复(recover datafile n)
                使受损的数据文件联机(alter database datafile n online)
        6. 演示中多为在mount状态下来恢复,生产环境中多在open状态下恢复,可以按下列步骤实现
              先将受损的只读表空间(数据文件)脱机(offline)
              使用备份的表空间(数据文件)来还原(restore)
              使用归档、联机日志进行介质恢复(recover)
              使恢复成功的表空间(数据文件)联机(online)
        7. 对于原始介质受损,不能恢复到原始位置的情况下,使用下面的命令实现转移
              alter database rename file '<dir1>' to '<dir2>';
       

    六、 快捷参考

    有关性能优化请参考

        Oracle硬解析与软解析

        共享池的调整与优化(Sharedpool Tuning)

        Buffercache 的调整与优化(一)

        Oracle表缓存(cachingtable)的使用

     

    有关ORACLE体系结构请参考

        Oracle表空间与数据文件

        Oracle密码文件

        Oracle参数文件

        Oracle联机重做日志文件(ONLINE LOG FILE)

        Oracle控制文件(CONTROLFILE)

        Oracle归档日志

        Oracle回滚(ROLLBACK)和撤销(UNDO)

        Oracle数据库实例启动关闭过程

        Oracle10g SGA 的自动化管理

        Oracle实例和Oracle数据库(Oracle体系结构)

     

    有关闪回特性请参考

        Oracle闪回特性(FLASHBACK DATABASE)

        Oracle闪回特性(FLASHBACK DROP & RECYCLEBIN)

        Oracle闪回特性(Flashback Query、FlashbackTable)

        Oracle闪回特性(Flashback Version、Flashback Transaction)

     

    有关基于用户管理的备份和备份恢复的概念请参考

        Oracle冷备份

        Oracle热备份

        Oracle备份恢复概念

        Oracle实例恢复

        Oracle基于用户管理恢复的处理(详细描述了介质恢复及其处理)

        SYSTEM表空间管理及备份恢复

        SYSAUX表空间管理及恢复

     

    有关RMAN的备份恢复与管理请参考

        RMAN 概述及其体系结构

        RMAN 配置、监控与管理

        RMAN 备份详解

        RMAN 还原与恢复

        RMANcatalog 的创建和使用

        基于catalog 创建RMAN存储脚本

    基于catalog 的RMAN 备份与恢复

    使用RMAN迁移文件系统数据库到ASM

        RMAN 备份路径困惑(使用plus archivelog时)

     

    有关ORACLE故障请参考

        ORA-32004的错误处理

        ORA-01658错误

        CRS-0215错误处理

        ORA-00119,ORA-00132 错误处理

        又一例SPFILE设置错误导致数据库无法启动

        对参数FAST_START_MTTR_TARGET= 0 的误解及设定

        SPFILE错误导致数据库无法启动(ORA-01565)

     

    有关ASM请参考

        创建ASM实例及ASM数据库

        ASM 磁盘、目录的管理

        使用 ASMCMD 工具管理ASM目录及文件

     

    有关SQL/PLSQL请参考

        SQLPlus常用命令

        替代变量与SQL*Plus环境设置

        使用Uniread实现SQLplus翻页功能

        SQL 基础-->SELECT 查询

        SQL 基础--> NEW_VALUE的使用

        SQL 基础--> 集合运算(UNION与UNION ALL)

        SQL 基础--> 常用函数

        SQL 基础--> 视图(CREATEVIEW)

        SQL 基础--> 创建和管理表

        SQL 基础--> 多表查询

        SQL 基础--> 过滤和排序

        SQL 基础--> 子查询

        SQL 基础--> 分组与分组函数

        SQL 基础--> 层次化查询(STARTBY ... CONNECT BY PRIOR)

        SQL 基础--> ROLLUP与CUBE运算符实现数据汇总

        PL/SQL--> 游标

        PL/SQL--> 异常处理(Exception)

        PL/SQL--> 语言基础

        PL/SQL--> 流程控制

        PL/SQL--> PL/SQL记录

        PL/SQL--> 包的创建与管理

        PL/SQL--> 隐式游标(SQL%FOUND)

        PL/SQL--> 包重载、初始化

        PL/SQL--> DBMS_DDL包的使用

        PL/SQL--> DML 触发器

        PL/SQL--> INSTEAD OF 触发器

        PL/SQL--> 存储过程

        PL/SQL--> 函数

        PL/SQL--> 动态SQL

        PL/SQL--> 动态SQL的常见错误

     

    有关ORACLE其它特性

        Oracle常用目录结构(10g)

        使用OEM,SQL*Plus,iSQL*Plus 管理Oracle实例

        日志记录模式(LOGGING、FORCE LOGGING 、NOLOGGING)

        表段、索引段上的LOGGING与NOLOGGING

        OralceOMF 功能详解

        Oracle用户、对象权限、系统权限  

        Oracle角色、配置文件

        Oracle分区表

        Oracle外部表

        使用外部表管理Oracle 告警日志(ALAERT_$SID.LOG)

        簇表及簇表管理(Index clustered tables)

        数据泵 EXPDP 导出工具的使用

        数据泵 IMPDP 导入工具的使用

        导入导出 Oracle 分区表数据

        SQL*Loader使用方法

        启用用户进程跟踪

        配置非默认端口的动态服务注册

        配置ORACLE 客户端连接到数据库

        systemsys,sysoper sysdba 的区别

        ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAME

        Oracle补丁全集 (Oracle 9i 10g 11g Path)

        Oracle10.2.0.1 升级到10.2.0.4

        Oracle彻底 kill session


    展开全文
  • 对指定的表设置只读属性

    千次阅读 2013-07-31 17:41:16
    通常,要让一个只读,我们可以: 创建Insert/Update/Delete触发器创建检查约束来禁用Insert/Update,创建触发器禁用Delete设置表所在的数据库只读把表放到只读文件组中拒绝指定的用户有Insert/Update/Delete的...
  • MySql 创建只读账号

    万次阅读 2013-06-13 03:09:48
    GRANT Select ON *.* TO reader@192.168.1.123 IDENTIFIED...创建了一个账户名为“reader" , 密码”123456“ 只可以从192.168.1.123发起访问 读取数据库的账号 参考: http://linux.chinaitlab.com/MYSQL/919856.html
  • 破解C#的readonly只读字段

    千次阅读 2013-01-03 23:34:08
    ...破解C#的readonly只读字段   目录   请允许我再唠叨几句const和readonly  修改readonly字段: 计策1:反间计 —— 反射修改 计策2:借刀杀人——调节字段偏
  • ES(Elasticsearch)解除索引只读限制

    千次阅读 2019-12-11 15:20:32
    服务器 空间满了,导致 ES 自动设置了只读限制 在此之前,先清空多余的日志 在elasticsearch 目录下 进入 logs 文件夹,清空后缀为 .gz和 gc.log.xx (xx为任意字符) 的文件 如下命令可以解除只读限制 curl -XPUT -H ...
  • 在计算机产业发展的70年时间里,每一次的 IT 革命,无不带来:更低廉的价格、更完善的功能、更便捷的使用、更广阔的市场! 大数据经过10年发展,现在已经到了一个...本 Chat 讲述这样一个通用大数据系统:系从0开始...
  • 内存不能为只读问题的解决办法

    千次阅读 2013-01-18 14:34:13
    出现这现象有方面的,是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。  :先说说硬件:  一般来说,电脑硬件是很不容易坏的。内存出现问题的可能性并不大(除非你的内存真的是杂牌的塌徒地...
  • redis权限控制与主从只读控制

    万次阅读 2018-01-09 10:01:43
    redis作为一个高速数据库,在互联网上,必须有对应的安全机制来进行保护。 1.比较安全的办法是采用绑定IP的方式来进行控制。 复制代码 代码如下: bind 127.0.0.1 表示仅仅允许通过127.0.0.1这个...
  • 假如想制作一个库,令其具有常规用途,但却不能担保它肯定能在正确的类中得以克隆,这时又该怎么办呢?更有可能的一种情况是,假如我们想让别名发挥积极的作用——禁止不必要的对象复制——但却不希望看到由此造成的...
  • 【C#】foreach迭代变量只读的原因

    千次阅读 2011-12-16 14:24:41
    先看下面接口: namespace System.Collections { // 摘要: // 支持对非泛型集合的简单迭代。 [ComVisible(true)] [Guid("496B0ABF-CDEE-11d3-88E8-00902754C43A")] public interface IEnumerator {
  • 武林游戏 2017-05-02 11:15 本文介绍在Java语言环境下,使用POI为Excel打水印的解决方案,具体的代码编写以及相关的注意事项。 需求描述: 要求通过系统下载的Excel都带上公司的...三点需求比较来说,以第点比
  • 该预览功能称为“只读访问- 跨地域冗余存储(RA-GRS)”,使客户可以在存储帐户主要区域无法读取数据时,通过跨地域冗余的辅助区域读取相关数据, 并保证这两副本一致。 在介绍这一新功能的具体情况之前,我们先简要...
  • 在项目中碰到了正则表达式的运用,正则还是非常强大的,不管什么编程语言,基本上都可以用到。...这里就罗列了从网上找的很...首先举一个例子:  匹配9-15个由字母/数字组成的字符串的正则表达式: NSString * regex
  • Spring之——c3p0配置详解

    万次阅读 2016-04-15 16:23:44
    今天,我们就来详细谈谈Spring中的c3p0配置问题,好了,不耽搁大家的时间,我们直接进入主题,请看下面的具体配置文件信息: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:j
  • 本小节,我们将设计一个简单的cpu,包括ISA的设计,模块的划分,RTL实现,编写asm汇编程序,用modelsim进行仿真,以及用quartusII的综合。 1,计算器与计算机 我认为,在EDVAC计算机之前的计算机,都可
  • 如果本篇博客对您有帮助,或许可以在下方评论给我留言。 //应用程序: #include #include #include #include /* leddrvtest on * leddrvtest off */ int main(int argc, char **argv) { int fd; int
  • //同上面的代码行是等价的,都表示一个常整形。 int *const a;//const具有"左结合"性,即const修饰*,那么,不难理解,该句表示一个指向整数的常指针,a指向的整数可以修改,但指针a不能修改。 const int *a;/...
  • Android:这是份全面 & 详细的Kotlin入门学习指南

    万次阅读 多人点赞 2019-07-23 09:16:53
    今天,我将献上份 《全面 & 详细的Kotlin入门学习指南》,包括定义特点、配置使用、入门语法等,希望你们会喜欢。
  • 次TIME_WAIT导致连接报警

    千次阅读 2020-05-28 20:14:07
    公司监控报警,提示线上服务器的TCP连接超过警告阈值。报警的几机器原先的业务量请求量并不大,所以预设的报警阈值并不高只有6000,突然报警有点措手不及,于是先登录服务器把当前的所有连接情况打印下来统计...
  •  •事务管理是企业级应用程序开发中必不可少的技术,  ... •事务就是一系列的动作,它们被当做一个单独的工作单元.这些动作要么全部完成,要么全部不起作用  •事务的四个关键属性(ACID)  –原子性
  • LUCI 这在百度上搜索除了篇我的百度文库luci的介绍文章之外,前三页都是些不知所云的名词(足见百度在专业领域的搜索之烂),我却在大学毕业的大半年的大部分时间里与它纠结,由于开始的发懵到后来逐渐感觉到这...
  • 一个最简单的MBR程序

    千次阅读 2013-06-15 16:06:09
    当你按下电脑的开机键,你的cup第一个运行的是bios程序,这个程序在制造主板的时候就印刷在一个只读存储器里,一般来说我们无法修改它。bios程序将硬盘第一个扇区的数据传送到内存中的某一段存储单元里,然后cpu就从...
  • Ethernet(以太网)之 详解 MAC、MII、PHY

    万次阅读 多人点赞 2018-04-26 14:06:47
    一个是数据信号(***MDIO (management data input/output)***)。 MDC: 由站管理实体向PHY提供,作为在MDIO信号上传送信息的定时参考。 MDC是一种非周期性的信号,没有最高或最低时间。 无论TX_CLK和RX_CLK的...
  • 摘要: 分析了const和volatile的... 在c语言中,const修饰的是只读变量,并不是一个常量,本质还是一个变量。const修饰的变量会占用内存空间,本质上const只对编译器有用,它告诉编译器,这个变量是只读的,不能对其进
  • 真香!Linux 原来是这么管理内存的

    千次阅读 多人点赞 2020-07-28 13:49:48
    Linux 进程都会有地址空间,这些地址空间由三段区域组成:text 段、data 段、stack 段。下面是进程地址空间的示例。 数据段(data segment) 包含了程序的变量、字符串、数组和其他数据的存储。数据段分为两...
  • Java中三种输入的比较

    千次阅读 2016-04-19 12:59:30
    下面我们就进行对 输入数据方法的比较,区分使用System.in,Scanner和BufferedReader的程序,对各个方法进行输入数据和输出数据演示一、使用标准输入串System.in //System.in.read()一次只读一个字节数据,而我们...
  • char* p是一个指针,根本没分配内存,他指向的"abc123ABC" 是只读的,不能改变,你在下面给他赋值肯定是错的 而char p[]是一个数组,已经分配内存,是将"abc123ABC" 复制到该内存里面,这个内存是可读写的 例如...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 133,218
精华内容 53,287
关键字:

下面只读一个0的数是