Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds
Oracle 10g/11g Data and Database Management Utilities
Oracle 10g/11g Data and Database Management Utilities

Oracle 10g/11g Data and Database Management Utilities: Master 12 must-use Oracle Database Utilities with this Oracle book and eBook

eBook
$28.99 $32.99
Paperback
$54.99
Subscription
Free Trial
Renews at $19.99p/m

What do you get with Print?

Product feature icon Instant access to your digital copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
Product feature icon Redeem a companion digital copy on all Print orders
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Shipping Address

Billing Address

Shipping Methods
Table of content icon View table of contents Preview book icon Preview Book

Oracle 10g/11g Data and Database Management Utilities

Chapter 2. SQL*Loader

Transferring data in plain text file format is common when performing tasks such as loading a database for the first time, data warehouse maintenance, ASCII backups, or spatial data management. Knowing how to efficiently use and tailor this tool allows the user to optimize the time invested in performing one of the most labor intensive and time consuming maintenance tasks.

During the upload process it is important to foresee any space allocation issues that may prevent the load process from successfully finishing. It is important to either gauge the tablespace requirements, or proactively launch automatic space management tasks.

It is important to know how to perform the data load with different character sets, so that users don't risk losing data, and to ensure that even if the data load completes successfully it doesn't end up showing those boring 'question marks' because of character set incompatibilities.

There are several ways to perform the load of large objects...

SQL*Loader basics


Sometimes, an external source provides data in an unwanted format. As database users, we can only deal with whatever way the data has been formatted, and do our best to load it. Sometimes an interface has to be built specifically to perform a complex format load. The purpose of SQL*Loader is not only to provide a plain format data loader tool, but also a means to allow a complex data set to be loaded. The user can leverage the power of SQL*Loader by:

  • Loading several data files on the same session

  • Specifying a particular character sets to be loaded

  • Conditionally loading data

  • Performing pre-loading phases

  • Loading data from a variety of sources, including named pipes

  • Loading either logical or physical records

  • Loading regular data as well as Large Objects and object/relational data

  • Taking advantage of parallelism and direct path loads to accelerate the load process

SQL*Loader's architecture is both simple and elegant. It requires at least one or two input files to start processing...

Preparing the demo environment


We will require a demo user to perform the loads, a regular tablespace, and some basic privileges for the SQL*Loader demo user. The paths and other particular references are included as mere examples, and to meet the syntax requirements. Actual implementations may differ. During the development of these demonstrations, data from either the HR or SCOTT schemas was used. The next examples use the SYS user to perform administrative tasks, it is only for demonstration purposes, any user with privileges to create a tablespace is enough to setup the environment, and any user who has permission to insert data into a given table is enough to perform the data loading procedure. The paths used and the Oracle SID referred here are just based on a specific demo database used.

connect / as sysdba
create tablespace sqlldrdemo
datafile '/u01/oracle/oradata/beta/sqlldr01.dbf' size 32m
autoextend on next 16m;
create user sqlldrdemo
identified by oracle
default tablespace sqlldrdemo...

Specifying a particular character set


A commonly seen requirement is loading data in a character set different from the WE8ISO family. When performing a load with a particular character set it should be specified with the NLS_LANG environment variable. In case it is not specified this way, it must be declared at the control file with the CHARACTERSET parameter. The character set will automatically be converted to the specified character set as long as the target database supports the conversion, otherwise a question mark will be loaded instead, indicating that the target database either didn't understand the conversion or the character set at the target database is not a superset of the source character set data.

In this example a load takes place using different character sets on this table, the purpose of the table is to store a multilingual error catalog:

CREATE TABLE ERRORCATALOG
(
LANGUAGE VARCHAR2(3),
ERROR_NUMBER NUMBER(6),
ERROR_STRING NVARCHAR2(1000)
);

The first datafile to store...

Load on the fly


SQL*Loader has a powerful interface that allows loads from different sources; it can read data from disk, tape or a named pipe. This feature allows loads on the fly without the creation of an intermediate data file, which is a very convenient strategy for loads that will only take place once and whose data source is dynamic. Let's have a named pipe created, so there is no datafile in-between, and data is directly consumed by the database through SQL*Loader.

On the OS prompt, let's create a named pipe. A process will then send data to the named pipe and SQL*Loader will read it from there.

Note

This data load procedure is not available for Windows as this platform does not allow the use of the named pipes required to perform the data load on the fly.

At a Unix prompt, let's create a regular named pipe:

mkfifo abcpipe.dat

Send data to the named pipe and leave the process in the background:

cat abc.dat > abcpipe.dat &

Load data from the named pipe:

sqlldr sqlldrdemo/oracle...

Direct path versus Conventional path load


If SQL*Loader is properly configured the load can be sped up in a meaningful way by means of the direct path load. Direct path was a new feature introduced in Oracle 7.3, and it hasn't changed too much since then. Direct path is an Oracle feature that allows an insertion process to go directly to the database files without using the database transactional mechanism. It allows the data load process to be performed in the fastest possible way. It must be noted that there is a price to pay in the transaction and recoverability models for the increased processing speed.

When a conventional path load takes place, SQL*Loader fills a bind array buffer and passes it to the Oracle database so it is processed by means of regular SQL INSERT commands—SQL*Loader performs a batch insert assembling 64 rows (by default). Afterwards a commit command is issued. This approach makes the database buffer to allocate resources to perform the insert, and generates a transaction...

Loading Large Objects (LOBs)


There are several ways to load multimedia files. This kind of data is provided in a raw format, so the most suitable data type to store this information in is: the Binary Large Object (BLOB). Both the LONG and LONG RAW are not considered in this discussion as it is not good practice to preserve these kinds of columns. The long data type is considered deprecated for the new features; it has been a constant throughout all the new releases, starting with 8.0. Most of the new features are supported for LOB data types, but not for LONG data types.

A LOB is a data type that stores a Large Object, and it can be of BLOB, Character Large Object(CLOB) , National Character Large Object(NCLOB) or BFILE specific data type. It is useful to employ large objects to store multimedia files (binary LOBs), large amounts of text such as descriptions, commentaries, or the particular case of XMLType columns. Text can also be specified in national character sets. There are two kinds...

Loading multimedia files


This is another case of LOB loading, in this case the BLOB data type is used to store binary data. When loading records from the same data file, there is an overhead involved to find out the record length. Loading from a secondary data file is more suitable for loading LOB data. When loading LOB data this way there is no requirement that the LOB field fits in memory, the load takes place by reading from the LOB file in 64K chunks.

When loading data from a LOB file, there are two ways to specify the LOB file; it can be specified either statically or dynamically. In the first case, the file is specified in the same control file. In the case of a dynamically defined LOB file, the file is specified within the data file and it is read into a FILLER field (from the datafile) which is then used as a parameter in the control file to specify where the LOB file is.

A FILLER field acts as a place holder; it is not read as actual data, its position is just considered in the data...

Resumable load


When a lengthy load takes place, the last thing a user wants to see is an ORA- error or any other error displayed on the console. This is an emerging issue which usually has to do with a lack of resources to finish the job. There should be enough free space not only for the data to be loaded, but also for the related indexes as well. As SQL*Loader has a default number of rows to commit in a batch load, there is no risk of exhausting the undo regions during a conventional data load.

While performing a lengthy load with a constrained time frame it is better (for peace of mind) to reduce the possibility of any unforeseen circumstances arising that may prevent the successful completion of the task. That is why storage levels must be evaluated to ensure there is enough free space to hold the massive load, otherwise it will have to be restarted by means of a recalculation of the SKIP value to jump to the point of failure, and continue the load from that point on.

Another more practical...

Parallel load


A parallel load can be used to perform the data load more efficiently. It is a suitable data load strategy for partitioned tables. When performing the load the data file is partitioned so that each single session grabs its piece of data and all the sessions can execute the job simultaneously on the same table.

In order for the user to enable parallel loading, once the data has been split into several files, the clause PARALLEL=TRUE must be specified for each session. If the user is working on a Unix like operating system, then the workload can be left running as a background process.

sqlldr sqlldrdemo/oracle control=pload01.ctl DIRECT=TRUE PARALLEL=TRUE &
sqlldr sqlldrdemo/oracle control=pload02.ctl DIRECT=TRUE PARALLEL=TRUE &
sqlldr sqlldrdemo/oracle control=pload03.ctl DIRECT=TRUE PARALLEL=TRUE &
sqlldr sqlldrdemo/oracle control=pload04.ctl DIRECT=TRUE PARALLEL=TRUE &

In this example, four processes execute the data load in parallel. The degree of parallelism...

General performance booster tips


In order to take advantage of maintenance windows to perform the data load, here is some advice for improving load performance and better using the time frame.

  • When performing a load, do not use logical records, map in one-to-one physical records to logical records.

  • Use LMT with ASSM, this combination is available from Oracle 9i Rel. 2 onwards.

  • Use a fixed size field data file format over the variable sized with delimiter characters.

  • Try to avoid character set conversions, try to use the same character set on the client side and at the server side.

  • If possible use direct load; this is the fastest way to load data.

  • When loading data try to have the data preordered at the data file by the most important index, this way when the index is created the clause NOSORT can be used. The index will be created faster.

  • If possible, use parallel loads, and parallel index maintenance.

  • When loading LOBS, use Secondary Data Files(SDF) instead of embedding them in the same datafile...

Summary


Loading ASCII data from an external source is a frequent task in data warehouse environments when migrating data from other non-compatible databases. The kind of information and the way it may be formatted are important to consider it is the time to define the control file to execute the load.

When the load takes place it is sensible to take advantage of the time frame, avoiding unexpected issues that may prevent the process from finishing on time, particularly those loads that must be executed on a just-in-time basis. Proactively defining a resumable load will help the user to avoid problems and automatically correct unforeseen issues.

A situation may arise where you would need to load different character sets on the same database, and the user should be aware of the implications and best practices in this situation.

Several kinds of loads can be performed, from just plain and simple fixed record rows to complex formats. Loading a variety of data types, from plain text files to binaries...

Left arrow icon Right arrow icon

Key benefits

  • Optimize time-consuming tasks efficiently using the Oracle database utilities
  • Perform data loads on the fly and replace the functionality of the old export and import utilities using Data Pump or SQL*Loader
  • Boost database defenses with Oracle Wallet Manager and Security
  • A handbook with lots of practical content with real-life scenarios

Description

Does your database look complicated? Are you finding it difficult to interact with it? Database interaction is a part of the daily routine for all database professionals. Using Oracle Utilities the user can benefit from improved maintenance windows, optimized backups, faster data transfers, and more reliable security and in general can do more with the same time and resources.

Who is this book for?

This book is aimed at all Oracle professionals who interact with the database through the data and database utilities and are willing to optimize their interaction with it. Entry-level users will get acquainted with the best practices to get their job done in a timely and efficient manner. Advanced users will find useful tips and How-Tos that will help them focus on getting the most out of the database utilities and fine-tune batch processing.

What you will learn

  • Improve performance and manageability using the advanced features of direct export/import utilities among different databases
  • Optimize your maintenance windows related to data management tasks such as importing data from one database to another using Data Pump and SQL*Loader
  • Perform more than just the ETL processes by taking advantage of the external tables feature
  • Use Oracle Scheduler to specify maintenance windows, assign priorities, configure job classes and many more features, and take decisions based on the task outcome
  • Get acquainted with all the possibilities the Oracle Universal Installer tool offers to make the installation task more efficient
  • Execute effective database creations: not just default creations, but comprehensive database creations
  • Configure and manage an ASM environment using DBCA
  • Improve performance and reduce the impact of recovery manager database backups in production environments
  • Increase the security in an Oracle environment, protect the backups, and manage certificates using Oracle Wallet Manager
  • Perform installations in batch environments and manage your software updates related to Critical Patch Updates (CPU) or individual patches using OPatch
Estimated delivery fee Deliver to United States

Economy delivery 10 - 13 business days

Free $6.95

Premium delivery 6 - 9 business days

$21.95
(Includes tracking information)

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Jun 26, 2009
Length: 432 pages
Edition : 1st
Language : English
ISBN-13 : 9781847196286
Vendor :
Oracle
Category :
Languages :

What do you get with Print?

Product feature icon Instant access to your digital copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
Product feature icon Redeem a companion digital copy on all Print orders
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Shipping Address

Billing Address

Shipping Methods
Estimated delivery fee Deliver to United States

Economy delivery 10 - 13 business days

Free $6.95

Premium delivery 6 - 9 business days

$21.95
(Includes tracking information)

Product Details

Publication date : Jun 26, 2009
Length: 432 pages
Edition : 1st
Language : English
ISBN-13 : 9781847196286
Vendor :
Oracle
Category :
Languages :

Packt Subscriptions

See our plans and pricing
Modal Close icon
$19.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
$199.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just $5 each
Feature tick icon Exclusive print discounts
$279.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just $5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total $ 181.97
Advanced Oracle PL/SQL Developer's Guide (Second Edition)
$65.99
Oracle 10g/11g Data and Database Management Utilities
$54.99
Oracle Database 11gR2 Performance Tuning Cookbook
$60.99
Total $ 181.97 Stars icon

Table of Contents

13 Chapters
Data Pump Chevron down icon Chevron up icon
SQL*Loader Chevron down icon Chevron up icon
External Tables Chevron down icon Chevron up icon
Recovery Manager Advanced Techniques Chevron down icon Chevron up icon
Recovery Manager Restore and Recovery Techniques Chevron down icon Chevron up icon
Session Management Chevron down icon Chevron up icon
Oracle Scheduler Chevron down icon Chevron up icon
Oracle Wallet Manager Chevron down icon Chevron up icon
Security Management Chevron down icon Chevron up icon
Database Configuration Assistant Chevron down icon Chevron up icon
Oracle Universal Installer Chevron down icon Chevron up icon
Enterprise Manager Configuration Assistant Chevron down icon Chevron up icon
OPatch Chevron down icon Chevron up icon

Customer reviews

Rating distribution
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
(1 Ratings)
5 star 0%
4 star 100%
3 star 0%
2 star 0%
1 star 0%
jpo Jun 03, 2015
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
Useful guide to Oracle's utilities. Not as detailed as I would have liked.
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

What is the digital copy I get with my Print order? Chevron down icon Chevron up icon

When you buy any Print edition of our Books, you can redeem (for free) the eBook edition of the Print Book you’ve purchased. This gives you instant access to your book when you make an order via PDF, EPUB or our online Reader experience.

What is the delivery time and cost of print book? Chevron down icon Chevron up icon

Shipping Details

USA:

'

Economy: Delivery to most addresses in the US within 10-15 business days

Premium: Trackable Delivery to most addresses in the US within 3-8 business days

UK:

Economy: Delivery to most addresses in the U.K. within 7-9 business days.
Shipments are not trackable

Premium: Trackable delivery to most addresses in the U.K. within 3-4 business days!
Add one extra business day for deliveries to Northern Ireland and Scottish Highlands and islands

EU:

Premium: Trackable delivery to most EU destinations within 4-9 business days.

Australia:

Economy: Can deliver to P. O. Boxes and private residences.
Trackable service with delivery to addresses in Australia only.
Delivery time ranges from 7-9 business days for VIC and 8-10 business days for Interstate metro
Delivery time is up to 15 business days for remote areas of WA, NT & QLD.

Premium: Delivery to addresses in Australia only
Trackable delivery to most P. O. Boxes and private residences in Australia within 4-5 days based on the distance to a destination following dispatch.

India:

Premium: Delivery to most Indian addresses within 5-6 business days

Rest of the World:

Premium: Countries in the American continent: Trackable delivery to most countries within 4-7 business days

Asia:

Premium: Delivery to most Asian addresses within 5-9 business days

Disclaimer:
All orders received before 5 PM U.K time would start printing from the next business day. So the estimated delivery times start from the next day as well. Orders received after 5 PM U.K time (in our internal systems) on a business day or anytime on the weekend will begin printing the second to next business day. For example, an order placed at 11 AM today will begin printing tomorrow, whereas an order placed at 9 PM tonight will begin printing the day after tomorrow.


Unfortunately, due to several restrictions, we are unable to ship to the following countries:

  1. Afghanistan
  2. American Samoa
  3. Belarus
  4. Brunei Darussalam
  5. Central African Republic
  6. The Democratic Republic of Congo
  7. Eritrea
  8. Guinea-bissau
  9. Iran
  10. Lebanon
  11. Libiya Arab Jamahriya
  12. Somalia
  13. Sudan
  14. Russian Federation
  15. Syrian Arab Republic
  16. Ukraine
  17. Venezuela
What is custom duty/charge? Chevron down icon Chevron up icon

Customs duty are charges levied on goods when they cross international borders. It is a tax that is imposed on imported goods. These duties are charged by special authorities and bodies created by local governments and are meant to protect local industries, economies, and businesses.

Do I have to pay customs charges for the print book order? Chevron down icon Chevron up icon

The orders shipped to the countries that are listed under EU27 will not bear custom charges. They are paid by Packt as part of the order.

List of EU27 countries: www.gov.uk/eu-eea:

A custom duty or localized taxes may be applicable on the shipment and would be charged by the recipient country outside of the EU27 which should be paid by the customer and these duties are not included in the shipping charges been charged on the order.

How do I know my custom duty charges? Chevron down icon Chevron up icon

The amount of duty payable varies greatly depending on the imported goods, the country of origin and several other factors like the total invoice amount or dimensions like weight, and other such criteria applicable in your country.

For example:

  • If you live in Mexico, and the declared value of your ordered items is over $ 50, for you to receive a package, you will have to pay additional import tax of 19% which will be $ 9.50 to the courier service.
  • Whereas if you live in Turkey, and the declared value of your ordered items is over € 22, for you to receive a package, you will have to pay additional import tax of 18% which will be € 3.96 to the courier service.
How can I cancel my order? Chevron down icon Chevron up icon

Cancellation Policy for Published Printed Books:

You can cancel any order within 1 hour of placing the order. Simply contact customercare@packt.com with your order details or payment transaction id. If your order has already started the shipment process, we will do our best to stop it. However, if it is already on the way to you then when you receive it, you can contact us at customercare@packt.com using the returns and refund process.

Please understand that Packt Publishing cannot provide refunds or cancel any order except for the cases described in our Return Policy (i.e. Packt Publishing agrees to replace your printed book because it arrives damaged or material defect in book), Packt Publishing will not accept returns.

What is your returns and refunds policy? Chevron down icon Chevron up icon

Return Policy:

We want you to be happy with your purchase from Packtpub.com. We will not hassle you with returning print books to us. If the print book you receive from us is incorrect, damaged, doesn't work or is unacceptably late, please contact Customer Relations Team on customercare@packt.com with the order number and issue details as explained below:

  1. If you ordered (eBook, Video or Print Book) incorrectly or accidentally, please contact Customer Relations Team on customercare@packt.com within one hour of placing the order and we will replace/refund you the item cost.
  2. Sadly, if your eBook or Video file is faulty or a fault occurs during the eBook or Video being made available to you, i.e. during download then you should contact Customer Relations Team within 14 days of purchase on customercare@packt.com who will be able to resolve this issue for you.
  3. You will have a choice of replacement or refund of the problem items.(damaged, defective or incorrect)
  4. Once Customer Care Team confirms that you will be refunded, you should receive the refund within 10 to 12 working days.
  5. If you are only requesting a refund of one book from a multiple order, then we will refund you the appropriate single item.
  6. Where the items were shipped under a free shipping offer, there will be no shipping costs to refund.

On the off chance your printed book arrives damaged, with book material defect, contact our Customer Relation Team on customercare@packt.com within 14 days of receipt of the book with appropriate evidence of damage and we will work with you to secure a replacement copy, if necessary. Please note that each printed book you order from us is individually made by Packt's professional book-printing partner which is on a print-on-demand basis.

What tax is charged? Chevron down icon Chevron up icon

Currently, no tax is charged on the purchase of any print book (subject to change based on the laws and regulations). A localized VAT fee is charged only to our European and UK customers on eBooks, Video and subscriptions that they buy. GST is charged to Indian customers for eBooks and video purchases.

What payment methods can I use? Chevron down icon Chevron up icon

You can pay with the following card types:

  1. Visa Debit
  2. Visa Credit
  3. MasterCard
  4. PayPal
What is the delivery time and cost of print books? Chevron down icon Chevron up icon

Shipping Details

USA:

'

Economy: Delivery to most addresses in the US within 10-15 business days

Premium: Trackable Delivery to most addresses in the US within 3-8 business days

UK:

Economy: Delivery to most addresses in the U.K. within 7-9 business days.
Shipments are not trackable

Premium: Trackable delivery to most addresses in the U.K. within 3-4 business days!
Add one extra business day for deliveries to Northern Ireland and Scottish Highlands and islands

EU:

Premium: Trackable delivery to most EU destinations within 4-9 business days.

Australia:

Economy: Can deliver to P. O. Boxes and private residences.
Trackable service with delivery to addresses in Australia only.
Delivery time ranges from 7-9 business days for VIC and 8-10 business days for Interstate metro
Delivery time is up to 15 business days for remote areas of WA, NT & QLD.

Premium: Delivery to addresses in Australia only
Trackable delivery to most P. O. Boxes and private residences in Australia within 4-5 days based on the distance to a destination following dispatch.

India:

Premium: Delivery to most Indian addresses within 5-6 business days

Rest of the World:

Premium: Countries in the American continent: Trackable delivery to most countries within 4-7 business days

Asia:

Premium: Delivery to most Asian addresses within 5-9 business days

Disclaimer:
All orders received before 5 PM U.K time would start printing from the next business day. So the estimated delivery times start from the next day as well. Orders received after 5 PM U.K time (in our internal systems) on a business day or anytime on the weekend will begin printing the second to next business day. For example, an order placed at 11 AM today will begin printing tomorrow, whereas an order placed at 9 PM tonight will begin printing the day after tomorrow.


Unfortunately, due to several restrictions, we are unable to ship to the following countries:

  1. Afghanistan
  2. American Samoa
  3. Belarus
  4. Brunei Darussalam
  5. Central African Republic
  6. The Democratic Republic of Congo
  7. Eritrea
  8. Guinea-bissau
  9. Iran
  10. Lebanon
  11. Libiya Arab Jamahriya
  12. Somalia
  13. Sudan
  14. Russian Federation
  15. Syrian Arab Republic
  16. Ukraine
  17. Venezuela
Modal Close icon
Modal Close icon